From 06c3d4970bbb6bd547fa35d2023a20551604c2cc Mon Sep 17 00:00:00 2001 From: Travis Schettler Date: Fri, 24 Sep 2021 22:02:22 -0500 Subject: [PATCH 001/329] Added block deferral option --- src/block.html | 4 ++-- src/options.html | 8 +++++++- src/scripts/background.js | 6 ++++++ src/scripts/block.js | 29 ++++++++++++++++++----------- src/scripts/common.js | 2 ++ src/scripts/settings.js | 6 ++++++ 6 files changed, 41 insertions(+), 14 deletions(-) diff --git a/src/block.html b/src/block.html index cbeaf6f..1aa162a 100644 --- a/src/block.html +++ b/src/block.html @@ -14,8 +14,8 @@

Time limit

-
You've reached today your limit on
-
Your current daily limit is
+
You've reached your limit today on
+
Your current daily limit is
diff --git a/src/options.html b/src/options.html index 22bc0ab..1cc6da7 100644 --- a/src/options.html +++ b/src/options.html @@ -30,9 +30,15 @@
+
+ +
@@ -108,7 +108,6 @@
-
diff --git a/src/scripts/background.js b/src/scripts/background.js index 5da1728..f0758b4 100644 --- a/src/scripts/background.js +++ b/src/scripts/background.js @@ -42,7 +42,7 @@ function backgroundCheck() { } if (activity.isInBlackList(activeUrl)) { - chrome.browserAction.setBadgeBackgroundColor({ color: '#FF0000' }) + chrome.browserAction.setBadgeBackgroundColor({ color: '#fdb8b8' }) chrome.browserAction.setBadgeText({ tabId: activeTab.id, text: 'n/a' @@ -79,7 +79,7 @@ function mainTRacker(activeUrl, tab, activeTab) { tab.incSummaryTime(); } if (setting_view_in_badge === true) { - chrome.browserAction.setBadgeBackgroundColor({ color: '#1aa1434d' }) + chrome.browserAction.setBadgeBackgroundColor({ color: '#e7e7e7' }) var summary = tab.days.find(s => s.date === todayLocalDate()).summary; chrome.browserAction.setBadgeText({ tabId: activeTab.id, diff --git a/src/scripts/chart/chart-core.js b/src/scripts/chart/chart-core.js index 3626188..6af29f7 100644 --- a/src/scripts/chart/chart-core.js +++ b/src/scripts/chart/chart-core.js @@ -2,7 +2,7 @@ function donutChart() { var width, height, darkMode, - margin = { top: 10, right: 10, bottom: 10, left: 10 }, + margin = { top: 10, right: 10, bottom: 0, left: 10 }, colour = d3.scaleOrdinal(d3.schemeCategory20), // colour scheme variable, // value in data that will dictate proportions on chart category, // compare data by @@ -17,7 +17,7 @@ function donutChart() { // =========================================================================================== // Set up constructors for making donut. See https://github.com/d3/d3-shape/blob/master/README.md - var radius = 135; + var radius = 110; // creates a new pie generator var pie = d3.pie() @@ -27,22 +27,11 @@ function donutChart() { // contructs and arc generator. This will be used for the donut. The difference between outer and inner // radius will dictate the thickness of the donut var arc = d3.arc() - .outerRadius(radius * 0.9) - .innerRadius(radius * 0.8) + .outerRadius(radius) + .innerRadius(radius * 0.75) .cornerRadius(cornerRadius) .padAngle(padAngle); - // this arc is used for aligning the text labels - var outerArc = d3.arc() - .outerRadius(radius * 0.9) - .innerRadius(radius * 0.9); - // =========================================================================================== - - var tempAngle; - var tempOffset = { - x: 1, - y: 0.95 - }; // =========================================================================================== // append the svg object to the selection var svg = selection.append('svg') @@ -50,7 +39,7 @@ function donutChart() { .attr('height', height + margin.top + margin.bottom) .attr('class', 'backColorChart') .append('g') - .attr('transform', 'translate(' + (width / 2 - 105) + ',' + (height / 2 + 12) + ')'); + .attr('transform', 'translate(' + (width / 2 - 105) + ',' + (height / 2) + ')'); // =========================================================================================== // =========================================================================================== @@ -75,7 +64,7 @@ function donutChart() { .data(pie(data)) .enter().append("g") .attr("transform", function (d, i) { - return "translate(" + (130) + "," + (i * 20 - 80) + ")"; // place each legend on the right and bump each one down 15 pixels + return "translate(" + (130) + "," + (i * 20 - 100) + ")"; // place each legend on the right and bump each one down 15 pixels }) .attr("class", "legend"); @@ -105,9 +94,9 @@ function donutChart() { return d.data.url; }) .style("fill", "black") - .style("font-size", 13) + .style("font-size", 14) .attr("y", 10) - .attr("x", 13); + .attr("x", 15); // =========================================================================================== // add tooltip to mouse events on slices and labels @@ -145,7 +134,7 @@ function donutChart() { svg.append('circle') .attr('class', 'toolCircle') .attr('r', radius * 0.75) // radius of tooltip circle - .style('fill', colour(data.data[category])) // colour based on category mouse is over + .style('fill', 'white') // colour based on category mouse is over .style('fill-opacity', 0.35); }); @@ -355,7 +344,7 @@ function drawIntervalChart(data) { var tickDistance = 4.38; var tooltip; - if (document.body.classList.contains('night-mode')) + if (document.body.classList.contains('dark-mode')) tooltip = d3.select("#timeChart") .append("div") .style("opacity", 0) @@ -409,7 +398,7 @@ function drawIntervalChart(data) { //create the svg var svg; - if (document.body.classList.contains('night-mode')) + if (document.body.classList.contains('dark-mode')) svg = d3.select("#timeChart").append("svg") .style('background-color', '#383838') .attr("width", width + margin.left + margin.right) diff --git a/src/scripts/common.js b/src/scripts/common.js index 5a7b8a3..58d35b4 100644 --- a/src/scripts/common.js +++ b/src/scripts/common.js @@ -111,7 +111,7 @@ function convertShortSummaryTimeToLongString(summaryTime) { hours = zeroAppend(hours); mins = zeroAppend(mins); - return hours + ' hour ' + mins + ' minutes'; + return `${hours} hour ${mins} minutes`; } function getArrayTime(summaryTime) { diff --git a/src/scripts/ui.js b/src/scripts/ui.js index 83e9175..ef55531 100644 --- a/src/scripts/ui.js +++ b/src/scripts/ui.js @@ -44,7 +44,6 @@ class UI { document.getElementById('resultTable').innerHTML = null; document.getElementById('chart').innerHTML = null; document.getElementById('timeChart').innerHTML = null; - document.getElementById('total').innerHTML = null; document.getElementById('byDays').innerHTML = null; } @@ -62,22 +61,6 @@ class UI { document.getElementById('labelForTimeInterval').classList.remove('hide'); } - createTotalBlock(totalTime, currentTypeOfList, counter) { - var totalElement = document.getElementById('total'); - - var spanVisits = this.createElement('span', ['span-visits', 'tooltip', 'visits'], counter !== undefined ? counter : 0); - var visitsTooltip = this.createElement('span', ['tooltiptext'], 'Count of visits'); - spanVisits.appendChild(visitsTooltip); - - var spanPercentage = this.createElement('span', ['span-percentage'], '100 %'); - - var div = this.createElement('div', ['margin-left-5', 'total-block'], 'Total'); - var span = this.createElement('span', ['span-time']); - this.createElementsForTotalTime(totalTime, currentTypeOfList, span); - - this.appendChild(totalElement, [div, spanVisits, spanPercentage, span]); - } - fillEmptyBlock(elementName) { document.getElementById(elementName).innerHTML = '

No data

'; } @@ -94,9 +77,6 @@ class UI { document.getElementById('chart').appendChild(document.createElement('hr')); } - addHrAfterTableOfSite() { - this.getTableOfSite().appendChild(document.createElement('hr')); - } setActiveTooltipe(currentTab) { if (currentTab !== '') { @@ -148,7 +128,7 @@ class UI { var p = document.createElement('p'); p.classList.add('table-header'); if (currentTypeOfList === TypeListEnum.ToDay) - p.innerHTML = 'Today (' + counterOfSite + ' sites)
' + convertShortSummaryTimeToLongString(totalTime) + ''; + p.innerHTML = `Today (${counterOfSite} sites)
${convertShortSummaryTimeToLongString(totalTime)}`; if (currentTypeOfList === TypeListEnum.All && totalDays !== undefined) { if (totalDays.countOfDays > 0) { p.innerHTML = 'Aggregate data since ' + new Date(totalDays.minDate).toLocaleDateString() + ' (' + totalDays.countOfDays + ' days) (' + counterOfSite + ' sites)
' + fillSummaryTime(totalTime) + ''; @@ -162,6 +142,7 @@ class UI { addLineToTableOfSite(tab, currentTab, summaryTime, typeOfList, counter, blockName) { var div = document.createElement('div'); + var tabUrlString = tab.url; div.addEventListener('mouseenter', function() { if (document.getElementById('chart').innerHTML !== '') { var item = document.getElementById(tab.url); @@ -186,28 +167,43 @@ class UI { var divForImg = document.createElement('div'); var img = document.createElement('img'); - img.setAttribute('height', 17); + img.setAttribute('height', 27); if (tab.favicon !== undefined || tab.favicon == null) img.setAttribute('src', tab.favicon); else img.setAttribute('src', '/icons/empty.png'); divForImg.classList.add('block-img'); divForImg.appendChild(img); - var spanUrl = this.createElement('span', ['span-url'], tab.url); - spanUrl.setAttribute('href', 'https://' + tab.url); + var divForPath = document.createElement('div'); + + var url = this.createElement('p', ['p-url'], tabUrlString); + url.setAttribute('href', 'https://' + tabUrlString); + url.addEventListener('click', function(e){ + if (e.target.attributes.href.value != undefined) + chrome.tabs.create({ url: e.target.attributes.href.value }) + }) + + var visits = this.createElement('p', ['p-visits'], function() { + if (counter == 0) return '0 visits'; + if (counter > 1) return `${counter} visits`; + if (counter == 1) return `${counter} visit`; + }()); + + divForPath.appendChild(url); + divForPath.appendChild(visits); if (tab.url == currentTab) { var divForImage = document.createElement('div'); div.classList.add('span-active-url'); var imgCurrentDomain = document.createElement('img'); imgCurrentDomain.setAttribute('src', '/icons/eye.png'); - imgCurrentDomain.setAttribute('height', 17); + imgCurrentDomain.setAttribute('height', 20); imgCurrentDomain.classList.add('margin-left-5'); divForImage.appendChild(imgCurrentDomain); var currentDomainTooltip = this.createElement('span', ['tooltiptext'], 'Current domain'); divForImage.classList.add('tooltip', 'current-url'); divForImage.appendChild(currentDomainTooltip); - spanUrl.appendChild(divForImage); + url.appendChild(divForImage); } if (typeOfList !== undefined && typeOfList === TypeListEnum.ToDay) { @@ -216,25 +212,20 @@ class UI { if (item !== undefined) { var divLimit = this.createElement('div', ['tooltip', 'inline-block']); var limitIcon = this.createElement('img', ['margin-left-5', 'tooltip']); - limitIcon.height = 15; + limitIcon.height = 20; limitIcon.src = '/icons/limit.png'; var tooltip = this.createElement('span', ['tooltiptext'], "Daily limit is " + convertShortSummaryTimeToLongString(item.time)); divLimit = this.appendChild(divLimit, [limitIcon, tooltip]); - spanUrl.appendChild(divLimit); + url.appendChild(divLimit); } } } - var spanVisits = this.createElement('span', ['span-visits', 'tooltip', 'visits'], counter !== undefined ? counter : 0); - var visitsTooltip = this.createElement('span', ['tooltiptext'], 'Count of visits'); - - spanVisits.appendChild(visitsTooltip); - var spanPercentage = this.createElement('span', ['span-percentage'], getPercentage(summaryTime)); var spanTime = this.createElement('span', ['span-time']); this.createElementsForTotalTime(summaryTime, typeOfList, spanTime); - div = this.appendChild(div, [divForImg, spanUrl, spanVisits, spanPercentage, spanTime]); + div = this.appendChild(div, [divForImg, divForPath, spanPercentage, spanTime]); if (blockName !== undefined) document.getElementById(blockName).appendChild(div); else @@ -346,8 +337,8 @@ class UI { var label = this.createElement('label', ['day-block', 'lbl-toggle']); label.setAttribute('for', days[i].date); - var span = this.createElement('span', ['day'], new Date(days[i].date).toLocaleDateString()); - var spanTime = this.createElement('span', ['span-time']); + var span = this.createElement('p', ['day'], new Date(days[i].date).toLocaleDateString()); + var spanTime = this.createElement('p', ['span-time']); this.createElementsForTotalTime(days[i].total, TypeListEnum.ByDays, spanTime); label = this.appendChild(label, [span, spanTime]); @@ -412,7 +403,7 @@ class UI { setMode(){ if (setting_dark_mode) - document.body.classList.add('night-mode'); + document.body.classList.add('dark-mode'); } removePreloader() { diff --git a/src/scripts/webact.js b/src/scripts/webact.js index c9d69e4..9082ed6 100644 --- a/src/scripts/webact.js +++ b/src/scripts/webact.js @@ -132,7 +132,7 @@ function firstInitPage() { ui.setMode(); tabsFromBackground = bg.tabs; currentTypeOfList = TypeListEnum.ToDay; - getLimitsListFromStorage(); + getLimitsListFromStorage(bg.setting_restriction_list) getDataFromStorage(); storage.getValue(SETTINGS_SHOW_HINT, function (item) { if (item) @@ -140,17 +140,12 @@ function firstInitPage() { }); }); } - window.addEventListener('click', function (e) { if (e.target.nodeName == 'SPAN' && e.target.className == 'span-url' && e.target.attributes.href.value != undefined){ chrome.tabs.create({ url: e.target.attributes.href.value }) } }); -function getLimitsListFromStorage() { - storage.loadTabs(STORAGE_RESTRICTION_LIST, getLimitsListFromStorageCallback); -} - function getDataFromStorage() { if (tabsFromBackground != undefined && tabsFromBackground != null && tabsFromBackground.length > 0) getTabsFromStorage(tabsFromBackground); @@ -162,7 +157,7 @@ function getDataFromStorageByDays() { getTabsByDays(tabsFromBackground); } -function getLimitsListFromStorageCallback(items) { +function getLimitsListFromStorage(items) { if (items !== undefined) restrictionList = items; else restrictionList = []; @@ -251,9 +246,8 @@ function getTabsFromStorage(tabs) { else addTabOthersForChart(tabsForChart, summaryTime); } - ui.addHrAfterTableOfSite(); - ui.createTotalBlock(totalTime, currentTypeOfList, summaryCounter); - ui.drawChart(tabsForChart); + if (currentTypeOfList === TypeListEnum.ToDay) + ui.drawChart(tabsForChart); ui.setActiveTooltipe(currentTab); ui.removePreloader(); @@ -315,7 +309,6 @@ function getTabsFromStorageForExpander(tabs) { var table = ui.getTableOfSite(); table.removeChild(table.getElementsByTagName('hr')[0]); - ui.addHrAfterTableOfSite(); } function getTotalTime(tabs) { diff --git a/src/style/webact.css b/src/style/webact.css index 8f57bc2..ce436b9 100644 --- a/src/style/webact.css +++ b/src/style/webact.css @@ -13,15 +13,19 @@ body { .inline-flex { display: flex; - height: 23px; + height: 40px; + margin: 10px 5px; + box-shadow: 0 -1px 5px 0 rgb(0 0 0 / 9%), 0 1px 4px 0 rgb(0 0 0 / 12%); + border-radius: 10px; + padding: 5px; } .inline-flex:hover { cursor: pointer; } -.inline-flex:hover .span-url { - font-size: 13px; +.inline-flex:hover .p-url { + font-size: 15px; font-weight: 650; } @@ -29,12 +33,28 @@ body { color: rgb(0, 0, 0); } -.span-url { +.inline-flex:hover .span-percentage { + color: rgb(0, 0, 0); + font-weight: 650; +} + +.p-url { width: 320px; text-decoration: none; color: rgb(0, 0, 0); + font-size: 15px; + cursor: pointer; + margin:0; + font-weight: 500; +} + +.p-visits { + width: 320px; + text-decoration: none; + color: rgb(71, 71, 71); font-size: 13px; cursor: pointer; + margin:0; } .span-total { @@ -64,13 +84,6 @@ body { text-align: right; } -.span-visits { - width: 40px; - /* padding: 0 10px 0 10px; */ - color: rgb(137, 154, 190); - font-size: 11px; -} - .visits { text-decoration: underline; text-decoration-style: solid; @@ -78,8 +91,8 @@ body { } .span-percentage { - color: rgb(78, 78, 78); - font-size: 11px; + color: black; + font-size: 12px; } .span-time { @@ -87,7 +100,7 @@ body { font-weight: 700; text-align: right; margin-left: auto; - margin-right: 8px; + margin-right: 15px; } .span-time .span-active-time { @@ -135,12 +148,12 @@ hr { } a { - color: rgb(195, 194, 194); + color: rgb(122 122 122); padding: 4px 5px; text-align: center; display: inline-block; font-size: 12px; - font-weight: 600; + font-weight: 650; margin: 4px 7px; transition-duration: 0.4s; cursor: pointer; @@ -187,13 +200,13 @@ input[type="date"] { } .table-header { - margin: 3px 0; border-radius: 5px; font-weight: 600; font-size: 13px; padding: 4px; background-color: rgb(235, 243, 251); text-align: center; + margin: 0; } p.table-header { @@ -203,16 +216,14 @@ p.table-header { .day-block { display: inline-flex; width: 100%; - height: 20px; + height: 40px; cursor: pointer; - border-bottom: 1px solid rgb(223, 221, 221); } .day { width: 415px; font-size: 13px; - padding-left: 5px; - margin: 0 0 0 5px; + margin-left: 15px; font-weight: 600; } @@ -243,20 +254,6 @@ input[type='checkbox'] { cursor: pointer; } -.lbl-toggle::before { - content: ' '; - display: table; - border-top: 10px solid transparent; - border-bottom: 10px solid transparent; - border-left: 8px solid currentColor; - vertical-align: middle; - transition: transform .2s ease-out; -} - -.toggle:checked+.lbl-toggle::before { - transform: rotate(90deg) translateX(3px); -} - .collapsible-content { max-height: 0px; overflow-y: auto; @@ -264,7 +261,7 @@ input[type='checkbox'] { } .toggle:checked+.lbl-toggle+.collapsible-content { - max-height: 200px; + max-height: 250px; } .toggle:checked+.lbl-toggle { @@ -289,6 +286,7 @@ input[type='checkbox'] { .tooltip { position: relative; display: inline-block; + vertical-align: middle; } /* Tooltip text */ @@ -330,9 +328,9 @@ input[type='checkbox'] { } .block-img { - width: 17px; - height: 17px; - margin: 2px 7px 5px 3px; + width: 28px; + height: 28px; + margin: 3px 15px 5px 3px; } .expander { @@ -411,11 +409,13 @@ input[type='checkbox'] { width: 30%; display: inline-block; text-align: center; + height: 55px; } #statsBlock .span-time { font-weight: 600; text-align: center !important; + height: 35px; } #statsBlock .span-time-active { @@ -493,8 +493,12 @@ input[type='checkbox'] { padding: 5px 15px; position: absolute; z-index: 98; - width: 300px; - height: 190px; + width: 400px; + height: 220px; +} + +.hint-for-settings p{ + font-size: 13px; } .hint-for-settings::before { @@ -525,44 +529,48 @@ input[type='checkbox'] { color: yellow; } -.night-mode { +.dark-mode { color: #ffffff !important; - background-color: #11151c !important; + background-color: #474747 !important; } -.night-mode .span-active-time { +.dark-mode .span-active-time { color: #ffffff; } -.night-mode .span-url { +.dark-mode .p-url { color: #ffffff; } -.night-mode .table-header { +.dark-mode .table-header { color: #ffffff; background-color: #838383; } -.night-mode .span-percentage { - color: #a5a5a5; +.dark-mode .inline-flex:hover .span-percentage { + color: #ffffff; +} + +.dark-mode .span-percentage { + color: #ffffff; } -.night-mode .block .value-block { +.dark-mode .block .value-block { color: #ffffff !important; } -.night-mode .inline-flex:hover .span-time { +.dark-mode .inline-flex:hover .span-time { color: #ffffff; } -.night-mode .span-time { +.dark-mode .span-time { color: #a5a5a5; } -.night-mode .summary-title { +.dark-mode .summary-title { color: #000000 !important; } -.night-mode .value-block{ +.dark-mode .value-block{ color: #ffffff !important; } \ No newline at end of file From 641debd554c6dd7655f42ebce6bdc371d4bbff0d Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 10 Dec 2022 19:53:23 +0300 Subject: [PATCH 007/329] Remove donate - Smal change UI for settings --- src/options.html | 46 ++++++++++++++++++----------------------- src/scripts/settings.js | 7 ++----- src/style/settings.css | 9 ++++++++ 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/options.html b/src/options.html index 1cc6da7..5411a35 100644 --- a/src/options.html +++ b/src/options.html @@ -25,28 +25,28 @@ Limits Notifications About - Donate
-
+
+
@@ -109,6 +113,7 @@ +
@@ -134,11 +139,12 @@ id='grantPermissionForNetflix'>
+
- +
diff --git a/src/scripts/settings.js b/src/scripts/settings.js index e92ec24..ae1a7c5 100644 --- a/src/scripts/settings.js +++ b/src/scripts/settings.js @@ -2,8 +2,8 @@ var storage = new LocalStorage(); var blackList = []; var restrictionList = []; var notifyList = []; -var blockBtnList = ['settingsBtn', 'restrictionsBtn', 'notifyBtn', 'aboutBtn', 'donateBtn']; -var blockList = ['settingsBlock', 'restrictionsBlock', 'notifyBlock', 'aboutBlock', 'donateBlock']; +var blockBtnList = ['settingsBtn', 'restrictionsBtn', 'notifyBtn', 'aboutBtn']; +var blockList = ['settingsBlock', 'restrictionsBlock', 'notifyBlock', 'aboutBlock']; document.addEventListener('DOMContentLoaded', function () { document.getElementById('settingsBtn').addEventListener('click', function () { @@ -19,9 +19,6 @@ document.addEventListener('DOMContentLoaded', function () { setBlockEvent('aboutBtn', 'aboutBlock'); loadVersion(); }); - document.getElementById('donateBtn').addEventListener('click', function () { - setBlockEvent('donateBtn', 'donateBlock'); - }); document.getElementById('clearAllData').addEventListener('click', function () { clearAllData(); }); diff --git a/src/style/settings.css b/src/style/settings.css index f71759d..f81b923 100644 --- a/src/style/settings.css +++ b/src/style/settings.css @@ -457,4 +457,13 @@ input[type="button"]:hover { height: 25px !important; line-height: 25px !important; background-color:green !important; +} + +.setting-header{ + font-weight: 550; + font-size: 15px; +} + +.separator{ + margin: 30px 0; } \ No newline at end of file From 667a02c22968d7d2c54a24049ce7eb2c27043061 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 10 Dec 2022 19:57:04 +0300 Subject: [PATCH 008/329] Bump version to 1.7.0 --- src/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index a5426e7..9303701 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -3,7 +3,7 @@ "name": "Web Activity Time Tracker", "short_name": "Web Time Tracker", - "version": "1.5.4", + "version": "1.7.0", "minimum_chrome_version": "26", "description": "Track and limit time your activity in the browser every day.", From cdddb44b7209ffc7232f5fae022762ec0a31241c Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 16 Dec 2022 01:30:31 +0300 Subject: [PATCH 009/329] Fix bar chart color for dark mode #79 - Return dark mode to color #121212 --- src/scripts/chart/chart-core.js | 9 ++++++++- src/scripts/ui.js | 2 +- src/style/webact.css | 10 +++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/scripts/chart/chart-core.js b/src/scripts/chart/chart-core.js index 6af29f7..7b859ad 100644 --- a/src/scripts/chart/chart-core.js +++ b/src/scripts/chart/chart-core.js @@ -245,7 +245,7 @@ function donutChart() { return chart; } -function barChart(data) { +function barChart(data, darkMode) { var margin = { top: 25, right: 5, bottom: 25, left: 5 }, width = 555, height = 160; @@ -298,10 +298,17 @@ function barChart(data) { // add the x Axis svg.append("g") .attr("transform", "translate(0," + height + ")") + .style("stroke", darkMode ? "white" : "") + .style("stroke-width", darkMode ? "0.5px" : "") .call(d3.axisBottom(x)); if (data.length > 9) document.querySelectorAll('#barChart g.tick ').forEach(element => { element.remove() }); + + if (darkMode){ + document.querySelector("#barChart path").setAttribute("stroke", "white"); + document.querySelectorAll('#barChart g.tick line').forEach(element => { element.setAttribute("stroke", "white") }); + } } function drawIntervalChart(data) { diff --git a/src/scripts/ui.js b/src/scripts/ui.js index ef55531..443c03d 100644 --- a/src/scripts/ui.js +++ b/src/scripts/ui.js @@ -112,7 +112,7 @@ class UI { drawBarChart(days) { d3.select('#barChart').datum(days); - barChart(days); + barChart(days, setting_dark_mode); } addTableHeader(currentTypeOfList, counterOfSite, totalTime, totalDays) { diff --git a/src/style/webact.css b/src/style/webact.css index ce436b9..59669e7 100644 --- a/src/style/webact.css +++ b/src/style/webact.css @@ -531,7 +531,7 @@ input[type='checkbox'] { .dark-mode { color: #ffffff !important; - background-color: #474747 !important; + background-color: #121212 !important; } .dark-mode .span-active-time { @@ -563,6 +563,14 @@ input[type='checkbox'] { color: #ffffff; } +.dark-mode .inline-flex .p-visits { + color: #ffffff; +} + +.dark-mode .inline-flex:hover .p-visits { + color: #ffffff; +} + .dark-mode .span-time { color: #a5a5a5; } From 1dd6ab24a69258ff01cf7967f385b6859329aa57 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 16 Dec 2022 01:36:24 +0300 Subject: [PATCH 010/329] Bump version to 1.7.1 --- src/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index 9303701..ace7f5b 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -3,7 +3,7 @@ "name": "Web Activity Time Tracker", "short_name": "Web Time Tracker", - "version": "1.7.0", + "version": "1.7.1", "minimum_chrome_version": "26", "description": "Track and limit time your activity in the browser every day.", From 98cbcaa64fb9493212a896c8d88e020416057f01 Mon Sep 17 00:00:00 2001 From: nilshah98 Date: Sun, 15 Jan 2023 15:35:45 +0530 Subject: [PATCH 011/329] [FEAT] Showcase time & counter for blocked website when deferring --- src/block.html | 4 ++++ src/scripts/background.js | 8 +++++--- src/scripts/block.js | 6 ++++++ src/style/block.css | 6 ++++++ 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/block.html b/src/block.html index 1aa162a..e4c2d86 100644 --- a/src/block.html +++ b/src/block.html @@ -17,6 +17,10 @@
You've reached your limit today on
Your current daily limit is
+
You have already been here + times for a total duration of + today ! +

Web Activity Time Tracker

diff --git a/src/scripts/background.js b/src/scripts/background.js index f0758b4..c304d93 100644 --- a/src/scripts/background.js +++ b/src/scripts/background.js @@ -66,7 +66,7 @@ function backgroundCheck() { function mainTRacker(activeUrl, tab, activeTab) { if (activity.isLimitExceeded(activeUrl, tab) && !activity.wasDeferred(activeUrl)) { - setBlockPageToCurrent(activeTab.url); + setBlockPageToCurrent(activeTab.url, tab.summaryTime, tab.counter); } if (!activity.isInBlackList(activeUrl)) { if (activity.isNeedNotifyView(activeUrl, tab)) { @@ -131,8 +131,10 @@ function notificationAction(activeUrl, tab) { }); } -function setBlockPageToCurrent(currentUrl) { - var blockUrl = chrome.runtime.getURL("block.html") + '?url=' + currentUrl; +function setBlockPageToCurrent(currentUrl, summaryTime, counter) { + var blockUrl = chrome.runtime.getURL("block.html") + '?url=' + currentUrl + + '&summaryTime=' + summaryTime + + '&counter=' + counter; chrome.tabs.query({ currentWindow: true, active: true }, function(tab) { chrome.tabs.update(tab.id, { url: blockUrl }); }); diff --git a/src/scripts/block.js b/src/scripts/block.js index 58bd6bb..e2d34d0 100644 --- a/src/scripts/block.js +++ b/src/scripts/block.js @@ -2,12 +2,18 @@ var storage = new LocalStorage(); var blockSiteUrl; +var blockSiteTime; +var blockSiteCounter; var restrictionList = []; document.addEventListener("DOMContentLoaded", function () { var url = new URL(document.URL); blockSiteUrl = url.searchParams.get("url"); + blockSiteTime = url.searchParams.get("summaryTime"); + blockSiteCounter = url.searchParams.get("counter"); document.getElementById("site").innerText = extractHostname(blockSiteUrl); + document.getElementById("deferredTime").innerText = convertShortSummaryTimeToString(blockSiteTime); + document.getElementById("deferredCount").innerText = blockSiteCounter; storage.getValue(STORAGE_RESTRICTION_LIST, function (items) { restrictionList = items; diff --git a/src/style/block.css b/src/style/block.css index af5e762..65fc5f3 100644 --- a/src/style/block.css +++ b/src/style/block.css @@ -41,4 +41,10 @@ body{ color: gray; text-decoration: underline; cursor: pointer; +} + +.deferred-metrics{ + font-weight: 500; + font-size: 1.2rem; + color: rgb(202, 48, 48); } \ No newline at end of file From 13015c395fba491bea657d44e981490095777d3d Mon Sep 17 00:00:00 2001 From: nilshah98 Date: Mon, 16 Jan 2023 15:58:46 +0530 Subject: [PATCH 012/329] [FIX] get only latest day metrics --- src/scripts/background.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/background.js b/src/scripts/background.js index c304d93..cc0af7f 100644 --- a/src/scripts/background.js +++ b/src/scripts/background.js @@ -66,7 +66,7 @@ function backgroundCheck() { function mainTRacker(activeUrl, tab, activeTab) { if (activity.isLimitExceeded(activeUrl, tab) && !activity.wasDeferred(activeUrl)) { - setBlockPageToCurrent(activeTab.url, tab.summaryTime, tab.counter); + setBlockPageToCurrent(activeTab.url, tab.days.at(-1).summaryTime, tab.days.at(-1).counter); } if (!activity.isInBlackList(activeUrl)) { if (activity.isNeedNotifyView(activeUrl, tab)) { From 2f25e34a65d208ea22ac371d3c9daf48b75fb558 Mon Sep 17 00:00:00 2001 From: nilshah98 Date: Mon, 16 Jan 2023 16:00:09 +0530 Subject: [PATCH 013/329] [FIX] typo when accessing time from days --- src/scripts/background.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scripts/background.js b/src/scripts/background.js index cc0af7f..58453c7 100644 --- a/src/scripts/background.js +++ b/src/scripts/background.js @@ -66,7 +66,7 @@ function backgroundCheck() { function mainTRacker(activeUrl, tab, activeTab) { if (activity.isLimitExceeded(activeUrl, tab) && !activity.wasDeferred(activeUrl)) { - setBlockPageToCurrent(activeTab.url, tab.days.at(-1).summaryTime, tab.days.at(-1).counter); + setBlockPageToCurrent(activeTab.url, tab.days.at(-1).summary, tab.days.at(-1).counter); } if (!activity.isInBlackList(activeUrl)) { if (activity.isNeedNotifyView(activeUrl, tab)) { From 24ef0b1fc698db21f94215394494789ffdda6f18 Mon Sep 17 00:00:00 2001 From: nilshah98 Date: Thu, 19 Jan 2023 00:00:31 +0530 Subject: [PATCH 014/329] [FIX] switch e.path to e.composedPath --- src/scripts/settings.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/scripts/settings.js b/src/scripts/settings.js index ae1a7c5..f1eca2b 100644 --- a/src/scripts/settings.js +++ b/src/scripts/settings.js @@ -444,14 +444,14 @@ function addDomainToEditableListBox(entity, elementId, actionEdit, actionDelete, } function deleteBlackSite(e) { - var targetElement = e.path[1]; + var targetElement = e.composedPath()[1]; blackList.splice(blackList.indexOf(targetElement.innerText), 1); document.getElementById('blackList').removeChild(targetElement); updateBlackList(); } function deleteRestrictionSite(e) { - var targetElement = e.path[1]; + var targetElement = e.composedPath()[1]; var itemValue = targetElement.querySelector("[name='domain']").value; var item = restrictionList.find(x => x.domain == itemValue); restrictionList.splice(restrictionList.indexOf(item), 1); @@ -460,7 +460,7 @@ function deleteRestrictionSite(e) { } function deleteNotificationSite(e) { - var targetElement = e.path[1]; + var targetElement = e.composedPath()[1]; var itemValue = targetElement.querySelector("[name='domain']").value; var item = notifyList.find(x => x.domain == itemValue); notifyList.splice(notifyList.indexOf(item), 1); @@ -469,7 +469,7 @@ function deleteNotificationSite(e) { } function actionEditSite(e, actionUpdateTimeFromList, actionUpdateList) { - var targetElement = e.path[1]; + var targetElement = e.composedPath()[1]; var domainElement = targetElement.querySelector('[name="domain"]'); var timeElement = targetElement.querySelector('[name="time"]'); if (timeElement.classList.contains('clock-li-readonly')) { From 0d53673690549d722c30fa1de8bd6596c0136dac Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 30 Jan 2023 13:48:13 +0300 Subject: [PATCH 015/329] Bump version to 1.7.2 --- src/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index ace7f5b..536c0ea 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -3,7 +3,7 @@ "name": "Web Activity Time Tracker", "short_name": "Web Time Tracker", - "version": "1.7.1", + "version": "1.7.2", "minimum_chrome_version": "26", "description": "Track and limit time your activity in the browser every day.", From 209129f71eb9f738f6157de6212e7d4645253718 Mon Sep 17 00:00:00 2001 From: solomon stephen <33923021+realrufans@users.noreply.github.com> Date: Sun, 5 Feb 2023 21:45:51 +0100 Subject: [PATCH 016/329] implmented Periodical CSV download as requested from #89d --- src/manifest.json | 3 +- src/options.html | 26 +++++++++++++ src/scripts/background.js | 70 +++++++++++++++++++++++++++++++++++ src/scripts/settings.js | 78 ++++++++++++++++++++++++++++++++++++++- src/style/settings.css | 10 ++++- 5 files changed, 184 insertions(+), 3 deletions(-) diff --git a/src/manifest.json b/src/manifest.json index 536c0ea..585195d 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -23,7 +23,8 @@ "idle", "chrome://favicon/*", "webNavigation", - "unlimitedStorage" + "unlimitedStorage", + "alarms" ], "optional_permissions": [ "https://www.youtube.com/*", diff --git a/src/options.html b/src/options.html index 5411a35..2a29a13 100644 --- a/src/options.html +++ b/src/options.html @@ -98,6 +98,26 @@
+
+ +
+
+ + + + + + +
@@ -113,6 +133,12 @@ + +
diff --git a/src/scripts/background.js b/src/scripts/background.js index 58453c7..fcb61bc 100644 --- a/src/scripts/background.js +++ b/src/scripts/background.js @@ -399,6 +399,76 @@ function checkPermissionsForNotifications(callback, ...props) { }); } +function createFile(data, type, fileName) { + var file = new Blob([data], { type: type }); + var downloadLink; + downloadLink = document.createElement("a"); + downloadLink.download = fileName; + downloadLink.href = window.URL.createObjectURL(file); + downloadLink.style.display = "none"; + document.body.appendChild(downloadLink); + downloadLink.click(); + } + + function toCsv(tabsData) { + var str = "domain,date,time(sec)\r\n"; + for (var i = 0; i < tabsData.length; i++) { + for (var y = 0; y < tabsData[i].days.length; y++) { + var line = + tabsData[i].url + + "," + + new Date(tabsData[i].days[y].date).toLocaleDateString() + + "," + + tabsData[i].days[y].summary; + str += line + "\r\n"; + } + } + + createFile(str, "text/csv", "domains.csv"); + } + + function exportToCSV() { + storage.getValue(STORAGE_TABS, function (item) { + toCsv(item); + }); + } + + storage.getValue("SETTINGS_PERIODIC_HOUR_DOWNLOAD", function (hour) { + storage.getValue("SETTINGS_PERIODIC_MINUTE_DOWNLOAD", function (minute) { + if (typeof hour !== "number" || typeof minute !== "number") { + return; + } else { + autoDownloadCsv(hour, minute); + } + }); + }); + + function autoDownloadCsv(hour, minute) { + var now = new Date(); + var triggerTime = new Date( + now.getFullYear(), + now.getMonth(), + now.getDate(), + hour, + minute, + 0, + 0 + ); + + if (triggerTime < now) { + triggerTime.setDate(triggerTime.getDate() + 1); + } + chrome.alarms.create("periodic_Download", { + when: triggerTime.getTime(), + periodInMinutes: 1440, // 24 hours + }); + chrome.alarms.onAlarm.addListener(function (alarm) { + if (alarm.name === "periodic_Download") { + exportToCSV(); + } + }); + } + loadPermissions(); addListener(); loadAddDataFromStorage(); diff --git a/src/scripts/settings.js b/src/scripts/settings.js index f1eca2b..769ce69 100644 --- a/src/scripts/settings.js +++ b/src/scripts/settings.js @@ -4,6 +4,8 @@ var restrictionList = []; var notifyList = []; var blockBtnList = ['settingsBtn', 'restrictionsBtn', 'notifyBtn', 'aboutBtn']; var blockList = ['settingsBlock', 'restrictionsBlock', 'notifyBlock', 'aboutBlock']; +var changed_Periodic_Download_Hour +var changed_Periodic_Download_Minutes document.addEventListener('DOMContentLoaded', function () { document.getElementById('settingsBtn').addEventListener('click', function () { @@ -72,6 +74,19 @@ document.addEventListener('DOMContentLoaded', function () { }); $('.clockpicker').clockpicker(); + document.getElementById("hour").addEventListener("change", function () { + changed_Periodic_Download_Hour = this.value; + }); + document.getElementById("minute").addEventListener("change", function () { + changed_Periodic_Download_Minutes = this.value; + }); + + document + .getElementById("time-save-btn") + .addEventListener("click", function () { + saveAutoDownloadTime(); + }); + loadSettings(); }); @@ -136,6 +151,8 @@ function loadSettings() { checkPermissionsForYT(); checkPermissionsForNetflix(); checkPermissionsForNotifications(); + createHourOptions() + createMinutesOptions() } function checkPermissionsForYT() { @@ -531,4 +548,63 @@ function updateNotificationList() { function updateNotificationMessage() { storage.saveValue(STORAGE_NOTIFICATION_MESSAGE, document.getElementById('notifyMessage').value); -} \ No newline at end of file +} + +function createHourOptions() { + var select = document.querySelector("#hour"); + for (let i = 0; i <= 23; i++) { + var option = document.createElement("option"); + option.value = i; + option.text = i; + select.appendChild(option); + } + storage.getValue("SETTINGS_PERIODIC_HOUR_DOWNLOAD", function (item) { + if (item >= 0) { + document.getElementById("hour").value = item; + } + }); + } + + function createMinutesOptions() { + var select = document.querySelector("#minute"); + for (var i = 0; i <= 59; i++) { + var option = document.createElement("option"); + option.value = i; + option.text = i; + select.appendChild(option); + } + storage.getValue("SETTINGS_PERIODIC_MINUTE_DOWNLOAD", function (item) { + if (item >= 0) { + document.getElementById("minute").value = item; + } + }); + } + + function saveAutoDownloadTime() { + var hour = changed_Periodic_Download_Hour; + var minute = changed_Periodic_Download_Minutes; + + var _eminut = document.getElementById("minute").value; + var _ehour = document.getElementById("hour").value; + console.log(minute, hour, _ehour, _eminut); + if ( + (Number(hour) >= 0 || Number(_ehour) >= 0) && + (Number(minute) >= 0 || Number(_eminut) >= 0) + ) { + storage.saveValue( + "SETTINGS_PERIODIC_MINUTE_DOWNLOAD", + Number(_eminut) || Number(minute) + ); + storage.saveValue( + "SETTINGS_PERIODIC_HOUR_DOWNLOAD", + Number(_ehour) || Number(hour) + ); + viewNotify("notify-periodic-saved"); + } else if (hour === "select" || minute === "select") { + viewNotify("notify-periodic-save-failed"); + storage.saveValue("SETTINGS_PERIODIC_MINUTE_DOWNLOAD", "select"); + storage.saveValue("SETTINGS_PERIODIC_HOUR_DOWNLOAD", "select"); + } + + + } \ No newline at end of file diff --git a/src/style/settings.css b/src/style/settings.css index f81b923..b8423c1 100644 --- a/src/style/settings.css +++ b/src/style/settings.css @@ -466,4 +466,12 @@ input[type="button"]:hover { .separator{ margin: 30px 0; -} \ No newline at end of file +} + +.time-save-btn{ + max-width: 20px !important; + margin-left: 5px !important; + } + .time-selector{ + min-width: 10px !important; + } \ No newline at end of file From a886c559bda369dd18cb56be566d98b535f210d6 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Feb 2023 11:09:17 +0300 Subject: [PATCH 017/329] Add npm to project --- .gitignore | 32 + package-lock.json | 14491 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 36 + 3 files changed, 14559 insertions(+) create mode 100644 .gitignore create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b956b79 --- /dev/null +++ b/.gitignore @@ -0,0 +1,32 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +# Output +node_modules +dist +dist-ssr +*.local +artifacts +coverage + +# CI +.jenkins +junit.xml + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +node_modules diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..a557b53 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,14491 @@ +{ + "name": "web-activity-time-tracker", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "web-activity-time-tracker", + "license": "MIT", + "devDependencies": { + "@types/node": "18", + "@vitest/coverage-c8": "^0.28.2", + "chance": "^1.1.8", + "husky": "^8.0.3", + "jsdom": "^21.1.0", + "prettier": "^2.8.2", + "pretty-quick": "^3.1.3", + "puppeteer": "^19.5.0", + "typescript": "^4.9.4", + "uglify-js": "3.17.4", + "vitest": "^0.27.0", + "vitest-mock-extended": "^1.0.8", + "web-ext": "^7.4.0", + "xvfb": "^0.4.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "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": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/runtime": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@devicefarmer/adbkit": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit/-/adbkit-3.2.3.tgz", + "integrity": "sha512-wK9rVrabs4QU0oK8Jnwi+HRBEm+s1x/o63kgthUe0y7K1bfcYmgLuQf41/adsj/5enddlSxzkJavl2EwOu+r1g==", + "dev": true, + "dependencies": { + "@devicefarmer/adbkit-logcat": "^2.1.2", + "@devicefarmer/adbkit-monkey": "~1.2.0", + "bluebird": "~3.7", + "commander": "^9.1.0", + "debug": "~4.3.1", + "node-forge": "^1.3.1", + "split": "~1.0.1" + }, + "bin": { + "adbkit": "bin/adbkit" + }, + "engines": { + "node": ">= 0.10.4" + } + }, + "node_modules/@devicefarmer/adbkit-logcat": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-logcat/-/adbkit-logcat-2.1.2.tgz", + "integrity": "sha512-G4grpEa5s9s9wCRs8YB9LjFSnz0Os3g3RYIwZSxH3JFfV3aejL5xlu4hHMH4JY+d4oCCwImcEZJcFPY9BEP21w==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@devicefarmer/adbkit-monkey": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-monkey/-/adbkit-monkey-1.2.1.tgz", + "integrity": "sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg==", + "dev": true, + "engines": { + "node": ">= 0.10.4" + } + }, + "node_modules/@devicefarmer/adbkit/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "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", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@mdn/browser-compat-data": { + "version": "5.2.29", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.29.tgz", + "integrity": "sha512-bEBrkTWbDAs/PB4IdRg4CtU750oBRytXHK/wC2oIDkgKZqnt76nACSooQQuHF11mK5k43f/IgFUMO5t5quRPVA==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/npm-conf": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz", + "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==", + "dev": true, + "dependencies": { + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sindresorhus/is": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", + "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@types/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", + "dev": true + }, + "node_modules/@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "dev": true, + "dependencies": { + "@types/chai": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.14.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.1.tgz", + "integrity": "sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vitest/coverage-c8": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/@vitest/coverage-c8/-/coverage-c8-0.28.5.tgz", + "integrity": "sha512-zCNyurjudoG0BAqAgknvlBhkV2V9ZwyYLWOAGtHSDhL/St49MJT+V2p1G0yPaoqBbKOTATVnP5H2p1XL15H75g==", + "dev": true, + "dependencies": { + "c8": "^7.12.0", + "picocolors": "^1.0.0", + "std-env": "^3.3.1", + "vitest": "0.28.5" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vitest/coverage-c8/node_modules/pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "node_modules/@vitest/coverage-c8/node_modules/vite-node": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.28.5.tgz", + "integrity": "sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==", + "dev": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.1.0", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "source-map": "^0.6.1", + "source-map-support": "^0.5.21", + "vite": "^3.0.0 || ^4.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": ">=v14.16.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vitest/coverage-c8/node_modules/vitest": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.28.5.tgz", + "integrity": "sha512-pyCQ+wcAOX7mKMcBNkzDwEHRGqQvHUl0XnoHR+3Pb1hytAHISgSxv9h0gUiSiYtISXUU3rMrKiKzFYDrI6ZIHA==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.4", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.28.5", + "@vitest/runner": "0.28.5", + "@vitest/spy": "0.28.5", + "@vitest/utils": "0.28.5", + "acorn": "^8.8.1", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.7", + "debug": "^4.3.4", + "local-pkg": "^0.4.2", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "source-map": "^0.6.1", + "std-env": "^3.3.1", + "strip-literal": "^1.0.0", + "tinybench": "^2.3.1", + "tinypool": "^0.3.1", + "tinyspy": "^1.0.2", + "vite": "^3.0.0 || ^4.0.0", + "vite-node": "0.28.5", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.16.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/@vitest/expect": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.28.5.tgz", + "integrity": "sha512-gqTZwoUTwepwGIatnw4UKpQfnoyV0Z9Czn9+Lo2/jLIt4/AXLTn+oVZxlQ7Ng8bzcNkR+3DqLJ08kNr8jRmdNQ==", + "dev": true, + "dependencies": { + "@vitest/spy": "0.28.5", + "@vitest/utils": "0.28.5", + "chai": "^4.3.7" + } + }, + "node_modules/@vitest/runner": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.28.5.tgz", + "integrity": "sha512-NKkHtLB+FGjpp5KmneQjTcPLWPTDfB7ie+MmF1PnUBf/tGe2OjGxWyB62ySYZ25EYp9krR5Bw0YPLS/VWh1QiA==", + "dev": true, + "dependencies": { + "@vitest/utils": "0.28.5", + "p-limit": "^4.0.0", + "pathe": "^1.1.0" + } + }, + "node_modules/@vitest/runner/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/runner/node_modules/pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "node_modules/@vitest/runner/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@vitest/spy": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.28.5.tgz", + "integrity": "sha512-7if6rsHQr9zbmvxN7h+gGh2L9eIIErgf8nSKYDlg07HHimCxp4H6I/X/DPXktVPPLQfiZ1Cw2cbDIx9fSqDjGw==", + "dev": true, + "dependencies": { + "tinyspy": "^1.0.2" + } + }, + "node_modules/@vitest/utils": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.28.5.tgz", + "integrity": "sha512-UyZdYwdULlOa4LTUSwZ+Paz7nBHGTT72jKwdFSV4IjHF1xsokp+CabMdhjvVhYwkLfO88ylJT46YMilnkSARZA==", + "dev": true, + "dependencies": { + "cli-truncate": "^3.1.0", + "diff": "^5.1.0", + "loupe": "^2.3.6", + "picocolors": "^1.0.0", + "pretty-format": "^27.5.1" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/addons-linter": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-5.27.0.tgz", + "integrity": "sha512-gDgl0FcmhZ5cs3St0qAaO9J1BoektwnY+p4dVgcvPu8WaBqH9MG2fk0gL/evCpoHSXeSw15GA87n8Y7zy7raVQ==", + "dev": true, + "dependencies": { + "@mdn/browser-compat-data": "5.2.29", + "addons-moz-compare": "1.3.0", + "addons-scanner-utils": "8.3.0", + "ajv": "8.12.0", + "chalk": "4.1.2", + "cheerio": "1.0.0-rc.12", + "columnify": "1.6.0", + "common-tags": "1.8.2", + "deepmerge": "4.2.2", + "eslint": "8.32.0", + "eslint-plugin-no-unsanitized": "4.0.2", + "eslint-visitor-keys": "3.3.0", + "espree": "9.4.1", + "esprima": "4.0.1", + "fast-json-patch": "3.1.1", + "fluent-syntax": "0.14.0", + "glob": "8.1.0", + "image-size": "1.0.2", + "is-mergeable-object": "1.1.1", + "jed": "1.1.1", + "json-merge-patch": "1.0.2", + "os-locale": "5.0.0", + "pino": "8.8.0", + "postcss": "8.4.21", + "relaxed-json": "1.0.3", + "semver": "7.3.8", + "sha.js": "2.4.11", + "source-map-support": "0.5.21", + "tosource": "1.0.0", + "upath": "2.0.1", + "yargs": "17.6.2", + "yauzl": "2.10.0" + }, + "bin": { + "addons-linter": "bin/addons-linter" + }, + "engines": { + "node": ">=12.21.0" + } + }, + "node_modules/addons-linter/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/addons-linter/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/addons-linter/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/addons-linter/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 + }, + "node_modules/addons-linter/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/addons-linter/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/addons-linter/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/addons-linter/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/addons-linter/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/addons-linter/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/addons-linter/node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "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.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/addons-linter/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/addons-moz-compare": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/addons-moz-compare/-/addons-moz-compare-1.3.0.tgz", + "integrity": "sha512-/rXpQeaY0nOKhNx00pmZXdk5Mu+KhVlL3/pSBuAYwrxRrNiTvI/9xfQI8Lmm7DMMl+PDhtfAHY/0ibTpdeoQQQ==", + "dev": true + }, + "node_modules/addons-scanner-utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-8.3.0.tgz", + "integrity": "sha512-XP+2kxhZxlxiVFXVJ7lyJEuxpUS8ryrolUDqnUEnvOZ/3p8qt9hWCYSliXhI2W+Swf/hZ3F4CLAG6tBnqdxDYA==", + "dev": true, + "dependencies": { + "@types/yauzl": "2.10.0", + "common-tags": "1.8.2", + "first-chunk-stream": "3.0.0", + "strip-bom-stream": "4.0.0", + "upath": "2.0.1", + "yauzl": "2.10.0" + }, + "peerDependencies": { + "body-parser": "1.20.1", + "express": "4.18.2", + "node-fetch": "2.6.7", + "safe-compare": "1.1.4" + }, + "peerDependenciesMeta": { + "body-parser": { + "optional": true + }, + "express": { + "optional": true + }, + "node-fetch": { + "optional": true + }, + "safe-compare": { + "optional": true + } + } + }, + "node_modules/adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/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 + }, + "node_modules/ansi-align/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/ansi-align/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/ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "dependencies": { + "ansi-wrap": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/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/ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "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": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "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 + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "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/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/boxen": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.1.tgz", + "integrity": "sha512-8k2eH6SRAK00NDl1iX5q17RJ8rfl53TajdYxE3ssMLehbg487dEVgsad4pIsZb/QqBgYWIl6JOauMTLGX2Kpkw==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.0", + "chalk": "^5.0.1", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bunyan": { + "version": "1.8.15", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", + "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==", + "dev": true, + "engines": [ + "node >=0.10.0" + ], + "bin": { + "bunyan": "bin/bunyan" + }, + "optionalDependencies": { + "dtrace-provider": "~0.8", + "moment": "^2.19.3", + "mv": "~2", + "safe-json-stringify": "~1" + } + }, + "node_modules/c8": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz", + "integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.8", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.8.tgz", + "integrity": "sha512-IDVO5MJ4LItE6HKFQTqT2ocAQsisOoCTUDu1ddCmnhyiwFQjXNPp4081Xj23N4tO+AFEFNzGuNEf/c8Gwwt15A==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request/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/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": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "node_modules/chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chance": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.10.tgz", + "integrity": "sha512-R6o7L/PGxBxdxzWbnLTi9nKQPtNZJySAxA1yGmAfKSiUt3KsBOAttsF04gNWA/XUcGIOrLHy7uAQ7KZwK92Qig==", + "dev": true, + "dependencies": { + "gulp-uglify-es": "^3.0.0" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/chrome-launcher": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.1.tgz", + "integrity": "sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" + }, + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/chromium-bidi": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.4.tgz", + "integrity": "sha512-4BX5cSaponuvVT1+SbLYTOAgDoVtX/Khoc9UsbFJ/AsPVUeFAM3RiIDFI6XFhLYMi9WmVJqh1ZH+dRpNKkKwiQ==", + "dev": true, + "dependencies": { + "mitt": "3.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "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, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cliui/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 + }, + "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/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/cliui/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/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/cloneable-readable/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/cloneable-readable/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/cloneable-readable/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/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/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/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "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==", + "dev": true, + "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 + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/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, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dev": true, + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/core-js": { + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", + "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "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": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", + "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", + "dev": true, + "dependencies": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "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==", + "dev": true + }, + "node_modules/deepcopy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-2.1.0.tgz", + "integrity": "sha512-8cZeTb1ZKC3bdSCP6XOM1IsTczIO73fdqtwa2B0N15eAz7gmyhQo+mc5gnFuulsgN3vIQYmTgbmQVKalH1dKvQ==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.8" + } + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1094867", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1094867.tgz", + "integrity": "sha512-pmMDBKiRVjh0uKK6CT1WqZmM3hBVSgD+N2MrgyV1uNizAZMw4tx6i/RTc+/uCsKSCmg0xXx7arCP/OFcIwTsiQ==", + "dev": true + }, + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dtrace-provider": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", + "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "nan": "^2.14.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "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/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "node_modules/es6-promisify": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", + "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/esbuild": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/eslint": { + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz", + "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-no-unsanitized": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.2.tgz", + "integrity": "sha512-Pry0S9YmHoz8NCEMRQh7N0Yexh2MYCNPIlrV52hTmS7qXnTghWsjXouF08bgsrrZqaW9tt1ZiK3j5NEmPE+EjQ==", + "dev": true, + "peerDependencies": { + "eslint": "^6 || ^7 || ^8" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/ajv": { + "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", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/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/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/eslint/node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "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==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "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 + }, + "node_modules/fast-json-patch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", + "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", + "dev": true + }, + "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 + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-redact": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", + "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/firefox-profile": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.2.2.tgz", + "integrity": "sha512-3kI17Xl9dL9AeRkpV1yahsJ+UbekkPtlQswKrIsTY1NLgxtEOR4R19rjGGz5+7/rP8Jt6fvxHk+Bai9R6Eai3w==", + "dev": true, + "dependencies": { + "adm-zip": "~0.5.x", + "fs-extra": "~9.0.1", + "ini": "~2.0.0", + "minimist": "^1.2.5", + "xml2js": "~0.4.23" + }, + "bin": { + "firefox-profile": "lib/cli.js" + } + }, + "node_modules/firefox-profile/node_modules/fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/firefox-profile/node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/first-chunk-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-3.0.0.tgz", + "integrity": "sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/fluent-syntax": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.14.0.tgz", + "integrity": "sha512-+k8uXWfRpSrE33764RbpjIKMzIX6R9EnSjFBgaA1s0Mboc3KnW9sYe0c6vjIoZQY1C4Gst1VFvAOP6YGJjTJuA==", + "deprecated": "Renamed to @fluent/syntax 0.14.0", + "dev": true, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true, + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "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==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-extra/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/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/fx-runner": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.3.0.tgz", + "integrity": "sha512-5b37H4GCyhF+Nf8xk9mylXoDq4wb7pbGAXxlCXp/631UTeeZomWSYcEGXumY4wk8g2QAqjPMGdWW+RbNt8PUcA==", + "dev": true, + "dependencies": { + "commander": "2.9.0", + "shell-quote": "1.7.3", + "spawn-sync": "1.0.15", + "when": "3.7.7", + "which": "1.2.4", + "winreg": "0.0.12" + }, + "bin": { + "fx-runner": "bin/fx-runner" + } + }, + "node_modules/fx-runner/node_modules/commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "dev": true, + "dependencies": { + "graceful-readlink": ">= 1.0.0" + }, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/fx-runner/node_modules/isexe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", + "integrity": "sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==", + "dev": true + }, + "node_modules/fx-runner/node_modules/which": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", + "integrity": "sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==", + "dev": true, + "dependencies": { + "is-absolute": "^0.1.7", + "isexe": "^1.1.1" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "12.5.3", + "resolved": "https://registry.npmjs.org/got/-/got-12.5.3.tgz", + "integrity": "sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.1", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/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/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + "dev": true + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true + }, + "node_modules/gulp-uglify-es": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-uglify-es/-/gulp-uglify-es-3.0.0.tgz", + "integrity": "sha512-dQ3czMFFojNgCajcrYl0oa98+YayaQ8kXRdaacpZRZ3iw2sdVURfdt8y8Ki1ogZGQqw8BUawnB7V6NkanxqnDg==", + "dev": true, + "dependencies": { + "o-stream": "^0.3.0", + "plugin-error": "^1.0.1", + "terser": "^5.7.1", + "vinyl": "^2.2.1", + "vinyl-sourcemaps-apply": "^0.2.1" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true, + "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", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/har-validator/node_modules/ajv": { + "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", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/har-validator/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "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/has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", + "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "entities": "^4.3.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "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": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "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", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "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, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "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/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "dev": true, + "dependencies": { + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "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" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/invert-kv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz", + "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sindresorhus/invert-kv?sponsor=1" + } + }, + "node_modules/is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==", + "dev": true, + "dependencies": { + "is-relative": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-mergeable-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-mergeable-object/-/is-mergeable-object-1.1.1.tgz", + "integrity": "sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==", + "dev": true + }, + "node_modules/is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jed": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", + "integrity": "sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==", + "dev": true + }, + "node_modules/jose": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.11.2.tgz", + "integrity": "sha512-njj0VL2TsIxCtgzhO+9RRobBvws4oYyCM8TpvoUQwl/MbIM3NFJRR9+e6x0sS5xXaP1t6OCBkaBME98OV9zU5A==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "node_modules/jsdom": { + "version": "21.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-21.1.0.tgz", + "integrity": "sha512-m0lzlP7qOtthD918nenK3hdItSd2I+V3W9IrBcB36sqDwG+KnUs66IF5GY7laGWUnlM9vTsD0W1QwSEBYWWcJg==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "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/json-merge-patch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-1.0.2.tgz", + "integrity": "sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + } + }, + "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==", + "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==", + "dev": true + }, + "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/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "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": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "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/jsonfile/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/jsonwebtoken": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "dev": true, + "dependencies": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "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.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "dev": true, + "dependencies": { + "package-json": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lcid": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz", + "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==", + "dev": true, + "dependencies": { + "invert-kv": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lighthouse-logger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", + "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", + "dev": true, + "dependencies": { + "debug": "^2.6.9", + "marky": "^1.2.2" + } + }, + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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==", + "dev": true + }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "dependencies": { + "get-func-name": "^2.0.0" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", + "dev": true + }, + "node_modules/mem": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-5.1.1.tgz", + "integrity": "sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==", + "dev": true, + "dependencies": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^2.1.0", + "p-is-promise": "^2.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "dev": true + }, + "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/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/mlly": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.1.1.tgz", + "integrity": "sha512-Jnlh4W/aI4GySPo6+DyTN17Q75KKbLTyFK8BrGhjNP4rxuUjbRWhE6gHg3bs33URWAF44FRm7gdQA348i3XxRw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.2", + "pathe": "^1.1.0", + "pkg-types": "^1.0.1", + "ufo": "^1.1.0" + } + }, + "node_modules/mlly/node_modules/pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "node_modules/moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", + "dev": true, + "optional": true, + "dependencies": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/mv/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "dev": true, + "optional": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mv/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "optional": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mv/node_modules/rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", + "dev": true, + "optional": true, + "dependencies": { + "glob": "^6.0.1" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, + "node_modules/nanoid": { + "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" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true, + "optional": true, + "bin": { + "ncp": "bin/ncp" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "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==", + "dev": true, + "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-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-notifier": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-10.0.1.tgz", + "integrity": "sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==", + "dev": true, + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.5", + "shellwords": "^0.1.1", + "uuid": "^8.3.2", + "which": "^2.0.2" + } + }, + "node_modules/node-notifier/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true + }, + "node_modules/o-stream": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/o-stream/-/o-stream-0.3.0.tgz", + "integrity": "sha512-gbzl6qCJZ609x/M2t25HqCYQagFzWYCtQ84jcuObGr+V8D1Am4EVubkF4J+XFs6ukfiv96vNeiBb8FrbbMZYiQ==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", + "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "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==", + "dev": true, + "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/os-locale": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-5.0.0.tgz", + "integrity": "sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==", + "dev": true, + "dependencies": { + "execa": "^4.0.0", + "lcid": "^3.0.0", + "mem": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/package-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", + "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", + "dev": true, + "dependencies": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "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" + }, + "engines": { + "node": ">=6" + } + }, + "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==", + "dev": true, + "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/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "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/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true + }, + "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/pathe": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz", + "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==", + "dev": true + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/pino": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.8.0.tgz", + "integrity": "sha512-cF8iGYeu2ODg2gIwgAHcPrtR63ILJz3f7gkogaHC/TXVVXxZgInmNYiIpDYEwgEkxZti2Se6P2W2DxlBIZe6eQ==", + "dev": true, + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "v1.0.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^2.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.1.0", + "thread-stream": "^2.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", + "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "dev": true, + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz", + "integrity": "sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==", + "dev": true + }, + "node_modules/pkg-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.2.tgz", + "integrity": "sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==", + "dev": true, + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.1.1", + "pathe": "^1.1.0" + } + }, + "node_modules/pkg-types/node_modules/pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "node_modules/plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "dependencies": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-quick": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", + "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", + "dev": true, + "dependencies": { + "chalk": "^3.0.0", + "execa": "^4.0.0", + "find-up": "^4.1.0", + "ignore": "^5.1.4", + "mri": "^1.1.5", + "multimatch": "^4.0.0" + }, + "bin": { + "pretty-quick": "bin/pretty-quick.js" + }, + "engines": { + "node": ">=10.13" + }, + "peerDependencies": { + "prettier": ">=2.0.0" + } + }, + "node_modules/pretty-quick/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": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-quick/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": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-quick/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": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-quick/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": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/process-warning": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.1.0.tgz", + "integrity": "sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-toolbox": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/promise-toolbox/-/promise-toolbox-0.21.0.tgz", + "integrity": "sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg==", + "dev": true, + "dependencies": { + "make-error": "^1.3.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "dev": true, + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/puppeteer": { + "version": "19.7.2", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.7.2.tgz", + "integrity": "sha512-4Lm7Qpe/LU95Svirei/jDLDvR5oMrl9BPGd7HMY5+Q28n+BhvKuW97gKkR+1LlI86bO8J3g8rG/Ll5kv9J1nlQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "cosmiconfig": "8.0.0", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "puppeteer-core": "19.7.2" + }, + "engines": { + "node": ">=14.1.0" + } + }, + "node_modules/puppeteer-core": { + "version": "19.7.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.7.2.tgz", + "integrity": "sha512-PvI+fXqgP0uGJxkyZcX51bnzjFA73MODZOAv0fSD35yR7tvbqwtMV3/Y+hxQ0AMMwzxkEebP6c7po/muqxJvmQ==", + "dev": true, + "dependencies": { + "chromium-bidi": "0.4.4", + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1094867", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.11.0" + }, + "engines": { + "node": ">=14.1.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/puppeteer-core/node_modules/ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dev": true, + "dependencies": { + "inherits": "~2.0.3" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "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/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "dev": true + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", + "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", + "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", + "dev": true, + "dependencies": { + "@pnpm/npm-conf": "^1.0.4" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dev": true, + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/relaxed-json": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/relaxed-json/-/relaxed-json-1.0.3.tgz", + "integrity": "sha512-b7wGPo7o2KE/g7SqkJDDbav6zmrEeP4TK2VpITU72J/M949TLe/23y/ZHJo+pskcGM52xIfFoT9hydwmgr1AEg==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2", + "commander": "^2.6.0" + }, + "bin": { + "rjson": "bin/rjson.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/relaxed-json/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/relaxed-json/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/relaxed-json/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/relaxed-json/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/relaxed-json/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/relaxed-json/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/relaxed-json/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "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", + "dev": true, + "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/request/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==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/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==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/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.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "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", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "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" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.2.tgz", + "integrity": "sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "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==", + "dev": true, + "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/safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "dev": true, + "optional": true + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", + "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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 + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "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" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, + "node_modules/sign-addon": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-5.2.0.tgz", + "integrity": "sha512-t5CZ4MSKAd3uJBUfjgWfSyKYC1pQS6BMUbgI5OytzMkTOQ9NkdkFE8bB0AJLQIGqDrNS2b1+/ghAP56iuCUE+g==", + "dev": true, + "dependencies": { + "common-tags": "1.8.2", + "core-js": "3.27.1", + "deepcopy": "2.1.0", + "es6-error": "4.1.1", + "es6-promisify": "7.0.0", + "jsonwebtoken": "9.0.0", + "mz": "2.7.0", + "request": "2.88.2", + "source-map-support": "0.5.21", + "stream-to-promise": "3.0.0" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sleep": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sleep/-/sleep-6.1.0.tgz", + "integrity": "sha512-Z1x4JjJxsru75Tqn8F4tnOFeEu3HjtITTsumYUiuz54sGKdISgLCek9AUlXlVVrkhltRFhNUsJDJE76SFHTDIQ==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "nan": "^2.13.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/sonic-boom": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.1.tgz", + "integrity": "sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==", + "dev": true, + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "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" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "concat-stream": "^1.4.7", + "os-shim": "^0.1.2" + } + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "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/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, + "node_modules/std-env": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz", + "integrity": "sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==", + "dev": true + }, + "node_modules/stream-to-array": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", + "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==", + "dev": true, + "dependencies": { + "any-promise": "^1.1.0" + } + }, + "node_modules/stream-to-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-3.0.0.tgz", + "integrity": "sha512-h+7wLeFiYegOdgTfTxjRsrT7/Op7grnKEIHWgaO1RTHwcwk7xRreMr3S8XpDfDMesSxzgM2V4CxNCFAGo6ssnA==", + "dev": true, + "dependencies": { + "any-promise": "~1.3.0", + "end-of-stream": "~1.4.1", + "stream-to-array": "~2.3.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-5.0.0.tgz", + "integrity": "sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-bom-buf": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-2.0.0.tgz", + "integrity": "sha512-gLFNHucd6gzb8jMsl5QmZ3QgnUJmp7qn4uUSHNwEXumAp7YizoGYw19ZUVfuq4aBOQUtyn2k8X/CwzWB73W2lQ==", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom-stream": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-4.0.0.tgz", + "integrity": "sha512-0ApK3iAkHv6WbgLICw/J4nhwHeDZsBxIIsOD+gHgZICL6SeJ0S9f/WZqemka9cjkTyMN5geId6e8U5WGFAn3cQ==", + "dev": true, + "dependencies": { + "first-chunk-stream": "^3.0.0", + "strip-bom-buf": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", + "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", + "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.8.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "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/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/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.16.5", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.5.tgz", + "integrity": "sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/thread-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.3.0.tgz", + "integrity": "sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==", + "dev": true, + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/tinybench": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", + "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", + "dev": true + }, + "node_modules/tinypool": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.1.tgz", + "integrity": "sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.1.1.tgz", + "integrity": "sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tosource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", + "integrity": "sha512-N6g8eQ1eerw6Y1pBhdgkubWIiPFwXa2POSUrlL8jth5CyyEWNWzoGKRkO3CaO7Jx27hlJP54muB3btIAbx4MPg==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/ts-essentials": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.3.0.tgz", + "integrity": "sha512-XeiCboEyBG8UqXZtXl59bWEi4ZgOqRsogFDI6WDGIF1LmzbYiAkIwjkXN6zZWWl4re/lsOqMlYfe8KA0XiiEPw==", + "dev": true, + "peerDependencies": { + "typescript": ">=4.1.0" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ufo": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.0.tgz", + "integrity": "sha512-LQc2s/ZDMaCN3QLpa+uzHUOQ7SdV0qgv3VBXOolQGXTaaZpIur6PwUclF5nN2hNkiTRcUugXd1zFOW3FLJ135Q==", + "dev": true + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "dev": true, + "dependencies": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/update-notifier/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "dev": true, + "dependencies": { + "source-map": "^0.5.1" + } + }, + "node_modules/vinyl-sourcemaps-apply/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vite": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz", + "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==", + "dev": true, + "dependencies": { + "esbuild": "^0.16.14", + "postcss": "^8.4.21", + "resolve": "^1.22.1", + "rollup": "^3.10.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.27.3.tgz", + "integrity": "sha512-eyJYOO64o5HIp8poc4bJX+ZNBwMZeI3f6/JdiUmJgW02Mt7LnoCtDMRVmLaY9S05SIsjGe339ZK4uo2wQ+bF9g==", + "dev": true, + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.1.0", + "pathe": "^0.2.0", + "picocolors": "^1.0.0", + "source-map": "^0.6.1", + "source-map-support": "^0.5.21", + "vite": "^3.0.0 || ^4.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": ">=v14.16.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/vitest": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.27.3.tgz", + "integrity": "sha512-Ld3UVgRVhJUtqvQ3dW89GxiApFAgBsWJZBCWzK+gA3w2yG68csXlGZZ4WDJURf+8ecNfgrScga6xY+8YSOpiMg==", + "dev": true, + "dependencies": { + "@types/chai": "^4.3.4", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "acorn": "^8.8.1", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.7", + "debug": "^4.3.4", + "local-pkg": "^0.4.2", + "picocolors": "^1.0.0", + "source-map": "^0.6.1", + "std-env": "^3.3.1", + "strip-literal": "^1.0.0", + "tinybench": "^2.3.1", + "tinypool": "^0.3.0", + "tinyspy": "^1.0.2", + "vite": "^3.0.0 || ^4.0.0", + "vite-node": "0.27.3", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": ">=v14.16.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@vitest/browser": "*", + "@vitest/ui": "*", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest-mock-extended": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/vitest-mock-extended/-/vitest-mock-extended-1.0.9.tgz", + "integrity": "sha512-avWOwla4xsubFUbL1O2Zvqn8xUucQWai05ryywfhjUIthkjJKk01g5/s4SrjTHZXGZ2/h6NfF51FJ3voix1OAw==", + "dev": true, + "dependencies": { + "ts-essentials": "^9.3.0" + }, + "peerDependencies": { + "typescript": "3.x || 4.x", + "vitest": ">=0.26.2" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/web-ext": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-7.5.0.tgz", + "integrity": "sha512-Ymflj7Aq/LOD+zGoyvwRbAPx/yMJeig2OEb/rRXYrWl6NWRI5E0c2iWGqlBcnL45iKrOzz70H438dVeJk0w2ug==", + "dev": true, + "dependencies": { + "@babel/runtime": "7.20.13", + "@devicefarmer/adbkit": "3.2.3", + "addons-linter": "5.27.0", + "bunyan": "1.8.15", + "camelcase": "7.0.1", + "chrome-launcher": "0.15.1", + "debounce": "1.2.1", + "decamelize": "6.0.0", + "es6-error": "4.1.1", + "firefox-profile": "4.2.2", + "fs-extra": "11.1.0", + "fx-runner": "1.3.0", + "import-fresh": "3.3.0", + "jose": "4.11.2", + "mkdirp": "1.0.4", + "multimatch": "6.0.0", + "mz": "2.7.0", + "node-fetch": "3.3.0", + "node-notifier": "10.0.1", + "open": "8.4.0", + "parse-json": "6.0.2", + "promise-toolbox": "0.21.0", + "sign-addon": "5.2.0", + "source-map-support": "0.5.21", + "strip-bom": "5.0.0", + "strip-json-comments": "5.0.0", + "tmp": "0.2.1", + "update-notifier": "6.0.2", + "watchpack": "2.4.0", + "ws": "8.12.0", + "yargs": "17.6.2", + "zip-dir": "2.0.0" + }, + "bin": { + "web-ext": "bin/web-ext.js" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6.9.0" + } + }, + "node_modules/web-ext/node_modules/array-differ": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-4.0.0.tgz", + "integrity": "sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/web-ext/node_modules/array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/web-ext/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/web-ext/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 + }, + "node_modules/web-ext/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/web-ext/node_modules/lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/web-ext/node_modules/multimatch": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-6.0.0.tgz", + "integrity": "sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.5", + "array-differ": "^4.0.0", + "array-union": "^3.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/web-ext/node_modules/node-fetch": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", + "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/web-ext/node_modules/parse-json": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-6.0.2.tgz", + "integrity": "sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^2.3.1", + "lines-and-columns": "^2.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/web-ext/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/web-ext/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/web-ext/node_modules/ws": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", + "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/web-ext/node_modules/yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "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.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/web-ext/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/when": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz", + "integrity": "sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==", + "dev": true + }, + "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/why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, + "dependencies": { + "string-width": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/winreg": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz", + "integrity": "sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ==", + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", + "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "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==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xvfb": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/xvfb/-/xvfb-0.4.0.tgz", + "integrity": "sha512-g55AbjcBL4Bztfn7kiUrR0ne8mMUsFODDJ+HFGf5OuHJqKKccpExX2Qgn7VF2eImw1eoh6+riXHser1J4agrFA==", + "dev": true, + "optionalDependencies": { + "sleep": "6.1.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, + "engines": { + "node": ">=10" + } + }, + "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 + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "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": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/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 + }, + "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/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zip-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz", + "integrity": "sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==", + "dev": true, + "dependencies": { + "async": "^3.2.0", + "jszip": "^3.2.2" + } + } + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/runtime": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@devicefarmer/adbkit": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit/-/adbkit-3.2.3.tgz", + "integrity": "sha512-wK9rVrabs4QU0oK8Jnwi+HRBEm+s1x/o63kgthUe0y7K1bfcYmgLuQf41/adsj/5enddlSxzkJavl2EwOu+r1g==", + "dev": true, + "requires": { + "@devicefarmer/adbkit-logcat": "^2.1.2", + "@devicefarmer/adbkit-monkey": "~1.2.0", + "bluebird": "~3.7", + "commander": "^9.1.0", + "debug": "~4.3.1", + "node-forge": "^1.3.1", + "split": "~1.0.1" + }, + "dependencies": { + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true + } + } + }, + "@devicefarmer/adbkit-logcat": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-logcat/-/adbkit-logcat-2.1.2.tgz", + "integrity": "sha512-G4grpEa5s9s9wCRs8YB9LjFSnz0Os3g3RYIwZSxH3JFfV3aejL5xlu4hHMH4JY+d4oCCwImcEZJcFPY9BEP21w==", + "dev": true + }, + "@devicefarmer/adbkit-monkey": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-monkey/-/adbkit-monkey-1.2.1.tgz", + "integrity": "sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg==", + "dev": true + }, + "@esbuild/android-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", + "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "dev": true, + "optional": true + }, + "@esbuild/android-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", + "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", + "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", + "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", + "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", + "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", + "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", + "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", + "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", + "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", + "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", + "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", + "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", + "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", + "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", + "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", + "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", + "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", + "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", + "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", + "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", + "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "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", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "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 + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@mdn/browser-compat-data": { + "version": "5.2.29", + "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.29.tgz", + "integrity": "sha512-bEBrkTWbDAs/PB4IdRg4CtU750oBRytXHK/wC2oIDkgKZqnt76nACSooQQuHF11mK5k43f/IgFUMO5t5quRPVA==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, + "requires": { + "graceful-fs": "4.2.10" + } + }, + "@pnpm/npm-conf": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz", + "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==", + "dev": true, + "requires": { + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + } + }, + "@sindresorhus/is": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", + "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.1" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@types/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", + "dev": true + }, + "@types/chai-subset": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", + "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", + "dev": true, + "requires": { + "@types/chai": "*" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/node": { + "version": "18.14.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.1.tgz", + "integrity": "sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==", + "dev": true + }, + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@vitest/coverage-c8": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/@vitest/coverage-c8/-/coverage-c8-0.28.5.tgz", + "integrity": "sha512-zCNyurjudoG0BAqAgknvlBhkV2V9ZwyYLWOAGtHSDhL/St49MJT+V2p1G0yPaoqBbKOTATVnP5H2p1XL15H75g==", + "dev": true, + "requires": { + "c8": "^7.12.0", + "picocolors": "^1.0.0", + "std-env": "^3.3.1", + "vitest": "0.28.5" + }, + "dependencies": { + "pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "vite-node": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.28.5.tgz", + "integrity": "sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==", + "dev": true, + "requires": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.1.0", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "source-map": "^0.6.1", + "source-map-support": "^0.5.21", + "vite": "^3.0.0 || ^4.0.0" + } + }, + "vitest": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.28.5.tgz", + "integrity": "sha512-pyCQ+wcAOX7mKMcBNkzDwEHRGqQvHUl0XnoHR+3Pb1hytAHISgSxv9h0gUiSiYtISXUU3rMrKiKzFYDrI6ZIHA==", + "dev": true, + "requires": { + "@types/chai": "^4.3.4", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "@vitest/expect": "0.28.5", + "@vitest/runner": "0.28.5", + "@vitest/spy": "0.28.5", + "@vitest/utils": "0.28.5", + "acorn": "^8.8.1", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.7", + "debug": "^4.3.4", + "local-pkg": "^0.4.2", + "pathe": "^1.1.0", + "picocolors": "^1.0.0", + "source-map": "^0.6.1", + "std-env": "^3.3.1", + "strip-literal": "^1.0.0", + "tinybench": "^2.3.1", + "tinypool": "^0.3.1", + "tinyspy": "^1.0.2", + "vite": "^3.0.0 || ^4.0.0", + "vite-node": "0.28.5", + "why-is-node-running": "^2.2.2" + } + } + } + }, + "@vitest/expect": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.28.5.tgz", + "integrity": "sha512-gqTZwoUTwepwGIatnw4UKpQfnoyV0Z9Czn9+Lo2/jLIt4/AXLTn+oVZxlQ7Ng8bzcNkR+3DqLJ08kNr8jRmdNQ==", + "dev": true, + "requires": { + "@vitest/spy": "0.28.5", + "@vitest/utils": "0.28.5", + "chai": "^4.3.7" + } + }, + "@vitest/runner": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.28.5.tgz", + "integrity": "sha512-NKkHtLB+FGjpp5KmneQjTcPLWPTDfB7ie+MmF1PnUBf/tGe2OjGxWyB62ySYZ25EYp9krR5Bw0YPLS/VWh1QiA==", + "dev": true, + "requires": { + "@vitest/utils": "0.28.5", + "p-limit": "^4.0.0", + "pathe": "^1.1.0" + }, + "dependencies": { + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } + }, + "@vitest/spy": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.28.5.tgz", + "integrity": "sha512-7if6rsHQr9zbmvxN7h+gGh2L9eIIErgf8nSKYDlg07HHimCxp4H6I/X/DPXktVPPLQfiZ1Cw2cbDIx9fSqDjGw==", + "dev": true, + "requires": { + "tinyspy": "^1.0.2" + } + }, + "@vitest/utils": { + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.28.5.tgz", + "integrity": "sha512-UyZdYwdULlOa4LTUSwZ+Paz7nBHGTT72jKwdFSV4IjHF1xsokp+CabMdhjvVhYwkLfO88ylJT46YMilnkSARZA==", + "dev": true, + "requires": { + "cli-truncate": "^3.1.0", + "diff": "^5.1.0", + "loupe": "^2.3.6", + "picocolors": "^1.0.0", + "pretty-format": "^27.5.1" + } + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true + }, + "acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "requires": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "addons-linter": { + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-5.27.0.tgz", + "integrity": "sha512-gDgl0FcmhZ5cs3St0qAaO9J1BoektwnY+p4dVgcvPu8WaBqH9MG2fk0gL/evCpoHSXeSw15GA87n8Y7zy7raVQ==", + "dev": true, + "requires": { + "@mdn/browser-compat-data": "5.2.29", + "addons-moz-compare": "1.3.0", + "addons-scanner-utils": "8.3.0", + "ajv": "8.12.0", + "chalk": "4.1.2", + "cheerio": "1.0.0-rc.12", + "columnify": "1.6.0", + "common-tags": "1.8.2", + "deepmerge": "4.2.2", + "eslint": "8.32.0", + "eslint-plugin-no-unsanitized": "4.0.2", + "eslint-visitor-keys": "3.3.0", + "espree": "9.4.1", + "esprima": "4.0.1", + "fast-json-patch": "3.1.1", + "fluent-syntax": "0.14.0", + "glob": "8.1.0", + "image-size": "1.0.2", + "is-mergeable-object": "1.1.1", + "jed": "1.1.1", + "json-merge-patch": "1.0.2", + "os-locale": "5.0.0", + "pino": "8.8.0", + "postcss": "8.4.21", + "relaxed-json": "1.0.3", + "semver": "7.3.8", + "sha.js": "2.4.11", + "source-map-support": "0.5.21", + "tosource": "1.0.0", + "upath": "2.0.1", + "yargs": "17.6.2", + "yauzl": "2.10.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.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": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "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 + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "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 + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "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" + } + }, + "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" + } + }, + "yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "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.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "addons-moz-compare": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/addons-moz-compare/-/addons-moz-compare-1.3.0.tgz", + "integrity": "sha512-/rXpQeaY0nOKhNx00pmZXdk5Mu+KhVlL3/pSBuAYwrxRrNiTvI/9xfQI8Lmm7DMMl+PDhtfAHY/0ibTpdeoQQQ==", + "dev": true + }, + "addons-scanner-utils": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-8.3.0.tgz", + "integrity": "sha512-XP+2kxhZxlxiVFXVJ7lyJEuxpUS8ryrolUDqnUEnvOZ/3p8qt9hWCYSliXhI2W+Swf/hZ3F4CLAG6tBnqdxDYA==", + "dev": true, + "requires": { + "@types/yauzl": "2.10.0", + "common-tags": "1.8.2", + "first-chunk-stream": "3.0.0", + "strip-bom-stream": "4.0.0", + "upath": "2.0.1", + "yauzl": "2.10.0" + } + }, + "adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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" + } + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "requires": { + "string-width": "^4.1.0" + }, + "dependencies": { + "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 + }, + "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" + } + } + } + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "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 + }, + "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" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", + "dev": true + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "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==", + "dev": true, + "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": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, + "atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "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 + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "boxen": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.1.tgz", + "integrity": "sha512-8k2eH6SRAK00NDl1iX5q17RJ8rfl53TajdYxE3ssMLehbg487dEVgsad4pIsZb/QqBgYWIl6JOauMTLGX2Kpkw==", + "dev": true, + "requires": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.0", + "chalk": "^5.0.1", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.0.1" + }, + "dependencies": { + "chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "bunyan": { + "version": "1.8.15", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", + "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==", + "dev": true, + "requires": { + "dtrace-provider": "~0.8", + "moment": "^2.19.3", + "mv": "~2", + "safe-json-stringify": "~1" + } + }, + "c8": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz", + "integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + } + }, + "cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true + }, + "cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true + }, + "cacheable-request": { + "version": "10.2.8", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.8.tgz", + "integrity": "sha512-IDVO5MJ4LItE6HKFQTqT2ocAQsisOoCTUDu1ddCmnhyiwFQjXNPp4081Xj23N4tO+AFEFNzGuNEf/c8Gwwt15A==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "^4.0.1", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.2", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.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 + } + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "chai": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", + "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^4.1.2", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chance": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.10.tgz", + "integrity": "sha512-R6o7L/PGxBxdxzWbnLTi9nKQPtNZJySAxA1yGmAfKSiUt3KsBOAttsF04gNWA/XUcGIOrLHy7uAQ7KZwK92Qig==", + "dev": true, + "requires": { + "gulp-uglify-es": "^3.0.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, + "cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "requires": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + } + }, + "cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-launcher": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.1.tgz", + "integrity": "sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==", + "dev": true, + "requires": { + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + } + }, + "chromium-bidi": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.4.tgz", + "integrity": "sha512-4BX5cSaponuvVT1+SbLYTOAgDoVtX/Khoc9UsbFJ/AsPVUeFAM3RiIDFI6XFhLYMi9WmVJqh1ZH+dRpNKkKwiQ==", + "dev": true, + "requires": { + "mitt": "3.0.0" + } + }, + "ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true + }, + "cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true + }, + "cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "requires": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.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" + }, + "dependencies": { + "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 + }, + "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" + } + }, + "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" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true + }, + "clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "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 + }, + "columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, + "requires": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "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==", + "dev": true + }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "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, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + } + } + }, + "configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dev": true, + "requires": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + } + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "core-js": { + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", + "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "cosmiconfig": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", + "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", + "dev": true, + "requires": { + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" + } + }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dev": true, + "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", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "requires": { + "type-fest": "^1.0.1" + }, + "dependencies": { + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true + } + } + }, + "css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true + }, + "data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + } + }, + "debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", + "dev": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true + }, + "decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + }, + "dependencies": { + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + } + } + }, + "deep-eql": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", + "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true + }, + "deepcopy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-2.1.0.tgz", + "integrity": "sha512-8cZeTb1ZKC3bdSCP6XOM1IsTczIO73fdqtwa2B0N15eAz7gmyhQo+mc5gnFuulsgN3vIQYmTgbmQVKalH1dKvQ==", + "dev": true, + "requires": { + "type-detect": "^4.0.8" + } + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + } + } + }, + "defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "devtools-protocol": { + "version": "0.0.1094867", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1094867.tgz", + "integrity": "sha512-pmMDBKiRVjh0uKK6CT1WqZmM3hBVSgD+N2MrgyV1uNizAZMw4tx6i/RTc+/uCsKSCmg0xXx7arCP/OFcIwTsiQ==", + "dev": true + }, + "diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "dev": true, + "requires": { + "webidl-conversions": "^7.0.0" + } + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0" + } + }, + "domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dev": true, + "requires": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + } + }, + "dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dtrace-provider": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", + "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.14.0" + } + }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "dev": true + }, + "error-ex": { + "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" + } + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true + }, + "es6-promisify": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", + "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", + "dev": true + }, + "esbuild": { + "version": "0.16.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", + "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.16.17", + "@esbuild/android-arm64": "0.16.17", + "@esbuild/android-x64": "0.16.17", + "@esbuild/darwin-arm64": "0.16.17", + "@esbuild/darwin-x64": "0.16.17", + "@esbuild/freebsd-arm64": "0.16.17", + "@esbuild/freebsd-x64": "0.16.17", + "@esbuild/linux-arm": "0.16.17", + "@esbuild/linux-arm64": "0.16.17", + "@esbuild/linux-ia32": "0.16.17", + "@esbuild/linux-loong64": "0.16.17", + "@esbuild/linux-mips64el": "0.16.17", + "@esbuild/linux-ppc64": "0.16.17", + "@esbuild/linux-riscv64": "0.16.17", + "@esbuild/linux-s390x": "0.16.17", + "@esbuild/linux-x64": "0.16.17", + "@esbuild/netbsd-x64": "0.16.17", + "@esbuild/openbsd-x64": "0.16.17", + "@esbuild/sunos-x64": "0.16.17", + "@esbuild/win32-arm64": "0.16.17", + "@esbuild/win32-ia32": "0.16.17", + "@esbuild/win32-x64": "0.16.17" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "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==", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", + "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "eslint": { + "version": "8.32.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz", + "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.4.1", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "ajv": { + "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", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "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" + } + }, + "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 + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + } + } + }, + "eslint-plugin-no-unsanitized": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.2.tgz", + "integrity": "sha512-Pry0S9YmHoz8NCEMRQh7N0Yexh2MYCNPIlrV52hTmS7qXnTghWsjXouF08bgsrrZqaW9tt1ZiK3j5NEmPE+EjQ==", + "dev": true, + "requires": {} + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "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 + }, + "fast-json-patch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", + "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", + "dev": true + }, + "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 + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fast-redact": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", + "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", + "dev": true + }, + "fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "firefox-profile": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.2.2.tgz", + "integrity": "sha512-3kI17Xl9dL9AeRkpV1yahsJ+UbekkPtlQswKrIsTY1NLgxtEOR4R19rjGGz5+7/rP8Jt6fvxHk+Bai9R6Eai3w==", + "dev": true, + "requires": { + "adm-zip": "~0.5.x", + "fs-extra": "~9.0.1", + "ini": "~2.0.0", + "minimist": "^1.2.5", + "xml2js": "~0.4.23" + }, + "dependencies": { + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + } + } + }, + "first-chunk-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-3.0.0.tgz", + "integrity": "sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw==", + "dev": true + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "fluent-syntax": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.14.0.tgz", + "integrity": "sha512-+k8uXWfRpSrE33764RbpjIKMzIX6R9EnSjFBgaA1s0Mboc3KnW9sYe0c6vjIoZQY1C4Gst1VFvAOP6YGJjTJuA==", + "dev": true + }, + "foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true + }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "requires": { + "fetch-blob": "^3.1.2" + } + }, + "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==", + "dev": true + }, + "fs-extra": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", + "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "fx-runner": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.3.0.tgz", + "integrity": "sha512-5b37H4GCyhF+Nf8xk9mylXoDq4wb7pbGAXxlCXp/631UTeeZomWSYcEGXumY4wk8g2QAqjPMGdWW+RbNt8PUcA==", + "dev": true, + "requires": { + "commander": "2.9.0", + "shell-quote": "1.7.3", + "spawn-sync": "1.0.15", + "when": "3.7.7", + "which": "1.2.4", + "winreg": "0.0.12" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "isexe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", + "integrity": "sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==", + "dev": true + }, + "which": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", + "integrity": "sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==", + "dev": true, + "requires": { + "is-absolute": "^0.1.7", + "isexe": "^1.1.1" + } + } + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "requires": { + "ini": "2.0.0" + } + }, + "globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "got": { + "version": "12.5.3", + "resolved": "https://registry.npmjs.org/got/-/got-12.5.3.tgz", + "integrity": "sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==", + "dev": true, + "requires": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.1", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.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 + } + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true + }, + "gulp-uglify-es": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gulp-uglify-es/-/gulp-uglify-es-3.0.0.tgz", + "integrity": "sha512-dQ3czMFFojNgCajcrYl0oa98+YayaQ8kXRdaacpZRZ3iw2sdVURfdt8y8Ki1ogZGQqw8BUawnB7V6NkanxqnDg==", + "dev": true, + "requires": { + "o-stream": "^0.3.0", + "plugin-error": "^1.0.1", + "terser": "^5.7.1", + "vinyl": "^2.2.1", + "vinyl-sourcemaps-apply": "^0.2.1" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "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", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "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 + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-yarn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", + "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "htmlparser2": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", + "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", + "dev": true, + "requires": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "entities": "^4.3.0" + } + }, + "http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "http2-wrapper": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", + "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + } + }, + "https-proxy-agent": { + "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", + "debug": "4" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true + }, + "iconv-lite": { + "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, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "image-size": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", + "dev": true, + "requires": { + "queue": "6.0.2" + } + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "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" + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true + }, + "invert-kv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz", + "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==", + "dev": true + }, + "is-absolute": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", + "integrity": "sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==", + "dev": true, + "requires": { + "is-relative": "^0.1.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "requires": { + "ci-info": "^3.2.0" + } + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "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 + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-mergeable-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-mergeable-object/-/is-mergeable-object-1.1.1.tgz", + "integrity": "sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==", + "dev": true + }, + "is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "dev": true + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "is-relative": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", + "integrity": "sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==", + "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 + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "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" + } + }, + "is-yarn-global": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", + "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jed": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", + "integrity": "sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==", + "dev": true + }, + "jose": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.11.2.tgz", + "integrity": "sha512-njj0VL2TsIxCtgzhO+9RRobBvws4oYyCM8TpvoUQwl/MbIM3NFJRR9+e6x0sS5xXaP1t6OCBkaBME98OV9zU5A==", + "dev": true + }, + "js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "jsdom": { + "version": "21.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-21.1.0.tgz", + "integrity": "sha512-m0lzlP7qOtthD918nenK3hdItSd2I+V3W9IrBcB36sqDwG+KnUs66IF5GY7laGWUnlM9vTsD0W1QwSEBYWWcJg==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + } + }, + "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 + }, + "json-merge-patch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-1.0.2.tgz", + "integrity": "sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "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==", + "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==", + "dev": true + }, + "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 + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "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" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "jsonwebtoken": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", + "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "dev": true, + "requires": { + "jws": "^3.2.2", + "lodash": "^4.17.21", + "ms": "^2.1.1", + "semver": "^7.3.8" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "dev": true, + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dev": true, + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "latest-version": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", + "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "dev": true, + "requires": { + "package-json": "^8.1.0" + } + }, + "lcid": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz", + "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==", + "dev": true, + "requires": { + "invert-kv": "^3.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "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==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "lighthouse-logger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", + "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "marky": "^1.2.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "loupe": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", + "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, + "lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", + "dev": true + }, + "mem": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/mem/-/mem-5.1.1.tgz", + "integrity": "sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^2.1.0", + "p-is-promise": "^2.1.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true + }, + "mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "mlly": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.1.1.tgz", + "integrity": "sha512-Jnlh4W/aI4GySPo6+DyTN17Q75KKbLTyFK8BrGhjNP4rxuUjbRWhE6gHg3bs33URWAF44FRm7gdQA348i3XxRw==", + "dev": true, + "requires": { + "acorn": "^8.8.2", + "pathe": "^1.1.0", + "pkg-types": "^1.0.1", + "ufo": "^1.1.0" + }, + "dependencies": { + "pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + } + } + }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "dev": true, + "optional": true + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + } + }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "dev": true, + "optional": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", + "dev": true, + "optional": true, + "requires": { + "glob": "^6.0.1" + } + } + } + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, + "optional": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "dev": true, + "optional": true + }, + "node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-notifier": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-10.0.1.tgz", + "integrity": "sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.5", + "shellwords": "^0.1.1", + "uuid": "^8.3.2", + "which": "^2.0.2" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "normalize-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", + "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "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" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true + }, + "o-stream": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/o-stream/-/o-stream-0.3.0.tgz", + "integrity": "sha512-gbzl6qCJZ609x/M2t25HqCYQagFzWYCtQ84jcuObGr+V8D1Am4EVubkF4J+XFs6ukfiv96vNeiBb8FrbbMZYiQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "on-exit-leak-free": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", + "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "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" + } + }, + "os-locale": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-5.0.0.tgz", + "integrity": "sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==", + "dev": true, + "requires": { + "execa": "^4.0.0", + "lcid": "^3.0.0", + "mem": "^5.0.0" + } + }, + "os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==", + "dev": true + }, + "p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "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 + }, + "package-json": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", + "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", + "dev": true, + "requires": { + "got": "^12.1.0", + "registry-auth-token": "^5.0.1", + "registry-url": "^6.0.0", + "semver": "^7.3.7" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "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" + } + }, + "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==", + "dev": true, + "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" + } + }, + "parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "requires": { + "entities": "^4.4.0" + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "requires": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + } + }, + "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 + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "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==", + "dev": true + }, + "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 + }, + "pathe": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz", + "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "pino": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.8.0.tgz", + "integrity": "sha512-cF8iGYeu2ODg2gIwgAHcPrtR63ILJz3f7gkogaHC/TXVVXxZgInmNYiIpDYEwgEkxZti2Se6P2W2DxlBIZe6eQ==", + "dev": true, + "requires": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "v1.0.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^2.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.1.0", + "thread-stream": "^2.0.0" + } + }, + "pino-abstract-transport": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", + "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "dev": true, + "requires": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + } + } + } + }, + "pino-std-serializers": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz", + "integrity": "sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==", + "dev": true + }, + "pkg-types": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.2.tgz", + "integrity": "sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==", + "dev": true, + "requires": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.1.1", + "pathe": "^1.1.0" + }, + "dependencies": { + "pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true + } + } + }, + "plugin-error": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", + "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", + "dev": true, + "requires": { + "ansi-colors": "^1.0.1", + "arr-diff": "^4.0.0", + "arr-union": "^3.1.0", + "extend-shallow": "^3.0.2" + } + }, + "postcss": { + "version": "8.4.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", + "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "prettier": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", + "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "pretty-quick": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", + "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "execa": "^4.0.0", + "find-up": "^4.1.0", + "ignore": "^5.1.4", + "mri": "^1.1.5", + "multimatch": "^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" + } + } + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "process-warning": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.1.0.tgz", + "integrity": "sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-toolbox": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/promise-toolbox/-/promise-toolbox-0.21.0.tgz", + "integrity": "sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg==", + "dev": true, + "requires": { + "make-error": "^1.3.2" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "dev": true, + "requires": { + "escape-goat": "^4.0.0" + } + }, + "puppeteer": { + "version": "19.7.2", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.7.2.tgz", + "integrity": "sha512-4Lm7Qpe/LU95Svirei/jDLDvR5oMrl9BPGd7HMY5+Q28n+BhvKuW97gKkR+1LlI86bO8J3g8rG/Ll5kv9J1nlQ==", + "dev": true, + "requires": { + "cosmiconfig": "8.0.0", + "https-proxy-agent": "5.0.1", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "puppeteer-core": "19.7.2" + } + }, + "puppeteer-core": { + "version": "19.7.2", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.7.2.tgz", + "integrity": "sha512-PvI+fXqgP0uGJxkyZcX51bnzjFA73MODZOAv0fSD35yR7tvbqwtMV3/Y+hxQ0AMMwzxkEebP6c7po/muqxJvmQ==", + "dev": true, + "requires": { + "chromium-bidi": "0.4.4", + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.1094867", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.11.0" + }, + "dependencies": { + "ws": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", + "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "dev": true, + "requires": {} + } + } + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "queue": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", + "dev": true, + "requires": { + "inherits": "~2.0.3" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "dev": true + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + } + } + }, + "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==", + "dev": true + }, + "readable-stream": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", + "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "registry-auth-token": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", + "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", + "dev": true, + "requires": { + "@pnpm/npm-conf": "^1.0.4" + } + }, + "registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dev": true, + "requires": { + "rc": "1.2.8" + } + }, + "relaxed-json": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/relaxed-json/-/relaxed-json-1.0.3.tgz", + "integrity": "sha512-b7wGPo7o2KE/g7SqkJDDbav6zmrEeP4TK2VpITU72J/M949TLe/23y/ZHJo+pskcGM52xIfFoT9hydwmgr1AEg==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "commander": "^2.6.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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "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" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "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==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "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 + }, + "responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "requires": { + "lowercase-keys": "^3.0.0" + } + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "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" + } + }, + "rollup": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.2.tgz", + "integrity": "sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "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==", + "dev": true + }, + "safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "dev": true, + "optional": true + }, + "safe-stable-stringify": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", + "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, + "requires": { + "semver": "^7.3.5" + }, + "dependencies": { + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "shell-quote": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", + "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true + }, + "sign-addon": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-5.2.0.tgz", + "integrity": "sha512-t5CZ4MSKAd3uJBUfjgWfSyKYC1pQS6BMUbgI5OytzMkTOQ9NkdkFE8bB0AJLQIGqDrNS2b1+/ghAP56iuCUE+g==", + "dev": true, + "requires": { + "common-tags": "1.8.2", + "core-js": "3.27.1", + "deepcopy": "2.1.0", + "es6-error": "4.1.1", + "es6-promisify": "7.0.0", + "jsonwebtoken": "9.0.0", + "mz": "2.7.0", + "request": "2.88.2", + "source-map-support": "0.5.21", + "stream-to-promise": "3.0.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sleep": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sleep/-/sleep-6.1.0.tgz", + "integrity": "sha512-Z1x4JjJxsru75Tqn8F4tnOFeEu3HjtITTsumYUiuz54sGKdISgLCek9AUlXlVVrkhltRFhNUsJDJE76SFHTDIQ==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.13.2" + } + }, + "slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + } + } + }, + "sonic-boom": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.1.tgz", + "integrity": "sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==", + "dev": true, + "requires": { + "atomic-sleep": "^1.0.0" + } + }, + "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 + }, + "source-map-js": { + "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": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==", + "dev": true, + "requires": { + "concat-stream": "^1.4.7", + "os-shim": "^0.1.2" + } + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "dev": true + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "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" + } + }, + "stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true + }, + "std-env": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz", + "integrity": "sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==", + "dev": true + }, + "stream-to-array": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", + "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==", + "dev": true, + "requires": { + "any-promise": "^1.1.0" + } + }, + "stream-to-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-3.0.0.tgz", + "integrity": "sha512-h+7wLeFiYegOdgTfTxjRsrT7/Op7grnKEIHWgaO1RTHwcwk7xRreMr3S8XpDfDMesSxzgM2V4CxNCFAGo6ssnA==", + "dev": true, + "requires": { + "any-promise": "~1.3.0", + "end-of-stream": "~1.4.1", + "stream-to-array": "~2.3.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^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" + } + }, + "strip-bom": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-5.0.0.tgz", + "integrity": "sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==", + "dev": true + }, + "strip-bom-buf": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-2.0.0.tgz", + "integrity": "sha512-gLFNHucd6gzb8jMsl5QmZ3QgnUJmp7qn4uUSHNwEXumAp7YizoGYw19ZUVfuq4aBOQUtyn2k8X/CwzWB73W2lQ==", + "dev": true, + "requires": { + "is-utf8": "^0.2.1" + } + }, + "strip-bom-stream": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-4.0.0.tgz", + "integrity": "sha512-0ApK3iAkHv6WbgLICw/J4nhwHeDZsBxIIsOD+gHgZICL6SeJ0S9f/WZqemka9cjkTyMN5geId6e8U5WGFAn3cQ==", + "dev": true, + "requires": { + "first-chunk-stream": "^3.0.0", + "strip-bom-buf": "^2.0.0" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", + "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", + "dev": true + }, + "strip-literal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", + "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", + "dev": true, + "requires": { + "acorn": "^8.8.2" + } + }, + "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" + } + }, + "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 + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, + "terser": { + "version": "5.16.5", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.5.tgz", + "integrity": "sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "thread-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.3.0.tgz", + "integrity": "sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==", + "dev": true, + "requires": { + "real-require": "^0.2.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "tinybench": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", + "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", + "dev": true + }, + "tinypool": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.1.tgz", + "integrity": "sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==", + "dev": true + }, + "tinyspy": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.1.1.tgz", + "integrity": "sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "tosource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", + "integrity": "sha512-N6g8eQ1eerw6Y1pBhdgkubWIiPFwXa2POSUrlL8jth5CyyEWNWzoGKRkO3CaO7Jx27hlJP54muB3btIAbx4MPg==", + "dev": true + }, + "tough-cookie": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", + "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + } + }, + "tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "ts-essentials": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.3.0.tgz", + "integrity": "sha512-XeiCboEyBG8UqXZtXl59bWEi4ZgOqRsogFDI6WDGIF1LmzbYiAkIwjkXN6zZWWl4re/lsOqMlYfe8KA0XiiEPw==", + "dev": true, + "requires": {} + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true + }, + "ufo": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.0.tgz", + "integrity": "sha512-LQc2s/ZDMaCN3QLpa+uzHUOQ7SdV0qgv3VBXOolQGXTaaZpIur6PwUclF5nN2hNkiTRcUugXd1zFOW3FLJ135Q==", + "dev": true + }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true + }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "requires": { + "crypto-random-string": "^4.0.0" + } + }, + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true + }, + "upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true + }, + "update-notifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", + "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", + "dev": true, + "requires": { + "boxen": "^7.0.0", + "chalk": "^5.0.1", + "configstore": "^6.0.0", + "has-yarn": "^3.0.0", + "import-lazy": "^4.0.0", + "is-ci": "^3.0.1", + "is-installed-globally": "^0.4.0", + "is-npm": "^6.0.0", + "is-yarn-global": "^0.4.0", + "latest-version": "^7.0.0", + "pupa": "^3.1.0", + "semver": "^7.3.7", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" + }, + "dependencies": { + "chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "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-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + } + }, + "vinyl-sourcemaps-apply": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", + "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", + "dev": true, + "requires": { + "source-map": "^0.5.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } + } + }, + "vite": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz", + "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==", + "dev": true, + "requires": { + "esbuild": "^0.16.14", + "fsevents": "~2.3.2", + "postcss": "^8.4.21", + "resolve": "^1.22.1", + "rollup": "^3.10.0" + } + }, + "vite-node": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.27.3.tgz", + "integrity": "sha512-eyJYOO64o5HIp8poc4bJX+ZNBwMZeI3f6/JdiUmJgW02Mt7LnoCtDMRVmLaY9S05SIsjGe339ZK4uo2wQ+bF9g==", + "dev": true, + "requires": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.1.0", + "pathe": "^0.2.0", + "picocolors": "^1.0.0", + "source-map": "^0.6.1", + "source-map-support": "^0.5.21", + "vite": "^3.0.0 || ^4.0.0" + } + }, + "vitest": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.27.3.tgz", + "integrity": "sha512-Ld3UVgRVhJUtqvQ3dW89GxiApFAgBsWJZBCWzK+gA3w2yG68csXlGZZ4WDJURf+8ecNfgrScga6xY+8YSOpiMg==", + "dev": true, + "requires": { + "@types/chai": "^4.3.4", + "@types/chai-subset": "^1.3.3", + "@types/node": "*", + "acorn": "^8.8.1", + "acorn-walk": "^8.2.0", + "cac": "^6.7.14", + "chai": "^4.3.7", + "debug": "^4.3.4", + "local-pkg": "^0.4.2", + "picocolors": "^1.0.0", + "source-map": "^0.6.1", + "std-env": "^3.3.1", + "strip-literal": "^1.0.0", + "tinybench": "^2.3.1", + "tinypool": "^0.3.0", + "tinyspy": "^1.0.2", + "vite": "^3.0.0 || ^4.0.0", + "vite-node": "0.27.3", + "why-is-node-running": "^2.2.2" + } + }, + "vitest-mock-extended": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/vitest-mock-extended/-/vitest-mock-extended-1.0.9.tgz", + "integrity": "sha512-avWOwla4xsubFUbL1O2Zvqn8xUucQWai05ryywfhjUIthkjJKk01g5/s4SrjTHZXGZ2/h6NfF51FJ3voix1OAw==", + "dev": true, + "requires": { + "ts-essentials": "^9.3.0" + } + }, + "w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "requires": { + "xml-name-validator": "^4.0.0" + } + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "web-ext": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-7.5.0.tgz", + "integrity": "sha512-Ymflj7Aq/LOD+zGoyvwRbAPx/yMJeig2OEb/rRXYrWl6NWRI5E0c2iWGqlBcnL45iKrOzz70H438dVeJk0w2ug==", + "dev": true, + "requires": { + "@babel/runtime": "7.20.13", + "@devicefarmer/adbkit": "3.2.3", + "addons-linter": "5.27.0", + "bunyan": "1.8.15", + "camelcase": "7.0.1", + "chrome-launcher": "0.15.1", + "debounce": "1.2.1", + "decamelize": "6.0.0", + "es6-error": "4.1.1", + "firefox-profile": "4.2.2", + "fs-extra": "11.1.0", + "fx-runner": "1.3.0", + "import-fresh": "3.3.0", + "jose": "4.11.2", + "mkdirp": "1.0.4", + "multimatch": "6.0.0", + "mz": "2.7.0", + "node-fetch": "3.3.0", + "node-notifier": "10.0.1", + "open": "8.4.0", + "parse-json": "6.0.2", + "promise-toolbox": "0.21.0", + "sign-addon": "5.2.0", + "source-map-support": "0.5.21", + "strip-bom": "5.0.0", + "strip-json-comments": "5.0.0", + "tmp": "0.2.1", + "update-notifier": "6.0.2", + "watchpack": "2.4.0", + "ws": "8.12.0", + "yargs": "17.6.2", + "zip-dir": "2.0.0" + }, + "dependencies": { + "array-differ": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-4.0.0.tgz", + "integrity": "sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==", + "dev": true + }, + "array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "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 + }, + "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 + }, + "lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "dev": true + }, + "multimatch": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-6.0.0.tgz", + "integrity": "sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.5", + "array-differ": "^4.0.0", + "array-union": "^3.0.1", + "minimatch": "^3.0.4" + } + }, + "node-fetch": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", + "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", + "dev": true, + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "parse-json": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-6.0.2.tgz", + "integrity": "sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^2.3.1", + "lines-and-columns": "^2.0.2" + } + }, + "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" + } + }, + "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" + } + }, + "ws": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", + "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", + "dev": true, + "requires": {} + }, + "yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "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.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true + }, + "webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true + }, + "whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + } + }, + "whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true + }, + "whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + }, + "when": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz", + "integrity": "sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==", + "dev": true + }, + "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" + } + }, + "why-is-node-running": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", + "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "dev": true, + "requires": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + } + }, + "widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, + "requires": { + "string-width": "^5.0.1" + } + }, + "winreg": { + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz", + "integrity": "sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ==", + "dev": true + }, + "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==", + "dev": true + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", + "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", + "dev": true, + "requires": {} + }, + "xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "dev": true + }, + "xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xvfb": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/xvfb/-/xvfb-0.4.0.tgz", + "integrity": "sha512-g55AbjcBL4Bztfn7kiUrR0ne8mMUsFODDJ+HFGf5OuHJqKKccpExX2Qgn7VF2eImw1eoh6+riXHser1J4agrFA==", + "dev": true, + "requires": { + "sleep": "6.1.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 + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "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": { + "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 + }, + "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" + } + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "zip-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz", + "integrity": "sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==", + "dev": true, + "requires": { + "async": "^3.2.0", + "jszip": "^3.2.2" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..c4e9018 --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "web-activity-time-tracker", + "private": true, + "scripts": { + "dev": "web-ext run -s src --target=chromium", + "compile": "tsc --noEmit", + "lint": "echo 'TODO'" + }, + "devDependencies": { + "@types/node": "18", + "@vitest/coverage-c8": "^0.28.2", + "husky": "^8.0.3", + "jsdom": "^21.1.0", + "prettier": "^2.8.2", + "pretty-quick": "^3.1.3", + "puppeteer": "^19.5.0", + "typescript": "^4.9.4", + "uglify-js": "3.17.4", + "vitest": "^0.27.0", + "vitest-mock-extended": "^1.0.8", + "web-ext": "^7.4.0", + "xvfb": "^0.4.0", + "chance": "^1.1.8" + }, + "description": "Web Activity Time Tracker keeps track of how much time you spend on the web and presents the stats in a useful and intuitive way. \r You can set a daily visit limit for sites and block it after the expiration of the limit.", + "repository": { + "type": "git", + "url": "git+https://github.com/Stigmatoz/web-activity-time-tracker.git" + }, + "author": "Alex Khrisanfov", + "license": "MIT", + "bugs": { + "url": "https://github.com/Stigmatoz/web-activity-time-tracker/issues" + }, + "homepage": "https://github.com/Stigmatoz/web-activity-time-tracker#readme" +} From fe98ee9af08b416f263be1e1174eda156fa939b5 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Feb 2023 12:12:41 +0300 Subject: [PATCH 018/329] Powershell script to copy and minify files to target dir --- package.json | 1 + scripts/build.ps1 | 15 +++++++++++++++ 2 files changed, 16 insertions(+) create mode 100644 scripts/build.ps1 diff --git a/package.json b/package.json index c4e9018..bff3fa4 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,7 @@ "scripts": { "dev": "web-ext run -s src --target=chromium", "compile": "tsc --noEmit", + "zip": "powershell scripts/build.ps1", "lint": "echo 'TODO'" }, "devDependencies": { diff --git a/scripts/build.ps1 b/scripts/build.ps1 new file mode 100644 index 0000000..d592738 --- /dev/null +++ b/scripts/build.ps1 @@ -0,0 +1,15 @@ +$sourceFolder = ".\src" +$targetFolder = ".\dist" +$targetFolderForClean = ".\dist\*" +$uglifyPath = ".\node_modules\uglify-js\bin\uglifyjs" + +Remove-Item $targetFolderForClean -Recurse -Force +Copy-Item -Path $sourceFolder\* -Destination $targetFolder -Recurse + +$folders = Get-ChildItem -path $targetFolder -Recurse -include *.js +Foreach ($fldr in $folders) { + if ($fldr.Attributes -ne 'Directory') { + node $uglifyPath --output $fldr.FullName $fldr.FullName + Write-Host $fldr.FullName "has been minified." + } +} From aa83f35674c9168d66f0cf54b2291d5e62eb2066 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Feb 2023 12:48:36 +0300 Subject: [PATCH 019/329] Powershell script to zip --- package.json | 3 ++- scripts/zip.ps1 | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 scripts/zip.ps1 diff --git a/package.json b/package.json index bff3fa4..52beaed 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "scripts": { "dev": "web-ext run -s src --target=chromium", "compile": "tsc --noEmit", - "zip": "powershell scripts/build.ps1", + "build": "powershell scripts/build.ps1", + "zip": "powershell scripts/zip.ps1", "lint": "echo 'TODO'" }, "devDependencies": { diff --git a/scripts/zip.ps1 b/scripts/zip.ps1 new file mode 100644 index 0000000..20acdfb --- /dev/null +++ b/scripts/zip.ps1 @@ -0,0 +1,4 @@ +$sourceFolder = ".\dist" +$targetFolder = ".\artifacts" +$version = $(node -pe "require('./src/manifest.json').version") +Compress-Archive -Path $sourceFolder -DestinationPath $targetFolder/web-activity-time-tracker-$version.zip \ No newline at end of file From 13d2438154c4ff324bab755459430fb7a51b46f2 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 7 Mar 2023 11:56:38 +0300 Subject: [PATCH 020/329] Using typescript --- package-lock.json | 2 +- package.json | 6 +-- src/background.ts | 1 + src/manifest.json | 85 ++++++++++++++----------------- src/scripts/background.js | 12 ++--- tsconfig.json | 103 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 151 insertions(+), 58 deletions(-) create mode 100644 src/background.ts create mode 100644 tsconfig.json diff --git a/package-lock.json b/package-lock.json index a557b53..17a301d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "prettier": "^2.8.2", "pretty-quick": "^3.1.3", "puppeteer": "^19.5.0", - "typescript": "^4.9.4", + "typescript": "^4.9.5", "uglify-js": "3.17.4", "vitest": "^0.27.0", "vitest-mock-extended": "^1.0.8", diff --git a/package.json b/package.json index 52beaed..a3c78a1 100644 --- a/package.json +++ b/package.json @@ -11,18 +11,18 @@ "devDependencies": { "@types/node": "18", "@vitest/coverage-c8": "^0.28.2", + "chance": "^1.1.8", "husky": "^8.0.3", "jsdom": "^21.1.0", "prettier": "^2.8.2", "pretty-quick": "^3.1.3", "puppeteer": "^19.5.0", - "typescript": "^4.9.4", + "typescript": "^4.9.5", "uglify-js": "3.17.4", "vitest": "^0.27.0", "vitest-mock-extended": "^1.0.8", "web-ext": "^7.4.0", - "xvfb": "^0.4.0", - "chance": "^1.1.8" + "xvfb": "^0.4.0" }, "description": "Web Activity Time Tracker keeps track of how much time you spend on the web and presents the stats in a useful and intuitive way. \r You can set a daily visit limit for sites and block it after the expiration of the limit.", "repository": { diff --git a/src/background.ts b/src/background.ts new file mode 100644 index 0000000..ae9783d --- /dev/null +++ b/src/background.ts @@ -0,0 +1 @@ +console.log('loading backgroung script') \ No newline at end of file diff --git a/src/manifest.json b/src/manifest.json index 585195d..b6d3813 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,50 +1,39 @@ { - "manifest_version": 2, - - "name": "Web Activity Time Tracker", - "short_name": "Web Time Tracker", - "version": "1.7.2", - "minimum_chrome_version": "26", - - "description": "Track and limit time your activity in the browser every day.", - - "options_page": "options.html", - - "icons": { - "16": "icons/16x16.png", - "32": "icons/32x32.png", - "48": "icons/48x48.png", - "128": "icons/128x128.png" - }, - "permissions": [ - "tabs", - "activeTab", - "storage", - "idle", - "chrome://favicon/*", - "webNavigation", - "unlimitedStorage", - "alarms" - ], - "optional_permissions": [ - "https://www.youtube.com/*", - "https://www.netflix.com/*", - "notifications" - ], - "offline_enabled": true, - "background": { - "scripts": ["scripts/common.js", - "scripts/storage.js", - "scripts/activity.js", - "scripts/tab.js", - "scripts/timeInterval.js", - "scripts/background.js", - "scripts/restriction.js"], - "persistent": false - }, - "browser_action": { - "default_popup": "index.html", - "default_title": "Web Activity Time Tracker", - "default_icon": "icons/48x48.png" - } + "manifest_version": 3, + "name": "Web Activity Time Tracker", + "short_name": "Web Time Tracker", + "version": "1.7.2", + "minimum_chrome_version": "26", + "description": "Track and limit time your activity in the browser every day.", + "options_page": "options.html", + "icons": { + "16": "icons/16x16.png", + "32": "icons/32x32.png", + "48": "icons/48x48.png", + "128": "icons/128x128.png" + }, + "permissions": [ + "tabs", + "activeTab", + "storage", + "idle", + "webNavigation", + "unlimitedStorage", + "alarms", + "notifications" + ], + "optional_host_permissions": [ + "https://www.youtube.com/*", + "https://www.netflix.com/*" + ], + "offline_enabled": true, + "background": { + "service_worker": "background.ts", + "type": "module" + }, + "action": { + "default_popup": "index.html", + "default_title": "Web Activity Time Tracker", + "default_icon": "icons/48x48.png" + } } \ No newline at end of file diff --git a/src/scripts/background.js b/src/scripts/background.js index fcb61bc..a87ac4a 100644 --- a/src/scripts/background.js +++ b/src/scripts/background.js @@ -42,8 +42,8 @@ function backgroundCheck() { } if (activity.isInBlackList(activeUrl)) { - chrome.browserAction.setBadgeBackgroundColor({ color: '#fdb8b8' }) - chrome.browserAction.setBadgeText({ + chrome.action.setBadgeBackgroundColor({ color: '#fdb8b8' }) + chrome.action.setBadgeText({ tabId: activeTab.id, text: 'n/a' }); @@ -79,15 +79,15 @@ function mainTRacker(activeUrl, tab, activeTab) { tab.incSummaryTime(); } if (setting_view_in_badge === true) { - chrome.browserAction.setBadgeBackgroundColor({ color: '#e7e7e7' }) + chrome.action.setBadgeBackgroundColor({ color: '#e7e7e7' }) var summary = tab.days.find(s => s.date === todayLocalDate()).summary; - chrome.browserAction.setBadgeText({ + chrome.action.setBadgeText({ tabId: activeTab.id, text: String(convertSummaryTimeToBadgeString(summary)) }); } else { - chrome.browserAction.setBadgeBackgroundColor({ color: [0, 0, 0, 0] }) - chrome.browserAction.setBadgeText({ + chrome.action.setBadgeBackgroundColor({ color: [0, 0, 0, 0] }) + chrome.action.setBadgeText({ tabId: activeTab.id, text: '' }); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..75dcaea --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,103 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} From 4751bf79f6403836ea39e8018b3508aff0c2122b Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 17 Mar 2023 14:08:22 +0300 Subject: [PATCH 021/329] Integrate vue 3 --- .gitignore | 12 +- package-lock.json | 14491 ------------------------------------------ package.json | 44 +- pnpm-lock.yaml | 3677 +++++++++++ src/background.ts | 8 +- src/manifest.json | 30 +- src/pages/Popup.vue | 61 + src/popup.html | 18 + src/vite-env.d.ts | 1 + tsconfig.json | 115 +- tsconfig.node.json | 9 + vite.config.ts | 25 + 12 files changed, 3847 insertions(+), 14644 deletions(-) delete mode 100644 package-lock.json create mode 100644 pnpm-lock.yaml create mode 100644 src/pages/Popup.vue create mode 100644 src/popup.html create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore index b956b79..49053f3 100644 --- a/.gitignore +++ b/.gitignore @@ -7,17 +7,10 @@ yarn-error.log* pnpm-debug.log* lerna-debug.log* -# Output node_modules dist dist-ssr *.local -artifacts -coverage - -# CI -.jenkins -junit.xml # Editor directories and files .vscode/* @@ -29,4 +22,7 @@ junit.xml *.njsproj *.sln *.sw? -node_modules + +# Config files +.webextrc +.webextrc.* diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 17a301d..0000000 --- a/package-lock.json +++ /dev/null @@ -1,14491 +0,0 @@ -{ - "name": "web-activity-time-tracker", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "web-activity-time-tracker", - "license": "MIT", - "devDependencies": { - "@types/node": "18", - "@vitest/coverage-c8": "^0.28.2", - "chance": "^1.1.8", - "husky": "^8.0.3", - "jsdom": "^21.1.0", - "prettier": "^2.8.2", - "pretty-quick": "^3.1.3", - "puppeteer": "^19.5.0", - "typescript": "^4.9.5", - "uglify-js": "3.17.4", - "vitest": "^0.27.0", - "vitest-mock-extended": "^1.0.8", - "web-ext": "^7.4.0", - "xvfb": "^0.4.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "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": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@devicefarmer/adbkit": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit/-/adbkit-3.2.3.tgz", - "integrity": "sha512-wK9rVrabs4QU0oK8Jnwi+HRBEm+s1x/o63kgthUe0y7K1bfcYmgLuQf41/adsj/5enddlSxzkJavl2EwOu+r1g==", - "dev": true, - "dependencies": { - "@devicefarmer/adbkit-logcat": "^2.1.2", - "@devicefarmer/adbkit-monkey": "~1.2.0", - "bluebird": "~3.7", - "commander": "^9.1.0", - "debug": "~4.3.1", - "node-forge": "^1.3.1", - "split": "~1.0.1" - }, - "bin": { - "adbkit": "bin/adbkit" - }, - "engines": { - "node": ">= 0.10.4" - } - }, - "node_modules/@devicefarmer/adbkit-logcat": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-logcat/-/adbkit-logcat-2.1.2.tgz", - "integrity": "sha512-G4grpEa5s9s9wCRs8YB9LjFSnz0Os3g3RYIwZSxH3JFfV3aejL5xlu4hHMH4JY+d4oCCwImcEZJcFPY9BEP21w==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@devicefarmer/adbkit-monkey": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-monkey/-/adbkit-monkey-1.2.1.tgz", - "integrity": "sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg==", - "dev": true, - "engines": { - "node": ">= 0.10.4" - } - }, - "node_modules/@devicefarmer/adbkit/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || >=14" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", - "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", - "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", - "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", - "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", - "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", - "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", - "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", - "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", - "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", - "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", - "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", - "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", - "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", - "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", - "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", - "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", - "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", - "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", - "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", - "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", - "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", - "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "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", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@mdn/browser-compat-data": { - "version": "5.2.29", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.29.tgz", - "integrity": "sha512-bEBrkTWbDAs/PB4IdRg4CtU750oBRytXHK/wC2oIDkgKZqnt76nACSooQQuHF11mK5k43f/IgFUMO5t5quRPVA==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pnpm/network.ca-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", - "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", - "dev": true, - "dependencies": { - "graceful-fs": "4.2.10" - }, - "engines": { - "node": ">=12.22.0" - } - }, - "node_modules/@pnpm/npm-conf": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz", - "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==", - "dev": true, - "dependencies": { - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@sindresorhus/is": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", - "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.1" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.1.tgz", - "integrity": "sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==", - "dev": true - }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@vitest/coverage-c8": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/@vitest/coverage-c8/-/coverage-c8-0.28.5.tgz", - "integrity": "sha512-zCNyurjudoG0BAqAgknvlBhkV2V9ZwyYLWOAGtHSDhL/St49MJT+V2p1G0yPaoqBbKOTATVnP5H2p1XL15H75g==", - "dev": true, - "dependencies": { - "c8": "^7.12.0", - "picocolors": "^1.0.0", - "std-env": "^3.3.1", - "vitest": "0.28.5" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vitest/coverage-c8/node_modules/pathe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", - "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", - "dev": true - }, - "node_modules/@vitest/coverage-c8/node_modules/vite-node": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.28.5.tgz", - "integrity": "sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==", - "dev": true, - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "mlly": "^1.1.0", - "pathe": "^1.1.0", - "picocolors": "^1.0.0", - "source-map": "^0.6.1", - "source-map-support": "^0.5.21", - "vite": "^3.0.0 || ^4.0.0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": ">=v14.16.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vitest/coverage-c8/node_modules/vitest": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.28.5.tgz", - "integrity": "sha512-pyCQ+wcAOX7mKMcBNkzDwEHRGqQvHUl0XnoHR+3Pb1hytAHISgSxv9h0gUiSiYtISXUU3rMrKiKzFYDrI6ZIHA==", - "dev": true, - "dependencies": { - "@types/chai": "^4.3.4", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "@vitest/expect": "0.28.5", - "@vitest/runner": "0.28.5", - "@vitest/spy": "0.28.5", - "@vitest/utils": "0.28.5", - "acorn": "^8.8.1", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.7", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "pathe": "^1.1.0", - "picocolors": "^1.0.0", - "source-map": "^0.6.1", - "std-env": "^3.3.1", - "strip-literal": "^1.0.0", - "tinybench": "^2.3.1", - "tinypool": "^0.3.1", - "tinyspy": "^1.0.2", - "vite": "^3.0.0 || ^4.0.0", - "vite-node": "0.28.5", - "why-is-node-running": "^2.2.2" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": ">=v14.16.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/@vitest/expect": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.28.5.tgz", - "integrity": "sha512-gqTZwoUTwepwGIatnw4UKpQfnoyV0Z9Czn9+Lo2/jLIt4/AXLTn+oVZxlQ7Ng8bzcNkR+3DqLJ08kNr8jRmdNQ==", - "dev": true, - "dependencies": { - "@vitest/spy": "0.28.5", - "@vitest/utils": "0.28.5", - "chai": "^4.3.7" - } - }, - "node_modules/@vitest/runner": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.28.5.tgz", - "integrity": "sha512-NKkHtLB+FGjpp5KmneQjTcPLWPTDfB7ie+MmF1PnUBf/tGe2OjGxWyB62ySYZ25EYp9krR5Bw0YPLS/VWh1QiA==", - "dev": true, - "dependencies": { - "@vitest/utils": "0.28.5", - "p-limit": "^4.0.0", - "pathe": "^1.1.0" - } - }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/runner/node_modules/pathe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", - "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", - "dev": true - }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/spy": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.28.5.tgz", - "integrity": "sha512-7if6rsHQr9zbmvxN7h+gGh2L9eIIErgf8nSKYDlg07HHimCxp4H6I/X/DPXktVPPLQfiZ1Cw2cbDIx9fSqDjGw==", - "dev": true, - "dependencies": { - "tinyspy": "^1.0.2" - } - }, - "node_modules/@vitest/utils": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.28.5.tgz", - "integrity": "sha512-UyZdYwdULlOa4LTUSwZ+Paz7nBHGTT72jKwdFSV4IjHF1xsokp+CabMdhjvVhYwkLfO88ylJT46YMilnkSARZA==", - "dev": true, - "dependencies": { - "cli-truncate": "^3.1.0", - "diff": "^5.1.0", - "loupe": "^2.3.6", - "picocolors": "^1.0.0", - "pretty-format": "^27.5.1" - } - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/addons-linter": { - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-5.27.0.tgz", - "integrity": "sha512-gDgl0FcmhZ5cs3St0qAaO9J1BoektwnY+p4dVgcvPu8WaBqH9MG2fk0gL/evCpoHSXeSw15GA87n8Y7zy7raVQ==", - "dev": true, - "dependencies": { - "@mdn/browser-compat-data": "5.2.29", - "addons-moz-compare": "1.3.0", - "addons-scanner-utils": "8.3.0", - "ajv": "8.12.0", - "chalk": "4.1.2", - "cheerio": "1.0.0-rc.12", - "columnify": "1.6.0", - "common-tags": "1.8.2", - "deepmerge": "4.2.2", - "eslint": "8.32.0", - "eslint-plugin-no-unsanitized": "4.0.2", - "eslint-visitor-keys": "3.3.0", - "espree": "9.4.1", - "esprima": "4.0.1", - "fast-json-patch": "3.1.1", - "fluent-syntax": "0.14.0", - "glob": "8.1.0", - "image-size": "1.0.2", - "is-mergeable-object": "1.1.1", - "jed": "1.1.1", - "json-merge-patch": "1.0.2", - "os-locale": "5.0.0", - "pino": "8.8.0", - "postcss": "8.4.21", - "relaxed-json": "1.0.3", - "semver": "7.3.8", - "sha.js": "2.4.11", - "source-map-support": "0.5.21", - "tosource": "1.0.0", - "upath": "2.0.1", - "yargs": "17.6.2", - "yauzl": "2.10.0" - }, - "bin": { - "addons-linter": "bin/addons-linter" - }, - "engines": { - "node": ">=12.21.0" - } - }, - "node_modules/addons-linter/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/addons-linter/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/addons-linter/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/addons-linter/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 - }, - "node_modules/addons-linter/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/addons-linter/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/addons-linter/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/addons-linter/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/addons-linter/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/addons-linter/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/addons-linter/node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "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.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/addons-linter/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/addons-moz-compare": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/addons-moz-compare/-/addons-moz-compare-1.3.0.tgz", - "integrity": "sha512-/rXpQeaY0nOKhNx00pmZXdk5Mu+KhVlL3/pSBuAYwrxRrNiTvI/9xfQI8Lmm7DMMl+PDhtfAHY/0ibTpdeoQQQ==", - "dev": true - }, - "node_modules/addons-scanner-utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-8.3.0.tgz", - "integrity": "sha512-XP+2kxhZxlxiVFXVJ7lyJEuxpUS8ryrolUDqnUEnvOZ/3p8qt9hWCYSliXhI2W+Swf/hZ3F4CLAG6tBnqdxDYA==", - "dev": true, - "dependencies": { - "@types/yauzl": "2.10.0", - "common-tags": "1.8.2", - "first-chunk-stream": "3.0.0", - "strip-bom-stream": "4.0.0", - "upath": "2.0.1", - "yauzl": "2.10.0" - }, - "peerDependencies": { - "body-parser": "1.20.1", - "express": "4.18.2", - "node-fetch": "2.6.7", - "safe-compare": "1.1.4" - }, - "peerDependenciesMeta": { - "body-parser": { - "optional": true - }, - "express": { - "optional": true - }, - "node-fetch": { - "optional": true - }, - "safe-compare": { - "optional": true - } - } - }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "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/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-align/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 - }, - "node_modules/ansi-align/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/ansi-align/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/ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "dependencies": { - "ansi-wrap": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/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/ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true, - "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": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/atomic-sleep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true - }, - "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 - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "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/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/boxen": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.1.tgz", - "integrity": "sha512-8k2eH6SRAK00NDl1iX5q17RJ8rfl53TajdYxE3ssMLehbg487dEVgsad4pIsZb/QqBgYWIl6JOauMTLGX2Kpkw==", - "dev": true, - "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.0", - "chalk": "^5.0.1", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.0.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "dev": true - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bunyan": { - "version": "1.8.15", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", - "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==", - "dev": true, - "engines": [ - "node >=0.10.0" - ], - "bin": { - "bunyan": "bin/bunyan" - }, - "optionalDependencies": { - "dtrace-provider": "~0.8", - "moment": "^2.19.3", - "mv": "~2", - "safe-json-stringify": "~1" - } - }, - "node_modules/c8": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz", - "integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.1.4", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9" - }, - "bin": { - "c8": "bin/c8.js" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", - "dev": true, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/cacheable-request": { - "version": "10.2.8", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.8.tgz", - "integrity": "sha512-IDVO5MJ4LItE6HKFQTqT2ocAQsisOoCTUDu1ddCmnhyiwFQjXNPp4081Xj23N4tO+AFEFNzGuNEf/c8Gwwt15A==", - "dev": true, - "dependencies": { - "@types/http-cache-semantics": "^4.0.1", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.2", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/cacheable-request/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/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": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "node_modules/chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chance": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.10.tgz", - "integrity": "sha512-R6o7L/PGxBxdxzWbnLTi9nKQPtNZJySAxA1yGmAfKSiUt3KsBOAttsF04gNWA/XUcGIOrLHy7uAQ7KZwK92Qig==", - "dev": true, - "dependencies": { - "gulp-uglify-es": "^3.0.0" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dev": true, - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/chrome-launcher": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.1.tgz", - "integrity": "sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" - }, - "bin": { - "print-chrome-path": "bin/print-chrome-path.js" - }, - "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/chromium-bidi": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.4.tgz", - "integrity": "sha512-4BX5cSaponuvVT1+SbLYTOAgDoVtX/Khoc9UsbFJ/AsPVUeFAM3RiIDFI6XFhLYMi9WmVJqh1ZH+dRpNKkKwiQ==", - "dev": true, - "dependencies": { - "mitt": "3.0.0" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "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, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/cliui/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 - }, - "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/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/cliui/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/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", - "dev": true - }, - "node_modules/cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "node_modules/cloneable-readable/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/cloneable-readable/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/cloneable-readable/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/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/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/columnify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", - "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", - "dev": true, - "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "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==", - "dev": true, - "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 - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/concat-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/concat-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/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, - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/config-chain/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/configstore": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", - "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", - "dev": true, - "dependencies": { - "dot-prop": "^6.0.1", - "graceful-fs": "^4.2.6", - "unique-string": "^3.0.0", - "write-file-atomic": "^3.0.3", - "xdg-basedir": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/yeoman/configstore?sponsor=1" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/core-js": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", - "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "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": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", - "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", - "dev": true, - "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "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==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", - "dev": true, - "dependencies": { - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "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==", - "dev": true - }, - "node_modules/deepcopy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-2.1.0.tgz", - "integrity": "sha512-8cZeTb1ZKC3bdSCP6XOM1IsTczIO73fdqtwa2B0N15eAz7gmyhQo+mc5gnFuulsgN3vIQYmTgbmQVKalH1dKvQ==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.8" - } - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defaults/node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/devtools-protocol": { - "version": "0.0.1094867", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1094867.tgz", - "integrity": "sha512-pmMDBKiRVjh0uKK6CT1WqZmM3hBVSgD+N2MrgyV1uNizAZMw4tx6i/RTc+/uCsKSCmg0xXx7arCP/OFcIwTsiQ==", - "dev": true - }, - "node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", - "dev": true, - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dtrace-provider": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", - "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "nan": "^2.14.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/error-ex": { - "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/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "node_modules/es6-promisify": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", - "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/esbuild": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", - "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.16.17", - "@esbuild/android-arm64": "0.16.17", - "@esbuild/android-x64": "0.16.17", - "@esbuild/darwin-arm64": "0.16.17", - "@esbuild/darwin-x64": "0.16.17", - "@esbuild/freebsd-arm64": "0.16.17", - "@esbuild/freebsd-x64": "0.16.17", - "@esbuild/linux-arm": "0.16.17", - "@esbuild/linux-arm64": "0.16.17", - "@esbuild/linux-ia32": "0.16.17", - "@esbuild/linux-loong64": "0.16.17", - "@esbuild/linux-mips64el": "0.16.17", - "@esbuild/linux-ppc64": "0.16.17", - "@esbuild/linux-riscv64": "0.16.17", - "@esbuild/linux-s390x": "0.16.17", - "@esbuild/linux-x64": "0.16.17", - "@esbuild/netbsd-x64": "0.16.17", - "@esbuild/openbsd-x64": "0.16.17", - "@esbuild/sunos-x64": "0.16.17", - "@esbuild/win32-arm64": "0.16.17", - "@esbuild/win32-ia32": "0.16.17", - "@esbuild/win32-x64": "0.16.17" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-goat": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", - "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/eslint": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz", - "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.4.1", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-plugin-no-unsanitized": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.2.tgz", - "integrity": "sha512-Pry0S9YmHoz8NCEMRQh7N0Yexh2MYCNPIlrV52hTmS7qXnTghWsjXouF08bgsrrZqaW9tt1ZiK3j5NEmPE+EjQ==", - "dev": true, - "peerDependencies": { - "eslint": "^6 || ^7 || ^8" - } - }, - "node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/eslint/node_modules/ajv": { - "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", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/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/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/eslint/node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "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==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "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 - }, - "node_modules/fast-json-patch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", - "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", - "dev": true - }, - "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 - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-redact": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", - "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/firefox-profile": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.2.2.tgz", - "integrity": "sha512-3kI17Xl9dL9AeRkpV1yahsJ+UbekkPtlQswKrIsTY1NLgxtEOR4R19rjGGz5+7/rP8Jt6fvxHk+Bai9R6Eai3w==", - "dev": true, - "dependencies": { - "adm-zip": "~0.5.x", - "fs-extra": "~9.0.1", - "ini": "~2.0.0", - "minimist": "^1.2.5", - "xml2js": "~0.4.23" - }, - "bin": { - "firefox-profile": "lib/cli.js" - } - }, - "node_modules/firefox-profile/node_modules/fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dev": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/firefox-profile/node_modules/universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/first-chunk-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-3.0.0.tgz", - "integrity": "sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/fluent-syntax": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.14.0.tgz", - "integrity": "sha512-+k8uXWfRpSrE33764RbpjIKMzIX6R9EnSjFBgaA1s0Mboc3KnW9sYe0c6vjIoZQY1C4Gst1VFvAOP6YGJjTJuA==", - "deprecated": "Renamed to @fluent/syntax 0.14.0", - "dev": true, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data-encoder": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", - "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", - "dev": true, - "engines": { - "node": ">= 14.17" - } - }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "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==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs-extra/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/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/fx-runner": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.3.0.tgz", - "integrity": "sha512-5b37H4GCyhF+Nf8xk9mylXoDq4wb7pbGAXxlCXp/631UTeeZomWSYcEGXumY4wk8g2QAqjPMGdWW+RbNt8PUcA==", - "dev": true, - "dependencies": { - "commander": "2.9.0", - "shell-quote": "1.7.3", - "spawn-sync": "1.0.15", - "when": "3.7.7", - "which": "1.2.4", - "winreg": "0.0.12" - }, - "bin": { - "fx-runner": "bin/fx-runner" - } - }, - "node_modules/fx-runner/node_modules/commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", - "dev": true, - "dependencies": { - "graceful-readlink": ">= 1.0.0" - }, - "engines": { - "node": ">= 0.6.x" - } - }, - "node_modules/fx-runner/node_modules/isexe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", - "integrity": "sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==", - "dev": true - }, - "node_modules/fx-runner/node_modules/which": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", - "integrity": "sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==", - "dev": true, - "dependencies": { - "is-absolute": "^0.1.7", - "isexe": "^1.1.1" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/got": { - "version": "12.5.3", - "resolved": "https://registry.npmjs.org/got/-/got-12.5.3.tgz", - "integrity": "sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.1", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/got/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/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", - "dev": true - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "dev": true - }, - "node_modules/gulp-uglify-es": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-uglify-es/-/gulp-uglify-es-3.0.0.tgz", - "integrity": "sha512-dQ3czMFFojNgCajcrYl0oa98+YayaQ8kXRdaacpZRZ3iw2sdVURfdt8y8Ki1ogZGQqw8BUawnB7V6NkanxqnDg==", - "dev": true, - "dependencies": { - "o-stream": "^0.3.0", - "plugin-error": "^1.0.1", - "terser": "^5.7.1", - "vinyl": "^2.2.1", - "vinyl-sourcemaps-apply": "^0.2.1" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "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", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/har-validator/node_modules/ajv": { - "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", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/har-validator/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "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/has-yarn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", - "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/htmlparser2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", - "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "entities": "^4.3.0" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "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": "2.2.0", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", - "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", - "dev": true, - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/https-proxy-agent": { - "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", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true, - "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true, - "bin": { - "husky": "lib/bin.js" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "node_modules/iconv-lite": { - "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, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "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/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", - "dev": true, - "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true - }, - "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" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/invert-kv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz", - "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sindresorhus/invert-kv?sponsor=1" - } - }, - "node_modules/is-absolute": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", - "integrity": "sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==", - "dev": true, - "dependencies": { - "is-relative": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, - "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "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" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-mergeable-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-mergeable-object/-/is-mergeable-object-1.1.1.tgz", - "integrity": "sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==", - "dev": true - }, - "node_modules/is-npm": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", - "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-relative": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", - "integrity": "sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true - }, - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-yarn-global": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", - "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jed": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", - "integrity": "sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==", - "dev": true - }, - "node_modules/jose": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.11.2.tgz", - "integrity": "sha512-njj0VL2TsIxCtgzhO+9RRobBvws4oYyCM8TpvoUQwl/MbIM3NFJRR9+e6x0sS5xXaP1t6OCBkaBME98OV9zU5A==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, - "node_modules/js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/jsdom": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-21.1.0.tgz", - "integrity": "sha512-m0lzlP7qOtthD918nenK3hdItSd2I+V3W9IrBcB36sqDwG+KnUs66IF5GY7laGWUnlM9vTsD0W1QwSEBYWWcJg==", - "dev": true, - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "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/json-merge-patch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-1.0.2.tgz", - "integrity": "sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - } - }, - "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==", - "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==", - "dev": true - }, - "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/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "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": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "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/jsonfile/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/jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", - "dev": true, - "dependencies": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "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.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/jszip/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/jszip/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/jszip/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dev": true, - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dev": true, - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/latest-version": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", - "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", - "dev": true, - "dependencies": { - "package-json": "^8.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lcid": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz", - "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==", - "dev": true, - "dependencies": { - "invert-kv": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "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==", - "dev": true, - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/lighthouse-logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", - "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", - "dev": true, - "dependencies": { - "debug": "^2.6.9", - "marky": "^1.2.2" - } - }, - "node_modules/lighthouse-logger/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/lighthouse-logger/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/marky": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", - "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", - "dev": true - }, - "node_modules/mem": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-5.1.1.tgz", - "integrity": "sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^2.1.0", - "p-is-promise": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mitt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", - "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", - "dev": true - }, - "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/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "node_modules/mlly": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.1.1.tgz", - "integrity": "sha512-Jnlh4W/aI4GySPo6+DyTN17Q75KKbLTyFK8BrGhjNP4rxuUjbRWhE6gHg3bs33URWAF44FRm7gdQA348i3XxRw==", - "dev": true, - "dependencies": { - "acorn": "^8.8.2", - "pathe": "^1.1.0", - "pkg-types": "^1.0.1", - "ufo": "^1.1.0" - } - }, - "node_modules/mlly/node_modules/pathe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", - "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", - "dev": true - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "dev": true, - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", - "dev": true, - "dependencies": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", - "dev": true, - "optional": true, - "dependencies": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/mv/node_modules/glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", - "dev": true, - "optional": true, - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/mv/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "optional": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mv/node_modules/rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", - "dev": true, - "optional": true, - "dependencies": { - "glob": "^6.0.1" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true, - "optional": true - }, - "node_modules/nanoid": { - "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" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", - "dev": true, - "optional": true, - "bin": { - "ncp": "bin/ncp" - } - }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, - "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==", - "dev": true, - "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-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true, - "engines": { - "node": ">= 6.13.0" - } - }, - "node_modules/node-notifier": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-10.0.1.tgz", - "integrity": "sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==", - "dev": true, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.5", - "shellwords": "^0.1.1", - "uuid": "^8.3.2", - "which": "^2.0.2" - } - }, - "node_modules/node-notifier/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", - "dev": true - }, - "node_modules/o-stream": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/o-stream/-/o-stream-0.3.0.tgz", - "integrity": "sha512-gbzl6qCJZ609x/M2t25HqCYQagFzWYCtQ84jcuObGr+V8D1Am4EVubkF4J+XFs6ukfiv96vNeiBb8FrbbMZYiQ==", - "dev": true - }, - "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==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/on-exit-leak-free": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", - "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "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==", - "dev": true, - "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/os-locale": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-5.0.0.tgz", - "integrity": "sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==", - "dev": true, - "dependencies": { - "execa": "^4.0.0", - "lcid": "^3.0.0", - "mem": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-shim": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", - "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "dev": true, - "engines": { - "node": ">=12.20" - } - }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/package-json": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", - "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", - "dev": true, - "dependencies": { - "got": "^12.1.0", - "registry-auth-token": "^5.0.1", - "registry-url": "^6.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "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" - }, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true, - "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/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dev": true, - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "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/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "dev": true - }, - "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/pathe": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz", - "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==", - "dev": true - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/pino": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.8.0.tgz", - "integrity": "sha512-cF8iGYeu2ODg2gIwgAHcPrtR63ILJz3f7gkogaHC/TXVVXxZgInmNYiIpDYEwgEkxZti2Se6P2W2DxlBIZe6eQ==", - "dev": true, - "dependencies": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "v1.0.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^2.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.1.0", - "thread-stream": "^2.0.0" - }, - "bin": { - "pino": "bin.js" - } - }, - "node_modules/pino-abstract-transport": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", - "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", - "dev": true, - "dependencies": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" - } - }, - "node_modules/pino-abstract-transport/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/pino-abstract-transport/node_modules/readable-stream": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", - "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/pino-std-serializers": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz", - "integrity": "sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==", - "dev": true - }, - "node_modules/pkg-types": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.2.tgz", - "integrity": "sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==", - "dev": true, - "dependencies": { - "jsonc-parser": "^3.2.0", - "mlly": "^1.1.1", - "pathe": "^1.1.0" - } - }, - "node_modules/pkg-types/node_modules/pathe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", - "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", - "dev": true - }, - "node_modules/plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "dependencies": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/pretty-quick": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", - "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", - "dev": true, - "dependencies": { - "chalk": "^3.0.0", - "execa": "^4.0.0", - "find-up": "^4.1.0", - "ignore": "^5.1.4", - "mri": "^1.1.5", - "multimatch": "^4.0.0" - }, - "bin": { - "pretty-quick": "bin/pretty-quick.js" - }, - "engines": { - "node": ">=10.13" - }, - "peerDependencies": { - "prettier": ">=2.0.0" - } - }, - "node_modules/pretty-quick/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": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-quick/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": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pretty-quick/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": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pretty-quick/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": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/process-warning": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.1.0.tgz", - "integrity": "sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/promise-toolbox": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/promise-toolbox/-/promise-toolbox-0.21.0.tgz", - "integrity": "sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg==", - "dev": true, - "dependencies": { - "make-error": "^1.3.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pupa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", - "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", - "dev": true, - "dependencies": { - "escape-goat": "^4.0.0" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/puppeteer": { - "version": "19.7.2", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.7.2.tgz", - "integrity": "sha512-4Lm7Qpe/LU95Svirei/jDLDvR5oMrl9BPGd7HMY5+Q28n+BhvKuW97gKkR+1LlI86bO8J3g8rG/Ll5kv9J1nlQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "cosmiconfig": "8.0.0", - "https-proxy-agent": "5.0.1", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "puppeteer-core": "19.7.2" - }, - "engines": { - "node": ">=14.1.0" - } - }, - "node_modules/puppeteer-core": { - "version": "19.7.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.7.2.tgz", - "integrity": "sha512-PvI+fXqgP0uGJxkyZcX51bnzjFA73MODZOAv0fSD35yR7tvbqwtMV3/Y+hxQ0AMMwzxkEebP6c7po/muqxJvmQ==", - "dev": true, - "dependencies": { - "chromium-bidi": "0.4.4", - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.1094867", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.11.0" - }, - "engines": { - "node": ">=14.1.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "node_modules/queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "dev": true, - "dependencies": { - "inherits": "~2.0.3" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "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/quick-format-unescaped": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", - "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", - "dev": true - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true - }, - "node_modules/readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/real-require": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", - "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/registry-auth-token": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", - "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", - "dev": true, - "dependencies": { - "@pnpm/npm-conf": "^1.0.4" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/registry-url": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", - "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", - "dev": true, - "dependencies": { - "rc": "1.2.8" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/relaxed-json": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/relaxed-json/-/relaxed-json-1.0.3.tgz", - "integrity": "sha512-b7wGPo7o2KE/g7SqkJDDbav6zmrEeP4TK2VpITU72J/M949TLe/23y/ZHJo+pskcGM52xIfFoT9hydwmgr1AEg==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "commander": "^2.6.0" - }, - "bin": { - "rjson": "bin/rjson.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/relaxed-json/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/relaxed-json/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/relaxed-json/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/relaxed-json/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/relaxed-json/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": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/relaxed-json/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/relaxed-json/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true - }, - "node_modules/replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "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", - "dev": true, - "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/request/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==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/request/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==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/request/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.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "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", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "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": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", - "dev": true, - "dependencies": { - "lowercase-keys": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "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" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.2.tgz", - "integrity": "sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "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==", - "dev": true, - "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/safe-json-stringify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", - "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", - "dev": true, - "optional": true - }, - "node_modules/safe-stable-stringify": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", - "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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 - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } - }, - "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" - } - }, - "node_modules/semver-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", - "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true - }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true - }, - "node_modules/sign-addon": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-5.2.0.tgz", - "integrity": "sha512-t5CZ4MSKAd3uJBUfjgWfSyKYC1pQS6BMUbgI5OytzMkTOQ9NkdkFE8bB0AJLQIGqDrNS2b1+/ghAP56iuCUE+g==", - "dev": true, - "dependencies": { - "common-tags": "1.8.2", - "core-js": "3.27.1", - "deepcopy": "2.1.0", - "es6-error": "4.1.1", - "es6-promisify": "7.0.0", - "jsonwebtoken": "9.0.0", - "mz": "2.7.0", - "request": "2.88.2", - "source-map-support": "0.5.21", - "stream-to-promise": "3.0.0" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/sleep": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sleep/-/sleep-6.1.0.tgz", - "integrity": "sha512-Z1x4JjJxsru75Tqn8F4tnOFeEu3HjtITTsumYUiuz54sGKdISgLCek9AUlXlVVrkhltRFhNUsJDJE76SFHTDIQ==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "nan": "^2.13.2" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/sonic-boom": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.1.tgz", - "integrity": "sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==", - "dev": true, - "dependencies": { - "atomic-sleep": "^1.0.0" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "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" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spawn-sync": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", - "integrity": "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "concat-stream": "^1.4.7", - "os-shim": "^0.1.2" - } - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", - "dev": true, - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "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/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true - }, - "node_modules/std-env": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz", - "integrity": "sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==", - "dev": true - }, - "node_modules/stream-to-array": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", - "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==", - "dev": true, - "dependencies": { - "any-promise": "^1.1.0" - } - }, - "node_modules/stream-to-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-3.0.0.tgz", - "integrity": "sha512-h+7wLeFiYegOdgTfTxjRsrT7/Op7grnKEIHWgaO1RTHwcwk7xRreMr3S8XpDfDMesSxzgM2V4CxNCFAGo6ssnA==", - "dev": true, - "dependencies": { - "any-promise": "~1.3.0", - "end-of-stream": "~1.4.1", - "stream-to-array": "~2.3.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "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": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-5.0.0.tgz", - "integrity": "sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-bom-buf": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-2.0.0.tgz", - "integrity": "sha512-gLFNHucd6gzb8jMsl5QmZ3QgnUJmp7qn4uUSHNwEXumAp7YizoGYw19ZUVfuq4aBOQUtyn2k8X/CwzWB73W2lQ==", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom-stream": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-4.0.0.tgz", - "integrity": "sha512-0ApK3iAkHv6WbgLICw/J4nhwHeDZsBxIIsOD+gHgZICL6SeJ0S9f/WZqemka9cjkTyMN5geId6e8U5WGFAn3cQ==", - "dev": true, - "dependencies": { - "first-chunk-stream": "^3.0.0", - "strip-bom-buf": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", - "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-literal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", - "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", - "dev": true, - "dependencies": { - "acorn": "^8.8.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "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/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/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.16.5", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.5.tgz", - "integrity": "sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "dependencies": { - "any-promise": "^1.0.0" - } - }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "dependencies": { - "thenify": ">= 3.1.0 < 4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/thread-stream": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.3.0.tgz", - "integrity": "sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==", - "dev": true, - "dependencies": { - "real-require": "^0.2.0" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/tinybench": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", - "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", - "dev": true - }, - "node_modules/tinypool": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.1.tgz", - "integrity": "sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.1.1.tgz", - "integrity": "sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "node_modules/tosource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", - "integrity": "sha512-N6g8eQ1eerw6Y1pBhdgkubWIiPFwXa2POSUrlL8jth5CyyEWNWzoGKRkO3CaO7Jx27hlJP54muB3btIAbx4MPg==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/ts-essentials": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.3.0.tgz", - "integrity": "sha512-XeiCboEyBG8UqXZtXl59bWEi4ZgOqRsogFDI6WDGIF1LmzbYiAkIwjkXN6zZWWl4re/lsOqMlYfe8KA0XiiEPw==", - "dev": true, - "peerDependencies": { - "typescript": ">=4.1.0" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/ufo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.0.tgz", - "integrity": "sha512-LQc2s/ZDMaCN3QLpa+uzHUOQ7SdV0qgv3VBXOolQGXTaaZpIur6PwUclF5nN2hNkiTRcUugXd1zFOW3FLJ135Q==", - "dev": true - }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dev": true, - "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "node_modules/unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "dev": true, - "dependencies": { - "crypto-random-string": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/upath": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", - "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-notifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", - "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", - "dev": true, - "dependencies": { - "boxen": "^7.0.0", - "chalk": "^5.0.1", - "configstore": "^6.0.0", - "has-yarn": "^3.0.0", - "import-lazy": "^4.0.0", - "is-ci": "^3.0.1", - "is-installed-globally": "^0.4.0", - "is-npm": "^6.0.0", - "is-yarn-global": "^0.4.0", - "latest-version": "^7.0.0", - "pupa": "^3.1.0", - "semver": "^7.3.7", - "semver-diff": "^4.0.0", - "xdg-basedir": "^5.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "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-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", - "dev": true, - "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", - "dev": true, - "dependencies": { - "source-map": "^0.5.1" - } - }, - "node_modules/vinyl-sourcemaps-apply/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vite": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz", - "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==", - "dev": true, - "dependencies": { - "esbuild": "^0.16.14", - "postcss": "^8.4.21", - "resolve": "^1.22.1", - "rollup": "^3.10.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vite-node": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.27.3.tgz", - "integrity": "sha512-eyJYOO64o5HIp8poc4bJX+ZNBwMZeI3f6/JdiUmJgW02Mt7LnoCtDMRVmLaY9S05SIsjGe339ZK4uo2wQ+bF9g==", - "dev": true, - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "mlly": "^1.1.0", - "pathe": "^0.2.0", - "picocolors": "^1.0.0", - "source-map": "^0.6.1", - "source-map-support": "^0.5.21", - "vite": "^3.0.0 || ^4.0.0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": ">=v14.16.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/vitest": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.27.3.tgz", - "integrity": "sha512-Ld3UVgRVhJUtqvQ3dW89GxiApFAgBsWJZBCWzK+gA3w2yG68csXlGZZ4WDJURf+8ecNfgrScga6xY+8YSOpiMg==", - "dev": true, - "dependencies": { - "@types/chai": "^4.3.4", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "acorn": "^8.8.1", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.7", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "picocolors": "^1.0.0", - "source-map": "^0.6.1", - "std-env": "^3.3.1", - "strip-literal": "^1.0.0", - "tinybench": "^2.3.1", - "tinypool": "^0.3.0", - "tinyspy": "^1.0.2", - "vite": "^3.0.0 || ^4.0.0", - "vite-node": "0.27.3", - "why-is-node-running": "^2.2.2" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": ">=v14.16.0" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest-mock-extended": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vitest-mock-extended/-/vitest-mock-extended-1.0.9.tgz", - "integrity": "sha512-avWOwla4xsubFUbL1O2Zvqn8xUucQWai05ryywfhjUIthkjJKk01g5/s4SrjTHZXGZ2/h6NfF51FJ3voix1OAw==", - "dev": true, - "dependencies": { - "ts-essentials": "^9.3.0" - }, - "peerDependencies": { - "typescript": "3.x || 4.x", - "vitest": ">=0.26.2" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/web-ext": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-7.5.0.tgz", - "integrity": "sha512-Ymflj7Aq/LOD+zGoyvwRbAPx/yMJeig2OEb/rRXYrWl6NWRI5E0c2iWGqlBcnL45iKrOzz70H438dVeJk0w2ug==", - "dev": true, - "dependencies": { - "@babel/runtime": "7.20.13", - "@devicefarmer/adbkit": "3.2.3", - "addons-linter": "5.27.0", - "bunyan": "1.8.15", - "camelcase": "7.0.1", - "chrome-launcher": "0.15.1", - "debounce": "1.2.1", - "decamelize": "6.0.0", - "es6-error": "4.1.1", - "firefox-profile": "4.2.2", - "fs-extra": "11.1.0", - "fx-runner": "1.3.0", - "import-fresh": "3.3.0", - "jose": "4.11.2", - "mkdirp": "1.0.4", - "multimatch": "6.0.0", - "mz": "2.7.0", - "node-fetch": "3.3.0", - "node-notifier": "10.0.1", - "open": "8.4.0", - "parse-json": "6.0.2", - "promise-toolbox": "0.21.0", - "sign-addon": "5.2.0", - "source-map-support": "0.5.21", - "strip-bom": "5.0.0", - "strip-json-comments": "5.0.0", - "tmp": "0.2.1", - "update-notifier": "6.0.2", - "watchpack": "2.4.0", - "ws": "8.12.0", - "yargs": "17.6.2", - "zip-dir": "2.0.0" - }, - "bin": { - "web-ext": "bin/web-ext.js" - }, - "engines": { - "node": ">=14.0.0", - "npm": ">=6.9.0" - } - }, - "node_modules/web-ext/node_modules/array-differ": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-4.0.0.tgz", - "integrity": "sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/web-ext/node_modules/array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/web-ext/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/web-ext/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 - }, - "node_modules/web-ext/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/web-ext/node_modules/lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/web-ext/node_modules/multimatch": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-6.0.0.tgz", - "integrity": "sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ==", - "dev": true, - "dependencies": { - "@types/minimatch": "^3.0.5", - "array-differ": "^4.0.0", - "array-union": "^3.0.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/web-ext/node_modules/node-fetch": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", - "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", - "dev": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/web-ext/node_modules/parse-json": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-6.0.2.tgz", - "integrity": "sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^2.3.1", - "lines-and-columns": "^2.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/web-ext/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/web-ext/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/web-ext/node_modules/ws": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", - "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/web-ext/node_modules/yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "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.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/web-ext/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/when": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz", - "integrity": "sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==", - "dev": true - }, - "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/why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", - "dev": true, - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "dev": true, - "dependencies": { - "string-width": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/winreg": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz", - "integrity": "sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ==", - "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==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "node_modules/ws": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", - "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xdg-basedir": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", - "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "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==", - "dev": true, - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "node_modules/xvfb": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/xvfb/-/xvfb-0.4.0.tgz", - "integrity": "sha512-g55AbjcBL4Bztfn7kiUrR0ne8mMUsFODDJ+HFGf5OuHJqKKccpExX2Qgn7VF2eImw1eoh6+riXHser1J4agrFA==", - "dev": true, - "optionalDependencies": { - "sleep": "6.1.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, - "engines": { - "node": ">=10" - } - }, - "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 - }, - "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/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 - }, - "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/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zip-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz", - "integrity": "sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==", - "dev": true, - "dependencies": { - "async": "^3.2.0", - "jszip": "^3.2.2" - } - } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.11" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@devicefarmer/adbkit": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit/-/adbkit-3.2.3.tgz", - "integrity": "sha512-wK9rVrabs4QU0oK8Jnwi+HRBEm+s1x/o63kgthUe0y7K1bfcYmgLuQf41/adsj/5enddlSxzkJavl2EwOu+r1g==", - "dev": true, - "requires": { - "@devicefarmer/adbkit-logcat": "^2.1.2", - "@devicefarmer/adbkit-monkey": "~1.2.0", - "bluebird": "~3.7", - "commander": "^9.1.0", - "debug": "~4.3.1", - "node-forge": "^1.3.1", - "split": "~1.0.1" - }, - "dependencies": { - "commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true - } - } - }, - "@devicefarmer/adbkit-logcat": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-logcat/-/adbkit-logcat-2.1.2.tgz", - "integrity": "sha512-G4grpEa5s9s9wCRs8YB9LjFSnz0Os3g3RYIwZSxH3JFfV3aejL5xlu4hHMH4JY+d4oCCwImcEZJcFPY9BEP21w==", - "dev": true - }, - "@devicefarmer/adbkit-monkey": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@devicefarmer/adbkit-monkey/-/adbkit-monkey-1.2.1.tgz", - "integrity": "sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg==", - "dev": true - }, - "@esbuild/android-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", - "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", - "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", - "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", - "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", - "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", - "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", - "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", - "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", - "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", - "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", - "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", - "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", - "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", - "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", - "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", - "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", - "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", - "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", - "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", - "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", - "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", - "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", - "dev": true, - "optional": true - }, - "@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "dependencies": { - "ajv": { - "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", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "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 - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - } - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true - }, - "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@mdn/browser-compat-data": { - "version": "5.2.29", - "resolved": "https://registry.npmjs.org/@mdn/browser-compat-data/-/browser-compat-data-5.2.29.tgz", - "integrity": "sha512-bEBrkTWbDAs/PB4IdRg4CtU750oBRytXHK/wC2oIDkgKZqnt76nACSooQQuHF11mK5k43f/IgFUMO5t5quRPVA==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@pnpm/network.ca-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", - "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", - "dev": true, - "requires": { - "graceful-fs": "4.2.10" - } - }, - "@pnpm/npm-conf": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-1.0.5.tgz", - "integrity": "sha512-hD8ml183638O3R6/Txrh0L8VzGOrFXgRtRDG4qQC4tONdZ5Z1M+tlUUDUvrjYdmK6G+JTBTeaCLMna11cXzi8A==", - "dev": true, - "requires": { - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" - } - }, - "@sindresorhus/is": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.3.0.tgz", - "integrity": "sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "dev": true, - "requires": { - "defer-to-connect": "^2.0.1" - } - }, - "@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true - }, - "@types/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==", - "dev": true - }, - "@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, - "requires": { - "@types/chai": "*" - } - }, - "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "@types/node": { - "version": "18.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.1.tgz", - "integrity": "sha512-QH+37Qds3E0eDlReeboBxfHbX9omAcBCXEzswCu6jySP642jiM3cYSIkU/REqwhCUqXdonHFuBfJDiAJxMNhaQ==", - "dev": true - }, - "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@vitest/coverage-c8": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/@vitest/coverage-c8/-/coverage-c8-0.28.5.tgz", - "integrity": "sha512-zCNyurjudoG0BAqAgknvlBhkV2V9ZwyYLWOAGtHSDhL/St49MJT+V2p1G0yPaoqBbKOTATVnP5H2p1XL15H75g==", - "dev": true, - "requires": { - "c8": "^7.12.0", - "picocolors": "^1.0.0", - "std-env": "^3.3.1", - "vitest": "0.28.5" - }, - "dependencies": { - "pathe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", - "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", - "dev": true - }, - "vite-node": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.28.5.tgz", - "integrity": "sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==", - "dev": true, - "requires": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "mlly": "^1.1.0", - "pathe": "^1.1.0", - "picocolors": "^1.0.0", - "source-map": "^0.6.1", - "source-map-support": "^0.5.21", - "vite": "^3.0.0 || ^4.0.0" - } - }, - "vitest": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.28.5.tgz", - "integrity": "sha512-pyCQ+wcAOX7mKMcBNkzDwEHRGqQvHUl0XnoHR+3Pb1hytAHISgSxv9h0gUiSiYtISXUU3rMrKiKzFYDrI6ZIHA==", - "dev": true, - "requires": { - "@types/chai": "^4.3.4", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "@vitest/expect": "0.28.5", - "@vitest/runner": "0.28.5", - "@vitest/spy": "0.28.5", - "@vitest/utils": "0.28.5", - "acorn": "^8.8.1", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.7", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "pathe": "^1.1.0", - "picocolors": "^1.0.0", - "source-map": "^0.6.1", - "std-env": "^3.3.1", - "strip-literal": "^1.0.0", - "tinybench": "^2.3.1", - "tinypool": "^0.3.1", - "tinyspy": "^1.0.2", - "vite": "^3.0.0 || ^4.0.0", - "vite-node": "0.28.5", - "why-is-node-running": "^2.2.2" - } - } - } - }, - "@vitest/expect": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.28.5.tgz", - "integrity": "sha512-gqTZwoUTwepwGIatnw4UKpQfnoyV0Z9Czn9+Lo2/jLIt4/AXLTn+oVZxlQ7Ng8bzcNkR+3DqLJ08kNr8jRmdNQ==", - "dev": true, - "requires": { - "@vitest/spy": "0.28.5", - "@vitest/utils": "0.28.5", - "chai": "^4.3.7" - } - }, - "@vitest/runner": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.28.5.tgz", - "integrity": "sha512-NKkHtLB+FGjpp5KmneQjTcPLWPTDfB7ie+MmF1PnUBf/tGe2OjGxWyB62ySYZ25EYp9krR5Bw0YPLS/VWh1QiA==", - "dev": true, - "requires": { - "@vitest/utils": "0.28.5", - "p-limit": "^4.0.0", - "pathe": "^1.1.0" - }, - "dependencies": { - "p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dev": true, - "requires": { - "yocto-queue": "^1.0.0" - } - }, - "pathe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", - "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", - "dev": true - }, - "yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true - } - } - }, - "@vitest/spy": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.28.5.tgz", - "integrity": "sha512-7if6rsHQr9zbmvxN7h+gGh2L9eIIErgf8nSKYDlg07HHimCxp4H6I/X/DPXktVPPLQfiZ1Cw2cbDIx9fSqDjGw==", - "dev": true, - "requires": { - "tinyspy": "^1.0.2" - } - }, - "@vitest/utils": { - "version": "0.28.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.28.5.tgz", - "integrity": "sha512-UyZdYwdULlOa4LTUSwZ+Paz7nBHGTT72jKwdFSV4IjHF1xsokp+CabMdhjvVhYwkLfO88ylJT46YMilnkSARZA==", - "dev": true, - "requires": { - "cli-truncate": "^3.1.0", - "diff": "^5.1.0", - "loupe": "^2.3.6", - "picocolors": "^1.0.0", - "pretty-format": "^27.5.1" - } - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "requires": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true - }, - "addons-linter": { - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/addons-linter/-/addons-linter-5.27.0.tgz", - "integrity": "sha512-gDgl0FcmhZ5cs3St0qAaO9J1BoektwnY+p4dVgcvPu8WaBqH9MG2fk0gL/evCpoHSXeSw15GA87n8Y7zy7raVQ==", - "dev": true, - "requires": { - "@mdn/browser-compat-data": "5.2.29", - "addons-moz-compare": "1.3.0", - "addons-scanner-utils": "8.3.0", - "ajv": "8.12.0", - "chalk": "4.1.2", - "cheerio": "1.0.0-rc.12", - "columnify": "1.6.0", - "common-tags": "1.8.2", - "deepmerge": "4.2.2", - "eslint": "8.32.0", - "eslint-plugin-no-unsanitized": "4.0.2", - "eslint-visitor-keys": "3.3.0", - "espree": "9.4.1", - "esprima": "4.0.1", - "fast-json-patch": "3.1.1", - "fluent-syntax": "0.14.0", - "glob": "8.1.0", - "image-size": "1.0.2", - "is-mergeable-object": "1.1.1", - "jed": "1.1.1", - "json-merge-patch": "1.0.2", - "os-locale": "5.0.0", - "pino": "8.8.0", - "postcss": "8.4.21", - "relaxed-json": "1.0.3", - "semver": "7.3.8", - "sha.js": "2.4.11", - "source-map-support": "0.5.21", - "tosource": "1.0.0", - "upath": "2.0.1", - "yargs": "17.6.2", - "yauzl": "2.10.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.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": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "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 - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "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 - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "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" - } - }, - "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" - } - }, - "yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "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.1.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } - }, - "addons-moz-compare": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/addons-moz-compare/-/addons-moz-compare-1.3.0.tgz", - "integrity": "sha512-/rXpQeaY0nOKhNx00pmZXdk5Mu+KhVlL3/pSBuAYwrxRrNiTvI/9xfQI8Lmm7DMMl+PDhtfAHY/0ibTpdeoQQQ==", - "dev": true - }, - "addons-scanner-utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/addons-scanner-utils/-/addons-scanner-utils-8.3.0.tgz", - "integrity": "sha512-XP+2kxhZxlxiVFXVJ7lyJEuxpUS8ryrolUDqnUEnvOZ/3p8qt9hWCYSliXhI2W+Swf/hZ3F4CLAG6tBnqdxDYA==", - "dev": true, - "requires": { - "@types/yauzl": "2.10.0", - "common-tags": "1.8.2", - "first-chunk-stream": "3.0.0", - "strip-bom-stream": "4.0.0", - "upath": "2.0.1", - "yauzl": "2.10.0" - } - }, - "adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "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" - } - }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "requires": { - "string-width": "^4.1.0" - }, - "dependencies": { - "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 - }, - "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" - } - } - } - }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "dev": true, - "requires": { - "ansi-wrap": "^0.1.0" - } - }, - "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 - }, - "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" - } - }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw==", - "dev": true - }, - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true - }, - "array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "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==", - "dev": true, - "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": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true - }, - "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true - }, - "atomic-sleep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true - }, - "aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true - }, - "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 - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "boxen": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.1.tgz", - "integrity": "sha512-8k2eH6SRAK00NDl1iX5q17RJ8rfl53TajdYxE3ssMLehbg487dEVgsad4pIsZb/QqBgYWIl6JOauMTLGX2Kpkw==", - "dev": true, - "requires": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.0", - "chalk": "^5.0.1", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.0.1" - }, - "dependencies": { - "chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", - "dev": true - }, - "type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "dev": true - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "bunyan": { - "version": "1.8.15", - "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", - "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==", - "dev": true, - "requires": { - "dtrace-provider": "~0.8", - "moment": "^2.19.3", - "mv": "~2", - "safe-json-stringify": "~1" - } - }, - "c8": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.13.0.tgz", - "integrity": "sha512-/NL4hQTv1gBL6J6ei80zu3IiTrmePDKXKXOTLpHvcIWZTVYQlDhVWjjWvkhICylE8EwwnMVzDZugCvdx0/DIIA==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.1.4", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9" - } - }, - "cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true - }, - "cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", - "dev": true - }, - "cacheable-request": { - "version": "10.2.8", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.8.tgz", - "integrity": "sha512-IDVO5MJ4LItE6HKFQTqT2ocAQsisOoCTUDu1ddCmnhyiwFQjXNPp4081Xj23N4tO+AFEFNzGuNEf/c8Gwwt15A==", - "dev": true, - "requires": { - "@types/http-cache-semantics": "^4.0.1", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.2", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.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 - } - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "chai": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz", - "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==", - "dev": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - } - }, - "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "chance": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/chance/-/chance-1.1.10.tgz", - "integrity": "sha512-R6o7L/PGxBxdxzWbnLTi9nKQPtNZJySAxA1yGmAfKSiUt3KsBOAttsF04gNWA/XUcGIOrLHy7uAQ7KZwK92Qig==", - "dev": true, - "requires": { - "gulp-uglify-es": "^3.0.0" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", - "dev": true - }, - "cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dev": true, - "requires": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - } - }, - "cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "chrome-launcher": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.1.tgz", - "integrity": "sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==", - "dev": true, - "requires": { - "@types/node": "*", - "escape-string-regexp": "^4.0.0", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0" - } - }, - "chromium-bidi": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.4.tgz", - "integrity": "sha512-4BX5cSaponuvVT1+SbLYTOAgDoVtX/Khoc9UsbFJ/AsPVUeFAM3RiIDFI6XFhLYMi9WmVJqh1ZH+dRpNKkKwiQ==", - "dev": true, - "requires": { - "mitt": "3.0.0" - } - }, - "ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true - }, - "cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "dev": true - }, - "cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", - "dev": true, - "requires": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.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" - }, - "dependencies": { - "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 - }, - "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" - } - }, - "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" - } - } - } - }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "dev": true - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", - "dev": true - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", - "dev": true - }, - "cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "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 - }, - "columnify": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", - "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", - "dev": true, - "requires": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "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==", - "dev": true - }, - "common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "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, - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - } - } - }, - "configstore": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", - "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", - "dev": true, - "requires": { - "dot-prop": "^6.0.1", - "graceful-fs": "^4.2.6", - "unique-string": "^3.0.0", - "write-file-atomic": "^3.0.3", - "xdg-basedir": "^5.0.1" - } - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "core-js": { - "version": "3.27.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", - "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, - "cosmiconfig": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.0.0.tgz", - "integrity": "sha512-da1EafcpH6b/TD8vDRaWV7xFINlHlF6zKsGwS1TsuVJTZRkquaS5HTMq7uq6h31619QjbsYl21gVDOm32KM1vQ==", - "dev": true, - "requires": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - } - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dev": true, - "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", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", - "dev": true, - "requires": { - "type-fest": "^1.0.1" - }, - "dependencies": { - "type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true - } - } - }, - "css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true - }, - "data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "requires": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - } - }, - "debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", - "dev": true - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true - }, - "decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - } - } - }, - "deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", - "dev": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "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==", - "dev": true - }, - "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==", - "dev": true - }, - "deepcopy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/deepcopy/-/deepcopy-2.1.0.tgz", - "integrity": "sha512-8cZeTb1ZKC3bdSCP6XOM1IsTczIO73fdqtwa2B0N15eAz7gmyhQo+mc5gnFuulsgN3vIQYmTgbmQVKalH1dKvQ==", - "dev": true, - "requires": { - "type-detect": "^4.0.8" - } - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "requires": { - "clone": "^1.0.2" - }, - "dependencies": { - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true - } - } - }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true - }, - "devtools-protocol": { - "version": "0.0.1094867", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1094867.tgz", - "integrity": "sha512-pmMDBKiRVjh0uKK6CT1WqZmM3hBVSgD+N2MrgyV1uNizAZMw4tx6i/RTc+/uCsKSCmg0xXx7arCP/OFcIwTsiQ==", - "dev": true - }, - "diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", - "dev": true - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "requires": { - "webidl-conversions": "^7.0.0" - } - }, - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "requires": { - "domelementtype": "^2.3.0" - } - }, - "domutils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", - "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", - "dev": true, - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.1" - } - }, - "dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "dtrace-provider": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", - "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.14.0" - } - }, - "eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", - "dev": true - }, - "error-ex": { - "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" - } - }, - "es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true - }, - "es6-promisify": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", - "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", - "dev": true - }, - "esbuild": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", - "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", - "dev": true, - "requires": { - "@esbuild/android-arm": "0.16.17", - "@esbuild/android-arm64": "0.16.17", - "@esbuild/android-x64": "0.16.17", - "@esbuild/darwin-arm64": "0.16.17", - "@esbuild/darwin-x64": "0.16.17", - "@esbuild/freebsd-arm64": "0.16.17", - "@esbuild/freebsd-x64": "0.16.17", - "@esbuild/linux-arm": "0.16.17", - "@esbuild/linux-arm64": "0.16.17", - "@esbuild/linux-ia32": "0.16.17", - "@esbuild/linux-loong64": "0.16.17", - "@esbuild/linux-mips64el": "0.16.17", - "@esbuild/linux-ppc64": "0.16.17", - "@esbuild/linux-riscv64": "0.16.17", - "@esbuild/linux-s390x": "0.16.17", - "@esbuild/linux-x64": "0.16.17", - "@esbuild/netbsd-x64": "0.16.17", - "@esbuild/openbsd-x64": "0.16.17", - "@esbuild/sunos-x64": "0.16.17", - "@esbuild/win32-arm64": "0.16.17", - "@esbuild/win32-ia32": "0.16.17", - "@esbuild/win32-x64": "0.16.17" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-goat": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", - "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", - "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==", - "dev": true - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "eslint": { - "version": "8.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.32.0.tgz", - "integrity": "sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.4.1", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "dependencies": { - "ajv": { - "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", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "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" - } - }, - "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 - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - } - } - }, - "eslint-plugin-no-unsanitized": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.0.2.tgz", - "integrity": "sha512-Pry0S9YmHoz8NCEMRQh7N0Yexh2MYCNPIlrV52hTmS7qXnTghWsjXouF08bgsrrZqaW9tt1ZiK3j5NEmPE+EjQ==", - "dev": true, - "requires": {} - }, - "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, - "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", - "dev": true - }, - "espree": { - "version": "9.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", - "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", - "dev": true, - "requires": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - } - }, - "extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true - }, - "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 - }, - "fast-json-patch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", - "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==", - "dev": true - }, - "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 - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fast-redact": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", - "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "requires": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "firefox-profile": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.2.2.tgz", - "integrity": "sha512-3kI17Xl9dL9AeRkpV1yahsJ+UbekkPtlQswKrIsTY1NLgxtEOR4R19rjGGz5+7/rP8Jt6fvxHk+Bai9R6Eai3w==", - "dev": true, - "requires": { - "adm-zip": "~0.5.x", - "fs-extra": "~9.0.1", - "ini": "~2.0.0", - "minimist": "^1.2.5", - "xml2js": "~0.4.23" - }, - "dependencies": { - "fs-extra": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", - "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", - "dev": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^1.0.0" - } - }, - "universalify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", - "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", - "dev": true - } - } - }, - "first-chunk-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-3.0.0.tgz", - "integrity": "sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw==", - "dev": true - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "fluent-syntax": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/fluent-syntax/-/fluent-syntax-0.14.0.tgz", - "integrity": "sha512-+k8uXWfRpSrE33764RbpjIKMzIX6R9EnSjFBgaA1s0Mboc3KnW9sYe0c6vjIoZQY1C4Gst1VFvAOP6YGJjTJuA==", - "dev": true - }, - "foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "form-data-encoder": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", - "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", - "dev": true - }, - "formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "requires": { - "fetch-blob": "^3.1.2" - } - }, - "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==", - "dev": true - }, - "fs-extra": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.0.tgz", - "integrity": "sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "fx-runner": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.3.0.tgz", - "integrity": "sha512-5b37H4GCyhF+Nf8xk9mylXoDq4wb7pbGAXxlCXp/631UTeeZomWSYcEGXumY4wk8g2QAqjPMGdWW+RbNt8PUcA==", - "dev": true, - "requires": { - "commander": "2.9.0", - "shell-quote": "1.7.3", - "spawn-sync": "1.0.15", - "when": "3.7.7", - "which": "1.2.4", - "winreg": "0.0.12" - }, - "dependencies": { - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", - "dev": true, - "requires": { - "graceful-readlink": ">= 1.0.0" - } - }, - "isexe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-1.1.2.tgz", - "integrity": "sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==", - "dev": true - }, - "which": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/which/-/which-1.2.4.tgz", - "integrity": "sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==", - "dev": true, - "requires": { - "is-absolute": "^0.1.7", - "isexe": "^1.1.1" - } - } - } - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", - "dev": true - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, - "requires": { - "ini": "2.0.0" - } - }, - "globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "got": { - "version": "12.5.3", - "resolved": "https://registry.npmjs.org/got/-/got-12.5.3.tgz", - "integrity": "sha512-8wKnb9MGU8IPGRIo+/ukTy9XLJBwDiCpIf5TVzQ9Cpol50eMTpBq2GAuDsuDIz7hTYmZgMgC1e9ydr6kSDWs3w==", - "dev": true, - "requires": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.1", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.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 - } - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", - "dev": true - }, - "grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", - "dev": true - }, - "gulp-uglify-es": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-uglify-es/-/gulp-uglify-es-3.0.0.tgz", - "integrity": "sha512-dQ3czMFFojNgCajcrYl0oa98+YayaQ8kXRdaacpZRZ3iw2sdVURfdt8y8Ki1ogZGQqw8BUawnB7V6NkanxqnDg==", - "dev": true, - "requires": { - "o-stream": "^0.3.0", - "plugin-error": "^1.0.1", - "terser": "^5.7.1", - "vinyl": "^2.2.1", - "vinyl-sourcemaps-apply": "^0.2.1" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "dependencies": { - "ajv": { - "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", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "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 - } - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-yarn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", - "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "requires": { - "whatwg-encoding": "^2.0.0" - } - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "htmlparser2": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz", - "integrity": "sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==", - "dev": true, - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "entities": "^4.3.0" - } - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "requires": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "http2-wrapper": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", - "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", - "dev": true, - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - } - }, - "https-proxy-agent": { - "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", - "debug": "4" - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true - }, - "husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true - }, - "iconv-lite": { - "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, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", - "dev": true, - "requires": { - "queue": "6.0.2" - } - }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true - }, - "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" - } - }, - "import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true - }, - "invert-kv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-3.0.1.tgz", - "integrity": "sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==", - "dev": true - }, - "is-absolute": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", - "integrity": "sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==", - "dev": true, - "requires": { - "is-relative": "^0.1.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, - "requires": { - "ci-info": "^3.2.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "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 - }, - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, - "requires": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - } - }, - "is-mergeable-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-mergeable-object/-/is-mergeable-object-1.1.1.tgz", - "integrity": "sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==", - "dev": true - }, - "is-npm": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", - "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", - "dev": true - }, - "is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-relative": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz", - "integrity": "sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==", - "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 - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true - }, - "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" - } - }, - "is-yarn-global": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", - "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - } - }, - "istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jed": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", - "integrity": "sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==", - "dev": true - }, - "jose": { - "version": "4.11.2", - "resolved": "https://registry.npmjs.org/jose/-/jose-4.11.2.tgz", - "integrity": "sha512-njj0VL2TsIxCtgzhO+9RRobBvws4oYyCM8TpvoUQwl/MbIM3NFJRR9+e6x0sS5xXaP1t6OCBkaBME98OV9zU5A==", - "dev": true - }, - "js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "jsdom": { - "version": "21.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-21.1.0.tgz", - "integrity": "sha512-m0lzlP7qOtthD918nenK3hdItSd2I+V3W9IrBcB36sqDwG+KnUs66IF5GY7laGWUnlM9vTsD0W1QwSEBYWWcJg==", - "dev": true, - "requires": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - } - }, - "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 - }, - "json-merge-patch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-merge-patch/-/json-merge-patch-1.0.2.tgz", - "integrity": "sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "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==", - "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==", - "dev": true - }, - "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 - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", - "dev": true - }, - "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" - }, - "dependencies": { - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", - "dev": true, - "requires": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - }, - "dependencies": { - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dev": true, - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dev": true, - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "latest-version": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", - "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", - "dev": true, - "requires": { - "package-json": "^8.1.0" - } - }, - "lcid": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-3.1.1.tgz", - "integrity": "sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==", - "dev": true, - "requires": { - "invert-kv": "^3.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", - "dev": true, - "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==", - "dev": true, - "requires": { - "immediate": "~3.0.5" - } - }, - "lighthouse-logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.3.0.tgz", - "integrity": "sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==", - "dev": true, - "requires": { - "debug": "^2.6.9", - "marky": "^1.2.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "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==", - "dev": true - }, - "local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", - "dev": true, - "requires": { - "get-func-name": "^2.0.0" - } - }, - "lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } - }, - "marky": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", - "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", - "dev": true - }, - "mem": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-5.1.1.tgz", - "integrity": "sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^2.1.0", - "p-is-promise": "^2.1.0" - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", - "dev": true - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true - }, - "mitt": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", - "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "mlly": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.1.1.tgz", - "integrity": "sha512-Jnlh4W/aI4GySPo6+DyTN17Q75KKbLTyFK8BrGhjNP4rxuUjbRWhE6gHg3bs33URWAF44FRm7gdQA348i3XxRw==", - "dev": true, - "requires": { - "acorn": "^8.8.2", - "pathe": "^1.1.0", - "pkg-types": "^1.0.1", - "ufo": "^1.1.0" - }, - "dependencies": { - "pathe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", - "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", - "dev": true - } - } - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "dev": true, - "optional": true - }, - "mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", - "dev": true, - "requires": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - } - }, - "mv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", - "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", - "dev": true, - "optional": true, - "requires": { - "mkdirp": "~0.5.1", - "ncp": "~2.0.0", - "rimraf": "~2.4.0" - }, - "dependencies": { - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", - "dev": true, - "optional": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "optional": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "rimraf": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", - "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", - "dev": true, - "optional": true, - "requires": { - "glob": "^6.0.1" - } - } - } - }, - "mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, - "requires": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true, - "optional": true - }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", - "dev": true, - "optional": true - }, - "node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true - }, - "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dev": true, - "requires": { - "whatwg-url": "^5.0.0" - }, - "dependencies": { - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - } - } - }, - "node-forge": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", - "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "dev": true - }, - "node-notifier": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-10.0.1.tgz", - "integrity": "sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==", - "dev": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.5", - "shellwords": "^0.1.1", - "uuid": "^8.3.2", - "which": "^2.0.2" - }, - "dependencies": { - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", - "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" - } - }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "nwsapi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", - "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", - "dev": true - }, - "o-stream": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/o-stream/-/o-stream-0.3.0.tgz", - "integrity": "sha512-gbzl6qCJZ609x/M2t25HqCYQagFzWYCtQ84jcuObGr+V8D1Am4EVubkF4J+XFs6ukfiv96vNeiBb8FrbbMZYiQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "on-exit-leak-free": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", - "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "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" - } - }, - "os-locale": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-5.0.0.tgz", - "integrity": "sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==", - "dev": true, - "requires": { - "execa": "^4.0.0", - "lcid": "^3.0.0", - "mem": "^5.0.0" - } - }, - "os-shim": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", - "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==", - "dev": true - }, - "p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "dev": true - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", - "dev": true - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", - "dev": true - }, - "p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "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 - }, - "package-json": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.0.tgz", - "integrity": "sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==", - "dev": true, - "requires": { - "got": "^12.1.0", - "registry-auth-token": "^5.0.1", - "registry-url": "^6.0.0", - "semver": "^7.3.7" - }, - "dependencies": { - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "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" - } - }, - "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==", - "dev": true, - "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" - } - }, - "parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "requires": { - "entities": "^4.4.0" - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dev": true, - "requires": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - } - }, - "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 - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "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==", - "dev": true - }, - "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 - }, - "pathe": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-0.2.0.tgz", - "integrity": "sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==", - "dev": true - }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "pino": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.8.0.tgz", - "integrity": "sha512-cF8iGYeu2ODg2gIwgAHcPrtR63ILJz3f7gkogaHC/TXVVXxZgInmNYiIpDYEwgEkxZti2Se6P2W2DxlBIZe6eQ==", - "dev": true, - "requires": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "v1.0.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^2.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.1.0", - "thread-stream": "^2.0.0" - } - }, - "pino-abstract-transport": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", - "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", - "dev": true, - "requires": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "readable-stream": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", - "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", - "dev": true, - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" - } - } - } - }, - "pino-std-serializers": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz", - "integrity": "sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==", - "dev": true - }, - "pkg-types": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.2.tgz", - "integrity": "sha512-hM58GKXOcj8WTqUXnsQyJYXdeAPbythQgEF3nTcEo+nkD49chjQ9IKm/QJy9xf6JakXptz86h7ecP2024rrLaQ==", - "dev": true, - "requires": { - "jsonc-parser": "^3.2.0", - "mlly": "^1.1.1", - "pathe": "^1.1.0" - }, - "dependencies": { - "pathe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", - "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", - "dev": true - } - } - }, - "plugin-error": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-1.0.1.tgz", - "integrity": "sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA==", - "dev": true, - "requires": { - "ansi-colors": "^1.0.1", - "arr-diff": "^4.0.0", - "arr-union": "^3.1.0", - "extend-shallow": "^3.0.2" - } - }, - "postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true - }, - "prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", - "dev": true - }, - "pretty-format": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", - "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true - } - } - }, - "pretty-quick": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/pretty-quick/-/pretty-quick-3.1.3.tgz", - "integrity": "sha512-kOCi2FJabvuh1as9enxYmrnBC6tVMoVOenMaBqRfsvBHB0cbpYHjdQEpSglpASDFEXVwplpcGR4CLEaisYAFcA==", - "dev": true, - "requires": { - "chalk": "^3.0.0", - "execa": "^4.0.0", - "find-up": "^4.1.0", - "ignore": "^5.1.4", - "mri": "^1.1.5", - "multimatch": "^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" - } - } - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "process-warning": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.1.0.tgz", - "integrity": "sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "promise-toolbox": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/promise-toolbox/-/promise-toolbox-0.21.0.tgz", - "integrity": "sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg==", - "dev": true, - "requires": { - "make-error": "^1.3.2" - } - }, - "proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", - "dev": true - }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "pupa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", - "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", - "dev": true, - "requires": { - "escape-goat": "^4.0.0" - } - }, - "puppeteer": { - "version": "19.7.2", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-19.7.2.tgz", - "integrity": "sha512-4Lm7Qpe/LU95Svirei/jDLDvR5oMrl9BPGd7HMY5+Q28n+BhvKuW97gKkR+1LlI86bO8J3g8rG/Ll5kv9J1nlQ==", - "dev": true, - "requires": { - "cosmiconfig": "8.0.0", - "https-proxy-agent": "5.0.1", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "puppeteer-core": "19.7.2" - } - }, - "puppeteer-core": { - "version": "19.7.2", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-19.7.2.tgz", - "integrity": "sha512-PvI+fXqgP0uGJxkyZcX51bnzjFA73MODZOAv0fSD35yR7tvbqwtMV3/Y+hxQ0AMMwzxkEebP6c7po/muqxJvmQ==", - "dev": true, - "requires": { - "chromium-bidi": "0.4.4", - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.1094867", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.11.0" - }, - "dependencies": { - "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "requires": {} - } - } - }, - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - "dev": true, - "requires": { - "inherits": "~2.0.3" - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "quick-format-unescaped": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", - "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", - "dev": true - }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true - } - } - }, - "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==", - "dev": true - }, - "readable-stream": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.1.tgz", - "integrity": "sha512-+rQmrWMYGA90yenhTYsLWAsLsqVC8osOw6PKE1HDYiO0gdPeKe/xDHNzIAIn4C91YQ6oenEhfYqqc1883qHbjQ==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "real-require": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", - "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", - "dev": true - }, - "regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "registry-auth-token": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.1.tgz", - "integrity": "sha512-UfxVOj8seK1yaIOiieV4FIP01vfBDLsY0H9sQzi9EbbUdJiuuBjJgLa1DpImXMNPnVkBD4eVxTEXcrZA6kfpJA==", - "dev": true, - "requires": { - "@pnpm/npm-conf": "^1.0.4" - } - }, - "registry-url": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", - "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", - "dev": true, - "requires": { - "rc": "1.2.8" - } - }, - "relaxed-json": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/relaxed-json/-/relaxed-json-1.0.3.tgz", - "integrity": "sha512-b7wGPo7o2KE/g7SqkJDDbav6zmrEeP4TK2VpITU72J/M949TLe/23y/ZHJo+pskcGM52xIfFoT9hydwmgr1AEg==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "commander": "^2.6.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==", - "dev": true, - "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==", - "dev": true, - "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==", - "dev": true, - "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": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true - }, - "replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "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" - }, - "dependencies": { - "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==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "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==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "dev": true, - "requires": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "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 - }, - "responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", - "dev": true, - "requires": { - "lowercase-keys": "^3.0.0" - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "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" - } - }, - "rollup": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.2.tgz", - "integrity": "sha512-qMNZdlQPCkWodrAZ3qnJtvCAl4vpQ8q77uEujVCCbC/6CLB7Lcmvjq7HyiOSnf4fxTT9XgsE36oLHJBH49xjqA==", - "dev": true, - "requires": { - "fsevents": "~2.3.2" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "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==", - "dev": true - }, - "safe-json-stringify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", - "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", - "dev": true, - "optional": true - }, - "safe-stable-stringify": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.2.tgz", - "integrity": "sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "saxes": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", - "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "semver-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", - "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", - "dev": true, - "requires": { - "semver": "^7.3.5" - }, - "dependencies": { - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "shell-quote": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz", - "integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==", - "dev": true - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true - }, - "siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true - }, - "sign-addon": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/sign-addon/-/sign-addon-5.2.0.tgz", - "integrity": "sha512-t5CZ4MSKAd3uJBUfjgWfSyKYC1pQS6BMUbgI5OytzMkTOQ9NkdkFE8bB0AJLQIGqDrNS2b1+/ghAP56iuCUE+g==", - "dev": true, - "requires": { - "common-tags": "1.8.2", - "core-js": "3.27.1", - "deepcopy": "2.1.0", - "es6-error": "4.1.1", - "es6-promisify": "7.0.0", - "jsonwebtoken": "9.0.0", - "mz": "2.7.0", - "request": "2.88.2", - "source-map-support": "0.5.21", - "stream-to-promise": "3.0.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "sleep": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sleep/-/sleep-6.1.0.tgz", - "integrity": "sha512-Z1x4JjJxsru75Tqn8F4tnOFeEu3HjtITTsumYUiuz54sGKdISgLCek9AUlXlVVrkhltRFhNUsJDJE76SFHTDIQ==", - "dev": true, - "optional": true, - "requires": { - "nan": "^2.13.2" - } - }, - "slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - } - } - }, - "sonic-boom": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.1.tgz", - "integrity": "sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==", - "dev": true, - "requires": { - "atomic-sleep": "^1.0.0" - } - }, - "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 - }, - "source-map-js": { - "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": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "spawn-sync": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", - "integrity": "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==", - "dev": true, - "requires": { - "concat-stream": "^1.4.7", - "os-shim": "^0.1.2" - } - }, - "split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dev": true, - "requires": { - "through": "2" - } - }, - "split2": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", - "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", - "dev": true - }, - "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "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" - } - }, - "stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true - }, - "std-env": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.2.tgz", - "integrity": "sha512-uUZI65yrV2Qva5gqE0+A7uVAvO40iPo6jGhs7s8keRfHCmtg+uB2X6EiLGCI9IgL1J17xGhvoOqSz79lzICPTA==", - "dev": true - }, - "stream-to-array": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", - "integrity": "sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==", - "dev": true, - "requires": { - "any-promise": "^1.1.0" - } - }, - "stream-to-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-to-promise/-/stream-to-promise-3.0.0.tgz", - "integrity": "sha512-h+7wLeFiYegOdgTfTxjRsrT7/Op7grnKEIHWgaO1RTHwcwk7xRreMr3S8XpDfDMesSxzgM2V4CxNCFAGo6ssnA==", - "dev": true, - "requires": { - "any-promise": "~1.3.0", - "end-of-stream": "~1.4.1", - "stream-to-array": "~2.3.0" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^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" - } - }, - "strip-bom": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-5.0.0.tgz", - "integrity": "sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==", - "dev": true - }, - "strip-bom-buf": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-buf/-/strip-bom-buf-2.0.0.tgz", - "integrity": "sha512-gLFNHucd6gzb8jMsl5QmZ3QgnUJmp7qn4uUSHNwEXumAp7YizoGYw19ZUVfuq4aBOQUtyn2k8X/CwzWB73W2lQ==", - "dev": true, - "requires": { - "is-utf8": "^0.2.1" - } - }, - "strip-bom-stream": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-4.0.0.tgz", - "integrity": "sha512-0ApK3iAkHv6WbgLICw/J4nhwHeDZsBxIIsOD+gHgZICL6SeJ0S9f/WZqemka9cjkTyMN5geId6e8U5WGFAn3cQ==", - "dev": true, - "requires": { - "first-chunk-stream": "^3.0.0", - "strip-bom-buf": "^2.0.0" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "strip-json-comments": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.0.tgz", - "integrity": "sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==", - "dev": true - }, - "strip-literal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.0.1.tgz", - "integrity": "sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==", - "dev": true, - "requires": { - "acorn": "^8.8.2" - } - }, - "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" - } - }, - "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 - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "terser": { - "version": "5.16.5", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.16.5.tgz", - "integrity": "sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, - "requires": { - "any-promise": "^1.0.0" - } - }, - "thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, - "requires": { - "thenify": ">= 3.1.0 < 4" - } - }, - "thread-stream": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.3.0.tgz", - "integrity": "sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==", - "dev": true, - "requires": { - "real-require": "^0.2.0" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "tinybench": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.3.1.tgz", - "integrity": "sha512-hGYWYBMPr7p4g5IarQE7XhlyWveh1EKhy4wUBS1LrHXCKYgvz+4/jCqgmJqZxxldesn05vccrtME2RLLZNW7iA==", - "dev": true - }, - "tinypool": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.3.1.tgz", - "integrity": "sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==", - "dev": true - }, - "tinyspy": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.1.1.tgz", - "integrity": "sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==", - "dev": true - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "tosource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tosource/-/tosource-1.0.0.tgz", - "integrity": "sha512-N6g8eQ1eerw6Y1pBhdgkubWIiPFwXa2POSUrlL8jth5CyyEWNWzoGKRkO3CaO7Jx27hlJP54muB3btIAbx4MPg==", - "dev": true - }, - "tough-cookie": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.2.tgz", - "integrity": "sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - } - }, - "tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "ts-essentials": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.3.0.tgz", - "integrity": "sha512-XeiCboEyBG8UqXZtXl59bWEi4ZgOqRsogFDI6WDGIF1LmzbYiAkIwjkXN6zZWWl4re/lsOqMlYfe8KA0XiiEPw==", - "dev": true, - "requires": {} - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true - }, - "ufo": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.1.0.tgz", - "integrity": "sha512-LQc2s/ZDMaCN3QLpa+uzHUOQ7SdV0qgv3VBXOolQGXTaaZpIur6PwUclF5nN2hNkiTRcUugXd1zFOW3FLJ135Q==", - "dev": true - }, - "uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "dev": true - }, - "unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", - "dev": true, - "requires": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, - "unique-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "dev": true, - "requires": { - "crypto-random-string": "^4.0.0" - } - }, - "universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true - }, - "upath": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", - "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", - "dev": true - }, - "update-notifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", - "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", - "dev": true, - "requires": { - "boxen": "^7.0.0", - "chalk": "^5.0.1", - "configstore": "^6.0.0", - "has-yarn": "^3.0.0", - "import-lazy": "^4.0.0", - "is-ci": "^3.0.1", - "is-installed-globally": "^0.4.0", - "is-npm": "^6.0.0", - "is-yarn-global": "^0.4.0", - "latest-version": "^7.0.0", - "pupa": "^3.1.0", - "semver": "^7.3.7", - "semver-diff": "^4.0.0", - "xdg-basedir": "^5.1.0" - }, - "dependencies": { - "chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", - "dev": true - }, - "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "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-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" - } - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - }, - "vinyl-sourcemaps-apply": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", - "integrity": "sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw==", - "dev": true, - "requires": { - "source-map": "^0.5.1" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true - } - } - }, - "vite": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz", - "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==", - "dev": true, - "requires": { - "esbuild": "^0.16.14", - "fsevents": "~2.3.2", - "postcss": "^8.4.21", - "resolve": "^1.22.1", - "rollup": "^3.10.0" - } - }, - "vite-node": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.27.3.tgz", - "integrity": "sha512-eyJYOO64o5HIp8poc4bJX+ZNBwMZeI3f6/JdiUmJgW02Mt7LnoCtDMRVmLaY9S05SIsjGe339ZK4uo2wQ+bF9g==", - "dev": true, - "requires": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "mlly": "^1.1.0", - "pathe": "^0.2.0", - "picocolors": "^1.0.0", - "source-map": "^0.6.1", - "source-map-support": "^0.5.21", - "vite": "^3.0.0 || ^4.0.0" - } - }, - "vitest": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.27.3.tgz", - "integrity": "sha512-Ld3UVgRVhJUtqvQ3dW89GxiApFAgBsWJZBCWzK+gA3w2yG68csXlGZZ4WDJURf+8ecNfgrScga6xY+8YSOpiMg==", - "dev": true, - "requires": { - "@types/chai": "^4.3.4", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "acorn": "^8.8.1", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.7", - "debug": "^4.3.4", - "local-pkg": "^0.4.2", - "picocolors": "^1.0.0", - "source-map": "^0.6.1", - "std-env": "^3.3.1", - "strip-literal": "^1.0.0", - "tinybench": "^2.3.1", - "tinypool": "^0.3.0", - "tinyspy": "^1.0.2", - "vite": "^3.0.0 || ^4.0.0", - "vite-node": "0.27.3", - "why-is-node-running": "^2.2.2" - } - }, - "vitest-mock-extended": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/vitest-mock-extended/-/vitest-mock-extended-1.0.9.tgz", - "integrity": "sha512-avWOwla4xsubFUbL1O2Zvqn8xUucQWai05ryywfhjUIthkjJKk01g5/s4SrjTHZXGZ2/h6NfF51FJ3voix1OAw==", - "dev": true, - "requires": { - "ts-essentials": "^9.3.0" - } - }, - "w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "requires": { - "xml-name-validator": "^4.0.0" - } - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "web-ext": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/web-ext/-/web-ext-7.5.0.tgz", - "integrity": "sha512-Ymflj7Aq/LOD+zGoyvwRbAPx/yMJeig2OEb/rRXYrWl6NWRI5E0c2iWGqlBcnL45iKrOzz70H438dVeJk0w2ug==", - "dev": true, - "requires": { - "@babel/runtime": "7.20.13", - "@devicefarmer/adbkit": "3.2.3", - "addons-linter": "5.27.0", - "bunyan": "1.8.15", - "camelcase": "7.0.1", - "chrome-launcher": "0.15.1", - "debounce": "1.2.1", - "decamelize": "6.0.0", - "es6-error": "4.1.1", - "firefox-profile": "4.2.2", - "fs-extra": "11.1.0", - "fx-runner": "1.3.0", - "import-fresh": "3.3.0", - "jose": "4.11.2", - "mkdirp": "1.0.4", - "multimatch": "6.0.0", - "mz": "2.7.0", - "node-fetch": "3.3.0", - "node-notifier": "10.0.1", - "open": "8.4.0", - "parse-json": "6.0.2", - "promise-toolbox": "0.21.0", - "sign-addon": "5.2.0", - "source-map-support": "0.5.21", - "strip-bom": "5.0.0", - "strip-json-comments": "5.0.0", - "tmp": "0.2.1", - "update-notifier": "6.0.2", - "watchpack": "2.4.0", - "ws": "8.12.0", - "yargs": "17.6.2", - "zip-dir": "2.0.0" - }, - "dependencies": { - "array-differ": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-4.0.0.tgz", - "integrity": "sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==", - "dev": true - }, - "array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "dev": true - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "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 - }, - "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 - }, - "lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", - "dev": true - }, - "multimatch": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-6.0.0.tgz", - "integrity": "sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ==", - "dev": true, - "requires": { - "@types/minimatch": "^3.0.5", - "array-differ": "^4.0.0", - "array-union": "^3.0.1", - "minimatch": "^3.0.4" - } - }, - "node-fetch": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.0.tgz", - "integrity": "sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==", - "dev": true, - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, - "parse-json": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-6.0.2.tgz", - "integrity": "sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^2.3.1", - "lines-and-columns": "^2.0.2" - } - }, - "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" - } - }, - "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" - } - }, - "ws": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz", - "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==", - "dev": true, - "requires": {} - }, - "yargs": { - "version": "17.6.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", - "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "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.1.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } - }, - "web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "dev": true - }, - "webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true - }, - "whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "requires": { - "iconv-lite": "0.6.3" - } - }, - "whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true - }, - "whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "requires": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - } - }, - "when": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/when/-/when-3.7.7.tgz", - "integrity": "sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==", - "dev": true - }, - "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" - } - }, - "why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", - "dev": true, - "requires": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - } - }, - "widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "dev": true, - "requires": { - "string-width": "^5.0.1" - } - }, - "winreg": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/winreg/-/winreg-0.0.12.tgz", - "integrity": "sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ==", - "dev": true - }, - "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==", - "dev": true - }, - "wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true - }, - "ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true - }, - "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", - "dev": true, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", - "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", - "dev": true, - "requires": {} - }, - "xdg-basedir": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", - "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", - "dev": true - }, - "xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", - "dev": true - }, - "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dev": true, - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - } - }, - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "xvfb": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/xvfb/-/xvfb-0.4.0.tgz", - "integrity": "sha512-g55AbjcBL4Bztfn7kiUrR0ne8mMUsFODDJ+HFGf5OuHJqKKccpExX2Qgn7VF2eImw1eoh6+riXHser1J4agrFA==", - "dev": true, - "requires": { - "sleep": "6.1.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 - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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": { - "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 - }, - "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" - } - } - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true - }, - "zip-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/zip-dir/-/zip-dir-2.0.0.tgz", - "integrity": "sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==", - "dev": true, - "requires": { - "async": "^3.2.0", - "jszip": "^3.2.2" - } - } - } -} diff --git a/package.json b/package.json index a3c78a1..5fa3c22 100644 --- a/package.json +++ b/package.json @@ -1,38 +1,22 @@ { "name": "web-activity-time-tracker", "private": true, + "version": "1.0.0", + "type": "module", "scripts": { - "dev": "web-ext run -s src --target=chromium", - "compile": "tsc --noEmit", - "build": "powershell scripts/build.ps1", - "zip": "powershell scripts/zip.ps1", - "lint": "echo 'TODO'" + "dev": "vite build --mode development --watch", + "build": "vue-tsc && vite build" + }, + "dependencies": { + "vue": "^3.2.47" }, "devDependencies": { - "@types/node": "18", - "@vitest/coverage-c8": "^0.28.2", - "chance": "^1.1.8", - "husky": "^8.0.3", - "jsdom": "^21.1.0", - "prettier": "^2.8.2", - "pretty-quick": "^3.1.3", - "puppeteer": "^19.5.0", + "@types/webextension-polyfill": "^0.10.0", + "@vitejs/plugin-vue": "^4.0.0", "typescript": "^4.9.5", - "uglify-js": "3.17.4", - "vitest": "^0.27.0", - "vitest-mock-extended": "^1.0.8", - "web-ext": "^7.4.0", - "xvfb": "^0.4.0" - }, - "description": "Web Activity Time Tracker keeps track of how much time you spend on the web and presents the stats in a useful and intuitive way. \r You can set a daily visit limit for sites and block it after the expiration of the limit.", - "repository": { - "type": "git", - "url": "git+https://github.com/Stigmatoz/web-activity-time-tracker.git" - }, - "author": "Alex Khrisanfov", - "license": "MIT", - "bugs": { - "url": "https://github.com/Stigmatoz/web-activity-time-tracker/issues" - }, - "homepage": "https://github.com/Stigmatoz/web-activity-time-tracker#readme" + "vite": "^4.1.4", + "vite-plugin-web-extension": "^3.0.0", + "vue-tsc": "^1.2.0", + "webextension-polyfill": "^0.10.0" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..937db81 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3677 @@ +lockfileVersion: 5.4 + +specifiers: + '@types/webextension-polyfill': ^0.10.0 + '@vitejs/plugin-vue': ^4.0.0 + typescript: ^4.9.5 + vite: ^4.1.4 + vite-plugin-web-extension: ^3.0.0 + vue: ^3.2.47 + vue-tsc: ^1.2.0 + webextension-polyfill: ^0.10.0 + +dependencies: + vue: 3.2.47 + +devDependencies: + '@types/webextension-polyfill': 0.10.0 + '@vitejs/plugin-vue': 4.0.0_vite@4.1.4+vue@3.2.47 + typescript: 4.9.5 + vite: 4.1.4 + vite-plugin-web-extension: 3.0.0_vite@4.1.4 + vue-tsc: 1.2.0_typescript@4.9.5 + webextension-polyfill: 0.10.0 + +packages: + + /@babel/code-frame/7.18.6: + resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + + /@babel/helper-string-parser/7.19.4: + resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier/7.19.1: + resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + engines: {node: '>=6.9.0'} + + /@babel/highlight/7.18.6: + resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.19.1 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser/7.21.3: + resolution: {integrity: sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.3 + + /@babel/runtime/7.20.13: + resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + dev: true + + /@babel/types/7.21.3: + resolution: {integrity: sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + + /@devicefarmer/adbkit-logcat/2.1.2: + resolution: {integrity: sha512-G4grpEa5s9s9wCRs8YB9LjFSnz0Os3g3RYIwZSxH3JFfV3aejL5xlu4hHMH4JY+d4oCCwImcEZJcFPY9BEP21w==} + engines: {node: '>= 4'} + dev: true + + /@devicefarmer/adbkit-monkey/1.2.1: + resolution: {integrity: sha512-ZzZY/b66W2Jd6NHbAhLyDWOEIBWC11VizGFk7Wx7M61JZRz7HR9Cq5P+65RKWUU7u6wgsE8Lmh9nE4Mz+U2eTg==} + engines: {node: '>= 0.10.4'} + dev: true + + /@devicefarmer/adbkit/3.2.3: + resolution: {integrity: sha512-wK9rVrabs4QU0oK8Jnwi+HRBEm+s1x/o63kgthUe0y7K1bfcYmgLuQf41/adsj/5enddlSxzkJavl2EwOu+r1g==} + engines: {node: '>= 0.10.4'} + hasBin: true + dependencies: + '@devicefarmer/adbkit-logcat': 2.1.2 + '@devicefarmer/adbkit-monkey': 1.2.1 + bluebird: 3.7.2 + commander: 9.5.0 + debug: 4.3.4 + node-forge: 1.3.1 + split: 1.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@esbuild/android-arm/0.16.17: + resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64/0.16.17: + resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64/0.16.17: + resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64/0.16.17: + resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64/0.16.17: + resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64/0.16.17: + resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64/0.16.17: + resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm/0.16.17: + resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64/0.16.17: + resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32/0.16.17: + resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.16.17: + resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el/0.16.17: + resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64/0.16.17: + resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64/0.16.17: + resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x/0.16.17: + resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64/0.16.17: + resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64/0.16.17: + resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64/0.16.17: + resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64/0.16.17: + resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64/0.16.17: + resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32/0.16.17: + resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64/0.16.17: + resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint/eslintrc/1.4.1: + resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.4.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/config-array/0.11.8: + resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer/1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema/1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@mdn/browser-compat-data/5.2.29: + resolution: {integrity: sha512-bEBrkTWbDAs/PB4IdRg4CtU750oBRytXHK/wC2oIDkgKZqnt76nACSooQQuHF11mK5k43f/IgFUMO5t5quRPVA==} + dev: true + + /@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + dev: true + + /@pnpm/config.env-replace/1.0.0: + resolution: {integrity: sha512-ZVPVDi1E8oeXlYqkGRtX0CkzLTwE2zt62bjWaWKaAvI8NZqHzlMvGeSNDpW+JB3+aKanYb4UETJOF1/CxGPemA==} + engines: {node: '>=12.22.0'} + dev: true + + /@pnpm/network.ca-file/1.0.2: + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + dependencies: + graceful-fs: 4.2.10 + dev: true + + /@pnpm/npm-conf/2.1.0: + resolution: {integrity: sha512-Oe6ntvgsMTE3hDIqy6sajqHF+MnzJrOF06qC2QSiUEybLL7cp6tjoKUa32gpd9+KPVl4QyMs3E3nsXrx/Vdnlw==} + engines: {node: '>=12'} + dependencies: + '@pnpm/config.env-replace': 1.0.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + dev: true + + /@sindresorhus/is/5.3.0: + resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==} + engines: {node: '>=14.16'} + dev: true + + /@szmarczak/http-timer/5.0.1: + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + dependencies: + defer-to-connect: 2.0.1 + dev: true + + /@types/http-cache-semantics/4.0.1: + resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} + dev: true + + /@types/minimatch/3.0.5: + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + dev: true + + /@types/node/18.15.3: + resolution: {integrity: sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==} + dev: true + + /@types/webextension-polyfill/0.10.0: + resolution: {integrity: sha512-If4EcaHzYTqcbNMp/FdReVdRmLL/Te42ivnJII551bYjhX19bWem5m14FERCqdJA732OloGuxCRvLBvcMGsn4A==} + dev: true + + /@types/yauzl/2.10.0: + resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} + dependencies: + '@types/node': 18.15.3 + dev: true + + /@vitejs/plugin-vue/4.0.0_vite@4.1.4+vue@3.2.47: + resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.2.25 + dependencies: + vite: 4.1.4 + vue: 3.2.47 + dev: true + + /@volar/language-core/1.3.0-alpha.0: + resolution: {integrity: sha512-W3uMzecHPcbwddPu4SJpUcPakRBK/y/BP+U0U6NiPpUX1tONLC4yCawt+QBJqtgJ+sfD6ztf5PyvPL3hQRqfOA==} + dependencies: + '@volar/source-map': 1.3.0-alpha.0 + dev: true + + /@volar/source-map/1.3.0-alpha.0: + resolution: {integrity: sha512-jSdizxWFvDTvkPYZnO6ew3sBZUnS0abKCbuopkc0JrIlFbznWC/fPH3iPFIMS8/IIkRxq1Jh9VVG60SmtsdaMQ==} + dependencies: + muggle-string: 0.2.2 + dev: true + + /@volar/typescript/1.3.0-alpha.0: + resolution: {integrity: sha512-5UItyW2cdH2mBLu4RrECRNJRgtvvzKrSCn2y3v/D61QwIDkGx4aeil6x8RFuUL5TFtV6QvVHXnsOHxNgd+sCow==} + dependencies: + '@volar/language-core': 1.3.0-alpha.0 + dev: true + + /@volar/vue-language-core/1.2.0: + resolution: {integrity: sha512-w7yEiaITh2WzKe6u8ZdeLKCUz43wdmY/OqAmsB/PGDvvhTcVhCJ6f0W/RprZL1IhqH8wALoWiwEh/Wer7ZviMQ==} + dependencies: + '@volar/language-core': 1.3.0-alpha.0 + '@volar/source-map': 1.3.0-alpha.0 + '@vue/compiler-dom': 3.2.47 + '@vue/compiler-sfc': 3.2.47 + '@vue/reactivity': 3.2.47 + '@vue/shared': 3.2.47 + minimatch: 6.2.0 + muggle-string: 0.2.2 + vue-template-compiler: 2.7.14 + dev: true + + /@volar/vue-typescript/1.2.0: + resolution: {integrity: sha512-zjmRi9y3J1EkG+pfuHp8IbHmibihrKK485cfzsHjiuvJMGrpkWvlO5WVEk8oslMxxeGC5XwBFE9AOlvh378EPA==} + dependencies: + '@volar/typescript': 1.3.0-alpha.0 + '@volar/vue-language-core': 1.2.0 + dev: true + + /@vue/compiler-core/3.2.47: + resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} + dependencies: + '@babel/parser': 7.21.3 + '@vue/shared': 3.2.47 + estree-walker: 2.0.2 + source-map: 0.6.1 + + /@vue/compiler-dom/3.2.47: + resolution: {integrity: sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==} + dependencies: + '@vue/compiler-core': 3.2.47 + '@vue/shared': 3.2.47 + + /@vue/compiler-sfc/3.2.47: + resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} + dependencies: + '@babel/parser': 7.21.3 + '@vue/compiler-core': 3.2.47 + '@vue/compiler-dom': 3.2.47 + '@vue/compiler-ssr': 3.2.47 + '@vue/reactivity-transform': 3.2.47 + '@vue/shared': 3.2.47 + estree-walker: 2.0.2 + magic-string: 0.25.9 + postcss: 8.4.21 + source-map: 0.6.1 + + /@vue/compiler-ssr/3.2.47: + resolution: {integrity: sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==} + dependencies: + '@vue/compiler-dom': 3.2.47 + '@vue/shared': 3.2.47 + + /@vue/reactivity-transform/3.2.47: + resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} + dependencies: + '@babel/parser': 7.21.3 + '@vue/compiler-core': 3.2.47 + '@vue/shared': 3.2.47 + estree-walker: 2.0.2 + magic-string: 0.25.9 + + /@vue/reactivity/3.2.47: + resolution: {integrity: sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==} + dependencies: + '@vue/shared': 3.2.47 + + /@vue/runtime-core/3.2.47: + resolution: {integrity: sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==} + dependencies: + '@vue/reactivity': 3.2.47 + '@vue/shared': 3.2.47 + + /@vue/runtime-dom/3.2.47: + resolution: {integrity: sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==} + dependencies: + '@vue/runtime-core': 3.2.47 + '@vue/shared': 3.2.47 + csstype: 2.6.21 + + /@vue/server-renderer/3.2.47_vue@3.2.47: + resolution: {integrity: sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==} + peerDependencies: + vue: 3.2.47 + dependencies: + '@vue/compiler-ssr': 3.2.47 + '@vue/shared': 3.2.47 + vue: 3.2.47 + + /@vue/shared/3.2.47: + resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} + + /abort-controller/3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + dev: true + + /acorn-jsx/5.3.2_acorn@8.8.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.2 + dev: true + + /acorn/8.8.2: + resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /addons-linter/5.27.0_node-fetch@3.3.0: + resolution: {integrity: sha512-gDgl0FcmhZ5cs3St0qAaO9J1BoektwnY+p4dVgcvPu8WaBqH9MG2fk0gL/evCpoHSXeSw15GA87n8Y7zy7raVQ==} + engines: {node: '>=12.21.0'} + hasBin: true + dependencies: + '@mdn/browser-compat-data': 5.2.29 + addons-moz-compare: 1.3.0 + addons-scanner-utils: 8.3.0_node-fetch@3.3.0 + ajv: 8.12.0 + chalk: 4.1.2 + cheerio: 1.0.0-rc.12 + columnify: 1.6.0 + common-tags: 1.8.2 + deepmerge: 4.2.2 + eslint: 8.32.0 + eslint-plugin-no-unsanitized: 4.0.2_eslint@8.32.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.1 + esprima: 4.0.1 + fast-json-patch: 3.1.1 + fluent-syntax: 0.14.0 + glob: 8.1.0 + image-size: 1.0.2 + is-mergeable-object: 1.1.1 + jed: 1.1.1 + json-merge-patch: 1.0.2 + os-locale: 5.0.0 + pino: 8.8.0 + postcss: 8.4.21 + relaxed-json: 1.0.3 + semver: 7.3.8 + sha.js: 2.4.11 + source-map-support: 0.5.21 + tosource: 1.0.0 + upath: 2.0.1 + yargs: 17.6.2 + yauzl: 2.10.0 + transitivePeerDependencies: + - body-parser + - express + - node-fetch + - safe-compare + - supports-color + dev: true + + /addons-moz-compare/1.3.0: + resolution: {integrity: sha512-/rXpQeaY0nOKhNx00pmZXdk5Mu+KhVlL3/pSBuAYwrxRrNiTvI/9xfQI8Lmm7DMMl+PDhtfAHY/0ibTpdeoQQQ==} + dev: true + + /addons-scanner-utils/8.3.0_node-fetch@3.3.0: + resolution: {integrity: sha512-XP+2kxhZxlxiVFXVJ7lyJEuxpUS8ryrolUDqnUEnvOZ/3p8qt9hWCYSliXhI2W+Swf/hZ3F4CLAG6tBnqdxDYA==} + peerDependencies: + body-parser: 1.20.1 + express: 4.18.2 + node-fetch: 2.6.7 + safe-compare: 1.1.4 + peerDependenciesMeta: + body-parser: + optional: true + express: + optional: true + node-fetch: + optional: true + safe-compare: + optional: true + dependencies: + '@types/yauzl': 2.10.0 + common-tags: 1.8.2 + first-chunk-stream: 3.0.0 + node-fetch: 3.3.0 + strip-bom-stream: 4.0.0 + upath: 2.0.1 + yauzl: 2.10.0 + dev: true + + /adm-zip/0.5.10: + resolution: {integrity: sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==} + engines: {node: '>=6.0'} + dev: true + + /ajv/6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv/8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-align/3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + dependencies: + string-width: 4.2.3 + dev: true + + /ansi-regex/5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex/6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: true + + /ansi-styles/3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles/4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles/6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /any-promise/1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /argparse/2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-differ/4.0.0: + resolution: {integrity: sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /array-union/3.0.1: + resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==} + engines: {node: '>=12'} + dev: true + + /asn1/0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + dependencies: + safer-buffer: 2.1.2 + dev: true + + /assert-plus/1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + dev: true + + /async-lock/1.4.0: + resolution: {integrity: sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==} + dev: true + + /async/3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + dev: true + + /asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true + + /at-least-node/1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + dev: true + + /atomic-sleep/1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + dev: true + + /aws-sign2/0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + dev: true + + /aws4/1.12.0: + resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + dev: true + + /balanced-match/1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /base64-js/1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: true + + /bcrypt-pbkdf/1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + dependencies: + tweetnacl: 0.14.5 + dev: true + + /bluebird/3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + dev: true + + /boolbase/1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: true + + /boxen/7.0.2: + resolution: {integrity: sha512-1Z4UJabXUP1/R9rLpoU3O2lEMnG3pPLAs/ZD2lF3t2q7qD5lM8rqbtnvtvm4N0wEyNlE+9yZVTVAGmd1V5jabg==} + engines: {node: '>=14.16'} + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.2.0 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + dev: true + + /brace-expansion/1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion/2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /buffer-crc32/0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /buffer-equal-constant-time/1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + dev: true + + /buffer-from/1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true + + /buffer/6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + dev: true + + /bunyan/1.8.15: + resolution: {integrity: sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==} + engines: {'0': node >=0.10.0} + hasBin: true + optionalDependencies: + dtrace-provider: 0.8.8 + moment: 2.29.4 + mv: 2.1.1 + safe-json-stringify: 1.2.0 + dev: true + + /cacheable-lookup/7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + dev: true + + /cacheable-request/10.2.8: + resolution: {integrity: sha512-IDVO5MJ4LItE6HKFQTqT2ocAQsisOoCTUDu1ddCmnhyiwFQjXNPp4081Xj23N4tO+AFEFNzGuNEf/c8Gwwt15A==} + engines: {node: '>=14.16'} + dependencies: + '@types/http-cache-semantics': 4.0.1 + get-stream: 6.0.1 + http-cache-semantics: 4.1.1 + keyv: 4.5.2 + mimic-response: 4.0.0 + normalize-url: 8.0.0 + responselike: 3.0.0 + dev: true + + /callsites/3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase/7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + dev: true + + /caseless/0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + dev: true + + /chalk/2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk/4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chalk/5.2.0: + resolution: {integrity: sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + dev: true + + /charenc/0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + dev: true + + /cheerio-select/2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.0.1 + dev: true + + /cheerio/1.0.0-rc.12: + resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + engines: {node: '>= 6'} + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.0.1 + htmlparser2: 8.0.1 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + dev: true + + /chrome-launcher/0.15.1: + resolution: {integrity: sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==} + engines: {node: '>=12.13.0'} + hasBin: true + dependencies: + '@types/node': 18.15.3 + escape-string-regexp: 4.0.0 + is-wsl: 2.2.0 + lighthouse-logger: 1.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /ci-info/3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + dev: true + + /cli-boxes/3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + dev: true + + /cliui/8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clone/1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + dev: true + + /color-convert/1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert/2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + dev: true + + /color-name/1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name/1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /columnify/1.6.0: + resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} + engines: {node: '>=8.0.0'} + dependencies: + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + dev: true + + /combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander/2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + dev: true + + /commander/2.9.0: + resolution: {integrity: sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==} + engines: {node: '>= 0.6.x'} + dependencies: + graceful-readlink: 1.0.1 + dev: true + + /commander/9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + dev: true + + /common-tags/1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + dev: true + + /concat-map/0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /concat-stream/1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + dev: true + + /config-chain/1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: true + + /configstore/6.0.0: + resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} + engines: {node: '>=12'} + dependencies: + dot-prop: 6.0.1 + graceful-fs: 4.2.10 + unique-string: 3.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 5.1.0 + dev: true + + /core-js/3.27.1: + resolution: {integrity: sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==} + requiresBuild: true + dev: true + + /core-util-is/1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + dev: true + + /core-util-is/1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + dev: true + + /cross-spawn/7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /crypt/0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + dev: true + + /crypto-random-string/4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + dependencies: + type-fest: 1.4.0 + dev: true + + /css-select/5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.0.1 + nth-check: 2.1.1 + dev: true + + /css-what/6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: true + + /cssom/0.5.0: + resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} + dev: true + + /csstype/2.6.21: + resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==} + + /dashdash/1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + dependencies: + assert-plus: 1.0.0 + dev: true + + /data-uri-to-buffer/4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: true + + /de-indent/1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true + + /debounce/1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + dev: true + + /debug/2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + dev: true + + /debug/4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decamelize/6.0.0: + resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /decompress-response/6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + dependencies: + mimic-response: 3.1.0 + dev: true + + /deep-extend/0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + dev: true + + /deep-is/0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepcopy/2.1.0: + resolution: {integrity: sha512-8cZeTb1ZKC3bdSCP6XOM1IsTczIO73fdqtwa2B0N15eAz7gmyhQo+mc5gnFuulsgN3vIQYmTgbmQVKalH1dKvQ==} + dependencies: + type-detect: 4.0.8 + dev: true + + /deepmerge/4.2.2: + resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + engines: {node: '>=0.10.0'} + dev: true + + /defaults/1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + dev: true + + /defer-to-connect/2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + dev: true + + /define-lazy-prop/2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + dev: true + + /delayed-stream/1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: true + + /doctrine/3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-serializer/2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.4.0 + dev: true + + /domelementtype/2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: true + + /domhandler/5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: true + + /domutils/3.0.1: + resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: true + + /dot-prop/6.0.1: + resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} + engines: {node: '>=10'} + dependencies: + is-obj: 2.0.0 + dev: true + + /dtrace-provider/0.8.8: + resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==} + engines: {node: '>=0.10'} + requiresBuild: true + dependencies: + nan: 2.17.0 + dev: true + optional: true + + /eastasianwidth/0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /ecc-jsbn/0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + dev: true + + /ecdsa-sig-formatter/1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /emoji-regex/8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex/9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /end-of-stream/1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + dependencies: + once: 1.4.0 + dev: true + + /entities/4.4.0: + resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} + engines: {node: '>=0.12'} + dev: true + + /error-ex/1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es6-error/4.1.1: + resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} + dev: true + + /es6-promisify/7.0.0: + resolution: {integrity: sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==} + engines: {node: '>=6'} + dev: true + + /esbuild/0.16.17: + resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.16.17 + '@esbuild/android-arm64': 0.16.17 + '@esbuild/android-x64': 0.16.17 + '@esbuild/darwin-arm64': 0.16.17 + '@esbuild/darwin-x64': 0.16.17 + '@esbuild/freebsd-arm64': 0.16.17 + '@esbuild/freebsd-x64': 0.16.17 + '@esbuild/linux-arm': 0.16.17 + '@esbuild/linux-arm64': 0.16.17 + '@esbuild/linux-ia32': 0.16.17 + '@esbuild/linux-loong64': 0.16.17 + '@esbuild/linux-mips64el': 0.16.17 + '@esbuild/linux-ppc64': 0.16.17 + '@esbuild/linux-riscv64': 0.16.17 + '@esbuild/linux-s390x': 0.16.17 + '@esbuild/linux-x64': 0.16.17 + '@esbuild/netbsd-x64': 0.16.17 + '@esbuild/openbsd-x64': 0.16.17 + '@esbuild/sunos-x64': 0.16.17 + '@esbuild/win32-arm64': 0.16.17 + '@esbuild/win32-ia32': 0.16.17 + '@esbuild/win32-x64': 0.16.17 + dev: true + + /escalade/3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-goat/4.0.0: + resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} + engines: {node: '>=12'} + dev: true + + /escape-string-regexp/1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp/4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-plugin-no-unsanitized/4.0.2_eslint@8.32.0: + resolution: {integrity: sha512-Pry0S9YmHoz8NCEMRQh7N0Yexh2MYCNPIlrV52hTmS7qXnTghWsjXouF08bgsrrZqaW9tt1ZiK3j5NEmPE+EjQ==} + peerDependencies: + eslint: ^6 || ^7 || ^8 + dependencies: + eslint: 8.32.0 + dev: true + + /eslint-scope/7.1.1: + resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-utils/3.0.0_eslint@8.32.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.32.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys/2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys/3.3.0: + resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint/8.32.0: + resolution: {integrity: sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint/eslintrc': 1.4.1 + '@humanwhocodes/config-array': 0.11.8 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.1.1 + eslint-utils: 3.0.0_eslint@8.32.0 + eslint-visitor-keys: 3.3.0 + espree: 9.4.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.3.0 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + regexpp: 3.2.0 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree/9.4.1: + resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2_acorn@8.8.2 + eslint-visitor-keys: 3.3.0 + dev: true + + /esprima/4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /esquery/1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse/4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse/5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker/2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + /esutils/2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /event-target-shim/5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + dev: true + + /events/3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + dev: true + + /execa/4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /extend/3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + dev: true + + /extsprintf/1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + dev: true + + /fast-deep-equal/3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-json-patch/3.1.1: + resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} + dev: true + + /fast-json-stable-stringify/2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein/2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fast-redact/3.1.2: + resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} + engines: {node: '>=6'} + dev: true + + /fastq/1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + dev: true + + /fd-slicer/1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + dependencies: + pend: 1.2.0 + dev: true + + /fetch-blob/3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.2.1 + dev: true + + /file-entry-cache/6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + + /find-up/5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /firefox-profile/4.2.2: + resolution: {integrity: sha512-3kI17Xl9dL9AeRkpV1yahsJ+UbekkPtlQswKrIsTY1NLgxtEOR4R19rjGGz5+7/rP8Jt6fvxHk+Bai9R6Eai3w==} + hasBin: true + dependencies: + adm-zip: 0.5.10 + fs-extra: 9.0.1 + ini: 2.0.0 + minimist: 1.2.8 + xml2js: 0.4.23 + dev: true + + /first-chunk-stream/3.0.0: + resolution: {integrity: sha512-LNRvR4hr/S8cXXkIY5pTgVP7L3tq6LlYWcg9nWBuW7o1NMxKZo6oOVa/6GIekMGI0Iw7uC+HWimMe9u/VAeKqw==} + engines: {node: '>=8'} + dev: true + + /flat-cache/3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + + /flatted/3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + + /fluent-syntax/0.14.0: + resolution: {integrity: sha512-+k8uXWfRpSrE33764RbpjIKMzIX6R9EnSjFBgaA1s0Mboc3KnW9sYe0c6vjIoZQY1C4Gst1VFvAOP6YGJjTJuA==} + engines: {node: '>=8.9.0'} + deprecated: Renamed to @fluent/syntax 0.14.0 + dev: true + + /forever-agent/0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + dev: true + + /form-data-encoder/2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + dev: true + + /form-data/2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: true + + /formdata-polyfill/4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: true + + /fs-extra/10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra/11.1.0: + resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: true + + /fs-extra/9.0.1: + resolution: {integrity: sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==} + engines: {node: '>=10'} + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.10 + jsonfile: 6.1.0 + universalify: 1.0.0 + dev: true + + /fs.realpath/1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents/2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind/1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + dev: true + + /fx-runner/1.3.0: + resolution: {integrity: sha512-5b37H4GCyhF+Nf8xk9mylXoDq4wb7pbGAXxlCXp/631UTeeZomWSYcEGXumY4wk8g2QAqjPMGdWW+RbNt8PUcA==} + hasBin: true + dependencies: + commander: 2.9.0 + shell-quote: 1.7.3 + spawn-sync: 1.0.15 + when: 3.7.7 + which: 1.2.4 + winreg: 0.0.12 + dev: true + + /get-caller-file/2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-stream/5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + dependencies: + pump: 3.0.0 + dev: true + + /get-stream/6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /getpass/0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + dependencies: + assert-plus: 1.0.0 + dev: true + + /glob-parent/6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-to-regexp/0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + dev: true + + /glob/6.0.4: + resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + optional: true + + /glob/7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob/8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + + /global-dirs/3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + dependencies: + ini: 2.0.0 + dev: true + + /globals/13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /got/12.6.0: + resolution: {integrity: sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ==} + engines: {node: '>=14.16'} + dependencies: + '@sindresorhus/is': 5.3.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.8 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.0 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + dev: true + + /graceful-fs/4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + dev: true + + /graceful-readlink/1.0.1: + resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==} + dev: true + + /grapheme-splitter/1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /growly/1.3.0: + resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} + dev: true + + /har-schema/2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + dev: true + + /har-validator/5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + dev: true + + /has-flag/3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag/4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /has-yarn/3.0.0: + resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /has/1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + dev: true + + /he/1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /html-escaper/3.0.3: + resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + dev: true + + /htmlparser2/8.0.1: + resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.0.1 + entities: 4.4.0 + dev: true + + /http-cache-semantics/4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + dev: true + + /http-signature/1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.17.0 + dev: true + + /http2-wrapper/2.2.0: + resolution: {integrity: sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==} + engines: {node: '>=10.19.0'} + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + dev: true + + /human-signals/1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + dev: true + + /ieee754/1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: true + + /ignore/5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + dev: true + + /image-size/1.0.2: + resolution: {integrity: sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + queue: 6.0.2 + dev: true + + /immediate/3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + dev: true + + /import-fresh/3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /import-lazy/4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + dev: true + + /imurmurhash/0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight/1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits/2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini/1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /ini/2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + dev: true + + /invert-kv/3.0.1: + resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==} + engines: {node: '>=8'} + dev: true + + /is-absolute/0.1.7: + resolution: {integrity: sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==} + engines: {node: '>=0.10.0'} + dependencies: + is-relative: 0.1.3 + dev: true + + /is-arrayish/0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-buffer/1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + dev: true + + /is-ci/3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + dependencies: + ci-info: 3.8.0 + dev: true + + /is-core-module/2.11.0: + resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} + dependencies: + has: 1.0.3 + dev: true + + /is-docker/2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + dev: true + + /is-fullwidth-code-point/3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-installed-globally/0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + dev: true + + /is-mergeable-object/1.1.1: + resolution: {integrity: sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==} + dev: true + + /is-npm/6.0.0: + resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-obj/2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: true + + /is-path-inside/3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-relative/0.1.3: + resolution: {integrity: sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==} + engines: {node: '>=0.10.0'} + dev: true + + /is-stream/2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-typedarray/1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + dev: true + + /is-utf8/0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + dev: true + + /is-wsl/2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /is-yarn-global/0.4.1: + resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} + engines: {node: '>=12'} + dev: true + + /isarray/1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: true + + /isexe/1.1.2: + resolution: {integrity: sha512-d2eJzK691yZwPHcv1LbeAOa91yMJ9QmfTgSO1oXB65ezVhXQsxBac2vEB4bMVms9cGzaA99n6V2viHMq82VLDw==} + dev: true + + /isexe/2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /isstream/0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + dev: true + + /jed/1.1.1: + resolution: {integrity: sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==} + dev: true + + /jose/4.11.2: + resolution: {integrity: sha512-njj0VL2TsIxCtgzhO+9RRobBvws4oYyCM8TpvoUQwl/MbIM3NFJRR9+e6x0sS5xXaP1t6OCBkaBME98OV9zU5A==} + dev: true + + /js-sdsl/4.3.0: + resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} + dev: true + + /js-tokens/4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml/4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsbn/0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + dev: true + + /json-buffer/3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-merge-patch/1.0.2: + resolution: {integrity: sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg==} + dependencies: + fast-deep-equal: 3.1.3 + dev: true + + /json-parse-even-better-errors/2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse/0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse/1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-schema/0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + dev: true + + /json-stable-stringify-without-jsonify/1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json-stringify-safe/5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + dev: true + + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonfile/6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.10 + dev: true + + /jsonwebtoken/9.0.0: + resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} + engines: {node: '>=12', npm: '>=6'} + dependencies: + jws: 3.2.2 + lodash: 4.17.21 + ms: 2.1.3 + semver: 7.3.8 + dev: true + + /jsprim/1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + dev: true + + /jszip/3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + dev: true + + /jwa/1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: true + + /jws/3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + dev: true + + /keyv/4.5.2: + resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /latest-version/7.0.0: + resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} + engines: {node: '>=14.16'} + dependencies: + package-json: 8.1.0 + dev: true + + /lcid/3.1.1: + resolution: {integrity: sha512-M6T051+5QCGLBQb8id3hdvIW8+zeFV2FyBGFS9IEK5H9Wt4MueD4bW1eWikpHgZp+5xR3l5c8pZUkQsIA0BFZg==} + engines: {node: '>=8'} + dependencies: + invert-kv: 3.0.1 + dev: true + + /levn/0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lie/3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + dependencies: + immediate: 3.0.6 + dev: true + + /lighthouse-logger/1.3.0: + resolution: {integrity: sha512-BbqAKApLb9ywUli+0a+PcV04SyJ/N1q/8qgCNe6U97KbPCS1BTksEuHFLYdvc8DltuhfxIUBqDZsC0bBGtl3lA==} + dependencies: + debug: 2.6.9 + marky: 1.2.5 + transitivePeerDependencies: + - supports-color + dev: true + + /lines-and-columns/2.0.3: + resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /linkedom/0.14.25: + resolution: {integrity: sha512-Q5BvQVFzMveMxHvZ9L3E60duxSVPIWQRzY2HJKpCV4pRzY3jS/r/a1upLeo/Nup9mDRJ5MS0FX2hRR+wRo+Hiw==} + dependencies: + css-select: 5.1.0 + cssom: 0.5.0 + html-escaper: 3.0.3 + htmlparser2: 8.0.1 + uhyphen: 0.2.0 + dev: true + + /locate-path/6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge/4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.uniq/4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + + /lodash.uniqby/4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + dev: true + + /lodash/4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /lowercase-keys/3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /lru-cache/6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /magic-string/0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + dependencies: + sourcemap-codec: 1.4.8 + + /make-error/1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + dev: true + + /map-age-cleaner/0.1.3: + resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} + engines: {node: '>=6'} + dependencies: + p-defer: 1.0.0 + dev: true + + /marky/1.2.5: + resolution: {integrity: sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==} + dev: true + + /md5/2.3.0: + resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + is-buffer: 1.1.6 + dev: true + + /mem/5.1.1: + resolution: {integrity: sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==} + engines: {node: '>=8'} + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 2.1.0 + p-is-promise: 2.1.0 + dev: true + + /merge-stream/2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: true + + /mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: true + + /mimic-fn/2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-response/3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + dev: true + + /mimic-response/4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /minimatch/3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch/5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimatch/6.2.0: + resolution: {integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minimist/1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /mkdirp/0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + optional: true + + /mkdirp/1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + dev: true + + /moment/2.29.4: + resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + requiresBuild: true + dev: true + optional: true + + /ms/2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true + + /ms/2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /ms/2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + + /muggle-string/0.2.2: + resolution: {integrity: sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==} + dev: true + + /multimatch/6.0.0: + resolution: {integrity: sha512-I7tSVxHGPlmPN/enE3mS1aOSo6bWBfls+3HmuEeCUBCE7gWnm3cBXCBkpurzFjVRwC6Kld8lLaZ1Iv5vOcjvcQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + '@types/minimatch': 3.0.5 + array-differ: 4.0.0 + array-union: 3.0.1 + minimatch: 3.1.2 + dev: true + + /mv/2.1.1: + resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} + engines: {node: '>=0.8.0'} + requiresBuild: true + dependencies: + mkdirp: 0.5.6 + ncp: 2.0.0 + rimraf: 2.4.5 + dev: true + optional: true + + /mz/2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nan/2.17.0: + resolution: {integrity: sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==} + dev: true + optional: true + + /nanoid/3.3.4: + resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /natural-compare/1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /ncp/2.0.0: + resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} + hasBin: true + dev: true + optional: true + + /node-domexception/1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + dev: true + + /node-fetch/3.3.0: + resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: true + + /node-forge/1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + dev: true + + /node-notifier/10.0.1: + resolution: {integrity: sha512-YX7TSyDukOZ0g+gmzjB6abKu+hTGvO8+8+gIFDsRCU2t8fLV/P2unmt+LGFaIa4y64aX98Qksa97rgz4vMNeLQ==} + dependencies: + growly: 1.3.0 + is-wsl: 2.2.0 + semver: 7.3.8 + shellwords: 0.1.1 + uuid: 8.3.2 + which: 2.0.2 + dev: true + + /normalize-url/8.0.0: + resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} + engines: {node: '>=14.16'} + dev: true + + /npm-run-path/4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /nth-check/2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: true + + /oauth-sign/0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + dev: true + + /object-assign/4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /on-exit-leak-free/2.1.0: + resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} + dev: true + + /once/1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime/5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /open/8.4.0: + resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + engines: {node: '>=12'} + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + dev: true + + /optionator/0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + + /os-locale/5.0.0: + resolution: {integrity: sha512-tqZcNEDAIZKBEPnHPlVDvKrp7NzgLi7jRmhKiUoa2NUmhl13FtkAGLUVR+ZsYvApBQdBfYm43A4tXXQ4IrYLBA==} + engines: {node: '>=10'} + dependencies: + execa: 4.1.0 + lcid: 3.1.1 + mem: 5.1.1 + dev: true + + /os-shim/0.1.3: + resolution: {integrity: sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==} + engines: {node: '>= 0.4.0'} + dev: true + + /p-cancelable/3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + dev: true + + /p-defer/1.0.0: + resolution: {integrity: sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==} + engines: {node: '>=4'} + dev: true + + /p-is-promise/2.1.0: + resolution: {integrity: sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==} + engines: {node: '>=6'} + dev: true + + /p-limit/3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate/5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /package-json/8.1.0: + resolution: {integrity: sha512-hySwcV8RAWeAfPsXb9/HGSPn8lwDnv6fabH+obUZKX169QknRkRhPxd1yMubpKDskLFATkl3jHpNtVtDPFA0Wg==} + engines: {node: '>=14.16'} + dependencies: + got: 12.6.0 + registry-auth-token: 5.0.2 + registry-url: 6.0.1 + semver: 7.3.8 + dev: true + + /pako/1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + dev: true + + /parent-module/1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json/6.0.2: + resolution: {integrity: sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + '@babel/code-frame': 7.18.6 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 2.0.3 + dev: true + + /parse5-htmlparser2-tree-adapter/7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + dependencies: + domhandler: 5.0.3 + parse5: 7.1.2 + dev: true + + /parse5/7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.4.0 + dev: true + + /path-exists/4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute/1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key/3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse/1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true + + /pend/1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + dev: true + + /performance-now/2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + dev: true + + /picocolors/1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /pino-abstract-transport/1.0.0: + resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} + dependencies: + readable-stream: 4.3.0 + split2: 4.1.0 + dev: true + + /pino-std-serializers/6.1.0: + resolution: {integrity: sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==} + dev: true + + /pino/8.8.0: + resolution: {integrity: sha512-cF8iGYeu2ODg2gIwgAHcPrtR63ILJz3f7gkogaHC/TXVVXxZgInmNYiIpDYEwgEkxZti2Se6P2W2DxlBIZe6eQ==} + hasBin: true + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.1.2 + on-exit-leak-free: 2.1.0 + pino-abstract-transport: 1.0.0 + pino-std-serializers: 6.1.0 + process-warning: 2.1.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.4.2 + sonic-boom: 3.2.1 + thread-stream: 2.3.0 + dev: true + + /postcss/8.4.21: + resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.4 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prelude-ls/1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /process-nextick-args/2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + dev: true + + /process-warning/2.1.0: + resolution: {integrity: sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg==} + dev: true + + /process/0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: true + + /promise-toolbox/0.21.0: + resolution: {integrity: sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg==} + engines: {node: '>=6'} + dependencies: + make-error: 1.3.6 + dev: true + + /proto-list/1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: true + + /psl/1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /pump/3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + dev: true + + /punycode/2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /pupa/3.1.0: + resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} + engines: {node: '>=12.20'} + dependencies: + escape-goat: 4.0.0 + dev: true + + /qs/6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + dev: true + + /queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /queue/6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + dependencies: + inherits: 2.0.4 + dev: true + + /quick-format-unescaped/4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + dev: true + + /quick-lru/5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + dev: true + + /rc/1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + dev: true + + /readable-stream/2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: true + + /readable-stream/4.3.0: + resolution: {integrity: sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + dev: true + + /real-require/0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + dev: true + + /regenerator-runtime/0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + dev: true + + /regexpp/3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /registry-auth-token/5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + engines: {node: '>=14'} + dependencies: + '@pnpm/npm-conf': 2.1.0 + dev: true + + /registry-url/6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} + dependencies: + rc: 1.2.8 + dev: true + + /relaxed-json/1.0.3: + resolution: {integrity: sha512-b7wGPo7o2KE/g7SqkJDDbav6zmrEeP4TK2VpITU72J/M949TLe/23y/ZHJo+pskcGM52xIfFoT9hydwmgr1AEg==} + engines: {node: '>= 0.10.0'} + hasBin: true + dependencies: + chalk: 2.4.2 + commander: 2.20.3 + dev: true + + /request/2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + dependencies: + aws-sign2: 0.7.0 + aws4: 1.12.0 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + dev: true + + /require-directory/2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string/2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-alpn/1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + dev: true + + /resolve-from/4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve/1.22.1: + resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} + hasBin: true + dependencies: + is-core-module: 2.11.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: true + + /responselike/3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + dependencies: + lowercase-keys: 3.0.0 + dev: true + + /reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf/2.4.5: + resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} + hasBin: true + dependencies: + glob: 6.0.4 + dev: true + optional: true + + /rimraf/3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup/3.19.1: + resolution: {integrity: sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-buffer/5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true + + /safe-buffer/5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /safe-json-stringify/1.2.0: + resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} + requiresBuild: true + dev: true + optional: true + + /safe-stable-stringify/2.4.2: + resolution: {integrity: sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==} + engines: {node: '>=10'} + dev: true + + /safer-buffer/2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /sax/1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + dev: true + + /semver-diff/4.0.0: + resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} + engines: {node: '>=12'} + dependencies: + semver: 7.3.8 + dev: true + + /semver/7.3.8: + resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /setimmediate/1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + dev: true + + /sha.js/2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /shebang-command/2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex/3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /shell-quote/1.7.3: + resolution: {integrity: sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==} + dev: true + + /shellwords/0.1.1: + resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} + dev: true + + /sign-addon/5.2.0: + resolution: {integrity: sha512-t5CZ4MSKAd3uJBUfjgWfSyKYC1pQS6BMUbgI5OytzMkTOQ9NkdkFE8bB0AJLQIGqDrNS2b1+/ghAP56iuCUE+g==} + dependencies: + common-tags: 1.8.2 + core-js: 3.27.1 + deepcopy: 2.1.0 + es6-error: 4.1.1 + es6-promisify: 7.0.0 + jsonwebtoken: 9.0.0 + mz: 2.7.0 + request: 2.88.2 + source-map-support: 0.5.21 + stream-to-promise: 3.0.0 + dev: true + + /signal-exit/3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /sonic-boom/3.2.1: + resolution: {integrity: sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==} + dependencies: + atomic-sleep: 1.0.0 + dev: true + + /source-map-js/1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map/0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /sourcemap-codec/1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + /spawn-sync/1.0.15: + resolution: {integrity: sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==} + requiresBuild: true + dependencies: + concat-stream: 1.6.2 + os-shim: 0.1.3 + dev: true + + /split/1.0.1: + resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} + dependencies: + through: 2.3.8 + dev: true + + /split2/4.1.0: + resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} + engines: {node: '>= 10.x'} + dev: true + + /sshpk/1.17.0: + resolution: {integrity: sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==} + engines: {node: '>=0.10.0'} + hasBin: true + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + dev: true + + /stream-to-array/2.3.0: + resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} + dependencies: + any-promise: 1.3.0 + dev: true + + /stream-to-promise/3.0.0: + resolution: {integrity: sha512-h+7wLeFiYegOdgTfTxjRsrT7/Op7grnKEIHWgaO1RTHwcwk7xRreMr3S8XpDfDMesSxzgM2V4CxNCFAGo6ssnA==} + engines: {node: '>= 10'} + dependencies: + any-promise: 1.3.0 + end-of-stream: 1.4.4 + stream-to-array: 2.3.0 + dev: true + + /string-width/4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width/5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.0.1 + dev: true + + /string_decoder/1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + dev: true + + /strip-ansi/6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi/7.0.1: + resolution: {integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-bom-buf/2.0.0: + resolution: {integrity: sha512-gLFNHucd6gzb8jMsl5QmZ3QgnUJmp7qn4uUSHNwEXumAp7YizoGYw19ZUVfuq4aBOQUtyn2k8X/CwzWB73W2lQ==} + engines: {node: '>=8'} + dependencies: + is-utf8: 0.2.1 + dev: true + + /strip-bom-stream/4.0.0: + resolution: {integrity: sha512-0ApK3iAkHv6WbgLICw/J4nhwHeDZsBxIIsOD+gHgZICL6SeJ0S9f/WZqemka9cjkTyMN5geId6e8U5WGFAn3cQ==} + engines: {node: '>=8'} + dependencies: + first-chunk-stream: 3.0.0 + strip-bom-buf: 2.0.0 + dev: true + + /strip-bom/5.0.0: + resolution: {integrity: sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==} + engines: {node: '>=12'} + dev: true + + /strip-final-newline/2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-json-comments/2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + dev: true + + /strip-json-comments/3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strip-json-comments/5.0.0: + resolution: {integrity: sha512-V1LGY4UUo0jgwC+ELQ2BNWfPa17TIuwBLg+j1AA/9RPzKINl1lhxVEu2r+ZTTO8aetIsUzE5Qj6LMSBkoGYKKw==} + engines: {node: '>=14.16'} + dev: true + + /supports-color/5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color/7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag/1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + dev: true + + /text-table/0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all/1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify/3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /thread-stream/2.3.0: + resolution: {integrity: sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==} + dependencies: + real-require: 0.2.0 + dev: true + + /through/2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /tmp/0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + dependencies: + rimraf: 3.0.2 + dev: true + + /to-fast-properties/2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /tosource/1.0.0: + resolution: {integrity: sha512-N6g8eQ1eerw6Y1pBhdgkubWIiPFwXa2POSUrlL8jth5CyyEWNWzoGKRkO3CaO7Jx27hlJP54muB3btIAbx4MPg==} + engines: {node: '>=0.4.0'} + dev: true + + /tough-cookie/2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + dependencies: + psl: 1.9.0 + punycode: 2.3.0 + dev: true + + /tunnel-agent/0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /tweetnacl/0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + dev: true + + /type-check/0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect/4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest/0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest/1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + dev: true + + /type-fest/2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + dev: true + + /typedarray-to-buffer/3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + dependencies: + is-typedarray: 1.0.0 + dev: true + + /typedarray/0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + dev: true + + /typescript/4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + dev: true + + /uhyphen/0.2.0: + resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} + dev: true + + /unique-string/3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + dependencies: + crypto-random-string: 4.0.0 + dev: true + + /universalify/1.0.0: + resolution: {integrity: sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==} + engines: {node: '>= 10.0.0'} + dev: true + + /universalify/2.0.0: + resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + engines: {node: '>= 10.0.0'} + dev: true + + /upath/2.0.1: + resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} + engines: {node: '>=4'} + dev: true + + /update-notifier/6.0.2: + resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} + engines: {node: '>=14.16'} + dependencies: + boxen: 7.0.2 + chalk: 5.2.0 + configstore: 6.0.0 + has-yarn: 3.0.0 + import-lazy: 4.0.0 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + is-npm: 6.0.0 + is-yarn-global: 0.4.1 + latest-version: 7.0.0 + pupa: 3.1.0 + semver: 7.3.8 + semver-diff: 4.0.0 + xdg-basedir: 5.1.0 + dev: true + + /uri-js/4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.0 + dev: true + + /util-deprecate/1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true + + /uuid/3.4.0: + resolution: {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. + hasBin: true + dev: true + + /uuid/8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: true + + /verror/1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + dev: true + + /vite-plugin-web-extension/3.0.0_vite@4.1.4: + resolution: {integrity: sha512-kbBXnlEKIaYzAL0aX0fIci4/FFOB6PP9xxExOJc00+lPPxwnHjgvdkeiRgtSykCt3bTbw+MsoKTlSP+qIf2CKg==} + peerDependencies: + vite: ^4 + dependencies: + ajv: 8.12.0 + async-lock: 1.4.0 + fs-extra: 10.1.0 + json5: 2.2.3 + linkedom: 0.14.25 + lodash.uniq: 4.5.0 + lodash.uniqby: 4.7.0 + md5: 2.3.0 + vite: 4.1.4 + web-ext: 7.5.0 + webextension-polyfill: 0.10.0 + yaml: 2.2.1 + transitivePeerDependencies: + - body-parser + - bufferutil + - express + - safe-compare + - supports-color + - utf-8-validate + dev: true + + /vite/4.1.4: + resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.16.17 + postcss: 8.4.21 + resolve: 1.22.1 + rollup: 3.19.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vue-template-compiler/2.7.14: + resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-tsc/1.2.0_typescript@4.9.5: + resolution: {integrity: sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/vue-language-core': 1.2.0 + '@volar/vue-typescript': 1.2.0 + typescript: 4.9.5 + dev: true + + /vue/3.2.47: + resolution: {integrity: sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==} + dependencies: + '@vue/compiler-dom': 3.2.47 + '@vue/compiler-sfc': 3.2.47 + '@vue/runtime-dom': 3.2.47 + '@vue/server-renderer': 3.2.47_vue@3.2.47 + '@vue/shared': 3.2.47 + + /watchpack/2.4.0: + resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} + engines: {node: '>=10.13.0'} + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.10 + dev: true + + /wcwidth/1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + dev: true + + /web-ext/7.5.0: + resolution: {integrity: sha512-Ymflj7Aq/LOD+zGoyvwRbAPx/yMJeig2OEb/rRXYrWl6NWRI5E0c2iWGqlBcnL45iKrOzz70H438dVeJk0w2ug==} + engines: {node: '>=14.0.0', npm: '>=6.9.0'} + hasBin: true + dependencies: + '@babel/runtime': 7.20.13 + '@devicefarmer/adbkit': 3.2.3 + addons-linter: 5.27.0_node-fetch@3.3.0 + bunyan: 1.8.15 + camelcase: 7.0.1 + chrome-launcher: 0.15.1 + debounce: 1.2.1 + decamelize: 6.0.0 + es6-error: 4.1.1 + firefox-profile: 4.2.2 + fs-extra: 11.1.0 + fx-runner: 1.3.0 + import-fresh: 3.3.0 + jose: 4.11.2 + mkdirp: 1.0.4 + multimatch: 6.0.0 + mz: 2.7.0 + node-fetch: 3.3.0 + node-notifier: 10.0.1 + open: 8.4.0 + parse-json: 6.0.2 + promise-toolbox: 0.21.0 + sign-addon: 5.2.0 + source-map-support: 0.5.21 + strip-bom: 5.0.0 + strip-json-comments: 5.0.0 + tmp: 0.2.1 + update-notifier: 6.0.2 + watchpack: 2.4.0 + ws: 8.12.0 + yargs: 17.6.2 + zip-dir: 2.0.0 + transitivePeerDependencies: + - body-parser + - bufferutil + - express + - safe-compare + - supports-color + - utf-8-validate + dev: true + + /web-streams-polyfill/3.2.1: + resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} + engines: {node: '>= 8'} + dev: true + + /webextension-polyfill/0.10.0: + resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} + dev: true + + /when/3.7.7: + resolution: {integrity: sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==} + dev: true + + /which/1.2.4: + resolution: {integrity: sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==} + hasBin: true + dependencies: + is-absolute: 0.1.7 + isexe: 1.1.2 + dev: true + + /which/2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: true + + /widest-line/4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + dev: true + + /winreg/0.0.12: + resolution: {integrity: sha512-typ/+JRmi7RqP1NanzFULK36vczznSNN8kWVA9vIqXyv8GhghUlwhGp1Xj3Nms1FsPcNnsQrJOR10N58/nQ9hQ==} + dev: true + + /word-wrap/1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + + /wrap-ansi/7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi/8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.0.1 + dev: true + + /wrappy/1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /write-file-atomic/3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + dev: true + + /ws/8.12.0: + resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: true + + /xdg-basedir/5.1.0: + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} + engines: {node: '>=12'} + dev: true + + /xml2js/0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + dependencies: + sax: 1.2.4 + xmlbuilder: 11.0.1 + dev: true + + /xmlbuilder/11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + dev: true + + /y18n/5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist/4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml/2.2.1: + resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} + engines: {node: '>= 14'} + dev: true + + /yargs-parser/21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs/17.6.2: + resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yauzl/2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: true + + /yocto-queue/0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true + + /zip-dir/2.0.0: + resolution: {integrity: sha512-uhlsJZWz26FLYXOD6WVuq+fIcZ3aBPGo/cFdiLlv3KNwpa52IF3ISV8fLhQLiqVu5No3VhlqlgthN6gehil1Dg==} + dependencies: + async: 3.2.4 + jszip: 3.10.1 + dev: true diff --git a/src/background.ts b/src/background.ts index ae9783d..4fee7ac 100644 --- a/src/background.ts +++ b/src/background.ts @@ -1 +1,7 @@ -console.log('loading backgroung script') \ No newline at end of file +import browser from "webextension-polyfill"; + +console.log("Hello from the background!"); + +browser.runtime.onInstalled.addListener((details) => { + console.log("Extension installed:", details); +}); diff --git a/src/manifest.json b/src/manifest.json index b6d3813..7558d2a 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,16 +1,16 @@ { - "manifest_version": 3, + "{{chrome}}.manifest_version": 3, + "{{firefox}}.manifest_version": 2, "name": "Web Activity Time Tracker", - "short_name": "Web Time Tracker", + "short_name": "Web Tracker", "version": "1.7.2", - "minimum_chrome_version": "26", "description": "Track and limit time your activity in the browser every day.", - "options_page": "options.html", + "options_page": "src/options.html", "icons": { - "16": "icons/16x16.png", - "32": "icons/32x32.png", - "48": "icons/48x48.png", - "128": "icons/128x128.png" + "16": "src/icons/16x16.png", + "32": "src/icons/32x32.png", + "48": "src/icons/48x48.png", + "128": "src/icons/128x128.png" }, "permissions": [ "tabs", @@ -28,12 +28,14 @@ ], "offline_enabled": true, "background": { - "service_worker": "background.ts", - "type": "module" + "{{chrome}}.service_worker": "src/background.ts", + "{{firefox}}.scripts": ["src/background.ts"] + }, + "{{chrome}}.action": { + "default_popup": "src/popup.html", + "default_title": "Web Activity Time Tracker" }, - "action": { - "default_popup": "index.html", - "default_title": "Web Activity Time Tracker", - "default_icon": "icons/48x48.png" + "{{firefox}}.browser_action": { + "default_popup": "src/popup.html" } } \ No newline at end of file diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue new file mode 100644 index 0000000..92f06dd --- /dev/null +++ b/src/pages/Popup.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/popup.html b/src/popup.html new file mode 100644 index 0000000..cfe9ef4 --- /dev/null +++ b/src/popup.html @@ -0,0 +1,18 @@ + + + + + + + Popup + + + + + + diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.json b/tsconfig.json index 75dcaea..b557c40 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,103 +1,18 @@ { "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "commonjs", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - } + "target": "ESNext", + "useDefineForClassFields": true, + "module": "ESNext", + "moduleResolution": "Node", + "strict": true, + "jsx": "preserve", + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "lib": ["ESNext", "DOM"], + "skipLibCheck": true, + "noEmit": true + }, + "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], + "references": [{ "path": "./tsconfig.node.json" }] } diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..9d31e2a --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..cccbdb2 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,25 @@ +import { defineConfig } from "vite"; +import vue from "@vitejs/plugin-vue"; +import webExtension, { readJsonFile } from "vite-plugin-web-extension"; + +function generateManifest() { + const manifest = readJsonFile("src/manifest.json"); + const pkg = readJsonFile("package.json"); + return { + name: pkg.name, + description: pkg.description, + version: pkg.version, + ...manifest, + }; +} + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + vue(), + webExtension({ + manifest: generateManifest, + watchFilePaths: ["package.json", "manifest.json"], + }), + ], +}); From bb4b0fff140dc35adc3827eb5cd662243b8cf21f Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 17 Mar 2023 14:21:16 +0300 Subject: [PATCH 022/329] Add tailwind --- package.json | 1 + pnpm-lock.yaml | 1239 ++++++++++++++++++++++++++++++++++++++++++-- tailwind.config.js | 3 + 3 files changed, 1213 insertions(+), 30 deletions(-) create mode 100644 tailwind.config.js diff --git a/package.json b/package.json index 5fa3c22..2b61a4f 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "build": "vue-tsc && vite build" }, "dependencies": { + "tailwind": "^4.0.0", "vue": "^3.2.47" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 937db81..d8e9205 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,6 +3,7 @@ lockfileVersion: 5.4 specifiers: '@types/webextension-polyfill': ^0.10.0 '@vitejs/plugin-vue': ^4.0.0 + tailwind: ^4.0.0 typescript: ^4.9.5 vite: ^4.1.4 vite-plugin-web-extension: ^3.0.0 @@ -11,6 +12,7 @@ specifiers: webextension-polyfill: ^0.10.0 dependencies: + tailwind: 4.0.0 vue: 3.2.47 devDependencies: @@ -55,6 +57,18 @@ packages: dependencies: '@babel/types': 7.21.3 + /@babel/runtime/7.1.2: + resolution: {integrity: sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==} + dependencies: + regenerator-runtime: 0.12.1 + dev: false + + /@babel/runtime/7.2.0: + resolution: {integrity: sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==} + dependencies: + regenerator-runtime: 0.12.1 + dev: false + /@babel/runtime/7.20.13: resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} engines: {node: '>=6.9.0'} @@ -62,6 +76,12 @@ packages: regenerator-runtime: 0.13.11 dev: true + /@babel/runtime/7.3.4: + resolution: {integrity: sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==} + dependencies: + regenerator-runtime: 0.12.1 + dev: false + /@babel/types/7.21.3: resolution: {integrity: sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==} engines: {node: '>=6.9.0'} @@ -541,6 +561,14 @@ packages: event-target-shim: 5.0.1 dev: true + /accepts/1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + dev: false + /acorn-jsx/5.3.2_acorn@8.8.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -635,6 +663,15 @@ packages: engines: {node: '>=6.0'} dev: true + /ajv/6.10.0: + resolution: {integrity: sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==} + dependencies: + fast-deep-equal: 2.0.1 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: false + /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -653,6 +690,17 @@ packages: uri-js: 4.4.1 dev: true + /amqplib/0.5.2: + resolution: {integrity: sha512-l9mCs6LbydtHqRniRwYkKdqxVa6XMz3Vw1fh+2gJaaVgTM6Jk3o8RccAKWKtlhT1US5sWrFh+KKxsVUALURSIA==} + engines: {node: '>=0.8 <=9'} + dependencies: + bitsyntax: 0.0.4 + bluebird: 3.7.2 + buffer-more-ints: 0.0.2 + readable-stream: 1.1.14 + safe-buffer: 5.2.1 + dev: false + /ansi-align/3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: @@ -674,7 +722,6 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 - dev: true /ansi-styles/4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -692,20 +739,51 @@ packages: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true + /app-root-path/2.1.0: + resolution: {integrity: sha512-z5BqVjscbjmJBybKlICogJR2jCr2q/Ixu7Pvui5D4y97i7FLsJlvEG9XOR/KJRlkxxZz7UaaS2TMwQh1dRJ2dA==} + engines: {node: '>= 4.0.0'} + dev: false + /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true + /array-buffer-byte-length/1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: false + /array-differ/4.0.0: resolution: {integrity: sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true + /array-flatten/1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + dev: false + /array-union/3.0.1: resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==} engines: {node: '>=12'} dev: true + /array.prototype.reduce/1.0.5: + resolution: {integrity: sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + es-array-method-boxes-properly: 1.0.0 + is-string: 1.0.7 + dev: false + + /asn1/0.2.3: + resolution: {integrity: sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==} + dev: false + /asn1/0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: @@ -717,10 +795,20 @@ packages: engines: {node: '>=0.8'} dev: true + /async-limiter/1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + dev: false + /async-lock/1.4.0: resolution: {integrity: sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==} dev: true + /async-retry/1.2.3: + resolution: {integrity: sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==} + dependencies: + retry: 0.12.0 + dev: false + /async/3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: true @@ -739,6 +827,11 @@ packages: engines: {node: '>=8.0.0'} dev: true + /available-typed-arrays/1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: false + /aws-sign2/0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: true @@ -747,6 +840,13 @@ packages: resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} dev: true + /babel-runtime/6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + dev: false + /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true @@ -755,15 +855,46 @@ packages: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: true + /basic-auth/2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + dependencies: + safe-buffer: 5.1.2 + dev: false + /bcrypt-pbkdf/1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: tweetnacl: 0.14.5 dev: true + /bitsyntax/0.0.4: + resolution: {integrity: sha512-Pav3HSZXD2NLQOWfJldY3bpJLt8+HS2nUo5Z1bLLmHg2vCE/cM1qfEvNjlYo7GgYQPneNr715Bh42i01ZHZPvw==} + engines: {node: '>=0.6'} + dependencies: + buffer-more-ints: 0.0.2 + dev: false + /bluebird/3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - dev: true + + /body-parser/1.18.3: + resolution: {integrity: sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.0.0 + content-type: 1.0.4 + debug: 2.6.9 + depd: 1.1.2 + http-errors: 1.6.3 + iconv-lite: 0.4.23 + on-finished: 2.3.0 + qs: 6.5.2 + raw-body: 2.3.3 + type-is: 1.6.18 + transitivePeerDependencies: + - supports-color + dev: false /boolbase/1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -802,12 +933,15 @@ packages: /buffer-equal-constant-time/1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} - dev: true /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true + /buffer-more-ints/0.0.2: + resolution: {integrity: sha512-PDgX2QJgUc5+Jb2xAoBFP5MxhtVUmZHR33ak+m/SDxRdCrbnX1BggRIaxiW7ImwfmO4iJeCQKN18ToSXWGjYkA==} + dev: false + /buffer/6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: @@ -826,6 +960,11 @@ packages: safe-json-stringify: 1.2.0 dev: true + /bytes/3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + dev: false + /cacheable-lookup/7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} @@ -844,6 +983,13 @@ packages: responselike: 3.0.0 dev: true + /call-bind/1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.0 + dev: false + /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -858,6 +1004,15 @@ packages: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: true + /chalk/2.4.1: + resolution: {integrity: sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: false + /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -949,7 +1104,6 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 - dev: true /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -960,7 +1114,6 @@ packages: /color-name/1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -997,11 +1150,45 @@ packages: engines: {node: ^12.20.0 || >=14} dev: true + /commands-events/1.0.4: + resolution: {integrity: sha512-HdP/+1Anoc7z+6L2h7nd4Imz54+LW+BjMGt30riBZrZ3ZeP/8el93wD8Jj8ltAaqVslqNgjX6qlhSBJwuDSmpg==} + dependencies: + '@babel/runtime': 7.2.0 + formats: 1.0.0 + uuidv4: 2.0.0 + dev: false + /common-tags/1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} dev: true + /comparejs/1.0.0: + resolution: {integrity: sha512-Ue/Zd9aOucHzHXwaCe4yeHR7jypp7TKrIBZ5yls35nPNiVXlW14npmNVKM1ZaLlQTKZ6/4ewA//gYKHHIwCpOw==} + dev: false + + /compressible/2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /compression/1.7.3: + resolution: {integrity: sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: false + /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true @@ -1034,6 +1221,31 @@ packages: xdg-basedir: 5.1.0 dev: true + /content-disposition/0.5.2: + resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} + engines: {node: '>= 0.6'} + dev: false + + /content-type/1.0.4: + resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} + engines: {node: '>= 0.6'} + dev: false + + /cookie-signature/1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + dev: false + + /cookie/0.3.1: + resolution: {integrity: sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==} + engines: {node: '>= 0.6'} + dev: false + + /core-js/2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + requiresBuild: true + dev: false + /core-js/3.27.1: resolution: {integrity: sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==} requiresBuild: true @@ -1045,7 +1257,14 @@ packages: /core-util-is/1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - dev: true + + /cors/2.8.5: + resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} + engines: {node: '>= 0.10'} + dependencies: + object-assign: 4.1.1 + vary: 1.1.2 + dev: false /cross-spawn/7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -1067,6 +1286,14 @@ packages: type-fest: 1.4.0 dev: true + /crypto2/2.0.0: + resolution: {integrity: sha512-jdXdAgdILldLOF53md25FiQ6ybj2kUFTiRjs7msKTUoZrzgT/M1FPX5dYGJjbbwFls+RJIiZxNTC02DE/8y0ZQ==} + dependencies: + babel-runtime: 6.26.0 + node-rsa: 0.4.2 + util.promisify: 1.0.0 + dev: false + /css-select/5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: @@ -1101,6 +1328,14 @@ packages: engines: {node: '>= 12'} dev: true + /datasette/1.0.1: + resolution: {integrity: sha512-aJdlCBToEJUP4M57r67r4V6tltwGKa3qetnjpBtXYIlqbX9tM9jsoDMxb4xd9AGjpp3282oHRmqI5Z8TVAU0Mg==} + dependencies: + comparejs: 1.0.0 + eventemitter2: 5.0.1 + lodash: 4.17.5 + dev: false + /de-indent/1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} dev: true @@ -1118,7 +1353,6 @@ packages: optional: true dependencies: ms: 2.0.0 - dev: true /debug/4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -1180,11 +1414,28 @@ packages: engines: {node: '>=8'} dev: true + /define-properties/1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: false + /delayed-stream/1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true + /depd/1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false + + /destroy/1.0.4: + resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==} + dev: false + /doctrine/3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -1226,6 +1477,12 @@ packages: is-obj: 2.0.0 dev: true + /draht/1.0.1: + resolution: {integrity: sha512-yNNHL864dniNmIE9ZKD++mKypiAUAvVZtyV0QrbXH/ak3ebzFqo5xsmRBRqV8pZVhImOSBiyq500Wcmrf44zAg==} + dependencies: + eventemitter2: 5.0.1 + dev: false + /dtrace-provider/0.8.8: resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==} engines: {node: '>=0.10'} @@ -1250,7 +1507,10 @@ packages: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: safe-buffer: 5.2.1 - dev: true + + /ee-first/1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + dev: false /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1260,6 +1520,11 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true + /encodeurl/1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + dev: false + /end-of-stream/1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -1277,6 +1542,68 @@ packages: is-arrayish: 0.2.1 dev: true + /es-abstract/1.21.2: + resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.0 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.10 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.4.3 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.9 + dev: false + + /es-array-method-boxes-properly/1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + dev: false + + /es-set-tostringtag/2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: false + + /es-to-primitive/1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: false + /es6-error/4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} dev: true @@ -1326,10 +1653,13 @@ packages: engines: {node: '>=12'} dev: true + /escape-html/1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + dev: false + /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - dev: true /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -1462,11 +1792,20 @@ packages: engines: {node: '>=0.10.0'} dev: true + /etag/1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + dev: false + /event-target-shim/5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} dev: true + /eventemitter2/5.0.1: + resolution: {integrity: sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==} + dev: false + /events/3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -1487,6 +1826,44 @@ packages: strip-final-newline: 2.0.0 dev: true + /express/4.16.4: + resolution: {integrity: sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==} + engines: {node: '>= 0.10.0'} + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.18.3 + content-disposition: 0.5.2 + content-type: 1.0.4 + cookie: 0.3.1 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 1.1.2 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.1.1 + fresh: 0.5.2 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.3.0 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.5.2 + range-parser: 1.2.1 + safe-buffer: 5.1.2 + send: 0.16.2 + serve-static: 1.13.2 + setprototypeof: 1.1.0 + statuses: 1.4.0 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: false + /extend/3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true @@ -1496,6 +1873,10 @@ packages: engines: {'0': node >=0.6.0} dev: true + /fast-deep-equal/2.0.1: + resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} + dev: false + /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -1506,7 +1887,6 @@ packages: /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -1544,6 +1924,25 @@ packages: flat-cache: 3.0.4 dev: true + /finalhandler/1.1.1: + resolution: {integrity: sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.4.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + + /find-root/1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + dev: false + /find-up/5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -1568,6 +1967,26 @@ packages: engines: {node: '>=8'} dev: true + /flaschenpost/1.1.3: + resolution: {integrity: sha512-1VAYPvDsVBGFJyUrOa/6clnJwZYC3qVq9nJLcypy6lvaaNbo1wOQiH8HQ+4Fw/k51pVG7JHzSf5epb8lmIW86g==} + hasBin: true + dependencies: + '@babel/runtime': 7.2.0 + app-root-path: 2.1.0 + babel-runtime: 6.26.0 + chalk: 2.4.1 + find-root: 1.1.0 + lodash: 4.17.11 + moment: 2.22.2 + processenv: 1.1.0 + split2: 3.0.0 + stack-trace: 0.0.10 + stringify-object: 3.3.0 + untildify: 3.0.3 + util.promisify: 1.0.0 + varname: 2.0.3 + dev: false + /flat-cache/3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -1586,6 +2005,12 @@ packages: deprecated: Renamed to @fluent/syntax 0.14.0 dev: true + /for-each/0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: false + /forever-agent/0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: true @@ -1604,6 +2029,10 @@ packages: mime-types: 2.1.35 dev: true + /formats/1.0.0: + resolution: {integrity: sha512-For0Y8egwEK96JgJo4NONErPhtl7H2QzeB2NYGmzeGeJ8a1JZqPgLYOtM3oJRCYhmgsdDFd6KGRYyfe37XY4Yg==} + dev: false + /formdata-polyfill/4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -1611,6 +2040,16 @@ packages: fetch-blob: 3.2.0 dev: true + /forwarded/0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + dev: false + + /fresh/0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + dev: false + /fs-extra/10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -1653,7 +2092,20 @@ packages: /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true + + /function.prototype.name/1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + functions-have-names: 1.2.3 + dev: false + + /functions-have-names/1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: false /fx-runner/1.3.0: resolution: {integrity: sha512-5b37H4GCyhF+Nf8xk9mylXoDq4wb7pbGAXxlCXp/631UTeeZomWSYcEGXumY4wk8g2QAqjPMGdWW+RbNt8PUcA==} @@ -1672,6 +2124,18 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true + /get-intrinsic/1.2.0: + resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.3 + dev: false + + /get-own-enumerable-property-symbols/3.0.2: + resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} + dev: false + /get-stream/5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -1684,6 +2148,14 @@ packages: engines: {node: '>=10'} dev: true + /get-symbol-description/1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + dev: false + /getpass/0.1.7: resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} dependencies: @@ -1748,6 +2220,19 @@ packages: type-fest: 0.20.2 dev: true + /globalthis/1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.0 + dev: false + + /gopd/1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.0 + dev: false + /got/12.6.0: resolution: {integrity: sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ==} engines: {node: '>=14.16'} @@ -1795,16 +2280,42 @@ packages: har-schema: 2.0.0 dev: true + /has-bigints/1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: false + /has-flag/3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} - dev: true /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true + /has-property-descriptors/1.0.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.2.0 + dev: false + + /has-proto/1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: false + + /has-symbols/1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: false + + /has-tostringtag/1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + /has-yarn/3.0.0: resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1815,7 +2326,13 @@ packages: engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - dev: true + + /hase/2.0.0: + resolution: {integrity: sha512-L83pBR/oZvQQNjv4kw9aUpTqBxERPiY7B42jsmkt1VDeUaRVhYkEIKzkCqrppjtxHe2EZqzZJzuhMXsWsxYIsw==} + dependencies: + '@babel/runtime': 7.1.2 + amqplib: 0.5.2 + dev: false /he/1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -1839,6 +2356,16 @@ packages: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: true + /http-errors/1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + dev: false + /http-signature/1.2.0: resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} engines: {node: '>=0.8', npm: '>=1.3.7'} @@ -1861,6 +2388,13 @@ packages: engines: {node: '>=8.12.0'} dev: true + /iconv-lite/0.4.23: + resolution: {integrity: sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: false + /ieee754/1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true @@ -1907,9 +2441,12 @@ packages: wrappy: 1.0.2 dev: true + /inherits/2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: false + /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true /ini/1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} @@ -1920,11 +2457,25 @@ packages: engines: {node: '>=10'} dev: true + /internal-slot/1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.0 + has: 1.0.3 + side-channel: 1.0.4 + dev: false + /invert-kv/3.0.1: resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==} engines: {node: '>=8'} dev: true + /ipaddr.js/1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + dev: false + /is-absolute/0.1.7: resolution: {integrity: sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==} engines: {node: '>=0.10.0'} @@ -1932,14 +2483,41 @@ packages: is-relative: 0.1.3 dev: true + /is-array-buffer/3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-typed-array: 1.1.10 + dev: false + /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true + /is-bigint/1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: false + + /is-boolean-object/1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + /is-buffer/1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: true + /is-callable/1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: false + /is-ci/3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true @@ -1953,6 +2531,13 @@ packages: has: 1.0.3 dev: true + /is-date-object/1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + /is-docker/2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -1988,11 +2573,28 @@ packages: resolution: {integrity: sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==} dev: true + /is-negative-zero/2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: false + /is-npm/6.0.0: resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true + /is-number-object/1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-obj/1.0.1: + resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} + engines: {node: '>=0.10.0'} + dev: false + /is-obj/2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} @@ -2003,16 +2605,60 @@ packages: engines: {node: '>=8'} dev: true + /is-regex/1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-regexp/1.0.0: + resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} + engines: {node: '>=0.10.0'} + dev: false + /is-relative/0.1.3: resolution: {integrity: sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==} engines: {node: '>=0.10.0'} dev: true + /is-shared-array-buffer/1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + dev: false + /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true + /is-string/1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-symbol/1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: false + + /is-typed-array/1.1.10: + resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: false + /is-typedarray/1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: true @@ -2021,6 +2667,12 @@ packages: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: true + /is-weakref/1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: false + /is-wsl/2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -2033,6 +2685,10 @@ packages: engines: {node: '>=12'} dev: true + /isarray/0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + dev: false + /isarray/1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true @@ -2080,6 +2736,12 @@ packages: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true + /json-lines/1.0.0: + resolution: {integrity: sha512-ytuLZb4RBQb3bTRsG/QBenyIo5oHLpjeCVph3s2NnoAsZE9K6h+uR+OWpEOWV1UeHdX63tYctGppBpGAc+JNMA==} + dependencies: + timer2: 1.0.0 + dev: false + /json-merge-patch/1.0.2: resolution: {integrity: sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg==} dependencies: @@ -2092,7 +2754,6 @@ packages: /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -2124,6 +2785,22 @@ packages: graceful-fs: 4.2.10 dev: true + /jsonwebtoken/8.5.0: + resolution: {integrity: sha512-IqEycp0znWHNA11TpYi77bVgyBO/pGESDh7Ajhas+u0ttkGkKYIIAjniL4Bw5+oVejVF+SYkaI7XKfwCCyeTuA==} + engines: {node: '>=4', npm: '>=1.4.28'} + dependencies: + jws: 3.2.2 + lodash.includes: 4.3.0 + lodash.isboolean: 3.0.3 + lodash.isinteger: 4.0.4 + lodash.isnumber: 3.0.3 + lodash.isplainobject: 4.0.6 + lodash.isstring: 4.0.1 + lodash.once: 4.1.1 + ms: 2.1.3 + semver: 5.7.1 + dev: false + /jsonwebtoken/9.0.0: resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} engines: {node: '>=12', npm: '>=6'} @@ -2159,14 +2836,12 @@ packages: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 - dev: true /jws/3.2.2: resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} dependencies: jwa: 1.4.1 safe-buffer: 5.2.1 - dev: true /keyv/4.5.2: resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} @@ -2211,6 +2886,13 @@ packages: - supports-color dev: true + /limes/2.0.0: + resolution: {integrity: sha512-evWD0pnTgPX7QueaSoJl5JBUL30T1ZVzo34ke97tIKmeagqhBTYK/JkKL0vtG3MpNApw8ZY9TlbybfwEz9knBA==} + dependencies: + '@babel/runtime': 7.3.4 + jsonwebtoken: 8.5.0 + dev: false + /lines-and-columns/2.0.3: resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2233,10 +2915,38 @@ packages: p-locate: 5.0.0 dev: true + /lodash.includes/4.3.0: + resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} + dev: false + + /lodash.isboolean/3.0.3: + resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} + dev: false + + /lodash.isinteger/4.0.4: + resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} + dev: false + + /lodash.isnumber/3.0.3: + resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} + dev: false + + /lodash.isplainobject/4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: false + + /lodash.isstring/4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + dev: false + /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true + /lodash.once/4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + dev: false + /lodash.uniq/4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} dev: true @@ -2245,10 +2955,18 @@ packages: resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} dev: true + /lodash/4.17.11: + resolution: {integrity: sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==} + dev: false + /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true + /lodash/4.17.5: + resolution: {integrity: sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==} + dev: false + /lowercase-keys/3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2261,6 +2979,13 @@ packages: yallist: 4.0.0 dev: true + /lusca/1.6.1: + resolution: {integrity: sha512-+JzvUMH/rsE/4XfHdDOl70bip0beRcHSviYATQM0vtls59uVtdn1JMu4iD7ZShBpAmFG8EnaA+PrYG9sECMIOQ==} + engines: {node: '>=0.8.x'} + dependencies: + tsscmp: 1.0.6 + dev: false + /magic-string/0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: @@ -2289,6 +3014,11 @@ packages: is-buffer: 1.1.6 dev: true + /media-typer/0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + dev: false + /mem/5.1.1: resolution: {integrity: sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==} engines: {node: '>=8'} @@ -2298,21 +3028,33 @@ packages: p-is-promise: 2.1.0 dev: true + /merge-descriptors/1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + dev: false + /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true + /methods/1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + dev: false + /mime-db/1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} - dev: true /mime-types/2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - dev: true + + /mime/1.4.1: + resolution: {integrity: sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==} + hasBin: true + dev: false /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} @@ -2367,15 +3109,31 @@ packages: hasBin: true dev: true + /moment/2.22.2: + resolution: {integrity: sha512-LRvkBHaJGnrcWvqsElsOhHCzj8mU39wLx5pQ0pc6s153GynCTsPdGdqsVNKAQD9sKnWj11iF7TZx9fpLwdD3fw==} + dev: false + /moment/2.29.4: resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} requiresBuild: true dev: true optional: true + /morgan/1.9.1: + resolution: {integrity: sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==} + engines: {node: '>= 0.8.0'} + dependencies: + basic-auth: 2.0.1 + debug: 2.6.9 + depd: 1.1.2 + on-finished: 2.3.0 + on-headers: 1.0.2 + transitivePeerDependencies: + - supports-color + dev: false + /ms/2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: true /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -2383,7 +3141,6 @@ packages: /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true /muggle-string/0.2.2: resolution: {integrity: sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==} @@ -2438,6 +3195,15 @@ packages: dev: true optional: true + /negotiator/0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + dev: false + + /nocache/2.0.0: + resolution: {integrity: sha512-YdKcy2x0dDwOh+8BEuHvA+mnOKAhmMQDgKBOCUGaLpewdmsRYguYZSom3yA+/OrE61O/q+NMQANnun65xpI1Hw==} + dev: false + /node-domexception/1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -2468,6 +3234,17 @@ packages: which: 2.0.2 dev: true + /node-rsa/0.4.2: + resolution: {integrity: sha512-Bvso6Zi9LY4otIZefYrscsUpo2mUpiAVIEmSZV2q41sP8tHZoert3Yu6zv4f/RXJqMNZQKCtnhDugIuCma23YA==} + dependencies: + asn1: 0.2.3 + dev: false + + /node-statsd/0.1.1: + resolution: {integrity: sha512-QDf6R8VXF56QVe1boek8an/Rb3rSNaxoFWb7Elpsv2m1+Noua1yy0F1FpKpK5VluF8oymWM4w764A4KsYL4pDg==} + engines: {node: '>=0.1.97'} + dev: false + /normalize-url/8.0.0: resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} engines: {node: '>=14.16'} @@ -2493,12 +3270,52 @@ packages: /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - dev: true + + /object-inspect/1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: false + + /object-keys/1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: false + + /object.assign/4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: false + + /object.getownpropertydescriptors/2.1.5: + resolution: {integrity: sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==} + engines: {node: '>= 0.8'} + dependencies: + array.prototype.reduce: 1.0.5 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false /on-exit-leak-free/2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} dev: true + /on-finished/2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + dev: false + + /on-headers/1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + dev: false + /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -2620,6 +3437,15 @@ packages: entities: 4.4.0 dev: true + /parseurl/1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + dev: false + + /partof/1.0.0: + resolution: {integrity: sha512-+TXdhKCySpJDynCxgAPoGVyAkiK3QPusQ63/BdU5t68QcYzyU6zkP/T7F3gkMQBVUYqdWEADKa6Kx5zg8QIKrg==} + dev: false + /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -2639,6 +3465,10 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true + /path-to-regexp/0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + dev: false + /pend/1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true @@ -2704,6 +3534,12 @@ packages: engines: {node: '>= 0.6.0'} dev: true + /processenv/1.1.0: + resolution: {integrity: sha512-SymqIsn8GjEUy8nG7HiyEjgbfk1xFosRIakUX1NHLpriq3vVpKniGrr9RdMWCaGYWByIovbRt2f/WvmP/IOApQ==} + dependencies: + babel-runtime: 6.26.0 + dev: false + /promise-toolbox/0.21.0: resolution: {integrity: sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg==} engines: {node: '>=6'} @@ -2715,6 +3551,14 @@ packages: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: true + /proxy-addr/2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + dev: false + /psl/1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true @@ -2729,7 +3573,6 @@ packages: /punycode/2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} - dev: true /pupa/3.1.0: resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} @@ -2738,6 +3581,11 @@ packages: escape-goat: 4.0.0 dev: true + /qs/6.5.2: + resolution: {integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==} + engines: {node: '>=0.6'} + dev: false + /qs/6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} @@ -2762,6 +3610,21 @@ packages: engines: {node: '>=10'} dev: true + /range-parser/1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + dev: false + + /raw-body/2.3.3: + resolution: {integrity: sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==} + engines: {node: '>= 0.8'} + dependencies: + bytes: 3.0.0 + http-errors: 1.6.3 + iconv-lite: 0.4.23 + unpipe: 1.0.0 + dev: false + /rc/1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -2772,6 +3635,15 @@ packages: strip-json-comments: 2.0.1 dev: true + /readable-stream/1.1.14: + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + dev: false + /readable-stream/2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: @@ -2784,6 +3656,15 @@ packages: util-deprecate: 1.0.2 dev: true + /readable-stream/3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + dev: false + /readable-stream/4.3.0: resolution: {integrity: sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -2799,10 +3680,27 @@ packages: engines: {node: '>= 12.13.0'} dev: true + /regenerator-runtime/0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + dev: false + + /regenerator-runtime/0.12.1: + resolution: {integrity: sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==} + dev: false + /regenerator-runtime/0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true + /regexp.prototype.flags/1.4.3: + resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: false + /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} @@ -2893,6 +3791,11 @@ packages: lowercase-keys: 3.0.0 dev: true + /retry/0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + dev: false + /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -2929,11 +3832,9 @@ packages: /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: true /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: true /safe-json-stringify/1.2.0: resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} @@ -2941,6 +3842,14 @@ packages: dev: true optional: true + /safe-regex-test/1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + is-regex: 1.1.4 + dev: false + /safe-stable-stringify/2.4.2: resolution: {integrity: sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==} engines: {node: '>=10'} @@ -2948,7 +3857,6 @@ packages: /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true /sax/1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} @@ -2961,6 +3869,11 @@ packages: semver: 7.3.8 dev: true + /semver/5.7.1: + resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} + hasBin: true + dev: false + /semver/7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} @@ -2969,10 +3882,51 @@ packages: lru-cache: 6.0.0 dev: true + /send/0.16.2: + resolution: {integrity: sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 1.1.2 + destroy: 1.0.4 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 1.6.3 + mime: 1.4.1 + ms: 2.0.0 + on-finished: 2.3.0 + range-parser: 1.2.1 + statuses: 1.4.0 + transitivePeerDependencies: + - supports-color + dev: false + + /serve-static/1.13.2: + resolution: {integrity: sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.16.2 + transitivePeerDependencies: + - supports-color + dev: false + /setimmediate/1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: true + /setprototypeof/1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + dev: false + + /sha-1/0.1.1: + resolution: {integrity: sha512-dexizf3hB7d4Jq6Cd0d/NYQiqgEqIfZIpuMfwPfvSb6h06DZKmHyUe55jYwpHC12R42wpqXO6ouhiBpRzIcD/g==} + dev: false + /sha.js/2.4.11: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} hasBin: true @@ -3001,6 +3955,14 @@ packages: resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} dev: true + /side-channel/1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.0 + object-inspect: 1.12.3 + dev: false + /sign-addon/5.2.0: resolution: {integrity: sha512-t5CZ4MSKAd3uJBUfjgWfSyKYC1pQS6BMUbgI5OytzMkTOQ9NkdkFE8bB0AJLQIGqDrNS2b1+/ghAP56iuCUE+g==} dependencies: @@ -3059,6 +4021,12 @@ packages: through: 2.3.8 dev: true + /split2/3.0.0: + resolution: {integrity: sha512-Cp7G+nUfKJyHCrAI8kze3Q00PFGEG1pMgrAlTFlDbn+GW24evSZHJuMl+iUJx1w/NTRDeBiTgvwnf6YOt94FMw==} + dependencies: + readable-stream: 3.6.2 + dev: false + /split2/4.1.0: resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} engines: {node: '>= 10.x'} @@ -3080,6 +4048,26 @@ packages: tweetnacl: 0.14.5 dev: true + /stack-trace/0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + dev: false + + /statuses/1.4.0: + resolution: {integrity: sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==} + engines: {node: '>= 0.6'} + dev: false + + /statuses/1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + dev: false + + /stethoskop/1.0.0: + resolution: {integrity: sha512-4JnZ+UmTs9SFfDjSHFlD/EoXcb1bfwntkt4h1ipNGrpxtRzmHTxOmdquCJvIrVu608Um7a09cGX0ZSOSllWJNQ==} + dependencies: + node-statsd: 0.1.1 + dev: false + /stream-to-array/2.3.0: resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} dependencies: @@ -3113,11 +4101,48 @@ packages: strip-ansi: 7.0.1 dev: true + /string.prototype.trim/1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trimend/1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string.prototype.trimstart/1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.21.2 + dev: false + + /string_decoder/0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + dev: false + /string_decoder/1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - dev: true + + /stringify-object/3.3.0: + resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} + engines: {node: '>=4'} + dependencies: + get-own-enumerable-property-symbols: 3.0.2 + is-obj: 1.0.1 + is-regexp: 1.0.0 + dev: false /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} @@ -3178,7 +4203,6 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 - dev: true /supports-color/7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -3192,6 +4216,42 @@ packages: engines: {node: '>= 0.4'} dev: true + /tailwind/4.0.0: + resolution: {integrity: sha512-LlUNoD/5maFG1h5kQ6/hXfFPdcnYw+1Z7z+kUD/W/E71CUMwcnrskxiBM8c3G8wmPsD1VvCuqGYMHviI8+yrmg==} + dependencies: + '@babel/runtime': 7.3.4 + ajv: 6.10.0 + app-root-path: 2.1.0 + async-retry: 1.2.3 + body-parser: 1.18.3 + commands-events: 1.0.4 + compression: 1.7.3 + content-type: 1.0.4 + cors: 2.8.5 + crypto2: 2.0.0 + datasette: 1.0.1 + draht: 1.0.1 + express: 4.16.4 + flaschenpost: 1.1.3 + hase: 2.0.0 + json-lines: 1.0.0 + limes: 2.0.0 + lodash: 4.17.11 + lusca: 1.6.1 + morgan: 1.9.1 + nocache: 2.0.0 + partof: 1.0.0 + processenv: 1.1.0 + stethoskop: 1.0.0 + timer2: 1.0.0 + uuidv4: 3.0.1 + ws: 6.2.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -3219,6 +4279,10 @@ packages: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true + /timer2/1.0.0: + resolution: {integrity: sha512-UOZql+P2ET0da+B7V3/RImN3IhC5ghb+9cpecfUhmYGIm0z73dDr3A781nBLnFYmRzeT1AmoT4w9Lgr8n7n7xg==} + dev: false + /tmp/0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} engines: {node: '>=8.17.0'} @@ -3243,6 +4307,11 @@ packages: punycode: 2.3.0 dev: true + /tsscmp/1.0.6: + resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} + engines: {node: '>=0.6.x'} + dev: false + /tunnel-agent/0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: @@ -3280,6 +4349,22 @@ packages: engines: {node: '>=12.20'} dev: true + /type-is/1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + dev: false + + /typed-array-length/1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.10 + dev: false + /typedarray-to-buffer/3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: @@ -3300,6 +4385,15 @@ packages: resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} dev: true + /unbox-primitive/1.0.2: + resolution: {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 + dev: false + /unique-string/3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -3317,6 +4411,16 @@ packages: engines: {node: '>= 10.0.0'} dev: true + /unpipe/1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + dev: false + + /untildify/3.0.3: + resolution: {integrity: sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==} + engines: {node: '>=4'} + dev: false + /upath/2.0.1: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} @@ -3346,11 +4450,27 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 - dev: true /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true + + /util.promisify/1.0.0: + resolution: {integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==} + dependencies: + define-properties: 1.2.0 + object.getownpropertydescriptors: 2.1.5 + dev: false + + /utils-merge/1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + dev: false + + /uuid/3.3.2: + resolution: {integrity: sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==} + 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. + hasBin: true + dev: false /uuid/3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} @@ -3363,6 +4483,29 @@ packages: hasBin: true dev: true + /uuidv4/2.0.0: + resolution: {integrity: sha512-sAUlwUVepcVk6bwnaW/oi6LCwMdueako5QQzRr90ioAVVcms6p1mV0PaSxK8gyAC4CRvKddsk217uUpZUbKd2Q==} + dependencies: + sha-1: 0.1.1 + uuid: 3.3.2 + dev: false + + /uuidv4/3.0.1: + resolution: {integrity: sha512-PPzksdWRl2a5C9hrs3OOYrArTeyoR0ftJ3jtOy+BnVHkT2UlrrzPNt9nTdiGuxmQItHM/AcTXahwZZC57Njojg==} + dependencies: + uuid: 3.3.2 + dev: false + + /varname/2.0.3: + resolution: {integrity: sha512-+DofT9mJAUALhnr9ipZ5Z2icwaEZ7DAajOZT4ffXy3MQqnXtG3b7atItLQEJCkfcJTOf9WcsywneOEibD4eqJg==} + engines: {node: '>=0.10'} + dev: false + + /vary/1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + dev: false + /verror/1.10.0: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} @@ -3531,6 +4674,28 @@ packages: resolution: {integrity: sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==} dev: true + /which-boxed-primitive/1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: false + + /which-typed-array/1.1.9: + resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + is-typed-array: 1.1.10 + dev: false + /which/1.2.4: resolution: {integrity: sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==} hasBin: true @@ -3594,6 +4759,20 @@ packages: typedarray-to-buffer: 3.1.5 dev: true + /ws/6.2.0: + resolution: {integrity: sha512-deZYUNlt2O4buFCa3t5bKLf8A7FPP/TVjwOeVNpw818Ma5nk4MLXls2eoEGS39o8119QIYxTrTDoPQ5B/gTD6w==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + async-limiter: 1.0.1 + dev: false + /ws/8.12.0: resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} engines: {node: '>=10.0.0'} diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..3477d54 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,3 @@ +module.exports = { + content: ["./src/*.html", "./src/**/*.{vue,js,ts}"], +}; From 7ac499b0a466363a976a94ce0d375b359eaf8979 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 17 Mar 2023 20:24:42 +0300 Subject: [PATCH 023/329] Add tab class --- src/storage/tab.ts | 56 +++++++++++++++++++++++++++++++++++++++++++++ src/utils/common.ts | 3 +++ 2 files changed, 59 insertions(+) create mode 100644 src/storage/tab.ts create mode 100644 src/utils/common.ts diff --git a/src/storage/tab.ts b/src/storage/tab.ts new file mode 100644 index 0000000..74f3c1a --- /dev/null +++ b/src/storage/tab.ts @@ -0,0 +1,56 @@ +import { todayLocalDate } from "../utils/common"; + +export class Tab { + url: string; + favicon: string; + summaryTime: number = 0; + counter: number = 0 + days: TabDay[] = []; + + constructor(url: string, favicon: string){ + this.url = url; + this.favicon = favicon; + } + + incSummaryTime() :void { + this.summaryTime += 1; + + const day = this.days.find(x => x.date == todayLocalDate()); + if (day === undefined) + this.addNewDay(); + else day.incSummaryTime(); + } + + incCounter() :void { + this.counter +=1; + const day = this.days.find(x => x.date == todayLocalDate()); + if (day === undefined) + this.addNewDay(); + else day.incCounter() + } + + addNewDay() :void { + const newTabDay = new TabDay(todayLocalDate()); + this.days.push(newTabDay); + } +} + +export class TabDay { + counter: number; + date: string; + summary: number; + + constructor(date: string){ + this.date = date; + this.counter = 1; + this.summary = 1; + } + + incSummaryTime() :void { + this.summary += 1; + } + + incCounter() :void { + this.counter += 1; + } +} \ No newline at end of file diff --git a/src/utils/common.ts b/src/utils/common.ts new file mode 100644 index 0000000..c07bfef --- /dev/null +++ b/src/utils/common.ts @@ -0,0 +1,3 @@ +export function todayLocalDate(){ + return new Date().toLocaleDateString('en-US'); +} \ No newline at end of file From 0f0ecd7b6501425cb92d9eeadb916b957667c79a Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 19 Mar 2023 15:30:26 +0300 Subject: [PATCH 024/329] Using local storage --- src/storage/local-storage.ts | 29 +++++++++++++++++++++++++++++ src/storage/storage-params.ts | 15 +++++++++++++++ src/storage/storage.ts | 9 +++++++++ 3 files changed, 53 insertions(+) create mode 100644 src/storage/local-storage.ts create mode 100644 src/storage/storage-params.ts create mode 100644 src/storage/storage.ts diff --git a/src/storage/local-storage.ts b/src/storage/local-storage.ts new file mode 100644 index 0000000..cd5b2b5 --- /dev/null +++ b/src/storage/local-storage.ts @@ -0,0 +1,29 @@ +import { IStorage } from "./storage"; +import { StorageParams } from "./storage-params"; +import { Tab } from "./tab"; +import Browser from 'webextension-polyfill'; + +export class LocalStorage implements IStorage { + getTabs(): Promise { + return new Promise(async resolve => { + const { tabs } = await Browser.storage.local.get(StorageParams.TABS); + if (tabs != undefined) + return resolve(tabs); + else resolve([]); + }); + } + + saveTabs(value: Tab[]): Promise { + return Browser.storage.local.set({ tabs: value }); + } + + saveValue(name: StorageParams, value: object): Promise { + return Browser.storage.local.set({ + [name]: value + }); + } + + getValue(name: StorageParams): Promise { + return Browser.storage.local.get(name); + } +} \ No newline at end of file diff --git a/src/storage/storage-params.ts b/src/storage/storage-params.ts new file mode 100644 index 0000000..d11d03d --- /dev/null +++ b/src/storage/storage-params.ts @@ -0,0 +1,15 @@ +export enum StorageParams { + TABS = 'tabs', + BLACK_LIST = 'black_list', + RESTRICTION_LIST = 'restriction_list', + NOTIFICATION_LIST = 'notification_list', + NOTIFICATION_MESSAGE = 'notification_message', + TIMEINTERVAL_LIST = 'time_interval', + INTERVAL_INACTIVITY = 'inactivity_interval', + INTERVAL_SAVE_STORAGE = 'interval_save_in_storage', + INTERVAL_RANGE = 'range_days', + DARK_MODE = 'night_mode', + VIEW_TIME_IN_BADGE = 'view_time_in_badge', + BLOCK_DEFERRAL = 'view_block_deferral', + SHOW_HINT = 'show_hint', +} \ No newline at end of file diff --git a/src/storage/storage.ts b/src/storage/storage.ts new file mode 100644 index 0000000..cfd2014 --- /dev/null +++ b/src/storage/storage.ts @@ -0,0 +1,9 @@ +import { StorageParams } from "./storage-params"; +import { Tab } from "./tab"; + +export interface IStorage { + getTabs(): Promise; + saveTabs(value:Tab[]): Promise; + saveValue(name:StorageParams, value: object): Promise; + getValue(name:StorageParams): Promise; +} \ No newline at end of file From 5f768863ec6c5cff89a7b276f9e46daf50345d88 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Mar 2023 16:31:56 +0300 Subject: [PATCH 025/329] Add tabs repository --- src/repository/inject-tabs-repository.ts | 6 ++++++ src/repository/tabs-repository-interface.ts | 7 ++++++ src/repository/tabs-repository.ts | 24 +++++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 src/repository/inject-tabs-repository.ts create mode 100644 src/repository/tabs-repository-interface.ts create mode 100644 src/repository/tabs-repository.ts diff --git a/src/repository/inject-tabs-repository.ts b/src/repository/inject-tabs-repository.ts new file mode 100644 index 0000000..ccd574e --- /dev/null +++ b/src/repository/inject-tabs-repository.ts @@ -0,0 +1,6 @@ +import { ITabsRepository } from "./tabs-repository-interface"; +import { TabsRepository } from "./tabs-repository"; + +export async function injectTabsRepository(): Promise { + return await TabsRepository.Create(); + } \ No newline at end of file diff --git a/src/repository/tabs-repository-interface.ts b/src/repository/tabs-repository-interface.ts new file mode 100644 index 0000000..5a5f6d0 --- /dev/null +++ b/src/repository/tabs-repository-interface.ts @@ -0,0 +1,7 @@ +import { Tab } from "../storage/tab"; +import Browser from 'webextension-polyfill'; + +export interface ITabsRepository { + getTab(domain:string): Promise; + addTab(value:Browser.Tabs.Tab): Promise; +} \ No newline at end of file diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts new file mode 100644 index 0000000..d7da303 --- /dev/null +++ b/src/repository/tabs-repository.ts @@ -0,0 +1,24 @@ +import { ITabsRepository } from "./tabs-repository-interface"; +import { Tab } from "../storage/tab"; +import Browser from 'webextension-polyfill'; +import { injecStorage } from "../storage/inject-storage"; + +export class TabsRepository implements ITabsRepository { + static tabs: Tab[]; + + constructor(){} + + static async Create(): Promise { + const instance = new TabsRepository(); + this.tabs = await injecStorage().getTabs(); + return instance; + } + + getTab(domain: string): Promise { + throw new Error("Method not implemented."); + } + + addTab(value: Browser.Tabs.Tab): Promise { + throw new Error("Method not implemented."); + } +} \ No newline at end of file From 142b0bdd35c8d4bd590dc9977a07fffefeac7843 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Mar 2023 16:32:44 +0300 Subject: [PATCH 026/329] Add content script for tracking --- src/background.ts | 2 +- src/manifest.json | 12 ++++++++++-- src/tracker.ts | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 src/tracker.ts diff --git a/src/background.ts b/src/background.ts index 4fee7ac..4668128 100644 --- a/src/background.ts +++ b/src/background.ts @@ -1,6 +1,6 @@ import browser from "webextension-polyfill"; -console.log("Hello from the background!"); +console.log("Start background script"); browser.runtime.onInstalled.addListener((details) => { console.log("Extension installed:", details); diff --git a/src/manifest.json b/src/manifest.json index 7558d2a..9ecdfad 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -3,8 +3,8 @@ "{{firefox}}.manifest_version": 2, "name": "Web Activity Time Tracker", "short_name": "Web Tracker", - "version": "1.7.2", - "description": "Track and limit time your activity in the browser every day.", + "version": "2.0.0", + "description": "Track and limit time your activity in the browser every day. Control how much time you spend on websites.", "options_page": "src/options.html", "icons": { "16": "src/icons/16x16.png", @@ -27,6 +27,14 @@ "https://www.netflix.com/*" ], "offline_enabled": true, + "content_scripts": [ + { + "matches": ["*://*/*"], + "js": ["src/tracker.ts"], + "all_frames": true, + "run_at": "document_start" + } + ], "background": { "{{chrome}}.service_worker": "src/background.ts", "{{firefox}}.scripts": ["src/background.ts"] diff --git a/src/tracker.ts b/src/tracker.ts new file mode 100644 index 0000000..c644435 --- /dev/null +++ b/src/tracker.ts @@ -0,0 +1,36 @@ +import Browser from 'webextension-polyfill'; +import { isValidPage } from './compositions/valid-page'; +import { extractHostname } from './compositions/extract-hostname'; + +export async function initTracker(){ + const window = await Browser.windows.getLastFocused({ populate: true }); + if (window.focused){ + const activeTab = window.tabs?.find(t => t.active === true); + if (isValidPage(activeTab)) { + var activeUrl = extractHostname(activeTab?.url); + var tab = activity.getTab(activeUrl); + if (tab === undefined) { + activity.addTab(activeTab); + } + + if (activity.isInBlackList(activeUrl)) { + chrome.action.setBadgeBackgroundColor({ color: '#fdb8b8' }) + chrome.action.setBadgeText({ + tabId: activeTab.id, + text: 'n/a' + }); + } else { + if (tab !== undefined) { + if (currentTab !== tab.url) { + activity.setCurrentActiveTab(tab.url); + } + chrome.idle.queryState(parseInt(setting_interval_inactivity), function(state) { + if (state === 'active') { + mainTRacker(activeUrl, tab, activeTab); + } else checkDOM(state, activeUrl, tab, activeTab); + }); + } + } + } + } else activity.closeIntervalForCurrentTab(); +} \ No newline at end of file From 46c6b6d775930f77029f6cca4d8d41fbddd39907 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Mar 2023 16:39:23 +0300 Subject: [PATCH 027/329] Injecting storage --- src/compositions/extract-hostname.ts | 16 ++++++++++++++++ src/compositions/valid-page.ts | 11 +++++++++++ src/storage/inject-storage.ts | 6 ++++++ src/storage/local-storage.ts | 2 +- src/storage/{storage.ts => storage-interface.ts} | 0 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/compositions/extract-hostname.ts create mode 100644 src/compositions/valid-page.ts create mode 100644 src/storage/inject-storage.ts rename src/storage/{storage.ts => storage-interface.ts} (100%) diff --git a/src/compositions/extract-hostname.ts b/src/compositions/extract-hostname.ts new file mode 100644 index 0000000..8877297 --- /dev/null +++ b/src/compositions/extract-hostname.ts @@ -0,0 +1,16 @@ +export function extractHostname(url:string | undefined):string { + let hostname; + if (url == undefined) return ''; + + if (url.indexOf("//") > -1) { + hostname = url.split('/')[2]; + } + else { + hostname = url.split('/')[0]; + } + + hostname = hostname.split(':')[0]; + hostname = hostname.split('?')[0]; + + return hostname; +} \ No newline at end of file diff --git a/src/compositions/valid-page.ts b/src/compositions/valid-page.ts new file mode 100644 index 0000000..ebc5fa9 --- /dev/null +++ b/src/compositions/valid-page.ts @@ -0,0 +1,11 @@ +import Browser from 'webextension-polyfill'; + +export function isValidPage(tab: Browser.Tabs.Tab): boolean{ + if (tab == null || tab == undefined || !tab.url) return false; + + if ((tab.url.indexOf('http:') == -1 && tab.url.indexOf('https:') == -1) + || tab.url.indexOf('chrome://') !== -1 + || tab.url.indexOf('chrome-extension://') !== -1) + return false; + return true; +} \ No newline at end of file diff --git a/src/storage/inject-storage.ts b/src/storage/inject-storage.ts new file mode 100644 index 0000000..80711d1 --- /dev/null +++ b/src/storage/inject-storage.ts @@ -0,0 +1,6 @@ +import { LocalStorage } from "./local-storage"; +import { IStorage } from "./storage-interface"; + +export function injecStorage(): IStorage { + return new LocalStorage(); + } \ No newline at end of file diff --git a/src/storage/local-storage.ts b/src/storage/local-storage.ts index cd5b2b5..214b2ea 100644 --- a/src/storage/local-storage.ts +++ b/src/storage/local-storage.ts @@ -1,4 +1,4 @@ -import { IStorage } from "./storage"; +import { IStorage } from "./storage-interface"; import { StorageParams } from "./storage-params"; import { Tab } from "./tab"; import Browser from 'webextension-polyfill'; diff --git a/src/storage/storage.ts b/src/storage/storage-interface.ts similarity index 100% rename from src/storage/storage.ts rename to src/storage/storage-interface.ts From ba8ee299506cdfd48fe4026893fa902b8536e5a0 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 25 Mar 2023 18:47:52 +0300 Subject: [PATCH 028/329] Setting badge function --- src/compositions/set-badge.ts | 10 ++++++++++ src/compositions/types.ts | 11 +++++++++++ 2 files changed, 21 insertions(+) create mode 100644 src/compositions/set-badge.ts create mode 100644 src/compositions/types.ts diff --git a/src/compositions/set-badge.ts b/src/compositions/set-badge.ts new file mode 100644 index 0000000..aa6a10a --- /dev/null +++ b/src/compositions/set-badge.ts @@ -0,0 +1,10 @@ +import Browser from "webextension-polyfill"; +import { BadgeState } from "./types"; + +export function useBadge(badge:BadgeState): void{ + Browser.action.setBadgeBackgroundColor({ color: badge.color }) + Browser.action.setBadgeText({ + tabId: badge.tabId, + text: badge.text + }); +} \ No newline at end of file diff --git a/src/compositions/types.ts b/src/compositions/types.ts new file mode 100644 index 0000000..7b663ad --- /dev/null +++ b/src/compositions/types.ts @@ -0,0 +1,11 @@ +export interface BadgeState { + color: BadgeColor; + tabId: number; + text: string; +} + +export enum BadgeColor { + red = '#fdb8b8', + green = '#e7e7e7', + none = '#000' +} \ No newline at end of file From 1ea300d2bef881c94c7c969f52b8c93fc6d4dd56 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 25 Mar 2023 18:48:43 +0300 Subject: [PATCH 029/329] Continuation of tracker changes --- src/compositions/black-list.ts | 8 ++++ src/compositions/valid-page.ts | 4 +- src/repository/tabs-repository-interface.ts | 4 +- src/repository/tabs-repository.ts | 50 ++++++++++++++++----- src/tracker.ts | 32 +++++++------ 5 files changed, 67 insertions(+), 31 deletions(-) create mode 100644 src/compositions/black-list.ts diff --git a/src/compositions/black-list.ts b/src/compositions/black-list.ts new file mode 100644 index 0000000..cf34ca4 --- /dev/null +++ b/src/compositions/black-list.ts @@ -0,0 +1,8 @@ +import { injecStorage } from "../storage/inject-storage"; +import { StorageParams } from "../storage/storage-params"; + +export async function isInBlackList(url: string): Promise{ + const storage = injecStorage(); + const blackList = await storage.getValue(StorageParams.BLACK_LIST) as string[]; + return blackList.indexOf(url) != -1 ? true : false; +} \ No newline at end of file diff --git a/src/compositions/valid-page.ts b/src/compositions/valid-page.ts index ebc5fa9..4f1f2ca 100644 --- a/src/compositions/valid-page.ts +++ b/src/compositions/valid-page.ts @@ -1,7 +1,7 @@ import Browser from 'webextension-polyfill'; -export function isValidPage(tab: Browser.Tabs.Tab): boolean{ - if (tab == null || tab == undefined || !tab.url) return false; +export function isValidPage(tab: Browser.Tabs.Tab | undefined): boolean{ + if (tab == null || tab == undefined || !tab.url || !tab.id) return false; if ((tab.url.indexOf('http:') == -1 && tab.url.indexOf('https:') == -1) || tab.url.indexOf('chrome://') !== -1 diff --git a/src/repository/tabs-repository-interface.ts b/src/repository/tabs-repository-interface.ts index 5a5f6d0..c423f8d 100644 --- a/src/repository/tabs-repository-interface.ts +++ b/src/repository/tabs-repository-interface.ts @@ -2,6 +2,6 @@ import { Tab } from "../storage/tab"; import Browser from 'webextension-polyfill'; export interface ITabsRepository { - getTab(domain:string): Promise; - addTab(value:Browser.Tabs.Tab): Promise; + getTab(domain:string): Tab | undefined; + addTab(tab:Browser.Tabs.Tab): Promise; } \ No newline at end of file diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts index d7da303..ae92f01 100644 --- a/src/repository/tabs-repository.ts +++ b/src/repository/tabs-repository.ts @@ -2,23 +2,53 @@ import { ITabsRepository } from "./tabs-repository-interface"; import { Tab } from "../storage/tab"; import Browser from 'webextension-polyfill'; import { injecStorage } from "../storage/inject-storage"; +import { isValidPage } from '../compositions/valid-page'; +import { isInBlackList } from "../compositions/black-list"; +import { extractHostname } from "../compositions/extract-hostname"; export class TabsRepository implements ITabsRepository { - static tabs: Tab[]; + private tabs: Tab[]; - constructor(){} + constructor() { + this.tabs = []; + } - static async Create(): Promise { - const instance = new TabsRepository(); + async initAsync(){ this.tabs = await injecStorage().getTabs(); - return instance; - } + } - getTab(domain: string): Promise { - throw new Error("Method not implemented."); + getTab(domain: string): Tab | undefined { + const tab = this.tabs?.find(x => x.url === domain); + return !tab ? tab : undefined; } - addTab(value: Browser.Tabs.Tab): Promise { - throw new Error("Method not implemented."); + async addTab(tab: Browser.Tabs.Tab): Promise { + if (isValidPage(tab)) { + if (tab.id && (tab.id != 0)) { + tabs = tabs || []; + var domain = extractHostname(tab.url); + var isDifferentUrl = false; + if (currentTab !== tab.url) { + isDifferentUrl = true; + } + + if (this.isNewUrl(domain) && !await isInBlackList(domain)) { + var favicon = tab.favIconUrl; + if (favicon === undefined) { + favicon = 'chrome://favicon/' + domain; + } + var newTab = new Tab(domain, favicon); + tabs.push(newTab); + } + + if (isDifferentUrl && await !isInBlackList(domain)) { + this.setCurrentActiveTab(domain); + var tabUrl = this.getTab(domain); + if (tabUrl !== undefined) + tabUrl.incCounter(); + this.addTimeInterval(domain); + } + } + } else this.closeIntervalForCurrentTab(); } } \ No newline at end of file diff --git a/src/tracker.ts b/src/tracker.ts index c644435..ddcae3e 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -1,36 +1,34 @@ import Browser from 'webextension-polyfill'; import { isValidPage } from './compositions/valid-page'; import { extractHostname } from './compositions/extract-hostname'; +import { injectTabsRepository } from './repository/inject-tabs-repository'; +import { isInBlackList } from './compositions/black-list'; +import { useBadge } from './compositions/set-badge'; +import { BadgeColor } from './compositions/types'; export async function initTracker(){ const window = await Browser.windows.getLastFocused({ populate: true }); if (window.focused){ const activeTab = window.tabs?.find(t => t.active === true); if (isValidPage(activeTab)) { - var activeUrl = extractHostname(activeTab?.url); - var tab = activity.getTab(activeUrl); - if (tab === undefined) { - activity.addTab(activeTab); - } + const activeUrl = extractHostname(activeTab!.url); + + if (await isInBlackList(activeUrl)) { + useBadge({ tabId: activeTab!.id!, text: 'n/a', color: BadgeColor.green }); + } else{ + const repo = await injectTabsRepository(); + let tab = repo.getTab(activeUrl); + if (tab === undefined) + tab = await repo.addTab(activeTab!); - if (activity.isInBlackList(activeUrl)) { - chrome.action.setBadgeBackgroundColor({ color: '#fdb8b8' }) - chrome.action.setBadgeText({ - tabId: activeTab.id, - text: 'n/a' - }); - } else { - if (tab !== undefined) { if (currentTab !== tab.url) { activity.setCurrentActiveTab(tab.url); } - chrome.idle.queryState(parseInt(setting_interval_inactivity), function(state) { + const state = await Browser.idle.queryState(parseInt(setting_interval_inactivity)); if (state === 'active') { mainTRacker(activeUrl, tab, activeTab); } else checkDOM(state, activeUrl, tab, activeTab); - }); - } } - } + } } else activity.closeIntervalForCurrentTab(); } \ No newline at end of file From edc7b84f58e3f91dfc33f44b6068ed3bb879ea6c Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Apr 2023 13:33:59 +0300 Subject: [PATCH 030/329] Add time intervals (add and close interval) --- src/compositions/daily-intervals.ts | 35 +++++++++++++++++++++++++++++ src/{storage => entity}/tab.ts | 0 src/entity/time-interval.ts | 32 ++++++++++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 src/compositions/daily-intervals.ts rename src/{storage => entity}/tab.ts (100%) create mode 100644 src/entity/time-interval.ts diff --git a/src/compositions/daily-intervals.ts b/src/compositions/daily-intervals.ts new file mode 100644 index 0000000..8445a08 --- /dev/null +++ b/src/compositions/daily-intervals.ts @@ -0,0 +1,35 @@ +import { TimeInterval } from "../entity/time-interval"; +import { injecStorage } from "../storage/inject-storage"; +import { StorageParams } from "../storage/storage-params"; +import { todayLocalDate } from "../utils/common"; + +export async function closeInterval(domain:string | null): Promise{ + if (domain == null) return; + const storage = injecStorage(); + const timeIntervalList = await storage.getValue(StorageParams.TIMEINTERVAL_LIST) as TimeInterval[]; + const item = timeIntervalList.find(x => x.domain === domain && x.day == todayLocalDate()); + item?.closeInterval(); + await storage.saveValue(StorageParams.TIMEINTERVAL_LIST, timeIntervalList); +} + +export async function addInterval(domain:string | null): Promise{ + if (domain == null) return; + + const storage = injecStorage(); + const timeIntervalList = await storage.getValue(StorageParams.TIMEINTERVAL_LIST) as TimeInterval[]; + const item = timeIntervalList.find(x => x.domain === domain && x.day == todayLocalDate()); + if (item != undefined) { + if (item.day == todayLocalDate()) + item.addInterval(); + else { + const newInterval = new TimeInterval(todayLocalDate(), domain); + newInterval.addInterval(); + timeIntervalList.push(newInterval); + } + } else { + const newInterval = new TimeInterval(todayLocalDate(), domain); + newInterval.addInterval(); + timeIntervalList.push(newInterval); + } + await storage.saveValue(StorageParams.TIMEINTERVAL_LIST, timeIntervalList); +} \ No newline at end of file diff --git a/src/storage/tab.ts b/src/entity/tab.ts similarity index 100% rename from src/storage/tab.ts rename to src/entity/tab.ts diff --git a/src/entity/time-interval.ts b/src/entity/time-interval.ts new file mode 100644 index 0000000..69329b1 --- /dev/null +++ b/src/entity/time-interval.ts @@ -0,0 +1,32 @@ +export class TimeInterval { + domain: string; + intervals: any; + day: string; + + constructor(day:string, domain:string) { + this.domain = domain; + this.intervals = []; + this.day = day; + } + + addInterval() { + const stringDate = this.getCurrentStringDate(); + this.intervals.push(stringDate + '-' + stringDate); + } + + closeInterval() { + const stringDate = this.getCurrentStringDate(); + const currentInterval = this.intervals[this.intervals.length - 1]; + if (!currentInterval) { + if (currentInterval.split('-')[0] == currentInterval.split('-')[1]) { + this.intervals.pop(); + this.intervals.push(currentInterval.split('-')[0] + '-' + stringDate); + } + } + } + + private getCurrentStringDate():string{ + const date = new Date(); + return date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds(); + } +}; \ No newline at end of file From ddafdd4241a3177af6eb7ca6507a54e33a5de0fc Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 6 Apr 2023 12:22:00 +0100 Subject: [PATCH 031/329] Get current tab function --- src/compositions/current-tab.ts | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/compositions/current-tab.ts diff --git a/src/compositions/current-tab.ts b/src/compositions/current-tab.ts new file mode 100644 index 0000000..fa670ad --- /dev/null +++ b/src/compositions/current-tab.ts @@ -0,0 +1,8 @@ +import Browser from 'webextension-polyfill'; + +export async function getCurrentTab(){ + const tabs = await Browser.tabs.query({ active: true, currentWindow: true }); + // since only one tab should be active and in the current window at once + // the return variable should only have one entry + return tabs[0]; +} \ No newline at end of file From 9a17910e91fc2f30203c356c6b42b85cc5109290 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 5 Apr 2023 12:22:00 +0100 Subject: [PATCH 032/329] Tab repository --- src/repository/inject-tabs-repository.ts | 4 +- src/repository/tabs-repository-interface.ts | 2 +- src/repository/tabs-repository.ts | 50 +++++++++++---------- 3 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/repository/inject-tabs-repository.ts b/src/repository/inject-tabs-repository.ts index ccd574e..f125841 100644 --- a/src/repository/inject-tabs-repository.ts +++ b/src/repository/inject-tabs-repository.ts @@ -2,5 +2,7 @@ import { ITabsRepository } from "./tabs-repository-interface"; import { TabsRepository } from "./tabs-repository"; export async function injectTabsRepository(): Promise { - return await TabsRepository.Create(); + const repo = new TabsRepository(); + await repo.initAsync(); + return repo; } \ No newline at end of file diff --git a/src/repository/tabs-repository-interface.ts b/src/repository/tabs-repository-interface.ts index c423f8d..087e9f6 100644 --- a/src/repository/tabs-repository-interface.ts +++ b/src/repository/tabs-repository-interface.ts @@ -3,5 +3,5 @@ import Browser from 'webextension-polyfill'; export interface ITabsRepository { getTab(domain:string): Tab | undefined; - addTab(tab:Browser.Tabs.Tab): Promise; + addTab(tab:Browser.Tabs.Tab): void; } \ No newline at end of file diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts index ae92f01..1a1b723 100644 --- a/src/repository/tabs-repository.ts +++ b/src/repository/tabs-repository.ts @@ -1,16 +1,19 @@ import { ITabsRepository } from "./tabs-repository-interface"; -import { Tab } from "../storage/tab"; +import { Tab } from "../entity/tab"; import Browser from 'webextension-polyfill'; import { injecStorage } from "../storage/inject-storage"; import { isValidPage } from '../compositions/valid-page'; import { isInBlackList } from "../compositions/black-list"; import { extractHostname } from "../compositions/extract-hostname"; +import { addInterval, closeInterval } from "../compositions/daily-intervals"; export class TabsRepository implements ITabsRepository { private tabs: Tab[]; + private currentTabDomain: string | null; constructor() { this.tabs = []; + this.currentTabDomain = null; } async initAsync(){ @@ -22,33 +25,34 @@ export class TabsRepository implements ITabsRepository { return !tab ? tab : undefined; } - async addTab(tab: Browser.Tabs.Tab): Promise { + async addTab(tab: Browser.Tabs.Tab): Promise { if (isValidPage(tab)) { if (tab.id && (tab.id != 0)) { - tabs = tabs || []; - var domain = extractHostname(tab.url); - var isDifferentUrl = false; - if (currentTab !== tab.url) { - isDifferentUrl = true; - } + const domain = extractHostname(tab.url); + const tabFromStorage = this.getTab(domain); + const isInBlackListFlag = await isInBlackList(domain); - if (this.isNewUrl(domain) && !await isInBlackList(domain)) { - var favicon = tab.favIconUrl; - if (favicon === undefined) { - favicon = 'chrome://favicon/' + domain; + if (!isInBlackListFlag){ + if (!tabFromStorage) { + let favicon = tab.favIconUrl; + if (!favicon) { + favicon = 'chrome://favicon/' + domain; + } + this.tabs.push(new Tab(domain, favicon)); + } + else { + tabFromStorage.incCounter(); + if (this.currentTabDomain != domain) this.setCurrentActiveTab(domain); + await closeInterval(this.currentTabDomain); + await addInterval(this.currentTabDomain); } - var newTab = new Tab(domain, favicon); - tabs.push(newTab); - } - - if (isDifferentUrl && await !isInBlackList(domain)) { - this.setCurrentActiveTab(domain); - var tabUrl = this.getTab(domain); - if (tabUrl !== undefined) - tabUrl.incCounter(); - this.addTimeInterval(domain); } + else await closeInterval(this.currentTabDomain); } - } else this.closeIntervalForCurrentTab(); + } else await closeInterval(this.currentTabDomain); + } + + private setCurrentActiveTab(domain:string){ + this.currentTabDomain = domain; } } \ No newline at end of file From 20e228810aa7960a659ffff11ef36ebee1c72390 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 8 Apr 2023 16:49:38 +0300 Subject: [PATCH 033/329] Update package.json scripts --- package.json | 5 ++++- src/repository/tabs-repository-interface.ts | 4 ++-- src/storage/local-storage.ts | 2 +- src/storage/storage-interface.ts | 2 +- vite.config.ts | 12 ++++++++++-- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 2b61a4f..e2078fc 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,10 @@ "type": "module", "scripts": { "dev": "vite build --mode development --watch", - "build": "vue-tsc && vite build" + "start": "vite build --watch --mode production", + "build": "pnpm compile && vite build --mode production", + "script:build": "powershell scripts/build.ps1", + "script:zip": "powershell scripts/zip.ps1" }, "dependencies": { "tailwind": "^4.0.0", diff --git a/src/repository/tabs-repository-interface.ts b/src/repository/tabs-repository-interface.ts index 087e9f6..5eeb7c1 100644 --- a/src/repository/tabs-repository-interface.ts +++ b/src/repository/tabs-repository-interface.ts @@ -1,7 +1,7 @@ -import { Tab } from "../storage/tab"; +import { Tab } from "../entity/tab"; import Browser from 'webextension-polyfill'; export interface ITabsRepository { getTab(domain:string): Tab | undefined; - addTab(tab:Browser.Tabs.Tab): void; + addTab(tab:Browser.Tabs.Tab): Promise; } \ No newline at end of file diff --git a/src/storage/local-storage.ts b/src/storage/local-storage.ts index 214b2ea..05c5961 100644 --- a/src/storage/local-storage.ts +++ b/src/storage/local-storage.ts @@ -1,6 +1,6 @@ import { IStorage } from "./storage-interface"; import { StorageParams } from "./storage-params"; -import { Tab } from "./tab"; +import { Tab } from "../entity/tab"; import Browser from 'webextension-polyfill'; export class LocalStorage implements IStorage { diff --git a/src/storage/storage-interface.ts b/src/storage/storage-interface.ts index cfd2014..151a77b 100644 --- a/src/storage/storage-interface.ts +++ b/src/storage/storage-interface.ts @@ -1,5 +1,5 @@ import { StorageParams } from "./storage-params"; -import { Tab } from "./tab"; +import { Tab } from "../entity/tab"; export interface IStorage { getTabs(): Promise; diff --git a/vite.config.ts b/vite.config.ts index cccbdb2..059c44a 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -14,7 +14,12 @@ function generateManifest() { } // https://vitejs.dev/config/ -export default defineConfig({ +export default defineConfig(({ mode }) => ({ + build: { + emptyOutDir: true, + sourcemap: mode === 'development' ? 'inline' : false, + minify: false, + }, plugins: [ vue(), webExtension({ @@ -22,4 +27,7 @@ export default defineConfig({ watchFilePaths: ["package.json", "manifest.json"], }), ], -}); + optimizeDeps: { + include: ['vue', 'webextension-polyfill'], + }, +})); From 9573fa8673b2acf472198f391fbcf9fb23ac177c Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 8 Apr 2023 16:50:17 +0300 Subject: [PATCH 034/329] Tab repository as singleton --- src/repository/inject-tabs-repository.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/repository/inject-tabs-repository.ts b/src/repository/inject-tabs-repository.ts index f125841..ee7c827 100644 --- a/src/repository/inject-tabs-repository.ts +++ b/src/repository/inject-tabs-repository.ts @@ -1,8 +1,18 @@ import { ITabsRepository } from "./tabs-repository-interface"; import { TabsRepository } from "./tabs-repository"; +let instanse: ITabsRepository | null = null; + +async function createAndInitInstance() { + let repo = new TabsRepository(); + await repo.initAsync(); + return repo; +} + export async function injectTabsRepository(): Promise { - const repo = new TabsRepository(); - await repo.initAsync(); - return repo; - } \ No newline at end of file + if (instanse == null) { + console.log("test"); + instanse = await createAndInitInstance(); + } + return instanse; +} From 3000a781dce82600a35b515db0e7dfae5d2564d9 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 4 Apr 2023 12:12:00 +0100 Subject: [PATCH 035/329] Remove flag "all_frames" from manifest for content-script --- src/manifest.json | 1 - 1 file changed, 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index 9ecdfad..4022d17 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -31,7 +31,6 @@ { "matches": ["*://*/*"], "js": ["src/tracker.ts"], - "all_frames": true, "run_at": "document_start" } ], From d8e73a4dfc547dfd0864a2811ee6b3f8b13eaa16 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 8 Apr 2023 17:50:31 +0300 Subject: [PATCH 036/329] Fix getting data from storage --- src/storage/local-storage.ts | 7 ++++--- src/storage/storage-interface.ts | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/storage/local-storage.ts b/src/storage/local-storage.ts index 05c5961..54f6aba 100644 --- a/src/storage/local-storage.ts +++ b/src/storage/local-storage.ts @@ -17,13 +17,14 @@ export class LocalStorage implements IStorage { return Browser.storage.local.set({ tabs: value }); } - saveValue(name: StorageParams, value: object): Promise { + saveValue(name: StorageParams, value: any): Promise { return Browser.storage.local.set({ [name]: value }); } - getValue(name: StorageParams): Promise { - return Browser.storage.local.get(name); + async getValue(name: StorageParams): Promise { + const value = await Browser.storage.local.get(name); + return value[name]; } } \ No newline at end of file diff --git a/src/storage/storage-interface.ts b/src/storage/storage-interface.ts index 151a77b..e92645a 100644 --- a/src/storage/storage-interface.ts +++ b/src/storage/storage-interface.ts @@ -4,6 +4,6 @@ import { Tab } from "../entity/tab"; export interface IStorage { getTabs(): Promise; saveTabs(value:Tab[]): Promise; - saveValue(name:StorageParams, value: object): Promise; - getValue(name:StorageParams): Promise; + saveValue(name:StorageParams, value: any): Promise; + getValue(name:StorageParams): Promise; } \ No newline at end of file From 71d0cb26a872a0466645cca80ae05187557298fb Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 9 Apr 2023 18:59:28 +0300 Subject: [PATCH 037/329] Add store (pinia) with current tab url --- package.json | 5 +++++ pnpm-lock.yaml | 40 +++++++++++++++++++++++++++++++++++++++- src/store/appStore.ts | 12 ++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 src/store/appStore.ts diff --git a/package.json b/package.json index e2078fc..ad159ea 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,10 @@ "private": true, "version": "1.0.0", "type": "module", + "engines": { + "node": ">=16.15.0", + "pnpm": ">=7" + }, "scripts": { "dev": "vite build --mode development --watch", "start": "vite build --watch --mode production", @@ -11,6 +15,7 @@ "script:zip": "powershell scripts/zip.ps1" }, "dependencies": { + "pinia": "^2.0.34", "tailwind": "^4.0.0", "vue": "^3.2.47" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d8e9205..f141d93 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,6 +3,7 @@ lockfileVersion: 5.4 specifiers: '@types/webextension-polyfill': ^0.10.0 '@vitejs/plugin-vue': ^4.0.0 + pinia: ^2.0.34 tailwind: ^4.0.0 typescript: ^4.9.5 vite: ^4.1.4 @@ -12,6 +13,7 @@ specifiers: webextension-polyfill: ^0.10.0 dependencies: + pinia: 2.0.34_hmuptsblhheur2tugfgucj7gc4 tailwind: 4.0.0 vue: 3.2.47 @@ -515,6 +517,10 @@ packages: '@vue/compiler-dom': 3.2.47 '@vue/shared': 3.2.47 + /@vue/devtools-api/6.5.0: + resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} + dev: false + /@vue/reactivity-transform/3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} dependencies: @@ -3480,6 +3486,24 @@ packages: /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /pinia/2.0.34_hmuptsblhheur2tugfgucj7gc4: + resolution: {integrity: sha512-cgOoGUiyqX0SSgX8XelK9+Ri4XA2/YyNtgjogwfzIx1g7iZTaZPxm7/bZYMCLU2qHRiHhxG7SuQO0eBacFNc2Q==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.2.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + dependencies: + '@vue/devtools-api': 6.5.0 + typescript: 4.9.5 + vue: 3.2.47 + vue-demi: 0.13.11_vue@3.2.47 + dev: false + /pino-abstract-transport/1.0.0: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} dependencies: @@ -4379,7 +4403,6 @@ packages: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} hasBin: true - dev: true /uhyphen/0.2.0: resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} @@ -4574,6 +4597,21 @@ packages: fsevents: 2.3.2 dev: true + /vue-demi/0.13.11_vue@3.2.47: + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.2.47 + dev: false + /vue-template-compiler/2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} dependencies: diff --git a/src/store/appStore.ts b/src/store/appStore.ts new file mode 100644 index 0000000..8397562 --- /dev/null +++ b/src/store/appStore.ts @@ -0,0 +1,12 @@ +import { defineStore } from 'pinia' + +export const userTrackerStore = defineStore('tracker', { + state: () => ({ + currentTabDomain: null as string | null, + }), + actions: { + setCurrentTab(domain:string | null) { + this.currentTabDomain = domain; + }, + }, +}) \ No newline at end of file From 51e85b1ee0cf06e724cbd6f064080c2fd51d6ed0 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 18 Apr 2023 00:02:51 +0300 Subject: [PATCH 038/329] Fix vite build --- package.json | 2 +- vite.config.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index ad159ea..ecbf8ec 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "pnpm": ">=7" }, "scripts": { - "dev": "vite build --mode development --watch", + "dev": "vite build --watch --mode development", "start": "vite build --watch --mode production", "build": "pnpm compile && vite build --mode production", "script:build": "powershell scripts/build.ps1", diff --git a/vite.config.ts b/vite.config.ts index 059c44a..6a84a5f 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -20,6 +20,9 @@ export default defineConfig(({ mode }) => ({ sourcemap: mode === 'development' ? 'inline' : false, minify: false, }, + define: { + 'process.env': process.env + }, plugins: [ vue(), webExtension({ From 3076a005d3509d67697ad00183a1eee7a8ce6a94 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 18 Apr 2023 00:03:48 +0300 Subject: [PATCH 039/329] Change storage implementation --- src/common/utility.ts | 8 ++++++++ src/compositions/black-list.ts | 2 +- src/storage/local-storage.ts | 9 +++++++-- src/storage/storage-interface.ts | 2 +- src/storage/storage-params.ts | 34 +++++++++++++++++++++++++++++++- 5 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 src/common/utility.ts diff --git a/src/common/utility.ts b/src/common/utility.ts new file mode 100644 index 0000000..edd4f15 --- /dev/null +++ b/src/common/utility.ts @@ -0,0 +1,8 @@ +export function isEmpty(obj:any): boolean { + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) + return false; + } + + return JSON.stringify(obj) === JSON.stringify({}); +} \ No newline at end of file diff --git a/src/compositions/black-list.ts b/src/compositions/black-list.ts index cf34ca4..bb4b992 100644 --- a/src/compositions/black-list.ts +++ b/src/compositions/black-list.ts @@ -4,5 +4,5 @@ import { StorageParams } from "../storage/storage-params"; export async function isInBlackList(url: string): Promise{ const storage = injecStorage(); const blackList = await storage.getValue(StorageParams.BLACK_LIST) as string[]; - return blackList.indexOf(url) != -1 ? true : false; + return blackList != undefined && blackList.indexOf(url) != -1 ? true : false; } \ No newline at end of file diff --git a/src/storage/local-storage.ts b/src/storage/local-storage.ts index 54f6aba..7680f4d 100644 --- a/src/storage/local-storage.ts +++ b/src/storage/local-storage.ts @@ -2,6 +2,7 @@ import { IStorage } from "./storage-interface"; import { StorageParams } from "./storage-params"; import { Tab } from "../entity/tab"; import Browser from 'webextension-polyfill'; +import { isEmpty } from "../common/utility"; export class LocalStorage implements IStorage { getTabs(): Promise { @@ -23,8 +24,12 @@ export class LocalStorage implements IStorage { }); } - async getValue(name: StorageParams): Promise { - const value = await Browser.storage.local.get(name); + async getValue(name: StorageParams, defaultValue?: any): Promise { + let value = await Browser.storage.local.get(name); + if (isEmpty(value) && defaultValue != undefined){ + await this.saveValue(name, defaultValue); + return defaultValue; + } return value[name]; } } \ No newline at end of file diff --git a/src/storage/storage-interface.ts b/src/storage/storage-interface.ts index e92645a..0a7ad3b 100644 --- a/src/storage/storage-interface.ts +++ b/src/storage/storage-interface.ts @@ -5,5 +5,5 @@ export interface IStorage { getTabs(): Promise; saveTabs(value:Tab[]): Promise; saveValue(name:StorageParams, value: any): Promise; - getValue(name:StorageParams): Promise; + getValue(name:StorageParams, defaultValue?: any): Promise; } \ No newline at end of file diff --git a/src/storage/storage-params.ts b/src/storage/storage-params.ts index d11d03d..3e214aa 100644 --- a/src/storage/storage-params.ts +++ b/src/storage/storage-params.ts @@ -12,4 +12,36 @@ export enum StorageParams { VIEW_TIME_IN_BADGE = 'view_time_in_badge', BLOCK_DEFERRAL = 'view_block_deferral', SHOW_HINT = 'show_hint', -} \ No newline at end of file +} + +export enum InactivityInterval { + Seconds_30 = 30, + Seconds_45 = 45, + Min_1 = 60, + Min_2 = 120, + Min_5 = 300, + Min_10 = 600, + Min_20 = 1200, + Min_30 = 1800 +}; + +export enum RangeForDays { + Days_2 = 'days2', + Days_3 = 'days3', + Days_4 = 'days4', + Days_5 = 'days5', + Days_6 = 'days6', + Days_7 = 'days7', + Month_1 = 'month1', + Month_2 = 'month2', + Month_3 = 'month3' +}; + +export const NOTIFICATION_MESSAGE_DEFAULT = 'You have spent a lot of time on this site'; +export const INTERVAL_INACTIVITY_DEFAULT = InactivityInterval.Seconds_30; +export const INTERVAL_SAVE_STORAGE_DEFAULT = 5000; +export const INTERVAL_RANGE_DEFAULT = RangeForDays.Days_7; +export const DARK_MODE_DEFAULT = false; +export const VIEW_TIME_IN_BADGE_DEFAULT = true; +export const BLOCK_DEFERRAL_DEFAULT = true; +export const SHOW_HINT_DEFAULT = true; \ No newline at end of file From c8d3dd53cfb9340fb93dfca50bd198cb4c0169c6 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 18 Apr 2023 13:42:39 +0300 Subject: [PATCH 040/329] Add compositions for block list and limit list --- src/common/utility.ts | 14 +++++++++++++- src/compositions/block-page.ts | 9 +++++++++ src/compositions/limit-list.ts | 19 +++++++++++++++++++ src/entity/restriction.ts | 11 +++++++++++ 4 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 src/compositions/block-page.ts create mode 100644 src/compositions/limit-list.ts create mode 100644 src/entity/restriction.ts diff --git a/src/common/utility.ts b/src/common/utility.ts index edd4f15..4bf3b5d 100644 --- a/src/common/utility.ts +++ b/src/common/utility.ts @@ -1,8 +1,20 @@ export function isEmpty(obj:any): boolean { - for (var prop in obj) { + for (const prop in obj) { if (obj.hasOwnProperty(prop)) return false; } return JSON.stringify(obj) === JSON.stringify({}); +} + +export function convertStringTimeToSummaryTime(time:string) { + const timeValue = time.split(':'); + const hour = Number(timeValue[0]); + const min = Number(timeValue[1]); + let resultTimeValue = 0; + if (hour > 0) + resultTimeValue = hour * 3600; + resultTimeValue += min * 60; + + return resultTimeValue; } \ No newline at end of file diff --git a/src/compositions/block-page.ts b/src/compositions/block-page.ts new file mode 100644 index 0000000..5f84fe0 --- /dev/null +++ b/src/compositions/block-page.ts @@ -0,0 +1,9 @@ +import Browser from 'webextension-polyfill'; + +export async function useBlockPage(url: string, summaryTime: number, summaryCounter: number): Promise{ + const blockUrl = Browser.runtime.getURL("block.html") + '?url=' + url + + '&summaryTime=' + summaryTime + + '&summaryCounter=' + summaryCounter; + const tab = await Browser.tabs.query({ currentWindow: true, active: true }) + Browser.tabs.update(tab[0].id, { url: blockUrl }); +} \ No newline at end of file diff --git a/src/compositions/limit-list.ts b/src/compositions/limit-list.ts new file mode 100644 index 0000000..2d2f38c --- /dev/null +++ b/src/compositions/limit-list.ts @@ -0,0 +1,19 @@ +import { Restriction } from "../entity/restriction"; +import { Tab } from "../entity/tab"; +import { injecStorage } from "../storage/inject-storage"; +import { StorageParams } from "../storage/storage-params"; +import { todayLocalDate } from "../utils/common"; + +export async function isLimitExceeded(url: string, tab: Tab): Promise{ + const storage = injecStorage(); + const limitList = await storage.getValue(StorageParams.RESTRICTION_LIST) as Restriction[]; + const item = limitList?.find(x => x.domain == url); + if (item != undefined){ + const date = tab.days.find(x => x.date == todayLocalDate()); + if (date != undefined){ + return date.summary >= item.time; + } + } + + return false; +} \ No newline at end of file diff --git a/src/entity/restriction.ts b/src/entity/restriction.ts new file mode 100644 index 0000000..a09db3b --- /dev/null +++ b/src/entity/restriction.ts @@ -0,0 +1,11 @@ +import { convertStringTimeToSummaryTime } from "../common/utility"; + +export class Restriction { + domain: string; + time: number; + + constructor(domain: string, time: string){ + this.domain = domain; + this.time = convertStringTimeToSummaryTime(time); + } +} \ No newline at end of file From 2dbad7e59ef7250665063fc516edc13e6ece7ec4 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 23 Apr 2023 16:26:59 +0300 Subject: [PATCH 041/329] Add global environment variables --- src/globals.d.ts | 6 ++++++ vite.config.ts | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 src/globals.d.ts diff --git a/src/globals.d.ts b/src/globals.d.ts new file mode 100644 index 0000000..3b0a8a7 --- /dev/null +++ b/src/globals.d.ts @@ -0,0 +1,6 @@ +// Global vars +declare var __EXTENSION_MODE__: ExtensionMode; +declare var __DEV__: boolean; +declare var __PROD__: boolean; +declare var __EXTENSION_VERSION__: string; +declare var __REAL_APP_ID__: string; \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index 6a84a5f..71a2b32 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,6 +1,9 @@ import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import webExtension, { readJsonFile } from "vite-plugin-web-extension"; +import pkg from './package.json'; + +const APPID_CHROME = 'hhfnghjdeddcfegfekjeihfmbjenlomm'; function generateManifest() { const manifest = readJsonFile("src/manifest.json"); @@ -21,7 +24,12 @@ export default defineConfig(({ mode }) => ({ minify: false, }, define: { - 'process.env': process.env + 'process.env': process.env, + __EXTENSION_MODE__: JSON.stringify(mode), + __DEV__: mode === 'development', + __PROD__: mode === 'production', + __EXTENSION_VERSION__: JSON.stringify(pkg.version), + __REAL_APP_ID__: APPID_CHROME, }, plugins: [ vue(), From 4b56ee175525007af846b62189fe6df0aa062b6c Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 23 Apr 2023 16:27:12 +0300 Subject: [PATCH 042/329] Change manifest --- src/manifest.json | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/manifest.json b/src/manifest.json index 4022d17..7b12fc2 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -27,13 +27,7 @@ "https://www.netflix.com/*" ], "offline_enabled": true, - "content_scripts": [ - { - "matches": ["*://*/*"], - "js": ["src/tracker.ts"], - "run_at": "document_start" - } - ], + "background": { "{{chrome}}.service_worker": "src/background.ts", "{{firefox}}.scripts": ["src/background.ts"] From 5be32dd512eb6c55744393d6e5c4f4bbfacf7cd4 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 23 Apr 2023 16:27:37 +0300 Subject: [PATCH 043/329] Add logger --- src/background.ts | 12 ++++++---- src/compositions/logger.ts | 28 ++++++++++++++++++++++++ src/repository/inject-tabs-repository.ts | 1 - 3 files changed, 36 insertions(+), 5 deletions(-) create mode 100644 src/compositions/logger.ts diff --git a/src/background.ts b/src/background.ts index 4668128..44c1235 100644 --- a/src/background.ts +++ b/src/background.ts @@ -1,7 +1,11 @@ -import browser from "webextension-polyfill"; +import Browser from "webextension-polyfill"; +import { initTracker } from "./tracker"; +import { logger } from "./compositions/logger"; -console.log("Start background script"); +logger.log("Start background script"); -browser.runtime.onInstalled.addListener((details) => { - console.log("Extension installed:", details); +Browser.runtime.onInstalled.addListener((details) => { + logger.log("Extension installed:", details); }); + +initTracker(); \ No newline at end of file diff --git a/src/compositions/logger.ts b/src/compositions/logger.ts new file mode 100644 index 0000000..57f85f3 --- /dev/null +++ b/src/compositions/logger.ts @@ -0,0 +1,28 @@ +function print(logFn: typeof console.log, style: string, ...args: any[]) { + if (typeof args[0] === 'string') { + const newArgs = [...args]; + logFn( + `%cWeb Activity Time Tracker%c${new Date().toLocaleTimeString()}%c ${newArgs.shift()}`, + style, + 'background-color: #eaf1fb; padding: 2px 4px; border-radius: 3px', + '', + ...newArgs, + ); + } else { + logFn('%cWeb Activity Time Tracker', style, ...args); + } + } + +export function log(...args: any[]) { + if (__DEV__) + print( + console.log, + 'color: white; background-color: #1e8e3e; padding: 2px 4px; border-radius: 3px; font-weight: bold', + ...args, + ); +} + + +export const logger = { + log, +}; \ No newline at end of file diff --git a/src/repository/inject-tabs-repository.ts b/src/repository/inject-tabs-repository.ts index ee7c827..d4d4334 100644 --- a/src/repository/inject-tabs-repository.ts +++ b/src/repository/inject-tabs-repository.ts @@ -11,7 +11,6 @@ async function createAndInitInstance() { export async function injectTabsRepository(): Promise { if (instanse == null) { - console.log("test"); instanse = await createAndInitInstance(); } return instanse; From c18c62ccc52f9c6abe4a98b881e3169878352b9b Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 25 Apr 2023 18:08:19 +0300 Subject: [PATCH 044/329] Change store for current active tab --- src/compositions/activeTab.ts | 26 ++++++++++++++++++++++++++ src/repository/tabs-repository.ts | 19 +++++++++---------- src/store/appStore.ts | 12 ------------ 3 files changed, 35 insertions(+), 22 deletions(-) create mode 100644 src/compositions/activeTab.ts delete mode 100644 src/store/appStore.ts diff --git a/src/compositions/activeTab.ts b/src/compositions/activeTab.ts new file mode 100644 index 0000000..49c2b94 --- /dev/null +++ b/src/compositions/activeTab.ts @@ -0,0 +1,26 @@ +export class ActiveTab { + private static instance: ActiveTab; + private _activeTab: string | null; + + constructor() { + if (ActiveTab.instance) { + throw new Error("Error - use ActiveTab.getInstance()"); + } + this._activeTab = null; + } + + static getInstance(): ActiveTab { + ActiveTab.instance = ActiveTab.instance || new ActiveTab(); + return ActiveTab.instance; + } + + public setActiveTab(value:string | null): void + { + this._activeTab = value; + } + + public getActiveTab(): string | null + { + return this._activeTab; + } +} \ No newline at end of file diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts index 1a1b723..7505429 100644 --- a/src/repository/tabs-repository.ts +++ b/src/repository/tabs-repository.ts @@ -6,14 +6,14 @@ import { isValidPage } from '../compositions/valid-page'; import { isInBlackList } from "../compositions/black-list"; import { extractHostname } from "../compositions/extract-hostname"; import { addInterval, closeInterval } from "../compositions/daily-intervals"; +import { ActiveTab } from "../compositions/activeTab" export class TabsRepository implements ITabsRepository { private tabs: Tab[]; - private currentTabDomain: string | null; + private activeTab = ActiveTab.getInstance(); constructor() { this.tabs = []; - this.currentTabDomain = null; } async initAsync(){ @@ -21,8 +21,7 @@ export class TabsRepository implements ITabsRepository { } getTab(domain: string): Tab | undefined { - const tab = this.tabs?.find(x => x.url === domain); - return !tab ? tab : undefined; + return this.tabs?.find(x => x.url === domain); } async addTab(tab: Browser.Tabs.Tab): Promise { @@ -42,17 +41,17 @@ export class TabsRepository implements ITabsRepository { } else { tabFromStorage.incCounter(); - if (this.currentTabDomain != domain) this.setCurrentActiveTab(domain); - await closeInterval(this.currentTabDomain); - await addInterval(this.currentTabDomain); + if (this.activeTab.getActiveTab() != domain) this.setCurrentActiveTab(domain); + await closeInterval(this.activeTab.getActiveTab()); + await addInterval(this.activeTab.getActiveTab()); } } - else await closeInterval(this.currentTabDomain); + else await closeInterval(this.activeTab.getActiveTab()); } - } else await closeInterval(this.currentTabDomain); + } else await closeInterval(this.activeTab.getActiveTab()); } private setCurrentActiveTab(domain:string){ - this.currentTabDomain = domain; + this.activeTab.setActiveTab(domain); } } \ No newline at end of file diff --git a/src/store/appStore.ts b/src/store/appStore.ts deleted file mode 100644 index 8397562..0000000 --- a/src/store/appStore.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineStore } from 'pinia' - -export const userTrackerStore = defineStore('tracker', { - state: () => ({ - currentTabDomain: null as string | null, - }), - actions: { - setCurrentTab(domain:string | null) { - this.currentTabDomain = domain; - }, - }, -}) \ No newline at end of file From 9ab390eadf6d483c1590adcce7221f359b7b9b76 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 25 Apr 2023 18:08:46 +0300 Subject: [PATCH 045/329] Main tracker.ts --- src/tracker.ts | 88 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 63 insertions(+), 25 deletions(-) diff --git a/src/tracker.ts b/src/tracker.ts index ddcae3e..ffeefad 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -1,34 +1,72 @@ -import Browser from 'webextension-polyfill'; -import { isValidPage } from './compositions/valid-page'; -import { extractHostname } from './compositions/extract-hostname'; -import { injectTabsRepository } from './repository/inject-tabs-repository'; -import { isInBlackList } from './compositions/black-list'; -import { useBadge } from './compositions/set-badge'; -import { BadgeColor } from './compositions/types'; +import Browser from "webextension-polyfill"; +import { isValidPage } from "./compositions/valid-page"; +import { extractHostname } from "./compositions/extract-hostname"; +import { injectTabsRepository } from "./repository/inject-tabs-repository"; +import { isInBlackList } from "./compositions/black-list"; +import { useBadge } from "./compositions/set-badge"; +import { BadgeColor } from "./compositions/types"; +import { INTERVAL_INACTIVITY_DEFAULT, StorageParams, } from "./storage/storage-params"; +import { injecStorage } from "./storage/inject-storage"; +import { closeInterval } from "./compositions/daily-intervals"; +import { ActiveTab } from "./compositions/activeTab"; +import { isLimitExceeded } from "./compositions/limit-list"; +import { Tab } from "./entity/tab"; +import { useBlockPage } from "./compositions/block-page"; -export async function initTracker(){ +async function trackTime(){ + const activeTabInstance = ActiveTab.getInstance(); const window = await Browser.windows.getLastFocused({ populate: true }); - if (window.focused){ - const activeTab = window.tabs?.find(t => t.active === true); + if (window.focused) { + const activeTab = window.tabs?.find((t) => t.active === true); if (isValidPage(activeTab)) { const activeUrl = extractHostname(activeTab!.url); + activeTabInstance.setActiveTab(activeUrl); if (await isInBlackList(activeUrl)) { - useBadge({ tabId: activeTab!.id!, text: 'n/a', color: BadgeColor.green }); - } else{ + useBadge({ + tabId: activeTab!.id!, + text: "n/a", + color: BadgeColor.red, + }); + } else { const repo = await injectTabsRepository(); - let tab = repo.getTab(activeUrl); - if (tab === undefined) - tab = await repo.addTab(activeTab!); - - if (currentTab !== tab.url) { - activity.setCurrentActiveTab(tab.url); - } - const state = await Browser.idle.queryState(parseInt(setting_interval_inactivity)); - if (state === 'active') { - mainTRacker(activeUrl, tab, activeTab); - } else checkDOM(state, activeUrl, tab, activeTab); + const tab = repo.getTab(activeUrl); + if (tab == undefined) { + await repo.addTab(activeTab!); + } else { + const storage = injecStorage(); + const inactivityInterval = (await storage.getValue( + StorageParams.INTERVAL_INACTIVITY, + INTERVAL_INACTIVITY_DEFAULT + )) as number; + const state = await Browser.idle.queryState(inactivityInterval); + mainTracker(state, activeTab!, activeUrl, tab); + } } } - } else activity.closeIntervalForCurrentTab(); -} \ No newline at end of file + } else { + await closeInterval(activeTabInstance.getActiveTab()); + activeTabInstance.setActiveTab(null); + } +} + +async function mainTracker(state: Browser.Idle.IdleState, activeTab: Browser.Tabs.Tab, activeUrl: string, tab: Tab){ + function isAudible(){ + return state === 'idle' && activeTab.audible; + } + + if (state === 'active' || isAudible()){ + if (await isLimitExceeded(activeUrl, tab)){ + const summaryTime = tab.days.at(-1)!.summary; + const summaryCounter = tab.days.at(-1)!.counter; + await useBlockPage(activeUrl, summaryTime, summaryCounter); + return; + } + + tab.incSummaryTime(); + } +} + +export async function initTracker() { + setInterval(trackTime, 1000); +} From 847419673000fa173a399c225d023f92dba75baa Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 25 Apr 2023 18:56:18 +0300 Subject: [PATCH 046/329] View time in badge --- src/common/utility.ts | 10 ++++++++++ src/compositions/daily-intervals.ts | 4 ++-- src/compositions/types.ts | 2 +- src/tracker.ts | 22 +++++++++++++++++++++- 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/common/utility.ts b/src/common/utility.ts index 4bf3b5d..3d9de4c 100644 --- a/src/common/utility.ts +++ b/src/common/utility.ts @@ -17,4 +17,14 @@ export function convertStringTimeToSummaryTime(time:string) { resultTimeValue += min * 60; return resultTimeValue; +} + +export function convertSummaryTimeToBadgeString(summaryTime:number):string { + const sec = summaryTime; + const min = Number((summaryTime / 60).toFixed(0)); + const hours = Number((summaryTime / (60 * 60)).toFixed(1)); + + if (sec < 60) return `${sec}s`; + else if (min < 60) return `${min}m`; + else return `${hours}h`; } \ No newline at end of file diff --git a/src/compositions/daily-intervals.ts b/src/compositions/daily-intervals.ts index 8445a08..fd240d7 100644 --- a/src/compositions/daily-intervals.ts +++ b/src/compositions/daily-intervals.ts @@ -7,7 +7,7 @@ export async function closeInterval(domain:string | null): Promise{ if (domain == null) return; const storage = injecStorage(); const timeIntervalList = await storage.getValue(StorageParams.TIMEINTERVAL_LIST) as TimeInterval[]; - const item = timeIntervalList.find(x => x.domain === domain && x.day == todayLocalDate()); + const item = timeIntervalList?.find(x => x.domain === domain && x.day == todayLocalDate()); item?.closeInterval(); await storage.saveValue(StorageParams.TIMEINTERVAL_LIST, timeIntervalList); } @@ -17,7 +17,7 @@ export async function addInterval(domain:string | null): Promise{ const storage = injecStorage(); const timeIntervalList = await storage.getValue(StorageParams.TIMEINTERVAL_LIST) as TimeInterval[]; - const item = timeIntervalList.find(x => x.domain === domain && x.day == todayLocalDate()); + const item = timeIntervalList?.find(x => x.domain === domain && x.day == todayLocalDate()); if (item != undefined) { if (item.day == todayLocalDate()) item.addInterval(); diff --git a/src/compositions/types.ts b/src/compositions/types.ts index 7b663ad..dc774d2 100644 --- a/src/compositions/types.ts +++ b/src/compositions/types.ts @@ -6,6 +6,6 @@ export interface BadgeState { export enum BadgeColor { red = '#fdb8b8', - green = '#e7e7e7', + green = '#6ec05e', none = '#000' } \ No newline at end of file diff --git a/src/tracker.ts b/src/tracker.ts index ffeefad..37dd2cd 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -5,13 +5,14 @@ import { injectTabsRepository } from "./repository/inject-tabs-repository"; import { isInBlackList } from "./compositions/black-list"; import { useBadge } from "./compositions/set-badge"; import { BadgeColor } from "./compositions/types"; -import { INTERVAL_INACTIVITY_DEFAULT, StorageParams, } from "./storage/storage-params"; +import { INTERVAL_INACTIVITY_DEFAULT, StorageParams, VIEW_TIME_IN_BADGE_DEFAULT, } from "./storage/storage-params"; import { injecStorage } from "./storage/inject-storage"; import { closeInterval } from "./compositions/daily-intervals"; import { ActiveTab } from "./compositions/activeTab"; import { isLimitExceeded } from "./compositions/limit-list"; import { Tab } from "./entity/tab"; import { useBlockPage } from "./compositions/block-page"; +import { convertSummaryTimeToBadgeString } from "./common/utility"; async function trackTime(){ const activeTabInstance = ActiveTab.getInstance(); @@ -64,6 +65,25 @@ async function mainTracker(state: Browser.Idle.IdleState, activeTab: Browser.Tab } tab.incSummaryTime(); + + const storage = injecStorage(); + const viewInBadge = (await storage.getValue( + StorageParams.VIEW_TIME_IN_BADGE, + VIEW_TIME_IN_BADGE_DEFAULT + )) as boolean; + + if (viewInBadge) + useBadge({ + tabId: activeTab!.id!, + text: convertSummaryTimeToBadgeString(tab.days.at(-1)!.summary), + color: BadgeColor.green, + }); + else + useBadge({ + tabId: activeTab!.id!, + text: "", + color: BadgeColor.red, + }); } } From 24a235c82846310b0467d3efe2f90e8409a6f8aa Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 26 Apr 2023 15:36:08 +0300 Subject: [PATCH 047/329] Saving tabs to the storage every 5 seconds --- src/repository/tabs-repository-interface.ts | 1 + src/repository/tabs-repository.ts | 4 ++++ src/tracker.ts | 21 +++++++++++++++------ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/repository/tabs-repository-interface.ts b/src/repository/tabs-repository-interface.ts index 5eeb7c1..a52a99c 100644 --- a/src/repository/tabs-repository-interface.ts +++ b/src/repository/tabs-repository-interface.ts @@ -2,6 +2,7 @@ import { Tab } from "../entity/tab"; import Browser from 'webextension-polyfill'; export interface ITabsRepository { + getTabs(): Tab[]; getTab(domain:string): Tab | undefined; addTab(tab:Browser.Tabs.Tab): Promise; } \ No newline at end of file diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts index 7505429..4c3a00c 100644 --- a/src/repository/tabs-repository.ts +++ b/src/repository/tabs-repository.ts @@ -20,6 +20,10 @@ export class TabsRepository implements ITabsRepository { this.tabs = await injecStorage().getTabs(); } + getTabs(): Tab[] { + return this.tabs; + } + getTab(domain: string): Tab | undefined { return this.tabs?.find(x => x.url === domain); } diff --git a/src/tracker.ts b/src/tracker.ts index 37dd2cd..aa7ef4b 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -5,7 +5,7 @@ import { injectTabsRepository } from "./repository/inject-tabs-repository"; import { isInBlackList } from "./compositions/black-list"; import { useBadge } from "./compositions/set-badge"; import { BadgeColor } from "./compositions/types"; -import { INTERVAL_INACTIVITY_DEFAULT, StorageParams, VIEW_TIME_IN_BADGE_DEFAULT, } from "./storage/storage-params"; +import { INTERVAL_INACTIVITY_DEFAULT, INTERVAL_SAVE_STORAGE_DEFAULT, StorageParams, VIEW_TIME_IN_BADGE_DEFAULT, } from "./storage/storage-params"; import { injecStorage } from "./storage/inject-storage"; import { closeInterval } from "./compositions/daily-intervals"; import { ActiveTab } from "./compositions/activeTab"; @@ -14,8 +14,16 @@ import { Tab } from "./entity/tab"; import { useBlockPage } from "./compositions/block-page"; import { convertSummaryTimeToBadgeString } from "./common/utility"; +const activeTabInstance = ActiveTab.getInstance(); +const storage = injecStorage(); + +export async function initTracker() { + setInterval(trackTime, 1000); + setInterval(saveTabs, INTERVAL_SAVE_STORAGE_DEFAULT); +} + async function trackTime(){ - const activeTabInstance = ActiveTab.getInstance(); + const repo = await injectTabsRepository(); const window = await Browser.windows.getLastFocused({ populate: true }); if (window.focused) { const activeTab = window.tabs?.find((t) => t.active === true); @@ -30,12 +38,10 @@ async function trackTime(){ color: BadgeColor.red, }); } else { - const repo = await injectTabsRepository(); const tab = repo.getTab(activeUrl); if (tab == undefined) { await repo.addTab(activeTab!); } else { - const storage = injecStorage(); const inactivityInterval = (await storage.getValue( StorageParams.INTERVAL_INACTIVITY, INTERVAL_INACTIVITY_DEFAULT @@ -87,6 +93,9 @@ async function mainTracker(state: Browser.Idle.IdleState, activeTab: Browser.Tab } } -export async function initTracker() { - setInterval(trackTime, 1000); +async function saveTabs(){ + const storage = injecStorage(); + const repo = await injectTabsRepository(); + const tabs = repo.getTabs(); + await storage.saveTabs(tabs); } From 6021a319759733562a2288d5e76c1e11c27ca714 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 26 Apr 2023 15:37:33 +0300 Subject: [PATCH 048/329] Parse and cast objects from browser storage to class object --- src/entity/tab.ts | 46 +++++++++++++++++++++++-------- src/repository/tabs-repository.ts | 4 ++- src/storage/local-storage.ts | 19 ++++++++----- 3 files changed, 50 insertions(+), 19 deletions(-) diff --git a/src/entity/tab.ts b/src/entity/tab.ts index 74f3c1a..a86b5d8 100644 --- a/src/entity/tab.ts +++ b/src/entity/tab.ts @@ -1,13 +1,17 @@ import { todayLocalDate } from "../utils/common"; -export class Tab { - url: string; - favicon: string; +interface Serializable { + deserialize(input: Object): T; +} + +export class Tab implements Serializable { + url: string = ''; + favicon: string = ''; summaryTime: number = 0; counter: number = 0 days: TabDay[] = []; - constructor(url: string, favicon: string){ + init(url: string, favicon: string){ this.url = url; this.favicon = favicon; } @@ -30,17 +34,29 @@ export class Tab { } addNewDay() :void { - const newTabDay = new TabDay(todayLocalDate()); + const newTabDay = new TabDay(); + newTabDay.init(todayLocalDate()); this.days.push(newTabDay); } + + deserialize(input: Tab) { + this.url = input.url; + this.counter = input.counter; + this.favicon = input.favicon; + this.summaryTime = input.summaryTime; + if (input.days?.length > 0) + this.days = input.days.map(x => new TabDay().deserialize(x)); + + return this; + } } -export class TabDay { - counter: number; - date: string; - summary: number; +export class TabDay implements Serializable { + counter: number = 0; + date: string = ''; + summary: number = 0; - constructor(date: string){ + init(date: string){ this.date = date; this.counter = 1; this.summary = 1; @@ -53,4 +69,12 @@ export class TabDay { incCounter() :void { this.counter += 1; } -} \ No newline at end of file + + deserialize(input: TabDay): TabDay { + this.counter = input.counter; + this.date = input.date; + this.summary = input.summary; + + return this; + } +} diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts index 4c3a00c..d5d77b5 100644 --- a/src/repository/tabs-repository.ts +++ b/src/repository/tabs-repository.ts @@ -41,7 +41,9 @@ export class TabsRepository implements ITabsRepository { if (!favicon) { favicon = 'chrome://favicon/' + domain; } - this.tabs.push(new Tab(domain, favicon)); + const newTab = new Tab(); + newTab.init(domain, favicon); + this.tabs.push(newTab); } else { tabFromStorage.incCounter(); diff --git a/src/storage/local-storage.ts b/src/storage/local-storage.ts index 7680f4d..ac1ad87 100644 --- a/src/storage/local-storage.ts +++ b/src/storage/local-storage.ts @@ -5,21 +5,26 @@ import Browser from 'webextension-polyfill'; import { isEmpty } from "../common/utility"; export class LocalStorage implements IStorage { - getTabs(): Promise { + async getTabs(): Promise { return new Promise(async resolve => { const { tabs } = await Browser.storage.local.get(StorageParams.TABS); - if (tabs != undefined) - return resolve(tabs); + if (tabs != undefined){ + let tempTabs: Tab[] = []; + for (let i = 0; i < tabs.length; i++) { + tempTabs.push(new Tab().deserialize(tabs[i])); + } + return resolve(tempTabs); + } else resolve([]); }); } - saveTabs(value: Tab[]): Promise { - return Browser.storage.local.set({ tabs: value }); + async saveTabs(value: Tab[]): Promise { + return await Browser.storage.local.set({ tabs: value }); } - saveValue(name: StorageParams, value: any): Promise { - return Browser.storage.local.set({ + async saveValue(name: StorageParams, value: any): Promise { + return await Browser.storage.local.set({ [name]: value }); } From 9d45c6eeb5d98b0060ce1a8dec12b145e3e4a625 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 28 Apr 2023 18:11:01 +0300 Subject: [PATCH 049/329] Change active tab module --- src/compositions/activeTab.ts | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/compositions/activeTab.ts b/src/compositions/activeTab.ts index 49c2b94..76e779a 100644 --- a/src/compositions/activeTab.ts +++ b/src/compositions/activeTab.ts @@ -1,12 +1,16 @@ +import { extractHostname } from "./extract-hostname"; + export class ActiveTab { private static instance: ActiveTab; - private _activeTab: string | null; + private _activeTabUrl: string | null; + private _activeTabDomain: string | null; constructor() { if (ActiveTab.instance) { throw new Error("Error - use ActiveTab.getInstance()"); } - this._activeTab = null; + this._activeTabUrl = null; + this._activeTabDomain = null; } static getInstance(): ActiveTab { @@ -16,11 +20,17 @@ export class ActiveTab { public setActiveTab(value:string | null): void { - this._activeTab = value; + this._activeTabUrl = value; + this._activeTabDomain = value != null ? extractHostname(value) : null; + } + + public getActiveTabUrl(): string | null + { + return this._activeTabUrl; } - public getActiveTab(): string | null + public getActiveTabDomain(): string | null { - return this._activeTab; + return this._activeTabDomain; } } \ No newline at end of file From df5bc3f4ca7e8706c2088c1834840cc3dad0c45c Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 30 Apr 2023 16:59:29 +0300 Subject: [PATCH 050/329] Change getting deserialisable objects --- src/storage/local-storage.ts | 18 ++++++++++-------- src/storage/storage-interface.ts | 4 ++-- src/storage/storage-params.ts | 17 +++++++++++++++++ 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/storage/local-storage.ts b/src/storage/local-storage.ts index ac1ad87..3ce3134 100644 --- a/src/storage/local-storage.ts +++ b/src/storage/local-storage.ts @@ -1,19 +1,21 @@ import { IStorage } from "./storage-interface"; -import { StorageParams } from "./storage-params"; +import { StorageDeserializeParam, StorageDeserializeType, StorageParams, createDeserializeParambject } from "./storage-params"; import { Tab } from "../entity/tab"; import Browser from 'webextension-polyfill'; import { isEmpty } from "../common/utility"; export class LocalStorage implements IStorage { - async getTabs(): Promise { + async getDeserializeList(param: StorageDeserializeParam): Promise { return new Promise(async resolve => { - const { tabs } = await Browser.storage.local.get(StorageParams.TABS); - if (tabs != undefined){ - let tempTabs: Tab[] = []; - for (let i = 0; i < tabs.length; i++) { - tempTabs.push(new Tab().deserialize(tabs[i])); + const obj = await Browser.storage.local.get(param); + const list = obj[param]; + if (list != undefined){ + let tempList:StorageDeserializeType[] = []; + for (let i = 0; i < list.length; i++) { + const obj = createDeserializeParambject(param); + tempList.push(obj.deserialize(list[i])); } - return resolve(tempTabs); + return resolve(tempList); } else resolve([]); }); diff --git a/src/storage/storage-interface.ts b/src/storage/storage-interface.ts index 0a7ad3b..95bce45 100644 --- a/src/storage/storage-interface.ts +++ b/src/storage/storage-interface.ts @@ -1,8 +1,8 @@ -import { StorageParams } from "./storage-params"; +import { StorageDeserializeParam, StorageDeserializeType, StorageParams } from "./storage-params"; import { Tab } from "../entity/tab"; export interface IStorage { - getTabs(): Promise; + getDeserializeList(param: StorageDeserializeParam): Promise; saveTabs(value:Tab[]): Promise; saveValue(name:StorageParams, value: any): Promise; getValue(name:StorageParams, defaultValue?: any): Promise; diff --git a/src/storage/storage-params.ts b/src/storage/storage-params.ts index 3e214aa..a222d39 100644 --- a/src/storage/storage-params.ts +++ b/src/storage/storage-params.ts @@ -1,3 +1,6 @@ +import { Tab } from "../entity/tab"; +import { TimeInterval } from "../entity/time-interval"; + export enum StorageParams { TABS = 'tabs', BLACK_LIST = 'black_list', @@ -14,6 +17,20 @@ export enum StorageParams { SHOW_HINT = 'show_hint', } +export enum StorageDeserializeParam{ + TABS = 'tabs', + TIMEINTERVAL_LIST = 'time_interval', +} + +export function createDeserializeParambject(param:StorageDeserializeParam): StorageDeserializeType{ + switch (param){ + case StorageDeserializeParam.TABS: return new Tab(); + case StorageDeserializeParam.TIMEINTERVAL_LIST: return new TimeInterval(); + } +} + +export type StorageDeserializeType = Tab | TimeInterval; + export enum InactivityInterval { Seconds_30 = 30, Seconds_45 = 45, From 57c32599efb5e4f87ee8c1792bbe3ab931f7948d Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 30 Apr 2023 17:00:22 +0300 Subject: [PATCH 051/329] Time intervals --- src/compositions/daily-intervals.ts | 14 ++++++++----- src/entity/ISerializable.ts | 3 +++ src/entity/tab.ts | 13 ++++++------ src/entity/time-interval.ts | 22 ++++++++++++++++----- src/repository/tabs-repository-interface.ts | 2 +- src/repository/tabs-repository.ts | 22 ++++++--------------- 6 files changed, 42 insertions(+), 34 deletions(-) create mode 100644 src/entity/ISerializable.ts diff --git a/src/compositions/daily-intervals.ts b/src/compositions/daily-intervals.ts index fd240d7..a8876b7 100644 --- a/src/compositions/daily-intervals.ts +++ b/src/compositions/daily-intervals.ts @@ -1,12 +1,12 @@ import { TimeInterval } from "../entity/time-interval"; import { injecStorage } from "../storage/inject-storage"; -import { StorageParams } from "../storage/storage-params"; +import { StorageDeserializeParam, StorageParams } from "../storage/storage-params"; import { todayLocalDate } from "../utils/common"; export async function closeInterval(domain:string | null): Promise{ if (domain == null) return; const storage = injecStorage(); - const timeIntervalList = await storage.getValue(StorageParams.TIMEINTERVAL_LIST) as TimeInterval[]; + const timeIntervalList = await storage.getDeserializeList(StorageDeserializeParam.TIMEINTERVAL_LIST) as TimeInterval[]; const item = timeIntervalList?.find(x => x.domain === domain && x.day == todayLocalDate()); item?.closeInterval(); await storage.saveValue(StorageParams.TIMEINTERVAL_LIST, timeIntervalList); @@ -16,18 +16,22 @@ export async function addInterval(domain:string | null): Promise{ if (domain == null) return; const storage = injecStorage(); - const timeIntervalList = await storage.getValue(StorageParams.TIMEINTERVAL_LIST) as TimeInterval[]; + let timeIntervalList = await storage.getDeserializeList(StorageDeserializeParam.TIMEINTERVAL_LIST) as TimeInterval[]; + if (timeIntervalList == undefined) + timeIntervalList = []; const item = timeIntervalList?.find(x => x.domain === domain && x.day == todayLocalDate()); if (item != undefined) { if (item.day == todayLocalDate()) item.addInterval(); else { - const newInterval = new TimeInterval(todayLocalDate(), domain); + const newInterval = new TimeInterval(); + newInterval.init(todayLocalDate(), domain); newInterval.addInterval(); timeIntervalList.push(newInterval); } } else { - const newInterval = new TimeInterval(todayLocalDate(), domain); + const newInterval = new TimeInterval(); + newInterval.init(todayLocalDate(), domain); newInterval.addInterval(); timeIntervalList.push(newInterval); } diff --git a/src/entity/ISerializable.ts b/src/entity/ISerializable.ts new file mode 100644 index 0000000..ec1315f --- /dev/null +++ b/src/entity/ISerializable.ts @@ -0,0 +1,3 @@ +interface ISerializable { + deserialize(input: Object): T; +} \ No newline at end of file diff --git a/src/entity/tab.ts b/src/entity/tab.ts index a86b5d8..c1269b7 100644 --- a/src/entity/tab.ts +++ b/src/entity/tab.ts @@ -1,10 +1,7 @@ import { todayLocalDate } from "../utils/common"; +import { logger } from "../compositions/logger"; -interface Serializable { - deserialize(input: Object): T; -} - -export class Tab implements Serializable { +export class Tab implements ISerializable { url: string = ''; favicon: string = ''; summaryTime: number = 0; @@ -17,7 +14,8 @@ export class Tab implements Serializable { } incSummaryTime() :void { - this.summaryTime += 1; + this.summaryTime += 1; + //logger.log(`Summary time ${this.url} - ${this.summaryTime}`); const day = this.days.find(x => x.date == todayLocalDate()); if (day === undefined) @@ -27,6 +25,7 @@ export class Tab implements Serializable { incCounter() :void { this.counter +=1; + logger.log(`Counter ${this.url} - ${this.counter}`); const day = this.days.find(x => x.date == todayLocalDate()); if (day === undefined) this.addNewDay(); @@ -51,7 +50,7 @@ export class Tab implements Serializable { } } -export class TabDay implements Serializable { +export class TabDay implements ISerializable { counter: number = 0; date: string = ''; summary: number = 0; diff --git a/src/entity/time-interval.ts b/src/entity/time-interval.ts index 69329b1..51cfefd 100644 --- a/src/entity/time-interval.ts +++ b/src/entity/time-interval.ts @@ -1,9 +1,11 @@ -export class TimeInterval { - domain: string; +import { logger } from "../compositions/logger"; + +export class TimeInterval implements ISerializable { + domain: string = ''; intervals: any; - day: string; + day: string = ''; - constructor(day:string, domain:string) { + init(day:string, domain:string) { this.domain = domain; this.intervals = []; this.day = day; @@ -12,19 +14,29 @@ export class TimeInterval { addInterval() { const stringDate = this.getCurrentStringDate(); this.intervals.push(stringDate + '-' + stringDate); + logger.log(`Add interval ${this.domain} - ${stringDate} - ${stringDate}`); } closeInterval() { const stringDate = this.getCurrentStringDate(); const currentInterval = this.intervals[this.intervals.length - 1]; - if (!currentInterval) { + if (currentInterval != null) { if (currentInterval.split('-')[0] == currentInterval.split('-')[1]) { this.intervals.pop(); this.intervals.push(currentInterval.split('-')[0] + '-' + stringDate); + logger.log(`Close interval ${this.domain} - ${currentInterval.split('-')[0]} - ${stringDate}`); } } } + deserialize(input: TimeInterval): TimeInterval { + this.domain = input.domain; + this.day = input.day; + this.intervals = input.intervals; + + return this; + } + private getCurrentStringDate():string{ const date = new Date(); return date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds(); diff --git a/src/repository/tabs-repository-interface.ts b/src/repository/tabs-repository-interface.ts index a52a99c..b0844fa 100644 --- a/src/repository/tabs-repository-interface.ts +++ b/src/repository/tabs-repository-interface.ts @@ -4,5 +4,5 @@ import Browser from 'webextension-polyfill'; export interface ITabsRepository { getTabs(): Tab[]; getTab(domain:string): Tab | undefined; - addTab(tab:Browser.Tabs.Tab): Promise; + addTab(tab:Browser.Tabs.Tab): Promise; } \ No newline at end of file diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts index d5d77b5..aa5f4b2 100644 --- a/src/repository/tabs-repository.ts +++ b/src/repository/tabs-repository.ts @@ -5,19 +5,17 @@ import { injecStorage } from "../storage/inject-storage"; import { isValidPage } from '../compositions/valid-page'; import { isInBlackList } from "../compositions/black-list"; import { extractHostname } from "../compositions/extract-hostname"; -import { addInterval, closeInterval } from "../compositions/daily-intervals"; -import { ActiveTab } from "../compositions/activeTab" +import { StorageDeserializeParam } from "../storage/storage-params"; export class TabsRepository implements ITabsRepository { private tabs: Tab[]; - private activeTab = ActiveTab.getInstance(); constructor() { this.tabs = []; } async initAsync(){ - this.tabs = await injecStorage().getTabs(); + this.tabs = await injecStorage().getDeserializeList(StorageDeserializeParam.TABS) as Tab[]; } getTabs(): Tab[] { @@ -28,7 +26,7 @@ export class TabsRepository implements ITabsRepository { return this.tabs?.find(x => x.url === domain); } - async addTab(tab: Browser.Tabs.Tab): Promise { + async addTab(tab: Browser.Tabs.Tab): Promise { if (isValidPage(tab)) { if (tab.id && (tab.id != 0)) { const domain = extractHostname(tab.url); @@ -44,20 +42,12 @@ export class TabsRepository implements ITabsRepository { const newTab = new Tab(); newTab.init(domain, favicon); this.tabs.push(newTab); - } - else { - tabFromStorage.incCounter(); - if (this.activeTab.getActiveTab() != domain) this.setCurrentActiveTab(domain); - await closeInterval(this.activeTab.getActiveTab()); - await addInterval(this.activeTab.getActiveTab()); + return newTab; } } - else await closeInterval(this.activeTab.getActiveTab()); } - } else await closeInterval(this.activeTab.getActiveTab()); - } + } - private setCurrentActiveTab(domain:string){ - this.activeTab.setActiveTab(domain); + return undefined; } } \ No newline at end of file From 70b01e41997bacb6c896c9d080194739dea799f1 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 30 Apr 2023 17:11:52 +0300 Subject: [PATCH 052/329] Change tracker --- src/tracker.ts | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/tracker.ts b/src/tracker.ts index aa7ef4b..3aec7e8 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -7,7 +7,7 @@ import { useBadge } from "./compositions/set-badge"; import { BadgeColor } from "./compositions/types"; import { INTERVAL_INACTIVITY_DEFAULT, INTERVAL_SAVE_STORAGE_DEFAULT, StorageParams, VIEW_TIME_IN_BADGE_DEFAULT, } from "./storage/storage-params"; import { injecStorage } from "./storage/inject-storage"; -import { closeInterval } from "./compositions/daily-intervals"; +import { addInterval, closeInterval } from "./compositions/daily-intervals"; import { ActiveTab } from "./compositions/activeTab"; import { isLimitExceeded } from "./compositions/limit-list"; import { Tab } from "./entity/tab"; @@ -28,48 +28,59 @@ async function trackTime(){ if (window.focused) { const activeTab = window.tabs?.find((t) => t.active === true); if (isValidPage(activeTab)) { - const activeUrl = extractHostname(activeTab!.url); - activeTabInstance.setActiveTab(activeUrl); + const activeDomain = extractHostname(activeTab!.url); - if (await isInBlackList(activeUrl)) { + if (await isInBlackList(activeDomain)) { useBadge({ tabId: activeTab!.id!, text: "n/a", color: BadgeColor.red, }); } else { - const tab = repo.getTab(activeUrl); + let tab = repo.getTab(activeDomain); if (tab == undefined) { - await repo.addTab(activeTab!); - } else { + tab = await repo.addTab(activeTab!); + } + if (tab != undefined){ const inactivityInterval = (await storage.getValue( StorageParams.INTERVAL_INACTIVITY, INTERVAL_INACTIVITY_DEFAULT )) as number; const state = await Browser.idle.queryState(inactivityInterval); - mainTracker(state, activeTab!, activeUrl, tab); + mainTracker(state, activeTab!, activeDomain, tab); } } } } else { - await closeInterval(activeTabInstance.getActiveTab()); + await closeInterval(activeTabInstance.getActiveTabDomain()); activeTabInstance.setActiveTab(null); } } -async function mainTracker(state: Browser.Idle.IdleState, activeTab: Browser.Tabs.Tab, activeUrl: string, tab: Tab){ +async function mainTracker(state: Browser.Idle.IdleState, activeTab: Browser.Tabs.Tab, activeDomain: string, tab: Tab){ function isAudible(){ return state === 'idle' && activeTab.audible; } - if (state === 'active' || isAudible()){ - if (await isLimitExceeded(activeUrl, tab)){ + function isActiveTabWasChanged(){ + return activeDomain != activeTabInstance.getActiveTabDomain(); + } + + const isAudibleValue = isAudible(); + if (state === 'active' || isAudibleValue){ + if (await isLimitExceeded(activeDomain, tab)){ const summaryTime = tab.days.at(-1)!.summary; const summaryCounter = tab.days.at(-1)!.counter; - await useBlockPage(activeUrl, summaryTime, summaryCounter); + await useBlockPage(activeDomain, summaryTime, summaryCounter); return; } + if (isActiveTabWasChanged()){ + tab.incCounter(); + await closeInterval(activeTabInstance.getActiveTabDomain()); + activeTabInstance.setActiveTab(activeTab.url!); + await addInterval(activeTabInstance.getActiveTabDomain()); + } tab.incSummaryTime(); const storage = injecStorage(); From e09803b3c0316bc50fd047310160a25820925979 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 1 May 2023 01:02:12 +0300 Subject: [PATCH 053/329] Refact utils --- src/compositions/daily-intervals.ts | 2 +- src/compositions/limit-list.ts | 2 +- src/entity/restriction.ts | 4 ++-- src/entity/tab.ts | 2 +- src/tracker.ts | 2 +- src/utils/common.ts | 9 +++++++-- src/{common/utility.ts => utils/converter.ts} | 13 ++----------- src/utils/today.ts | 3 +++ 8 files changed, 18 insertions(+), 19 deletions(-) rename src/{common/utility.ts => utils/converter.ts} (60%) create mode 100644 src/utils/today.ts diff --git a/src/compositions/daily-intervals.ts b/src/compositions/daily-intervals.ts index a8876b7..5a52fb5 100644 --- a/src/compositions/daily-intervals.ts +++ b/src/compositions/daily-intervals.ts @@ -1,7 +1,7 @@ import { TimeInterval } from "../entity/time-interval"; import { injecStorage } from "../storage/inject-storage"; import { StorageDeserializeParam, StorageParams } from "../storage/storage-params"; -import { todayLocalDate } from "../utils/common"; +import { todayLocalDate } from "../utils/today"; export async function closeInterval(domain:string | null): Promise{ if (domain == null) return; diff --git a/src/compositions/limit-list.ts b/src/compositions/limit-list.ts index 2d2f38c..9e44f8b 100644 --- a/src/compositions/limit-list.ts +++ b/src/compositions/limit-list.ts @@ -2,7 +2,7 @@ import { Restriction } from "../entity/restriction"; import { Tab } from "../entity/tab"; import { injecStorage } from "../storage/inject-storage"; import { StorageParams } from "../storage/storage-params"; -import { todayLocalDate } from "../utils/common"; +import { todayLocalDate } from "../utils/today"; export async function isLimitExceeded(url: string, tab: Tab): Promise{ const storage = injecStorage(); diff --git a/src/entity/restriction.ts b/src/entity/restriction.ts index a09db3b..6b2f0dd 100644 --- a/src/entity/restriction.ts +++ b/src/entity/restriction.ts @@ -1,10 +1,10 @@ -import { convertStringTimeToSummaryTime } from "../common/utility"; +import { convertStringTimeToSummaryTime } from "../utils/converter"; export class Restriction { domain: string; time: number; - constructor(domain: string, time: string){ + constructor(domain: string, time: string) { this.domain = domain; this.time = convertStringTimeToSummaryTime(time); } diff --git a/src/entity/tab.ts b/src/entity/tab.ts index c1269b7..f5851ee 100644 --- a/src/entity/tab.ts +++ b/src/entity/tab.ts @@ -1,4 +1,4 @@ -import { todayLocalDate } from "../utils/common"; +import { todayLocalDate } from "../utils/today"; import { logger } from "../compositions/logger"; export class Tab implements ISerializable { diff --git a/src/tracker.ts b/src/tracker.ts index 3aec7e8..5f3660d 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -12,7 +12,7 @@ import { ActiveTab } from "./compositions/activeTab"; import { isLimitExceeded } from "./compositions/limit-list"; import { Tab } from "./entity/tab"; import { useBlockPage } from "./compositions/block-page"; -import { convertSummaryTimeToBadgeString } from "./common/utility"; +import { convertSummaryTimeToBadgeString } from "./utils/converter"; const activeTabInstance = ActiveTab.getInstance(); const storage = injecStorage(); diff --git a/src/utils/common.ts b/src/utils/common.ts index c07bfef..5a20bd8 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -1,3 +1,8 @@ -export function todayLocalDate(){ - return new Date().toLocaleDateString('en-US'); +export function isEmpty(obj: any): boolean { + for (const prop in obj) { + if (obj.hasOwnProperty(prop)) + return false; + } + + return JSON.stringify(obj) === JSON.stringify({}); } \ No newline at end of file diff --git a/src/common/utility.ts b/src/utils/converter.ts similarity index 60% rename from src/common/utility.ts rename to src/utils/converter.ts index 3d9de4c..272a191 100644 --- a/src/common/utility.ts +++ b/src/utils/converter.ts @@ -1,13 +1,4 @@ -export function isEmpty(obj:any): boolean { - for (const prop in obj) { - if (obj.hasOwnProperty(prop)) - return false; - } - - return JSON.stringify(obj) === JSON.stringify({}); -} - -export function convertStringTimeToSummaryTime(time:string) { +export function convertStringTimeToSummaryTime(time: string) { const timeValue = time.split(':'); const hour = Number(timeValue[0]); const min = Number(timeValue[1]); @@ -19,7 +10,7 @@ export function convertStringTimeToSummaryTime(time:string) { return resultTimeValue; } -export function convertSummaryTimeToBadgeString(summaryTime:number):string { +export function convertSummaryTimeToBadgeString(summaryTime: number): string { const sec = summaryTime; const min = Number((summaryTime / 60).toFixed(0)); const hours = Number((summaryTime / (60 * 60)).toFixed(1)); diff --git a/src/utils/today.ts b/src/utils/today.ts new file mode 100644 index 0000000..65db666 --- /dev/null +++ b/src/utils/today.ts @@ -0,0 +1,3 @@ +export function todayLocalDate() { + return new Date().toLocaleDateString('en-US'); +} \ No newline at end of file From 8bb6cefae99c141e2a3d1ebf2d09e53926e84559 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 1 May 2023 01:06:35 +0300 Subject: [PATCH 054/329] Refact badge component --- src/compositions/set-badge.ts | 15 +++++++++++++-- src/compositions/types.ts | 11 ----------- src/tracker.ts | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) delete mode 100644 src/compositions/types.ts diff --git a/src/compositions/set-badge.ts b/src/compositions/set-badge.ts index aa6a10a..04cef94 100644 --- a/src/compositions/set-badge.ts +++ b/src/compositions/set-badge.ts @@ -1,7 +1,18 @@ import Browser from "webextension-polyfill"; -import { BadgeState } from "./types"; -export function useBadge(badge:BadgeState): void{ +export interface BadgeState { + color: BadgeColor; + tabId: number; + text: string; +} + +export enum BadgeColor { + red = '#fdb8b8', + green = '#6ec05e', + none = '#000' +} + +export function useBadge(badge: BadgeState): void { Browser.action.setBadgeBackgroundColor({ color: badge.color }) Browser.action.setBadgeText({ tabId: badge.tabId, diff --git a/src/compositions/types.ts b/src/compositions/types.ts deleted file mode 100644 index dc774d2..0000000 --- a/src/compositions/types.ts +++ /dev/null @@ -1,11 +0,0 @@ -export interface BadgeState { - color: BadgeColor; - tabId: number; - text: string; -} - -export enum BadgeColor { - red = '#fdb8b8', - green = '#6ec05e', - none = '#000' -} \ No newline at end of file diff --git a/src/tracker.ts b/src/tracker.ts index 5f3660d..1735d91 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -4,8 +4,8 @@ import { extractHostname } from "./compositions/extract-hostname"; import { injectTabsRepository } from "./repository/inject-tabs-repository"; import { isInBlackList } from "./compositions/black-list"; import { useBadge } from "./compositions/set-badge"; -import { BadgeColor } from "./compositions/types"; import { INTERVAL_INACTIVITY_DEFAULT, INTERVAL_SAVE_STORAGE_DEFAULT, StorageParams, VIEW_TIME_IN_BADGE_DEFAULT, } from "./storage/storage-params"; +import { BadgeColor } from "./compositions/set-badge"; import { injecStorage } from "./storage/inject-storage"; import { addInterval, closeInterval } from "./compositions/daily-intervals"; import { ActiveTab } from "./compositions/activeTab"; From 432b2a353b5b8bdccfb3ae1763f9a6eec8cc25cf Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 4 May 2023 14:09:23 +0300 Subject: [PATCH 055/329] Fix types --- src/entity/time-interval.ts | 2 +- src/storage/local-storage.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/entity/time-interval.ts b/src/entity/time-interval.ts index 51cfefd..473e920 100644 --- a/src/entity/time-interval.ts +++ b/src/entity/time-interval.ts @@ -2,7 +2,7 @@ import { logger } from "../compositions/logger"; export class TimeInterval implements ISerializable { domain: string = ''; - intervals: any; + intervals: string[] = []; day: string = ''; init(day:string, domain:string) { diff --git a/src/storage/local-storage.ts b/src/storage/local-storage.ts index 3ce3134..eae6ae3 100644 --- a/src/storage/local-storage.ts +++ b/src/storage/local-storage.ts @@ -2,7 +2,7 @@ import { IStorage } from "./storage-interface"; import { StorageDeserializeParam, StorageDeserializeType, StorageParams, createDeserializeParambject } from "./storage-params"; import { Tab } from "../entity/tab"; import Browser from 'webextension-polyfill'; -import { isEmpty } from "../common/utility"; +import { isEmpty } from "../utils/common"; export class LocalStorage implements IStorage { async getDeserializeList(param: StorageDeserializeParam): Promise { From 7ef6ee5f99cb3fc152816d7be4ab7056127e064a Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 10 May 2023 22:15:09 +0300 Subject: [PATCH 056/329] Small refact tracker --- src/compositions/valid-page.ts | 6 +- src/icons/bmc-new-btn-logo.svg | 29 -------- src/repository/tabs-repository-interface.ts | 2 +- src/repository/tabs-repository.ts | 73 ++++++++++----------- src/tracker.ts | 2 +- 5 files changed, 38 insertions(+), 74 deletions(-) delete mode 100644 src/icons/bmc-new-btn-logo.svg diff --git a/src/compositions/valid-page.ts b/src/compositions/valid-page.ts index 4f1f2ca..248ae8c 100644 --- a/src/compositions/valid-page.ts +++ b/src/compositions/valid-page.ts @@ -3,9 +3,9 @@ import Browser from 'webextension-polyfill'; export function isValidPage(tab: Browser.Tabs.Tab | undefined): boolean{ if (tab == null || tab == undefined || !tab.url || !tab.id) return false; - if ((tab.url.indexOf('http:') == -1 && tab.url.indexOf('https:') == -1) - || tab.url.indexOf('chrome://') !== -1 - || tab.url.indexOf('chrome-extension://') !== -1) + if ((!tab.url.startsWith('http:') && !tab.url.startsWith('https:')) + || tab.url.startsWith('chrome://') + || tab.url.startsWith('chrome-extension://')) return false; return true; } \ No newline at end of file diff --git a/src/icons/bmc-new-btn-logo.svg b/src/icons/bmc-new-btn-logo.svg deleted file mode 100644 index d7b9b32..0000000 --- a/src/icons/bmc-new-btn-logo.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - Group - Created with Sketch. - - - - - - \ No newline at end of file diff --git a/src/repository/tabs-repository-interface.ts b/src/repository/tabs-repository-interface.ts index b0844fa..b7c4b4c 100644 --- a/src/repository/tabs-repository-interface.ts +++ b/src/repository/tabs-repository-interface.ts @@ -4,5 +4,5 @@ import Browser from 'webextension-polyfill'; export interface ITabsRepository { getTabs(): Tab[]; getTab(domain:string): Tab | undefined; - addTab(tab:Browser.Tabs.Tab): Promise; + addTab(domain: string, favicon: string | undefined): Promise; } \ No newline at end of file diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts index aa5f4b2..921eaa4 100644 --- a/src/repository/tabs-repository.ts +++ b/src/repository/tabs-repository.ts @@ -1,53 +1,46 @@ import { ITabsRepository } from "./tabs-repository-interface"; import { Tab } from "../entity/tab"; -import Browser from 'webextension-polyfill'; import { injecStorage } from "../storage/inject-storage"; -import { isValidPage } from '../compositions/valid-page'; import { isInBlackList } from "../compositions/black-list"; -import { extractHostname } from "../compositions/extract-hostname"; import { StorageDeserializeParam } from "../storage/storage-params"; export class TabsRepository implements ITabsRepository { - private tabs: Tab[]; + private tabs: Tab[]; - constructor() { - this.tabs = []; - } - - async initAsync(){ - this.tabs = await injecStorage().getDeserializeList(StorageDeserializeParam.TABS) as Tab[]; - } + constructor() { + this.tabs = []; + } - getTabs(): Tab[] { - return this.tabs; - } + async initAsync() { + this.tabs = (await injecStorage().getDeserializeList( + StorageDeserializeParam.TABS + )) as Tab[]; + } - getTab(domain: string): Tab | undefined { - return this.tabs?.find(x => x.url === domain); - } + getTabs(): Tab[] { + return this.tabs; + } - async addTab(tab: Browser.Tabs.Tab): Promise { - if (isValidPage(tab)) { - if (tab.id && (tab.id != 0)) { - const domain = extractHostname(tab.url); - const tabFromStorage = this.getTab(domain); - const isInBlackListFlag = await isInBlackList(domain); - - if (!isInBlackListFlag){ - if (!tabFromStorage) { - let favicon = tab.favIconUrl; - if (!favicon) { - favicon = 'chrome://favicon/' + domain; - } - const newTab = new Tab(); - newTab.init(domain, favicon); - this.tabs.push(newTab); - return newTab; - } - } - } - } + getTab(domain: string): Tab | undefined { + return this.tabs?.find((x) => x.url === domain); + } + + async addTab(domain: string, favicon: string | undefined): Promise { + const tabFromStorage = this.getTab(domain); + const isInBlackListFlag = await isInBlackList(domain); - return undefined; + if (!isInBlackListFlag) { + if (!tabFromStorage) { + if (!favicon) { + favicon = "chrome://favicon/" + domain; + } + const newTab = new Tab(); + newTab.init(domain, favicon); + this.tabs.push(newTab); + return newTab; + } } -} \ No newline at end of file + + return undefined; + } +} diff --git a/src/tracker.ts b/src/tracker.ts index 1735d91..95dcb48 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -39,7 +39,7 @@ async function trackTime(){ } else { let tab = repo.getTab(activeDomain); if (tab == undefined) { - tab = await repo.addTab(activeTab!); + tab = await repo.addTab(activeDomain, activeTab?.favIconUrl); } if (tab != undefined){ const inactivityInterval = (await storage.getValue( From f4ec75fb3e6a327228b080eed1d2c5dc49cdbdd1 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 11 May 2023 15:31:15 +0300 Subject: [PATCH 057/329] Update favicon after loading page --- src/background.ts | 5 +++++ src/compositions/update-favicon.ts | 16 ++++++++++++++++ src/entity/tab.ts | 10 ++++++++-- src/repository/tabs-repository.ts | 9 ++------- 4 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 src/compositions/update-favicon.ts diff --git a/src/background.ts b/src/background.ts index 44c1235..ad1672b 100644 --- a/src/background.ts +++ b/src/background.ts @@ -1,6 +1,7 @@ import Browser from "webextension-polyfill"; import { initTracker } from "./tracker"; import { logger } from "./compositions/logger"; +import { useFavicon } from "./compositions/update-favicon"; logger.log("Start background script"); @@ -8,4 +9,8 @@ Browser.runtime.onInstalled.addListener((details) => { logger.log("Extension installed:", details); }); +Browser.webNavigation.onCompleted.addListener(async function(details) { + await useFavicon(details.tabId); +}); + initTracker(); \ No newline at end of file diff --git a/src/compositions/update-favicon.ts b/src/compositions/update-favicon.ts new file mode 100644 index 0000000..e97ba35 --- /dev/null +++ b/src/compositions/update-favicon.ts @@ -0,0 +1,16 @@ +import Browser from 'webextension-polyfill'; +import { isValidPage } from './valid-page'; +import { extractHostname } from './extract-hostname'; +import { injectTabsRepository } from '../repository/inject-tabs-repository'; + +export async function useFavicon(tabId: number): Promise{ + const repo = await injectTabsRepository(); + const tab = await Browser.tabs.get(tabId); + if (isValidPage(tab)) { + const activeDomain = extractHostname(tab?.url); + let tabFromStoage = repo.getTab(activeDomain); + if (tabFromStoage != undefined && tabFromStoage.favicon != null){ + tabFromStoage.setFavicon(tab?.favIconUrl); + } + } +} \ No newline at end of file diff --git a/src/entity/tab.ts b/src/entity/tab.ts index f5851ee..9bc472d 100644 --- a/src/entity/tab.ts +++ b/src/entity/tab.ts @@ -8,9 +8,8 @@ export class Tab implements ISerializable { counter: number = 0 days: TabDay[] = []; - init(url: string, favicon: string){ + init(url: string){ this.url = url; - this.favicon = favicon; } incSummaryTime() :void { @@ -48,6 +47,13 @@ export class Tab implements ISerializable { return this; } + + setFavicon(favicon: string | undefined){ + if (favicon != undefined) + this.favicon = favicon; + else + this.favicon = "chrome://favicon/" + this.url; + } } export class TabDay implements ISerializable { diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts index 921eaa4..6047fbb 100644 --- a/src/repository/tabs-repository.ts +++ b/src/repository/tabs-repository.ts @@ -29,16 +29,11 @@ export class TabsRepository implements ITabsRepository { const tabFromStorage = this.getTab(domain); const isInBlackListFlag = await isInBlackList(domain); - if (!isInBlackListFlag) { - if (!tabFromStorage) { - if (!favicon) { - favicon = "chrome://favicon/" + domain; - } + if (!isInBlackListFlag && !tabFromStorage) { const newTab = new Tab(); - newTab.init(domain, favicon); + newTab.init(domain); this.tabs.push(newTab); return newTab; - } } return undefined; From 85411ebecc333bc9dd70125e55ff1f0a7be94459 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 11 May 2023 15:32:04 +0300 Subject: [PATCH 058/329] Loading tabs for today --- src/repository/tabs-repository-interface.ts | 2 +- src/repository/tabs-repository.ts | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/repository/tabs-repository-interface.ts b/src/repository/tabs-repository-interface.ts index b7c4b4c..62c8998 100644 --- a/src/repository/tabs-repository-interface.ts +++ b/src/repository/tabs-repository-interface.ts @@ -1,8 +1,8 @@ import { Tab } from "../entity/tab"; -import Browser from 'webextension-polyfill'; export interface ITabsRepository { getTabs(): Tab[]; + getTodayTabs(): Tab[]; getTab(domain:string): Tab | undefined; addTab(domain: string, favicon: string | undefined): Promise; } \ No newline at end of file diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts index 6047fbb..e026137 100644 --- a/src/repository/tabs-repository.ts +++ b/src/repository/tabs-repository.ts @@ -3,6 +3,7 @@ import { Tab } from "../entity/tab"; import { injecStorage } from "../storage/inject-storage"; import { isInBlackList } from "../compositions/black-list"; import { StorageDeserializeParam } from "../storage/storage-params"; +import { todayLocalDate } from "../utils/today"; export class TabsRepository implements ITabsRepository { private tabs: Tab[]; @@ -21,6 +22,10 @@ export class TabsRepository implements ITabsRepository { return this.tabs; } + getTodayTabs(): Tab[]{ + return this.tabs.filter(x => x.days.find(s => s.date === todayLocalDate())); + } + getTab(domain: string): Tab | undefined { return this.tabs?.find((x) => x.url === domain); } From 6947a76e6caf8efe0ae45b03c45b457a51ba1d3f Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 11 May 2023 18:45:44 +0300 Subject: [PATCH 059/329] Update getting from black list with and without www --- src/compositions/black-list.ts | 4 +++- src/utils/common.ts | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/compositions/black-list.ts b/src/compositions/black-list.ts index bb4b992..9702407 100644 --- a/src/compositions/black-list.ts +++ b/src/compositions/black-list.ts @@ -1,8 +1,10 @@ import { injecStorage } from "../storage/inject-storage"; import { StorageParams } from "../storage/storage-params"; +import { isDomainEquals } from "../utils/common"; +import { extractHostname } from "./extract-hostname"; export async function isInBlackList(url: string): Promise{ const storage = injecStorage(); const blackList = await storage.getValue(StorageParams.BLACK_LIST) as string[]; - return blackList != undefined && blackList.indexOf(url) != -1 ? true : false; + return blackList?.find(x => isDomainEquals(extractHostname(x), extractHostname(url))) !== undefined; } \ No newline at end of file diff --git a/src/utils/common.ts b/src/utils/common.ts index 5a20bd8..f9828be 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -5,4 +5,20 @@ export function isEmpty(obj: any): boolean { } return JSON.stringify(obj) === JSON.stringify({}); +} + +export function isDomainEquals(first:string, second:string) { + if (first === second) + return true; + else { + var resultUrl = function(url:string) { + if (url.indexOf('www.') > -1) + return url.split('www.')[1]; + return url; + }; + + if (resultUrl(first) === resultUrl(second)) + return true; + else return false; + } } \ No newline at end of file From c44f6d153f2b806fc2b81a10baba8a21448b2352 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 11 May 2023 19:45:34 +0300 Subject: [PATCH 060/329] Add view with tab items --- .prettierrc.yml | 7 +++ package.json | 2 - src/assets/css/main.css | 27 ++++++++++ src/{ => assets}/icons/128x128.png | Bin src/{ => assets}/icons/16x16.png | Bin src/{ => assets}/icons/32x32.png | Bin src/{ => assets}/icons/48x48.png | Bin src/assets/icons/dark-mode.svg | 2 + src/{ => assets}/icons/delete.png | Bin src/{ => assets}/icons/edit.png | Bin src/{ => assets}/icons/empty.png | Bin src/{ => assets}/icons/eye.png | Bin src/{ => assets}/icons/heat-map-16.png | Bin src/{ => assets}/icons/information.svg | 0 src/{ => assets}/icons/limit.png | Bin src/{ => assets}/icons/no-today.svg | 0 src/{ => assets}/icons/pie-chart.png | Bin src/{ => assets}/icons/preloader.svg | 0 src/assets/icons/settings.svg | 2 + src/{ => assets}/icons/success.png | Bin src/{ => assets}/icons/time.svg | 0 src/{ => assets}/icons/today.svg | 0 src/components/Favicon.vue | 29 ++++++++++ src/components/TabItem.vue | 71 +++++++++++++++++++++++++ src/components/TabList.vue | 44 +++++++++++++++ src/compositions/update-favicon.ts | 7 ++- src/entity/tab.ts | 11 ++-- src/pages/Popup.vue | 67 +++++++++-------------- src/popup.html | 20 +++++-- src/utils/common.ts | 4 ++ src/utils/consts.ts | 1 + src/utils/converter.ts | 25 +++++++++ tailwind.config.js | 3 -- 33 files changed, 258 insertions(+), 64 deletions(-) create mode 100644 .prettierrc.yml create mode 100644 src/assets/css/main.css rename src/{ => assets}/icons/128x128.png (100%) rename src/{ => assets}/icons/16x16.png (100%) rename src/{ => assets}/icons/32x32.png (100%) rename src/{ => assets}/icons/48x48.png (100%) create mode 100644 src/assets/icons/dark-mode.svg rename src/{ => assets}/icons/delete.png (100%) rename src/{ => assets}/icons/edit.png (100%) rename src/{ => assets}/icons/empty.png (100%) rename src/{ => assets}/icons/eye.png (100%) rename src/{ => assets}/icons/heat-map-16.png (100%) rename src/{ => assets}/icons/information.svg (100%) rename src/{ => assets}/icons/limit.png (100%) rename src/{ => assets}/icons/no-today.svg (100%) rename src/{ => assets}/icons/pie-chart.png (100%) rename src/{ => assets}/icons/preloader.svg (100%) create mode 100644 src/assets/icons/settings.svg rename src/{ => assets}/icons/success.png (100%) rename src/{ => assets}/icons/time.svg (100%) rename src/{ => assets}/icons/today.svg (100%) create mode 100644 src/components/Favicon.vue create mode 100644 src/components/TabItem.vue create mode 100644 src/components/TabList.vue create mode 100644 src/utils/consts.ts delete mode 100644 tailwind.config.js diff --git a/.prettierrc.yml b/.prettierrc.yml new file mode 100644 index 0000000..68c8e83 --- /dev/null +++ b/.prettierrc.yml @@ -0,0 +1,7 @@ +singleQuote: true +trailingComma: all +endOfLine: lf +printWidth: 120 +tabWidth: 2 +singleAttributePerLine: true +arrowParens: avoid diff --git a/package.json b/package.json index ecbf8ec..806ec13 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,6 @@ "script:zip": "powershell scripts/zip.ps1" }, "dependencies": { - "pinia": "^2.0.34", - "tailwind": "^4.0.0", "vue": "^3.2.47" }, "devDependencies": { diff --git a/src/assets/css/main.css b/src/assets/css/main.css new file mode 100644 index 0000000..447a2d4 --- /dev/null +++ b/src/assets/css/main.css @@ -0,0 +1,27 @@ +::-webkit-scrollbar-track { + border-radius: 10px; + background-color: #F5F5F5; +} + +::-webkit-scrollbar { + width: 7px; + background-color: #F5F5F5; +} + +::-webkit-scrollbar-thumb { + border-radius: 10px; + background-color: #7c7c7c; +} + +.float-right{ + float: right; +} +.display-inline-block{ + display: inline-block; +} +.ml-10{ + margin-left: 10px; +} +.text-right{ + text-align: right; +} \ No newline at end of file diff --git a/src/icons/128x128.png b/src/assets/icons/128x128.png similarity index 100% rename from src/icons/128x128.png rename to src/assets/icons/128x128.png diff --git a/src/icons/16x16.png b/src/assets/icons/16x16.png similarity index 100% rename from src/icons/16x16.png rename to src/assets/icons/16x16.png diff --git a/src/icons/32x32.png b/src/assets/icons/32x32.png similarity index 100% rename from src/icons/32x32.png rename to src/assets/icons/32x32.png diff --git a/src/icons/48x48.png b/src/assets/icons/48x48.png similarity index 100% rename from src/icons/48x48.png rename to src/assets/icons/48x48.png diff --git a/src/assets/icons/dark-mode.svg b/src/assets/icons/dark-mode.svg new file mode 100644 index 0000000..767b50e --- /dev/null +++ b/src/assets/icons/dark-mode.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/icons/delete.png b/src/assets/icons/delete.png similarity index 100% rename from src/icons/delete.png rename to src/assets/icons/delete.png diff --git a/src/icons/edit.png b/src/assets/icons/edit.png similarity index 100% rename from src/icons/edit.png rename to src/assets/icons/edit.png diff --git a/src/icons/empty.png b/src/assets/icons/empty.png similarity index 100% rename from src/icons/empty.png rename to src/assets/icons/empty.png diff --git a/src/icons/eye.png b/src/assets/icons/eye.png similarity index 100% rename from src/icons/eye.png rename to src/assets/icons/eye.png diff --git a/src/icons/heat-map-16.png b/src/assets/icons/heat-map-16.png similarity index 100% rename from src/icons/heat-map-16.png rename to src/assets/icons/heat-map-16.png diff --git a/src/icons/information.svg b/src/assets/icons/information.svg similarity index 100% rename from src/icons/information.svg rename to src/assets/icons/information.svg diff --git a/src/icons/limit.png b/src/assets/icons/limit.png similarity index 100% rename from src/icons/limit.png rename to src/assets/icons/limit.png diff --git a/src/icons/no-today.svg b/src/assets/icons/no-today.svg similarity index 100% rename from src/icons/no-today.svg rename to src/assets/icons/no-today.svg diff --git a/src/icons/pie-chart.png b/src/assets/icons/pie-chart.png similarity index 100% rename from src/icons/pie-chart.png rename to src/assets/icons/pie-chart.png diff --git a/src/icons/preloader.svg b/src/assets/icons/preloader.svg similarity index 100% rename from src/icons/preloader.svg rename to src/assets/icons/preloader.svg diff --git a/src/assets/icons/settings.svg b/src/assets/icons/settings.svg new file mode 100644 index 0000000..9b86d3e --- /dev/null +++ b/src/assets/icons/settings.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/icons/success.png b/src/assets/icons/success.png similarity index 100% rename from src/icons/success.png rename to src/assets/icons/success.png diff --git a/src/icons/time.svg b/src/assets/icons/time.svg similarity index 100% rename from src/icons/time.svg rename to src/assets/icons/time.svg diff --git a/src/icons/today.svg b/src/assets/icons/today.svg similarity index 100% rename from src/icons/today.svg rename to src/assets/icons/today.svg diff --git a/src/components/Favicon.vue b/src/components/Favicon.vue new file mode 100644 index 0000000..f3d852c --- /dev/null +++ b/src/components/Favicon.vue @@ -0,0 +1,29 @@ + + + + + + + diff --git a/src/components/TabItem.vue b/src/components/TabItem.vue new file mode 100644 index 0000000..934e290 --- /dev/null +++ b/src/components/TabItem.vue @@ -0,0 +1,71 @@ + + + + + + + diff --git a/src/components/TabList.vue b/src/components/TabList.vue new file mode 100644 index 0000000..d656d34 --- /dev/null +++ b/src/components/TabList.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/compositions/update-favicon.ts b/src/compositions/update-favicon.ts index e97ba35..dcffa7e 100644 --- a/src/compositions/update-favicon.ts +++ b/src/compositions/update-favicon.ts @@ -8,9 +8,8 @@ export async function useFavicon(tabId: number): Promise{ const tab = await Browser.tabs.get(tabId); if (isValidPage(tab)) { const activeDomain = extractHostname(tab?.url); - let tabFromStoage = repo.getTab(activeDomain); - if (tabFromStoage != undefined && tabFromStoage.favicon != null){ - tabFromStoage.setFavicon(tab?.favIconUrl); - } + let tabFromStorage = repo.getTab(activeDomain); + if (tab?.favIconUrl != undefined) + tabFromStorage?.setFavicon(tab?.favIconUrl); } } \ No newline at end of file diff --git a/src/entity/tab.ts b/src/entity/tab.ts index 9bc472d..807d44c 100644 --- a/src/entity/tab.ts +++ b/src/entity/tab.ts @@ -3,7 +3,7 @@ import { logger } from "../compositions/logger"; export class Tab implements ISerializable { url: string = ''; - favicon: string = ''; + favicon: string | undefined = ''; summaryTime: number = 0; counter: number = 0 days: TabDay[] = []; @@ -14,7 +14,7 @@ export class Tab implements ISerializable { incSummaryTime() :void { this.summaryTime += 1; - //logger.log(`Summary time ${this.url} - ${this.summaryTime}`); + if (__DEV__) logger.log(`Summary time ${this.url} - ${this.summaryTime}`); const day = this.days.find(x => x.date == todayLocalDate()); if (day === undefined) @@ -24,7 +24,7 @@ export class Tab implements ISerializable { incCounter() :void { this.counter +=1; - logger.log(`Counter ${this.url} - ${this.counter}`); + if (__DEV__) logger.log(`Counter ${this.url} - ${this.counter}`); const day = this.days.find(x => x.date == todayLocalDate()); if (day === undefined) this.addNewDay(); @@ -49,10 +49,7 @@ export class Tab implements ISerializable { } setFavicon(favicon: string | undefined){ - if (favicon != undefined) - this.favicon = favicon; - else - this.favicon = "chrome://favicon/" + this.url; + this.favicon = favicon; } } diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index 92f06dd..f85d445 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -1,61 +1,42 @@ - - + + diff --git a/src/popup.html b/src/popup.html index cfe9ef4..af033b7 100644 --- a/src/popup.html +++ b/src/popup.html @@ -2,17 +2,27 @@ - - + + Popup + diff --git a/src/utils/common.ts b/src/utils/common.ts index f9828be..7094f53 100644 --- a/src/utils/common.ts +++ b/src/utils/common.ts @@ -21,4 +21,8 @@ export function isDomainEquals(first:string, second:string) { return true; else return false; } +} + +export function getPercentage(time:number, totalTime:number) { + return ((time / totalTime) * 100).toFixed(2); } \ No newline at end of file diff --git a/src/utils/consts.ts b/src/utils/consts.ts new file mode 100644 index 0000000..a4e92de --- /dev/null +++ b/src/utils/consts.ts @@ -0,0 +1 @@ +export const NO_FAVICON_URL = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABJUlEQVR42mKgOogpKJBMTM08kJCS+RXAJ1UbVBRDUWQIRmACWmwEpHxuN8GpkRIdAOuRfehwnQDXe7696C+eJkdvoox+ceEd/7DWFZyUcinO6JNBf3FOP/z+HGXirkX0hzXs8YJbG78ZvHp2dtaP/3E+Owqwcv1aJLDGSl8Ap6kY7JDmcjfK6UklaDvR4iBfy/Zq+19cyCETqF7AdAiilF6RGbYV0hFWOm9dbyYBiu0QIBcK85XLm090guoDGI3AUPiOM3HJrtbhKs8XBvh7k4mO+DkNMWC0CL6saS5D1Q0IERcRrBKdVy729Ti0apaojlEFHvI1k+Q03t6HESOeMUbjILUJCpo0bK8C7DxI9ezFMtibDuiLQY8oDJn/h5yUKctM1AYAkF4mBkXjJukAAAAASUVORK5CYII='; \ No newline at end of file diff --git a/src/utils/converter.ts b/src/utils/converter.ts index 272a191..8a921bc 100644 --- a/src/utils/converter.ts +++ b/src/utils/converter.ts @@ -18,4 +18,29 @@ export function convertSummaryTimeToBadgeString(summaryTime: number): string { if (sec < 60) return `${sec}s`; else if (min < 60) return `${min}m`; else return `${hours}h`; +} + +export function convertSummaryTimeToString(summaryTime:number) { + let days = Math.floor(summaryTime / 3600 / 24); + const totalHours = summaryTime % (3600 * 24); + let hours = Math.floor(totalHours / 3600); + const totalSeconds = summaryTime % 3600; + let mins = Math.floor(totalSeconds / 60); + let seconds = totalSeconds % 60; + + hours = zeroAppend(hours); + mins = zeroAppend(mins); + seconds = zeroAppend(seconds); + + function appendTime(value:number, stringPrefix:string){ + return value > 0 ? `${value} ${stringPrefix}` : ''; + } + + return `${appendTime(days, 'd')} ${appendTime(hours, 'h')} ${appendTime(mins, 'm')} ${appendTime(seconds, 's')}`; +} + +function zeroAppend(time:number) { + if (time < 10) + return Number('0' + time); + else return time; } \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index 3477d54..0000000 --- a/tailwind.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - content: ["./src/*.html", "./src/**/*.{vue,js,ts}"], -}; From d8c311cc961345613cddf5d676e599ae0c25c162 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 11 May 2023 20:15:37 +0300 Subject: [PATCH 061/329] Add progress bar --- src/assets/css/main.css | 3 +++ src/components/Favicon.vue | 13 +++++++++---- src/components/TabItem.vue | 22 ++++++++++++++++++---- src/pages/Popup.vue | 14 ++++++++++---- 4 files changed, 40 insertions(+), 12 deletions(-) diff --git a/src/assets/css/main.css b/src/assets/css/main.css index 447a2d4..72c7f10 100644 --- a/src/assets/css/main.css +++ b/src/assets/css/main.css @@ -1,3 +1,6 @@ +:root { + --main-color: #6ebf5d; +} ::-webkit-scrollbar-track { border-radius: 10px; background-color: #F5F5F5; diff --git a/src/components/Favicon.vue b/src/components/Favicon.vue index f3d852c..e262406 100644 --- a/src/components/Favicon.vue +++ b/src/components/Favicon.vue @@ -1,21 +1,26 @@ diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index f85d445..e9406ff 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -2,15 +2,21 @@

Web Activity Time Tracker

- - + +
diff --git a/src/components/TabItem.vue b/src/components/TabItem.vue index 1b77a0b..fcfed54 100644 --- a/src/components/TabItem.vue +++ b/src/components/TabItem.vue @@ -1,16 +1,18 @@ @@ -54,6 +56,9 @@ const styleForProgressBar = computed(() => `width: ${percent}%`); border: 1px transparent solid; border-radius: 10px; margin: 10px; + display: flex; + justify-content: flex-start; + align-items: center; } .tab-item:hover { border: 1px rgb(202, 202, 202) solid; @@ -74,7 +79,7 @@ const styleForProgressBar = computed(() => `width: ${percent}%`); font-weight: 600; } .tab-item .progress-bar { - margin: 5px 0 0 45px; + margin: 5px 0 0 5px; border-radius: 10px; border: 1px rgb(225 224 224) solid; } @@ -82,4 +87,7 @@ const styleForProgressBar = computed(() => `width: ${percent}%`); height: 6px; background-color: var(--main-color); } +.flex-grow-2 { + flex-grow: 2; +} diff --git a/src/components/TabList.vue b/src/components/TabList.vue index d656d34..80868c6 100644 --- a/src/components/TabList.vue +++ b/src/components/TabList.vue @@ -37,7 +37,8 @@ onMounted(async () => { let unSortedTabs = repo.getTodayTabs(); tabs.value = unSortedTabs?.sort(function (a: Tab, b: Tab) { return ( - b.days.find(s => s.date === todayLocalDate())!.summary - a.days.find(s => s.date === todayLocalDate())!.summary + b.days.find(s => s.date === todayLocalDate())!.summary - + a.days.find(s => s.date === todayLocalDate())!.summary ); }); }); diff --git a/src/pages/Blocked.vue b/src/pages/Blocked.vue new file mode 100644 index 0000000..9fa3844 --- /dev/null +++ b/src/pages/Blocked.vue @@ -0,0 +1,3 @@ + + + diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index e9406ff..893923c 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -1,7 +1,7 @@ diff --git a/src/popup.html b/src/popup.html index af033b7..b5f0b1e 100644 --- a/src/popup.html +++ b/src/popup.html @@ -13,16 +13,15 @@ Popup - + + + - diff --git a/src/popup.ts b/src/popup.ts new file mode 100644 index 0000000..6492ff4 --- /dev/null +++ b/src/popup.ts @@ -0,0 +1,5 @@ +import Popup from './pages/Popup.vue'; +import { router } from './router'; +import { createApp } from 'vue'; + +createApp(Popup).use(router).mount('body'); diff --git a/src/settings.html b/src/settings.html new file mode 100644 index 0000000..70c8151 --- /dev/null +++ b/src/settings.html @@ -0,0 +1,27 @@ + + + + + + + Settings + + + + + + + + diff --git a/src/settings.ts b/src/settings.ts new file mode 100644 index 0000000..53aae2c --- /dev/null +++ b/src/settings.ts @@ -0,0 +1,4 @@ +import Settings from './pages/Settings.vue'; +import { createApp } from 'vue'; + +createApp(Settings).mount('body'); From 5a410d717f6c96999085aaec5f4f1bc24ebfc7a5 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 18 May 2023 18:30:38 +0300 Subject: [PATCH 064/329] Build extension (and zip) --- .gitignore | 2 +- package.json | 1 - public/128x128.png | Bin 0 -> 3693 bytes public/16x16.png | Bin 0 -> 513 bytes public/32x32.png | Bin 0 -> 928 bytes public/48x48.png | Bin 0 -> 2227 bytes scripts/build.ps1 | 15 --------------- src/manifest.json | 18 ++++++------------ src/popup.ts | 3 +-- vite.config.ts | 14 +++++++------- 10 files changed, 15 insertions(+), 38 deletions(-) create mode 100644 public/128x128.png create mode 100644 public/16x16.png create mode 100644 public/32x32.png create mode 100644 public/48x48.png delete mode 100644 scripts/build.ps1 diff --git a/.gitignore b/.gitignore index 49053f3..579aa61 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ lerna-debug.log* node_modules dist -dist-ssr +artifacts *.local # Editor directories and files diff --git a/package.json b/package.json index 806ec13..a4551a2 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,6 @@ "dev": "vite build --watch --mode development", "start": "vite build --watch --mode production", "build": "pnpm compile && vite build --mode production", - "script:build": "powershell scripts/build.ps1", "script:zip": "powershell scripts/zip.ps1" }, "dependencies": { diff --git a/public/128x128.png b/public/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..8915f31a056327cf1508ae20de56776e7470c8a9 GIT binary patch literal 3693 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 LNkvXXu0mjf^BJoD literal 0 HcmV?d00001 diff --git a/public/16x16.png b/public/16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..4916da6c43570768860b8a23a3962b9d88c10d17 GIT binary patch literal 513 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJbFq_W2nPqp?T7vkfLzW3kH}&m zoe#o{9~a$m1~Mc|Tq8ktNuAO?$I2FnlzD=-3bErDDJ3Tj=j zhQTuE(TmrwKYRoVG6L0rq(Wo^(ip8nWc}0r{`&_L1Zm-P3E^}N;c^S{pBWW2H!65u zboBC=y#2BH`{RlZCeFIlH|O$%C1;lHda&{4yQ`)@el7z#Qn@6^FPMReos*k~mtV%V zth%;g(!33O_8&NO^3?h3w;w!x`uxRg5-u&wghk#lXNQ8{iY- z`v3ob2JKJ=PfrGGKL+z?2Ae1b+fWeODu}@>l)*fh!6uNwB8b5pC>YFO8OmT80%BW) zFjxgLScNcH27y!p1)*%98lWJM1S2aX21r>j14IO*IGDi#B)e+gvDN#I0nJ&p_gK%; zjX;q{FW$sAO#vwYBg>SEFW-LvHCm)pf*2sdkiY-_ff!an5i+aFteFsb2qVfUHZX%{=U-Cwu!!N$Fhw(fhh{mzFQ zFTOtg`|r=c|Nnr7*cl&L0t`*hk|4ie1~ztHK0#3_c|}!yBV!XYD;ozVx4_uA#N@Q} z?8eE{=FFYHWZ8-xyLRu}zkmOM0|yVCJaz8;jT<*^-n{wb#fw+3U%&tSHmOr|y3)n*;G*>=P4zM=)<$tUG_YkKf0{w~UAHtpC*6nK}FS zrC;yvXin%|c`-z5)v-+)^Ukc>|HN#`24<0BgFIigWxAMRCyiCktoNI$9JM+!dF$s?yGM7P zd0nhXlC?T@{C0J_YVV^-B6@;pdsj72{}}exP&Ax*U(cGG>vvcDY`*q8O-$SAhI3Ep z-Z_`_x)b9$*aIS8voF_;dmO-Vy<=0`k@-_6J=t<_(GEc;Da~tnU5_tv1qkiAma|#p zlGBB|POW_`u^h8jyF3l9i&8aFY>AmIbL>`%2Z!T#!?zK~dAJ-unq&!F)JVN>YRB@c zVJ@p5Gy5@ph!N{AjpXoXbU7AZe&kt-o$kj@@#($BtG` z?Rb4t`B6l?nt=RYi;oPF;;IstN@BTLMUOu*&x_js@pR0}r@#cj;OXk;vd$@?2>|tZ BifI4< literal 0 HcmV?d00001 diff --git a/public/48x48.png b/public/48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..336d1ef876e5ca63a18a9d471a687edad2970a84 GIT binary patch literal 2227 zcmV;k2u$~hP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGXbpQYZbpg<9qoDu*02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y9E;VFFSW*B02qZ~FK~!i%?OADT6;%`-6kH$}e*phnei#wN z5(MeI7O99NK#b6t2L%c!{2*AM2!RMhpaNpp0%#++5F?sUP}xL5b^?)2kj1hTN}(+X zExZ=mSA@4*&v)nEdGj9kZO|ene#yza%)9rT@1D7H?m1_)dV_9$thtO^n#*J{MK^D1 zx-mn{dVrvtHvy!z576%#djb3fH}=zYImr|)yK#1>H`6+2>RQIY7UE6_F0%v4Mj~=MMCxvZbm;E2bbUc+5253mO|?`rm7-QF zaVJ5f_H9GTON9|Hd3q?_ZNwG2%-O<&VMLxaM%Ij&v(!_tWl!DFGbI(C>o>0W0|Bqk z@AqE2e&g~Hy0>D>Ztt*J`JQJoM=H(?3c(1)uwilNNcT(lf4V`T*Br?2Cj{Lfk2sX; zrjM@g)AhLX{$pJS_y^}L@|?SPrNZa)2Uvo*?ehhSE?lZ~PnlQs$g5d?r%tkckQUQd zY)i*|^R$+c(O58y1DClaY;uG&a+$$5azFGGm0qe23Q~82Krk3Qb)mfawVY|;WYtol zbsW(|FpLA;ogp6E9g3QE8|3?T;$r?6!PYxTqV<^krF~pX?YRlP~s*_>&FlGvk-F#s^yXmVFT4)g@ z`wNRaEqf1-a2&mFx-l>LNR`r~87U}}ia@@s;;Pp&XW@@4``Ogra>EEZMYRB@L_D8}jNUecwSKq1 z@UY2xEzYJVv07N+FLto|n7mMQLTJZX6c<>j$mNCQYytEC0&nb6YGUdRB~wBI6V(Z z8JESzY`6ZOxo;v5$pD^0=A=25j6; zJ*hGhO+XM{Z4D0iQ{Z_e`8b|m zcecQ`1Dg`y;?U(4Y!z@crf5>Fn9oyUBxR69a+~ae@C7vPYO-N#1}n!p1!l+#X z44;*6A7m&4@8uv%R>sjmcCogM+eSWQPMPb-hho(RosDiZh-ZIjeV}^)C8%Lh2C9rT zgv_K6Drfl1_jE0H79fnMWhU9%UU8~K7|45XQz z_@kl;XgZ;9!?h7mfUAtwryRd}SXkp-it2~bL_vd0^p(EP3zji}?w4+Em#aq837!x- zc>$i=059~|oo}miIGqrdCTHS zM{w`me+)@;x27jyKT34W&~ys<$|^Te!y^4fCFLZjS^y3y#Ce2D8EpV;8+bl~e3{m% z&r^cUUBZe=cA<~$gr*bObFPEeuqXpjNkwb!B0azfD-S6NQWe0S58F1di7!C)0+*TQ zd=luGq3MLaP2@t70f-}1hD94o%Ic52gzkQh6d!ULLemL-8?-*qJrKNN0t-fZfD;yn zR4C5dviIJ%O*HVYk>*@^&^ZOIkAc$`R-gcn`iW`t?pky5+)B!A>LTY`p^~D_effIH zzfPJP$Y4Ev002ovPDHLkV1k5~ B6Dj}z literal 0 HcmV?d00001 diff --git a/scripts/build.ps1 b/scripts/build.ps1 deleted file mode 100644 index d592738..0000000 --- a/scripts/build.ps1 +++ /dev/null @@ -1,15 +0,0 @@ -$sourceFolder = ".\src" -$targetFolder = ".\dist" -$targetFolderForClean = ".\dist\*" -$uglifyPath = ".\node_modules\uglify-js\bin\uglifyjs" - -Remove-Item $targetFolderForClean -Recurse -Force -Copy-Item -Path $sourceFolder\* -Destination $targetFolder -Recurse - -$folders = Get-ChildItem -path $targetFolder -Recurse -include *.js -Foreach ($fldr in $folders) { - if ($fldr.Attributes -ne 'Directory') { - node $uglifyPath --output $fldr.FullName $fldr.FullName - Write-Host $fldr.FullName "has been minified." - } -} diff --git a/src/manifest.json b/src/manifest.json index fe4494f..d6bdf1d 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,16 +1,15 @@ { "{{chrome}}.manifest_version": 3, - "{{firefox}}.manifest_version": 2, "name": "Web Activity Time Tracker", "short_name": "Web Tracker", "version": "2.0.0", "description": "Track and limit time your activity in the browser every day. Control how much time you spend on websites.", - "options_page": "src/options.html", + "options_page": "src/settings.html", "icons": { - "16": "src/icons/16x16.png", - "32": "src/icons/32x32.png", - "48": "src/icons/48x48.png", - "128": "src/icons/128x128.png" + "16": "16x16.png", + "32": "32x32.png", + "48": "48x48.png", + "128": "128x128.png" }, "permissions": [ "tabs", @@ -26,16 +25,11 @@ "https://www.netflix.com/*" ], "offline_enabled": true, - "background": { - "{{chrome}}.service_worker": "src/background.ts", - "{{firefox}}.scripts": ["src/background.ts"] + "{{chrome}}.service_worker": "src/background.ts" }, "{{chrome}}.action": { "default_popup": "src/popup.html", "default_title": "Web Activity Time Tracker" - }, - "{{firefox}}.browser_action": { - "default_popup": "src/popup.html" } } \ No newline at end of file diff --git a/src/popup.ts b/src/popup.ts index 6492ff4..9c09d56 100644 --- a/src/popup.ts +++ b/src/popup.ts @@ -1,5 +1,4 @@ import Popup from './pages/Popup.vue'; -import { router } from './router'; import { createApp } from 'vue'; -createApp(Popup).use(router).mount('body'); +createApp(Popup).mount('body'); diff --git a/vite.config.ts b/vite.config.ts index 71a2b32..57aa45a 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,13 +1,13 @@ -import { defineConfig } from "vite"; -import vue from "@vitejs/plugin-vue"; -import webExtension, { readJsonFile } from "vite-plugin-web-extension"; +import { defineConfig } from 'vite'; +import vue from '@vitejs/plugin-vue'; +import webExtension, { readJsonFile } from 'vite-plugin-web-extension'; import pkg from './package.json'; const APPID_CHROME = 'hhfnghjdeddcfegfekjeihfmbjenlomm'; function generateManifest() { - const manifest = readJsonFile("src/manifest.json"); - const pkg = readJsonFile("package.json"); + const manifest = readJsonFile('src/manifest.json'); + const pkg = readJsonFile('package.json'); return { name: pkg.name, description: pkg.description, @@ -21,7 +21,7 @@ export default defineConfig(({ mode }) => ({ build: { emptyOutDir: true, sourcemap: mode === 'development' ? 'inline' : false, - minify: false, + minify: true, }, define: { 'process.env': process.env, @@ -35,7 +35,7 @@ export default defineConfig(({ mode }) => ({ vue(), webExtension({ manifest: generateManifest, - watchFilePaths: ["package.json", "manifest.json"], + watchFilePaths: ['package.json', 'manifest.json'], }), ], optimizeDeps: { From 67c8068f45a46095e7ec12af23fbaa9b4e3046c6 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 19 May 2023 17:06:18 +0300 Subject: [PATCH 065/329] Vite vuild extension --- src/manifest.json | 6 +++--- vite.config.ts | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/manifest.json b/src/manifest.json index d6bdf1d..95243b3 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -4,7 +4,7 @@ "short_name": "Web Tracker", "version": "2.0.0", "description": "Track and limit time your activity in the browser every day. Control how much time you spend on websites.", - "options_page": "src/settings.html", + "options_page": "settings.html", "icons": { "16": "16x16.png", "32": "32x32.png", @@ -26,10 +26,10 @@ ], "offline_enabled": true, "background": { - "{{chrome}}.service_worker": "src/background.ts" + "{{chrome}}.service_worker": "background.ts" }, "{{chrome}}.action": { - "default_popup": "src/popup.html", + "default_popup": "popup.html", "default_title": "Web Activity Time Tracker" } } \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index 57aa45a..adb5132 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -18,7 +18,9 @@ function generateManifest() { // https://vitejs.dev/config/ export default defineConfig(({ mode }) => ({ + root: 'src', build: { + outDir: '../dist', emptyOutDir: true, sourcemap: mode === 'development' ? 'inline' : false, minify: true, From f5bdc1362e16dc86c59b1d33d483d576cd9f1492 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 25 May 2023 20:26:42 +0300 Subject: [PATCH 066/329] Update list items --- .prettierrc.yml | 1 - package.json | 2 +- pnpm-lock.yaml | 1305 +--------------------- src/assets/css/main.css | 8 +- src/assets/css/settings.css | 318 ++++++ src/components/TabItem.vue | 34 +- src/pages/Popup.vue | 23 +- src/pages/Settings.vue | 133 ++- src/popup.html | 20 +- src/repository/inject-tabs-repository.ts | 4 +- src/settings.html | 2 +- 11 files changed, 539 insertions(+), 1311 deletions(-) create mode 100644 src/assets/css/settings.css diff --git a/.prettierrc.yml b/.prettierrc.yml index 3d82060..7dc5d17 100644 --- a/.prettierrc.yml +++ b/.prettierrc.yml @@ -3,5 +3,4 @@ trailingComma: all endOfLine: lf printWidth: 100 tabWidth: 2 -singleAttributePerLine: true arrowParens: avoid diff --git a/package.json b/package.json index a4551a2..13d59a0 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "devDependencies": { "@types/webextension-polyfill": "^0.10.0", "@vitejs/plugin-vue": "^4.0.0", - "typescript": "^4.9.5", + "typescript": "^5.0.4", "vite": "^4.1.4", "vite-plugin-web-extension": "^3.0.0", "vue-tsc": "^1.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f141d93..f18db99 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3,27 +3,23 @@ lockfileVersion: 5.4 specifiers: '@types/webextension-polyfill': ^0.10.0 '@vitejs/plugin-vue': ^4.0.0 - pinia: ^2.0.34 - tailwind: ^4.0.0 - typescript: ^4.9.5 + typescript: ^5.0.4 vite: ^4.1.4 - vite-plugin-web-extension: ^3.0.0 + vite-plugin-web-extension: ^3.0.8 vue: ^3.2.47 vue-tsc: ^1.2.0 webextension-polyfill: ^0.10.0 dependencies: - pinia: 2.0.34_hmuptsblhheur2tugfgucj7gc4 - tailwind: 4.0.0 vue: 3.2.47 devDependencies: '@types/webextension-polyfill': 0.10.0 '@vitejs/plugin-vue': 4.0.0_vite@4.1.4+vue@3.2.47 - typescript: 4.9.5 + typescript: 5.0.4 vite: 4.1.4 - vite-plugin-web-extension: 3.0.0_vite@4.1.4 - vue-tsc: 1.2.0_typescript@4.9.5 + vite-plugin-web-extension: 3.0.8_vite@4.1.4 + vue-tsc: 1.2.0_typescript@5.0.4 webextension-polyfill: 0.10.0 packages: @@ -59,18 +55,6 @@ packages: dependencies: '@babel/types': 7.21.3 - /@babel/runtime/7.1.2: - resolution: {integrity: sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==} - dependencies: - regenerator-runtime: 0.12.1 - dev: false - - /@babel/runtime/7.2.0: - resolution: {integrity: sha512-oouEibCbHMVdZSDlJBO6bZmID/zA/G/Qx3H1d3rSNPTD+L8UNKvCat7aKWSJ74zYbm5zWGh0GQN0hKj8zYFTCg==} - dependencies: - regenerator-runtime: 0.12.1 - dev: false - /@babel/runtime/7.20.13: resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} engines: {node: '>=6.9.0'} @@ -78,12 +62,6 @@ packages: regenerator-runtime: 0.13.11 dev: true - /@babel/runtime/7.3.4: - resolution: {integrity: sha512-IvfvnMdSaLBateu0jfsYIpZTxAc2cKEXEMiezGGN75QcBcecDUKd3PgLAncT0oOgxKy8dd8hrJKj9MfzgfZd6g==} - dependencies: - regenerator-runtime: 0.12.1 - dev: false - /@babel/types/7.21.3: resolution: {integrity: sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==} engines: {node: '>=6.9.0'} @@ -517,10 +495,6 @@ packages: '@vue/compiler-dom': 3.2.47 '@vue/shared': 3.2.47 - /@vue/devtools-api/6.5.0: - resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} - dev: false - /@vue/reactivity-transform/3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} dependencies: @@ -567,14 +541,6 @@ packages: event-target-shim: 5.0.1 dev: true - /accepts/1.3.8: - resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} - engines: {node: '>= 0.6'} - dependencies: - mime-types: 2.1.35 - negotiator: 0.6.3 - dev: false - /acorn-jsx/5.3.2_acorn@8.8.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -643,7 +609,7 @@ packages: peerDependencies: body-parser: 1.20.1 express: 4.18.2 - node-fetch: 2.6.7 + node-fetch: '*' safe-compare: 1.1.4 peerDependenciesMeta: body-parser: @@ -669,15 +635,6 @@ packages: engines: {node: '>=6.0'} dev: true - /ajv/6.10.0: - resolution: {integrity: sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==} - dependencies: - fast-deep-equal: 2.0.1 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: false - /ajv/6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} dependencies: @@ -696,17 +653,6 @@ packages: uri-js: 4.4.1 dev: true - /amqplib/0.5.2: - resolution: {integrity: sha512-l9mCs6LbydtHqRniRwYkKdqxVa6XMz3Vw1fh+2gJaaVgTM6Jk3o8RccAKWKtlhT1US5sWrFh+KKxsVUALURSIA==} - engines: {node: '>=0.8 <=9'} - dependencies: - bitsyntax: 0.0.4 - bluebird: 3.7.2 - buffer-more-ints: 0.0.2 - readable-stream: 1.1.14 - safe-buffer: 5.2.1 - dev: false - /ansi-align/3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} dependencies: @@ -728,6 +674,7 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: true /ansi-styles/4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -745,51 +692,20 @@ packages: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true - /app-root-path/2.1.0: - resolution: {integrity: sha512-z5BqVjscbjmJBybKlICogJR2jCr2q/Ixu7Pvui5D4y97i7FLsJlvEG9XOR/KJRlkxxZz7UaaS2TMwQh1dRJ2dA==} - engines: {node: '>= 4.0.0'} - dev: false - /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /array-buffer-byte-length/1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - dependencies: - call-bind: 1.0.2 - is-array-buffer: 3.0.2 - dev: false - /array-differ/4.0.0: resolution: {integrity: sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /array-flatten/1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - dev: false - /array-union/3.0.1: resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==} engines: {node: '>=12'} dev: true - /array.prototype.reduce/1.0.5: - resolution: {integrity: sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - es-array-method-boxes-properly: 1.0.0 - is-string: 1.0.7 - dev: false - - /asn1/0.2.3: - resolution: {integrity: sha512-6i37w/+EhlWlGUJff3T/Q8u1RGmP5wgbiwYnOnbOqvtrPxT63/sYFyP9RcpxtxGymtfA075IvmOnL7ycNOWl3w==} - dev: false - /asn1/0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} dependencies: @@ -801,20 +717,10 @@ packages: engines: {node: '>=0.8'} dev: true - /async-limiter/1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - dev: false - /async-lock/1.4.0: resolution: {integrity: sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==} dev: true - /async-retry/1.2.3: - resolution: {integrity: sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q==} - dependencies: - retry: 0.12.0 - dev: false - /async/3.2.4: resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} dev: true @@ -833,11 +739,6 @@ packages: engines: {node: '>=8.0.0'} dev: true - /available-typed-arrays/1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - dev: false - /aws-sign2/0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} dev: true @@ -846,13 +747,6 @@ packages: resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} dev: true - /babel-runtime/6.26.0: - resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} - dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.11.1 - dev: false - /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true @@ -861,46 +755,15 @@ packages: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: true - /basic-auth/2.0.1: - resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} - engines: {node: '>= 0.8'} - dependencies: - safe-buffer: 5.1.2 - dev: false - /bcrypt-pbkdf/1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} dependencies: tweetnacl: 0.14.5 dev: true - /bitsyntax/0.0.4: - resolution: {integrity: sha512-Pav3HSZXD2NLQOWfJldY3bpJLt8+HS2nUo5Z1bLLmHg2vCE/cM1qfEvNjlYo7GgYQPneNr715Bh42i01ZHZPvw==} - engines: {node: '>=0.6'} - dependencies: - buffer-more-ints: 0.0.2 - dev: false - /bluebird/3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - - /body-parser/1.18.3: - resolution: {integrity: sha512-YQyoqQG3sO8iCmf8+hyVpgHHOv0/hCEFiS4zTGUwTA1HjAFX66wRcNQrVCeJq9pgESMRvUAOvSil5MJlmccuKQ==} - engines: {node: '>= 0.8'} - dependencies: - bytes: 3.0.0 - content-type: 1.0.4 - debug: 2.6.9 - depd: 1.1.2 - http-errors: 1.6.3 - iconv-lite: 0.4.23 - on-finished: 2.3.0 - qs: 6.5.2 - raw-body: 2.3.3 - type-is: 1.6.18 - transitivePeerDependencies: - - supports-color - dev: false + dev: true /boolbase/1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -939,15 +802,12 @@ packages: /buffer-equal-constant-time/1.0.1: resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + dev: true /buffer-from/1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true - /buffer-more-ints/0.0.2: - resolution: {integrity: sha512-PDgX2QJgUc5+Jb2xAoBFP5MxhtVUmZHR33ak+m/SDxRdCrbnX1BggRIaxiW7ImwfmO4iJeCQKN18ToSXWGjYkA==} - dev: false - /buffer/6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} dependencies: @@ -966,11 +826,6 @@ packages: safe-json-stringify: 1.2.0 dev: true - /bytes/3.0.0: - resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} - engines: {node: '>= 0.8'} - dev: false - /cacheable-lookup/7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} @@ -989,13 +844,6 @@ packages: responselike: 3.0.0 dev: true - /call-bind/1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.0 - dev: false - /callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1010,15 +858,6 @@ packages: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} dev: true - /chalk/2.4.1: - resolution: {integrity: sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: false - /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -1110,6 +949,7 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: true /color-convert/2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -1120,6 +960,7 @@ packages: /color-name/1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true /color-name/1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -1156,45 +997,11 @@ packages: engines: {node: ^12.20.0 || >=14} dev: true - /commands-events/1.0.4: - resolution: {integrity: sha512-HdP/+1Anoc7z+6L2h7nd4Imz54+LW+BjMGt30riBZrZ3ZeP/8el93wD8Jj8ltAaqVslqNgjX6qlhSBJwuDSmpg==} - dependencies: - '@babel/runtime': 7.2.0 - formats: 1.0.0 - uuidv4: 2.0.0 - dev: false - /common-tags/1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} dev: true - /comparejs/1.0.0: - resolution: {integrity: sha512-Ue/Zd9aOucHzHXwaCe4yeHR7jypp7TKrIBZ5yls35nPNiVXlW14npmNVKM1ZaLlQTKZ6/4ewA//gYKHHIwCpOw==} - dev: false - - /compressible/2.0.18: - resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: false - - /compression/1.7.3: - resolution: {integrity: sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==} - engines: {node: '>= 0.8.0'} - dependencies: - accepts: 1.3.8 - bytes: 3.0.0 - compressible: 2.0.18 - debug: 2.6.9 - on-headers: 1.0.2 - safe-buffer: 5.1.2 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: false - /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true @@ -1227,31 +1034,6 @@ packages: xdg-basedir: 5.1.0 dev: true - /content-disposition/0.5.2: - resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==} - engines: {node: '>= 0.6'} - dev: false - - /content-type/1.0.4: - resolution: {integrity: sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==} - engines: {node: '>= 0.6'} - dev: false - - /cookie-signature/1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} - dev: false - - /cookie/0.3.1: - resolution: {integrity: sha512-+IJOX0OqlHCszo2mBUq+SrEbCj6w7Kpffqx60zYbPTFaO4+yYgRjHwcZNpWvaTylDHaV7PPmBHzSecZiMhtPgw==} - engines: {node: '>= 0.6'} - dev: false - - /core-js/2.6.12: - resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} - deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. - requiresBuild: true - dev: false - /core-js/3.27.1: resolution: {integrity: sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==} requiresBuild: true @@ -1263,14 +1045,7 @@ packages: /core-util-is/1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - - /cors/2.8.5: - resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} - engines: {node: '>= 0.10'} - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - dev: false + dev: true /cross-spawn/7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -1292,14 +1067,6 @@ packages: type-fest: 1.4.0 dev: true - /crypto2/2.0.0: - resolution: {integrity: sha512-jdXdAgdILldLOF53md25FiQ6ybj2kUFTiRjs7msKTUoZrzgT/M1FPX5dYGJjbbwFls+RJIiZxNTC02DE/8y0ZQ==} - dependencies: - babel-runtime: 6.26.0 - node-rsa: 0.4.2 - util.promisify: 1.0.0 - dev: false - /css-select/5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: @@ -1334,14 +1101,6 @@ packages: engines: {node: '>= 12'} dev: true - /datasette/1.0.1: - resolution: {integrity: sha512-aJdlCBToEJUP4M57r67r4V6tltwGKa3qetnjpBtXYIlqbX9tM9jsoDMxb4xd9AGjpp3282oHRmqI5Z8TVAU0Mg==} - dependencies: - comparejs: 1.0.0 - eventemitter2: 5.0.1 - lodash: 4.17.5 - dev: false - /de-indent/1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} dev: true @@ -1359,6 +1118,7 @@ packages: optional: true dependencies: ms: 2.0.0 + dev: true /debug/4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} @@ -1420,28 +1180,11 @@ packages: engines: {node: '>=8'} dev: true - /define-properties/1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} - engines: {node: '>= 0.4'} - dependencies: - has-property-descriptors: 1.0.0 - object-keys: 1.1.1 - dev: false - /delayed-stream/1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true - /depd/1.1.2: - resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} - engines: {node: '>= 0.6'} - dev: false - - /destroy/1.0.4: - resolution: {integrity: sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==} - dev: false - /doctrine/3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -1483,12 +1226,6 @@ packages: is-obj: 2.0.0 dev: true - /draht/1.0.1: - resolution: {integrity: sha512-yNNHL864dniNmIE9ZKD++mKypiAUAvVZtyV0QrbXH/ak3ebzFqo5xsmRBRqV8pZVhImOSBiyq500Wcmrf44zAg==} - dependencies: - eventemitter2: 5.0.1 - dev: false - /dtrace-provider/0.8.8: resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==} engines: {node: '>=0.10'} @@ -1513,10 +1250,7 @@ packages: resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} dependencies: safe-buffer: 5.2.1 - - /ee-first/1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - dev: false + dev: true /emoji-regex/8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1526,11 +1260,6 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /encodeurl/1.0.2: - resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} - engines: {node: '>= 0.8'} - dev: false - /end-of-stream/1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} dependencies: @@ -1548,68 +1277,6 @@ packages: is-arrayish: 0.2.1 dev: true - /es-abstract/1.21.2: - resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.0 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.5 - get-intrinsic: 1.2.0 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.5 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.10 - is-weakref: 1.0.2 - object-inspect: 1.12.3 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.4.3 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.7 - string.prototype.trimend: 1.0.6 - string.prototype.trimstart: 1.0.6 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.9 - dev: false - - /es-array-method-boxes-properly/1.0.0: - resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - dev: false - - /es-set-tostringtag/2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.0 - has: 1.0.3 - has-tostringtag: 1.0.0 - dev: false - - /es-to-primitive/1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: false - /es6-error/4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} dev: true @@ -1659,13 +1326,10 @@ packages: engines: {node: '>=12'} dev: true - /escape-html/1.0.3: - resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - dev: false - /escape-string-regexp/1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + dev: true /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -1798,20 +1462,11 @@ packages: engines: {node: '>=0.10.0'} dev: true - /etag/1.8.1: - resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} - engines: {node: '>= 0.6'} - dev: false - /event-target-shim/5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} dev: true - /eventemitter2/5.0.1: - resolution: {integrity: sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==} - dev: false - /events/3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -1832,44 +1487,6 @@ packages: strip-final-newline: 2.0.0 dev: true - /express/4.16.4: - resolution: {integrity: sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==} - engines: {node: '>= 0.10.0'} - dependencies: - accepts: 1.3.8 - array-flatten: 1.1.1 - body-parser: 1.18.3 - content-disposition: 0.5.2 - content-type: 1.0.4 - cookie: 0.3.1 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: 1.1.2 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - finalhandler: 1.1.1 - fresh: 0.5.2 - merge-descriptors: 1.0.1 - methods: 1.1.2 - on-finished: 2.3.0 - parseurl: 1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: 2.0.7 - qs: 6.5.2 - range-parser: 1.2.1 - safe-buffer: 5.1.2 - send: 0.16.2 - serve-static: 1.13.2 - setprototypeof: 1.1.0 - statuses: 1.4.0 - type-is: 1.6.18 - utils-merge: 1.0.1 - vary: 1.1.2 - transitivePeerDependencies: - - supports-color - dev: false - /extend/3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} dev: true @@ -1879,10 +1496,6 @@ packages: engines: {'0': node >=0.6.0} dev: true - /fast-deep-equal/2.0.1: - resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} - dev: false - /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true @@ -1893,6 +1506,7 @@ packages: /fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true /fast-levenshtein/2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} @@ -1930,25 +1544,6 @@ packages: flat-cache: 3.0.4 dev: true - /finalhandler/1.1.1: - resolution: {integrity: sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==} - engines: {node: '>= 0.8'} - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.3.0 - parseurl: 1.3.3 - statuses: 1.4.0 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /find-root/1.1.0: - resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - dev: false - /find-up/5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -1973,26 +1568,6 @@ packages: engines: {node: '>=8'} dev: true - /flaschenpost/1.1.3: - resolution: {integrity: sha512-1VAYPvDsVBGFJyUrOa/6clnJwZYC3qVq9nJLcypy6lvaaNbo1wOQiH8HQ+4Fw/k51pVG7JHzSf5epb8lmIW86g==} - hasBin: true - dependencies: - '@babel/runtime': 7.2.0 - app-root-path: 2.1.0 - babel-runtime: 6.26.0 - chalk: 2.4.1 - find-root: 1.1.0 - lodash: 4.17.11 - moment: 2.22.2 - processenv: 1.1.0 - split2: 3.0.0 - stack-trace: 0.0.10 - stringify-object: 3.3.0 - untildify: 3.0.3 - util.promisify: 1.0.0 - varname: 2.0.3 - dev: false - /flat-cache/3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -2011,12 +1586,6 @@ packages: deprecated: Renamed to @fluent/syntax 0.14.0 dev: true - /for-each/0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - dev: false - /forever-agent/0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: true @@ -2035,10 +1604,6 @@ packages: mime-types: 2.1.35 dev: true - /formats/1.0.0: - resolution: {integrity: sha512-For0Y8egwEK96JgJo4NONErPhtl7H2QzeB2NYGmzeGeJ8a1JZqPgLYOtM3oJRCYhmgsdDFd6KGRYyfe37XY4Yg==} - dev: false - /formdata-polyfill/4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -2046,16 +1611,6 @@ packages: fetch-blob: 3.2.0 dev: true - /forwarded/0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: false - - /fresh/0.5.2: - resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} - engines: {node: '>= 0.6'} - dev: false - /fs-extra/10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -2098,20 +1653,7 @@ packages: /function-bind/1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - - /function.prototype.name/1.1.5: - resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - functions-have-names: 1.2.3 - dev: false - - /functions-have-names/1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: false + dev: true /fx-runner/1.3.0: resolution: {integrity: sha512-5b37H4GCyhF+Nf8xk9mylXoDq4wb7pbGAXxlCXp/631UTeeZomWSYcEGXumY4wk8g2QAqjPMGdWW+RbNt8PUcA==} @@ -2130,18 +1672,6 @@ packages: engines: {node: 6.* || 8.* || >= 10.*} dev: true - /get-intrinsic/1.2.0: - resolution: {integrity: sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.3 - dev: false - - /get-own-enumerable-property-symbols/3.0.2: - resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - dev: false - /get-stream/5.2.0: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} @@ -2154,14 +1684,6 @@ packages: engines: {node: '>=10'} dev: true - /get-symbol-description/1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - dev: false - /getpass/0.1.7: resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} dependencies: @@ -2226,19 +1748,6 @@ packages: type-fest: 0.20.2 dev: true - /globalthis/1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.0 - dev: false - - /gopd/1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.0 - dev: false - /got/12.6.0: resolution: {integrity: sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ==} engines: {node: '>=14.16'} @@ -2286,42 +1795,16 @@ packages: har-schema: 2.0.0 dev: true - /has-bigints/1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: false - /has-flag/3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + dev: true /has-flag/4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} dev: true - /has-property-descriptors/1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} - dependencies: - get-intrinsic: 1.2.0 - dev: false - - /has-proto/1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - dev: false - - /has-symbols/1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: false - - /has-tostringtag/1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: false - /has-yarn/3.0.0: resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2332,13 +1815,7 @@ packages: engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 - - /hase/2.0.0: - resolution: {integrity: sha512-L83pBR/oZvQQNjv4kw9aUpTqBxERPiY7B42jsmkt1VDeUaRVhYkEIKzkCqrppjtxHe2EZqzZJzuhMXsWsxYIsw==} - dependencies: - '@babel/runtime': 7.1.2 - amqplib: 0.5.2 - dev: false + dev: true /he/1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} @@ -2362,16 +1839,6 @@ packages: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} dev: true - /http-errors/1.6.3: - resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} - engines: {node: '>= 0.6'} - dependencies: - depd: 1.1.2 - inherits: 2.0.3 - setprototypeof: 1.1.0 - statuses: 1.5.0 - dev: false - /http-signature/1.2.0: resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} engines: {node: '>=0.8', npm: '>=1.3.7'} @@ -2394,13 +1861,6 @@ packages: engines: {node: '>=8.12.0'} dev: true - /iconv-lite/0.4.23: - resolution: {integrity: sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - /ieee754/1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: true @@ -2447,12 +1907,9 @@ packages: wrappy: 1.0.2 dev: true - /inherits/2.0.3: - resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} - dev: false - /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true /ini/1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} @@ -2463,25 +1920,11 @@ packages: engines: {node: '>=10'} dev: true - /internal-slot/1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.0 - has: 1.0.3 - side-channel: 1.0.4 - dev: false - /invert-kv/3.0.1: resolution: {integrity: sha512-CYdFeFexxhv/Bcny+Q0BfOV+ltRlJcd4BBZBYFX/O0u4npJrgZtIcjokegtiSMAvlMTJ+Koq0GBCc//3bueQxw==} engines: {node: '>=8'} dev: true - /ipaddr.js/1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: false - /is-absolute/0.1.7: resolution: {integrity: sha512-Xi9/ZSn4NFapG8RP98iNPMOeaV3mXPisxKxzKtHVqr3g56j/fBn+yZmnxSVAA8lmZbl2J9b/a4kJvfU3hqQYgA==} engines: {node: '>=0.10.0'} @@ -2489,41 +1932,14 @@ packages: is-relative: 0.1.3 dev: true - /is-array-buffer/3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-typed-array: 1.1.10 - dev: false - /is-arrayish/0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true - /is-bigint/1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: false - - /is-boolean-object/1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: false - /is-buffer/1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: true - /is-callable/1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: false - /is-ci/3.0.1: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true @@ -2537,13 +1953,6 @@ packages: has: 1.0.3 dev: true - /is-date-object/1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: false - /is-docker/2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -2579,28 +1988,11 @@ packages: resolution: {integrity: sha512-CPduJfuGg8h8vW74WOxHtHmtQutyQBzR+3MjQ6iDHIYdbOnm1YC7jv43SqCoU8OPGTJD4nibmiryA4kmogbGrA==} dev: true - /is-negative-zero/2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - dev: false - /is-npm/6.0.0: resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /is-number-object/1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: false - - /is-obj/1.0.1: - resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==} - engines: {node: '>=0.10.0'} - dev: false - /is-obj/2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} @@ -2611,60 +2003,16 @@ packages: engines: {node: '>=8'} dev: true - /is-regex/1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 - dev: false - - /is-regexp/1.0.0: - resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} - engines: {node: '>=0.10.0'} - dev: false - /is-relative/0.1.3: resolution: {integrity: sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==} engines: {node: '>=0.10.0'} dev: true - /is-shared-array-buffer/1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - dependencies: - call-bind: 1.0.2 - dev: false - /is-stream/2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} dev: true - /is-string/1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.0 - dev: false - - /is-symbol/1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: false - - /is-typed-array/1.1.10: - resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - dev: false - /is-typedarray/1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} dev: true @@ -2673,12 +2021,6 @@ packages: resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} dev: true - /is-weakref/1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.2 - dev: false - /is-wsl/2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -2691,10 +2033,6 @@ packages: engines: {node: '>=12'} dev: true - /isarray/0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - dev: false - /isarray/1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} dev: true @@ -2742,12 +2080,6 @@ packages: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true - /json-lines/1.0.0: - resolution: {integrity: sha512-ytuLZb4RBQb3bTRsG/QBenyIo5oHLpjeCVph3s2NnoAsZE9K6h+uR+OWpEOWV1UeHdX63tYctGppBpGAc+JNMA==} - dependencies: - timer2: 1.0.0 - dev: false - /json-merge-patch/1.0.2: resolution: {integrity: sha512-M6Vp2GN9L7cfuMXiWOmHj9bEFbeC250iVtcKQbqVgEsDVYnIsrNsbU+h/Y/PkbBQCtEa4Bez+Ebv0zfbC8ObLg==} dependencies: @@ -2760,6 +2092,7 @@ packages: /json-schema-traverse/0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true /json-schema-traverse/1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} @@ -2791,22 +2124,6 @@ packages: graceful-fs: 4.2.10 dev: true - /jsonwebtoken/8.5.0: - resolution: {integrity: sha512-IqEycp0znWHNA11TpYi77bVgyBO/pGESDh7Ajhas+u0ttkGkKYIIAjniL4Bw5+oVejVF+SYkaI7XKfwCCyeTuA==} - engines: {node: '>=4', npm: '>=1.4.28'} - dependencies: - jws: 3.2.2 - lodash.includes: 4.3.0 - lodash.isboolean: 3.0.3 - lodash.isinteger: 4.0.4 - lodash.isnumber: 3.0.3 - lodash.isplainobject: 4.0.6 - lodash.isstring: 4.0.1 - lodash.once: 4.1.1 - ms: 2.1.3 - semver: 5.7.1 - dev: false - /jsonwebtoken/9.0.0: resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} engines: {node: '>=12', npm: '>=6'} @@ -2842,12 +2159,14 @@ packages: buffer-equal-constant-time: 1.0.1 ecdsa-sig-formatter: 1.0.11 safe-buffer: 5.2.1 + dev: true /jws/3.2.2: resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} dependencies: jwa: 1.4.1 safe-buffer: 5.2.1 + dev: true /keyv/4.5.2: resolution: {integrity: sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==} @@ -2892,13 +2211,6 @@ packages: - supports-color dev: true - /limes/2.0.0: - resolution: {integrity: sha512-evWD0pnTgPX7QueaSoJl5JBUL30T1ZVzo34ke97tIKmeagqhBTYK/JkKL0vtG3MpNApw8ZY9TlbybfwEz9knBA==} - dependencies: - '@babel/runtime': 7.3.4 - jsonwebtoken: 8.5.0 - dev: false - /lines-and-columns/2.0.3: resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2921,38 +2233,10 @@ packages: p-locate: 5.0.0 dev: true - /lodash.includes/4.3.0: - resolution: {integrity: sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==} - dev: false - - /lodash.isboolean/3.0.3: - resolution: {integrity: sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==} - dev: false - - /lodash.isinteger/4.0.4: - resolution: {integrity: sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==} - dev: false - - /lodash.isnumber/3.0.3: - resolution: {integrity: sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==} - dev: false - - /lodash.isplainobject/4.0.6: - resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} - dev: false - - /lodash.isstring/4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} - dev: false - /lodash.merge/4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} dev: true - /lodash.once/4.1.1: - resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} - dev: false - /lodash.uniq/4.5.0: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} dev: true @@ -2961,18 +2245,10 @@ packages: resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} dev: true - /lodash/4.17.11: - resolution: {integrity: sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==} - dev: false - /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} dev: true - /lodash/4.17.5: - resolution: {integrity: sha512-svL3uiZf1RwhH+cWrfZn3A4+U58wbP0tGVTLQPbjplZxZ8ROD9VLuNgsRniTlLe7OlSqR79RUehXgpBW/s0IQw==} - dev: false - /lowercase-keys/3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2985,13 +2261,6 @@ packages: yallist: 4.0.0 dev: true - /lusca/1.6.1: - resolution: {integrity: sha512-+JzvUMH/rsE/4XfHdDOl70bip0beRcHSviYATQM0vtls59uVtdn1JMu4iD7ZShBpAmFG8EnaA+PrYG9sECMIOQ==} - engines: {node: '>=0.8.x'} - dependencies: - tsscmp: 1.0.6 - dev: false - /magic-string/0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: @@ -3020,11 +2289,6 @@ packages: is-buffer: 1.1.6 dev: true - /media-typer/0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} - engines: {node: '>= 0.6'} - dev: false - /mem/5.1.1: resolution: {integrity: sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==} engines: {node: '>=8'} @@ -3034,33 +2298,21 @@ packages: p-is-promise: 2.1.0 dev: true - /merge-descriptors/1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} - dev: false - /merge-stream/2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /methods/1.1.2: - resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} - engines: {node: '>= 0.6'} - dev: false - /mime-db/1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + dev: true /mime-types/2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 - - /mime/1.4.1: - resolution: {integrity: sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==} - hasBin: true - dev: false + dev: true /mimic-fn/2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} @@ -3115,31 +2367,15 @@ packages: hasBin: true dev: true - /moment/2.22.2: - resolution: {integrity: sha512-LRvkBHaJGnrcWvqsElsOhHCzj8mU39wLx5pQ0pc6s153GynCTsPdGdqsVNKAQD9sKnWj11iF7TZx9fpLwdD3fw==} - dev: false - /moment/2.29.4: resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} requiresBuild: true dev: true optional: true - /morgan/1.9.1: - resolution: {integrity: sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==} - engines: {node: '>= 0.8.0'} - dependencies: - basic-auth: 2.0.1 - debug: 2.6.9 - depd: 1.1.2 - on-finished: 2.3.0 - on-headers: 1.0.2 - transitivePeerDependencies: - - supports-color - dev: false - /ms/2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + dev: true /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -3147,6 +2383,7 @@ packages: /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true /muggle-string/0.2.2: resolution: {integrity: sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==} @@ -3201,15 +2438,6 @@ packages: dev: true optional: true - /negotiator/0.6.3: - resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} - engines: {node: '>= 0.6'} - dev: false - - /nocache/2.0.0: - resolution: {integrity: sha512-YdKcy2x0dDwOh+8BEuHvA+mnOKAhmMQDgKBOCUGaLpewdmsRYguYZSom3yA+/OrE61O/q+NMQANnun65xpI1Hw==} - dev: false - /node-domexception/1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} @@ -3240,17 +2468,6 @@ packages: which: 2.0.2 dev: true - /node-rsa/0.4.2: - resolution: {integrity: sha512-Bvso6Zi9LY4otIZefYrscsUpo2mUpiAVIEmSZV2q41sP8tHZoert3Yu6zv4f/RXJqMNZQKCtnhDugIuCma23YA==} - dependencies: - asn1: 0.2.3 - dev: false - - /node-statsd/0.1.1: - resolution: {integrity: sha512-QDf6R8VXF56QVe1boek8an/Rb3rSNaxoFWb7Elpsv2m1+Noua1yy0F1FpKpK5VluF8oymWM4w764A4KsYL4pDg==} - engines: {node: '>=0.1.97'} - dev: false - /normalize-url/8.0.0: resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} engines: {node: '>=14.16'} @@ -3276,52 +2493,12 @@ packages: /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - - /object-inspect/1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} - dev: false - - /object-keys/1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: false - - /object.assign/4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: false - - /object.getownpropertydescriptors/2.1.5: - resolution: {integrity: sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==} - engines: {node: '>= 0.8'} - dependencies: - array.prototype.reduce: 1.0.5 - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false + dev: true /on-exit-leak-free/2.1.0: resolution: {integrity: sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==} dev: true - /on-finished/2.3.0: - resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: false - - /on-headers/1.0.2: - resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} - engines: {node: '>= 0.8'} - dev: false - /once/1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -3443,15 +2620,6 @@ packages: entities: 4.4.0 dev: true - /parseurl/1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: false - - /partof/1.0.0: - resolution: {integrity: sha512-+TXdhKCySpJDynCxgAPoGVyAkiK3QPusQ63/BdU5t68QcYzyU6zkP/T7F3gkMQBVUYqdWEADKa6Kx5zg8QIKrg==} - dev: false - /path-exists/4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -3471,10 +2639,6 @@ packages: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /path-to-regexp/0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} - dev: false - /pend/1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true @@ -3486,24 +2650,6 @@ packages: /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - /pinia/2.0.34_hmuptsblhheur2tugfgucj7gc4: - resolution: {integrity: sha512-cgOoGUiyqX0SSgX8XelK9+Ri4XA2/YyNtgjogwfzIx1g7iZTaZPxm7/bZYMCLU2qHRiHhxG7SuQO0eBacFNc2Q==} - peerDependencies: - '@vue/composition-api': ^1.4.0 - typescript: '>=4.4.4' - vue: ^2.6.14 || ^3.2.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - typescript: - optional: true - dependencies: - '@vue/devtools-api': 6.5.0 - typescript: 4.9.5 - vue: 3.2.47 - vue-demi: 0.13.11_vue@3.2.47 - dev: false - /pino-abstract-transport/1.0.0: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} dependencies: @@ -3558,12 +2704,6 @@ packages: engines: {node: '>= 0.6.0'} dev: true - /processenv/1.1.0: - resolution: {integrity: sha512-SymqIsn8GjEUy8nG7HiyEjgbfk1xFosRIakUX1NHLpriq3vVpKniGrr9RdMWCaGYWByIovbRt2f/WvmP/IOApQ==} - dependencies: - babel-runtime: 6.26.0 - dev: false - /promise-toolbox/0.21.0: resolution: {integrity: sha512-NV8aTmpwrZv+Iys54sSFOBx3tuVaOBvvrft5PNppnxy9xpU/akHbaWIril22AB22zaPgrgwKdD0KsrM0ptUtpg==} engines: {node: '>=6'} @@ -3575,14 +2715,6 @@ packages: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} dev: true - /proxy-addr/2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - dev: false - /psl/1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true @@ -3597,6 +2729,7 @@ packages: /punycode/2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} + dev: true /pupa/3.1.0: resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} @@ -3605,11 +2738,6 @@ packages: escape-goat: 4.0.0 dev: true - /qs/6.5.2: - resolution: {integrity: sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==} - engines: {node: '>=0.6'} - dev: false - /qs/6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} engines: {node: '>=0.6'} @@ -3634,21 +2762,6 @@ packages: engines: {node: '>=10'} dev: true - /range-parser/1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: false - - /raw-body/2.3.3: - resolution: {integrity: sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==} - engines: {node: '>= 0.8'} - dependencies: - bytes: 3.0.0 - http-errors: 1.6.3 - iconv-lite: 0.4.23 - unpipe: 1.0.0 - dev: false - /rc/1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -3659,15 +2772,6 @@ packages: strip-json-comments: 2.0.1 dev: true - /readable-stream/1.1.14: - resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} - dependencies: - core-util-is: 1.0.3 - inherits: 2.0.4 - isarray: 0.0.1 - string_decoder: 0.10.31 - dev: false - /readable-stream/2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} dependencies: @@ -3680,15 +2784,6 @@ packages: util-deprecate: 1.0.2 dev: true - /readable-stream/3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - /readable-stream/4.3.0: resolution: {integrity: sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3704,27 +2799,10 @@ packages: engines: {node: '>= 12.13.0'} dev: true - /regenerator-runtime/0.11.1: - resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} - dev: false - - /regenerator-runtime/0.12.1: - resolution: {integrity: sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==} - dev: false - /regenerator-runtime/0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: true - /regexp.prototype.flags/1.4.3: - resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - functions-have-names: 1.2.3 - dev: false - /regexpp/3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} @@ -3815,11 +2893,6 @@ packages: lowercase-keys: 3.0.0 dev: true - /retry/0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - dev: false - /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -3856,9 +2929,11 @@ packages: /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + dev: true /safe-buffer/5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true /safe-json-stringify/1.2.0: resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} @@ -3866,14 +2941,6 @@ packages: dev: true optional: true - /safe-regex-test/1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - is-regex: 1.1.4 - dev: false - /safe-stable-stringify/2.4.2: resolution: {integrity: sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==} engines: {node: '>=10'} @@ -3881,6 +2948,7 @@ packages: /safer-buffer/2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true /sax/1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} @@ -3893,11 +2961,6 @@ packages: semver: 7.3.8 dev: true - /semver/5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - dev: false - /semver/7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} @@ -3906,51 +2969,10 @@ packages: lru-cache: 6.0.0 dev: true - /send/0.16.2: - resolution: {integrity: sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==} - engines: {node: '>= 0.8.0'} - dependencies: - debug: 2.6.9 - depd: 1.1.2 - destroy: 1.0.4 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 1.6.3 - mime: 1.4.1 - ms: 2.0.0 - on-finished: 2.3.0 - range-parser: 1.2.1 - statuses: 1.4.0 - transitivePeerDependencies: - - supports-color - dev: false - - /serve-static/1.13.2: - resolution: {integrity: sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==} - engines: {node: '>= 0.8.0'} - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.16.2 - transitivePeerDependencies: - - supports-color - dev: false - /setimmediate/1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: true - /setprototypeof/1.1.0: - resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} - dev: false - - /sha-1/0.1.1: - resolution: {integrity: sha512-dexizf3hB7d4Jq6Cd0d/NYQiqgEqIfZIpuMfwPfvSb6h06DZKmHyUe55jYwpHC12R42wpqXO6ouhiBpRzIcD/g==} - dev: false - /sha.js/2.4.11: resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} hasBin: true @@ -3979,14 +3001,6 @@ packages: resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} dev: true - /side-channel/1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.0 - object-inspect: 1.12.3 - dev: false - /sign-addon/5.2.0: resolution: {integrity: sha512-t5CZ4MSKAd3uJBUfjgWfSyKYC1pQS6BMUbgI5OytzMkTOQ9NkdkFE8bB0AJLQIGqDrNS2b1+/ghAP56iuCUE+g==} dependencies: @@ -4045,12 +3059,6 @@ packages: through: 2.3.8 dev: true - /split2/3.0.0: - resolution: {integrity: sha512-Cp7G+nUfKJyHCrAI8kze3Q00PFGEG1pMgrAlTFlDbn+GW24evSZHJuMl+iUJx1w/NTRDeBiTgvwnf6YOt94FMw==} - dependencies: - readable-stream: 3.6.2 - dev: false - /split2/4.1.0: resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} engines: {node: '>= 10.x'} @@ -4072,26 +3080,6 @@ packages: tweetnacl: 0.14.5 dev: true - /stack-trace/0.0.10: - resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} - dev: false - - /statuses/1.4.0: - resolution: {integrity: sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==} - engines: {node: '>= 0.6'} - dev: false - - /statuses/1.5.0: - resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} - engines: {node: '>= 0.6'} - dev: false - - /stethoskop/1.0.0: - resolution: {integrity: sha512-4JnZ+UmTs9SFfDjSHFlD/EoXcb1bfwntkt4h1ipNGrpxtRzmHTxOmdquCJvIrVu608Um7a09cGX0ZSOSllWJNQ==} - dependencies: - node-statsd: 0.1.1 - dev: false - /stream-to-array/2.3.0: resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} dependencies: @@ -4125,48 +3113,11 @@ packages: strip-ansi: 7.0.1 dev: true - /string.prototype.trim/1.2.7: - resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /string.prototype.trimend/1.0.6: - resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /string.prototype.trimstart/1.0.6: - resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} - dependencies: - call-bind: 1.0.2 - define-properties: 1.2.0 - es-abstract: 1.21.2 - dev: false - - /string_decoder/0.10.31: - resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} - dev: false - /string_decoder/1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} dependencies: safe-buffer: 5.1.2 - - /stringify-object/3.3.0: - resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} - engines: {node: '>=4'} - dependencies: - get-own-enumerable-property-symbols: 3.0.2 - is-obj: 1.0.1 - is-regexp: 1.0.0 - dev: false + dev: true /strip-ansi/6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} @@ -4227,6 +3178,7 @@ packages: engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true /supports-color/7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -4240,42 +3192,6 @@ packages: engines: {node: '>= 0.4'} dev: true - /tailwind/4.0.0: - resolution: {integrity: sha512-LlUNoD/5maFG1h5kQ6/hXfFPdcnYw+1Z7z+kUD/W/E71CUMwcnrskxiBM8c3G8wmPsD1VvCuqGYMHviI8+yrmg==} - dependencies: - '@babel/runtime': 7.3.4 - ajv: 6.10.0 - app-root-path: 2.1.0 - async-retry: 1.2.3 - body-parser: 1.18.3 - commands-events: 1.0.4 - compression: 1.7.3 - content-type: 1.0.4 - cors: 2.8.5 - crypto2: 2.0.0 - datasette: 1.0.1 - draht: 1.0.1 - express: 4.16.4 - flaschenpost: 1.1.3 - hase: 2.0.0 - json-lines: 1.0.0 - limes: 2.0.0 - lodash: 4.17.11 - lusca: 1.6.1 - morgan: 1.9.1 - nocache: 2.0.0 - partof: 1.0.0 - processenv: 1.1.0 - stethoskop: 1.0.0 - timer2: 1.0.0 - uuidv4: 3.0.1 - ws: 6.2.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: false - /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -4303,10 +3219,6 @@ packages: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true - /timer2/1.0.0: - resolution: {integrity: sha512-UOZql+P2ET0da+B7V3/RImN3IhC5ghb+9cpecfUhmYGIm0z73dDr3A781nBLnFYmRzeT1AmoT4w9Lgr8n7n7xg==} - dev: false - /tmp/0.2.1: resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} engines: {node: '>=8.17.0'} @@ -4331,11 +3243,6 @@ packages: punycode: 2.3.0 dev: true - /tsscmp/1.0.6: - resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} - engines: {node: '>=0.6.x'} - dev: false - /tunnel-agent/0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} dependencies: @@ -4373,22 +3280,6 @@ packages: engines: {node: '>=12.20'} dev: true - /type-is/1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.35 - dev: false - - /typed-array-length/1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - dependencies: - call-bind: 1.0.2 - for-each: 0.3.3 - is-typed-array: 1.1.10 - dev: false - /typedarray-to-buffer/3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} dependencies: @@ -4399,24 +3290,16 @@ packages: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true - /typescript/4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} + /typescript/5.0.4: + resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} + engines: {node: '>=12.20'} hasBin: true + dev: true /uhyphen/0.2.0: resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} dev: true - /unbox-primitive/1.0.2: - resolution: {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 - dev: false - /unique-string/3.0.0: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} @@ -4434,16 +3317,6 @@ packages: engines: {node: '>= 10.0.0'} dev: true - /unpipe/1.0.0: - resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} - engines: {node: '>= 0.8'} - dev: false - - /untildify/3.0.3: - resolution: {integrity: sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA==} - engines: {node: '>=4'} - dev: false - /upath/2.0.1: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} @@ -4473,27 +3346,11 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.0 + dev: true /util-deprecate/1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - - /util.promisify/1.0.0: - resolution: {integrity: sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==} - dependencies: - define-properties: 1.2.0 - object.getownpropertydescriptors: 2.1.5 - dev: false - - /utils-merge/1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} - engines: {node: '>= 0.4.0'} - dev: false - - /uuid/3.3.2: - resolution: {integrity: sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==} - 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. - hasBin: true - dev: false + dev: true /uuid/3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} @@ -4506,29 +3363,6 @@ packages: hasBin: true dev: true - /uuidv4/2.0.0: - resolution: {integrity: sha512-sAUlwUVepcVk6bwnaW/oi6LCwMdueako5QQzRr90ioAVVcms6p1mV0PaSxK8gyAC4CRvKddsk217uUpZUbKd2Q==} - dependencies: - sha-1: 0.1.1 - uuid: 3.3.2 - dev: false - - /uuidv4/3.0.1: - resolution: {integrity: sha512-PPzksdWRl2a5C9hrs3OOYrArTeyoR0ftJ3jtOy+BnVHkT2UlrrzPNt9nTdiGuxmQItHM/AcTXahwZZC57Njojg==} - dependencies: - uuid: 3.3.2 - dev: false - - /varname/2.0.3: - resolution: {integrity: sha512-+DofT9mJAUALhnr9ipZ5Z2icwaEZ7DAajOZT4ffXy3MQqnXtG3b7atItLQEJCkfcJTOf9WcsywneOEibD4eqJg==} - engines: {node: '>=0.10'} - dev: false - - /vary/1.1.2: - resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} - engines: {node: '>= 0.8'} - dev: false - /verror/1.10.0: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} @@ -4538,8 +3372,8 @@ packages: extsprintf: 1.3.0 dev: true - /vite-plugin-web-extension/3.0.0_vite@4.1.4: - resolution: {integrity: sha512-kbBXnlEKIaYzAL0aX0fIci4/FFOB6PP9xxExOJc00+lPPxwnHjgvdkeiRgtSykCt3bTbw+MsoKTlSP+qIf2CKg==} + /vite-plugin-web-extension/3.0.8_vite@4.1.4: + resolution: {integrity: sha512-1iNRKzbC5cVfTNw+tQSQ/G/b5jU+Ocx+sry0DqsguYCzG8qegP+Lbk2VhWwDw9k6i5u5luBP328XeqtAx/Nsbg==} peerDependencies: vite: ^4 dependencies: @@ -4597,21 +3431,6 @@ packages: fsevents: 2.3.2 dev: true - /vue-demi/0.13.11_vue@3.2.47: - resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - peerDependencies: - '@vue/composition-api': ^1.0.0-rc.1 - vue: ^3.0.0-0 || ^2.6.0 - peerDependenciesMeta: - '@vue/composition-api': - optional: true - dependencies: - vue: 3.2.47 - dev: false - /vue-template-compiler/2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} dependencies: @@ -4619,7 +3438,7 @@ packages: he: 1.2.0 dev: true - /vue-tsc/1.2.0_typescript@4.9.5: + /vue-tsc/1.2.0_typescript@5.0.4: resolution: {integrity: sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==} hasBin: true peerDependencies: @@ -4627,7 +3446,7 @@ packages: dependencies: '@volar/vue-language-core': 1.2.0 '@volar/vue-typescript': 1.2.0 - typescript: 4.9.5 + typescript: 5.0.4 dev: true /vue/3.2.47: @@ -4712,28 +3531,6 @@ packages: resolution: {integrity: sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==} dev: true - /which-boxed-primitive/1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: false - - /which-typed-array/1.1.9: - resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - is-typed-array: 1.1.10 - dev: false - /which/1.2.4: resolution: {integrity: sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==} hasBin: true @@ -4797,20 +3594,6 @@ packages: typedarray-to-buffer: 3.1.5 dev: true - /ws/6.2.0: - resolution: {integrity: sha512-deZYUNlt2O4buFCa3t5bKLf8A7FPP/TVjwOeVNpw818Ma5nk4MLXls2eoEGS39o8119QIYxTrTDoPQ5B/gTD6w==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dependencies: - async-limiter: 1.0.1 - dev: false - /ws/8.12.0: resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} engines: {node: '>=10.0.0'} diff --git a/src/assets/css/main.css b/src/assets/css/main.css index 6e4e9a7..870c363 100644 --- a/src/assets/css/main.css +++ b/src/assets/css/main.css @@ -16,7 +16,13 @@ border-radius: 10px; background-color: #7c7c7c; } - +html, +body { + width: 500px; + height: 590px; + padding: 0; + margin: 0; +} .float-right{ float: right; } diff --git a/src/assets/css/settings.css b/src/assets/css/settings.css new file mode 100644 index 0000000..9c035ed --- /dev/null +++ b/src/assets/css/settings.css @@ -0,0 +1,318 @@ +body { + font-family: "Segoe UI", Tahoma, sans-serif !important; + color: #262626; + background-color: rgb(255, 255, 255); +} + +.container { + width: 850px; + margin: 10px auto; +} + +.title{ + font-size: 18px; + font-weight: 650; +} + +.setting-header { + font-weight: 550; + font-size: 15px; +} + +.description{ + font-size: 13px; + color: grey; + margin: 7px 0 15px 0; +} + +.mt-15{ + margin-top: 15px; +} + +.option { + min-width: 170px; + color: #444; + background: #fff; + border-radius: 3px; + margin: 0; + padding: 10px 30px 10px 15px; + font-size: 14px; + border-color: #ccc; + position: relative; + cursor: pointer; +} + +.header{ + grid-area: h; + margin: 0 0 10px; + font-size: 20px; +} + +a { + color: #3477db; + text-decoration: none; + cursor: pointer; +} + + +label{ + font-size: 14px; +} + +[type="checkbox"]:not(:checked),[type="checkbox"]:checked { + position: absolute; + opacity: 0; + pointer-events: none +} + +[type="checkbox"]+span { + position: relative; + padding-left: 30px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 14px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none +} + +[type="checkbox"]+span:before,[type="checkbox"]:not(.filled-in)+span:after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; + z-index: 0; + border: 2px solid #5a5a5a; + border-radius: 1px; + margin-top: 3px; +} + +[type="checkbox"]:not(:checked):disabled+span:before { + border: none; + background-color: rgba(0,0,0,0.42) +} + +[type="checkbox"]:checked:disabled+span:before { + border-right: 2px solid rgba(0,0,0,0.42); + border-bottom: 2px solid rgba(0,0,0,0.42) +} + +[type="checkbox"].filled-in+span:after { + border-radius: 2px +} + +[type="checkbox"].filled-in+span:before,[type="checkbox"].filled-in+span:after { + content: ''; + left: 0; + position: absolute; + z-index: 1 +} + +[type="checkbox"].filled-in:not(:checked)+span:before { + width: 0; + height: 0; + border: 3px solid transparent; + left: 6px; + top: 10px; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100% +} + +[type="checkbox"].filled-in:not(:checked)+span:after { + height: 17px; + width: 17px; + background-color: transparent; + border: 2px solid #5a5a5a; + top: 0px; + z-index: 0 +} + +[type="checkbox"].filled-in:checked+span:before { + top: -3px; + left: -2px; + width: 7px; + height: 12px; + border-top: 3px solid transparent; + border-left: 3px solid transparent; + border-right: 3px solid #fff; + border-bottom: 3px solid #fff; + -webkit-transform: rotateZ(35deg); + transform: rotateZ(35deg); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100% +} + +[type="checkbox"].filled-in:checked+span:after { + top: 0; + width: 17px; + height: 17px; + border: 2px solid #3477db; + background-color: #3477db; + z-index: 0 +} + +input[type="button"]{ + background: #3477db; + color: #fff; + border-radius: 3px; + height: 35px; + line-height: 35px; + padding: 0 20px; + border: 0; + font-size: 14px; + font-weight: 500; + cursor: pointer; + min-width: 80px; + text-align: center; + width: 200px; +} + +input[type="button"]:hover { + background: #5c9dfe; + text-decoration: none; + } + + + input[type="button"][disabled]{ + border: 1px solid #999999; + background-color: #cccccc; + color: #666666; + } + + .hidden{ + display: none !important; + } + + .notify{ + width: 220px; + height: 27px; + margin: auto; + background-color: rgb(21, 104, 0); + color: rgb(255, 255, 255); + text-align: center; + font-weight: 600; + border-radius: 5px; + position: fixed; + z-index: 1; + top: 10px; + right: 20px; + font-size: 15px; + white-space: nowrap; + padding: 10px; + } + +.inline-block{ + display: inline-block !important; +} + +.block{ + display: block; +} + +.readonly-input{ + cursor: default; + border: 0; + display: block; +} + +.setting-notify-block{ + width: 450px; + height: 100px; + margin-top: 15px; + background-color: rgb(175, 175, 175); + border-radius: 10px; +} + +.setting-notify-block .setting-notify-title{ + padding: 15px 20px 5px 0; + font-weight: 700; + color:#FFFFFF; + font-size: 15px; + text-align: left; + display: block; +} + +.setting-notify-block .setting-notify-message{ + padding: 3px 20px 5px 0; + font-size: 14px; + display: block; + width: 320px; +} +.setting-notify-block .setting-notify-message-g{ + padding: 0 30px 5px 0; + color:rgb(199, 199, 199); + font-size: 11px; + display: block; +} + +.setting-notify-block .setting-notify-img{ + height: 50px; + padding: 25px 15px 25px 25px; +} + +.setting-notify-block .setting-notify-message-block{ + display: inline-block; + position: absolute; +} + + +/* Tabs */ + .tabs { + position: relative; + min-height: 500px; + clear: both; + margin: 25px 0; + } + .tab { + float: left; + clear: both; + width: 286px; + } + .tab > label { + padding: 10px; + margin-left: -1px; + font-size: 16px; + vertical-align: middle; + position: relative; + width: 100px; + height: 30px; + display: table-cell; + cursor: pointer; + } + .tab [type=radio]:not(:checked) ~ label:hover{ + background-color: #e4e4e4; + border-radius: 10px; + } + .tab [type=radio] { + display: none; + } + .content { + position: absolute; + top: 0; + left: 140px; + background: white; + right: 0; + bottom: 0; + padding: 20px; + } + .content { + opacity: 0; + transition: all 0.6s ease; + } + [type=radio]:checked ~ label { + background: white; + border-bottom: 2px solid #6ebf5d; + z-index: 2; + } + [type=radio]:checked ~ label ~ .content { + opacity: 1; + transform: translateX(0); + z-index: 1; + } \ No newline at end of file diff --git a/src/components/TabItem.vue b/src/components/TabItem.vue index fcfed54..e28b1e0 100644 --- a/src/components/TabItem.vue +++ b/src/components/TabItem.vue @@ -2,18 +2,19 @@
-
+

{{ tab.url }}

-

{{ sessions }}

-
-

{{ summaryTimeForTab }}

-

{{ percent }} %

-
-
+
+
+
+
+

{{ percent }} %

+

{{ sessions }}

+
@@ -79,9 +80,10 @@ const styleForProgressBar = computed(() => `width: ${percent}%`); font-weight: 600; } .tab-item .progress-bar { + width: 100%; margin: 5px 0 0 5px; border-radius: 10px; - border: 1px rgb(225 224 224) solid; + border: 1.5px rgb(225 224 224) solid; } .tab-item .progress-bar div { height: 6px; @@ -90,4 +92,20 @@ const styleForProgressBar = computed(() => `width: ${percent}%`); .flex-grow-2 { flex-grow: 2; } +.tab-item .first-block { + display: flex; + justify-content: space-between; +} +.tab-item .second-block { + display: flex; + flex-direction: row; + align-items: baseline; +} +.tab-item .percent { + white-space: nowrap; + margin: 0 5px 0 20px; +} +.tab-item .sessions { + margin: 0 0 0 5px; +} diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index 893923c..8678930 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -2,15 +2,8 @@

Web Activity Time Tracker

- - + +
@@ -28,18 +21,10 @@ async function openSettings() { } - + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/pie-chart.svg b/src/assets/icons/pie-chart.svg new file mode 100644 index 0000000..3e9eceb --- /dev/null +++ b/src/assets/icons/pie-chart.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/stats.svg b/src/assets/icons/stats.svg new file mode 100644 index 0000000..98590e6 --- /dev/null +++ b/src/assets/icons/stats.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index 8678930..59f66e7 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -6,12 +6,50 @@
- +
+ + + +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+ +
+
+
+ +
+
+

Delivery Contents

+
+
+

Shipping

+
+
+

Returns

+
+
+
+ + + + diff --git a/src/components/TabList.vue b/src/components/TabList.vue index 80868c6..974190e 100644 --- a/src/components/TabList.vue +++ b/src/components/TabList.vue @@ -1,10 +1,11 @@ + + + + diff --git a/src/components/TabItem.vue b/src/components/TabItem.vue index 3b2cdf5..b5f98f1 100644 --- a/src/components/TabItem.vue +++ b/src/components/TabItem.vue @@ -56,7 +56,7 @@ const styleForProgressBar = computed(() => `width: ${percent}%`); padding: 7px; border: 1px transparent solid; border-radius: 10px; - margin: 10px; + margin: 5px 15px; display: flex; justify-content: flex-start; align-items: center; diff --git a/src/components/TabItemHeader.vue b/src/components/TabItemHeader.vue index 149c24c..20c7294 100644 --- a/src/components/TabItemHeader.vue +++ b/src/components/TabItemHeader.vue @@ -39,7 +39,7 @@ const summaryTimeString = computed(() => convertSummaryTimeToString(props.summar } p { font-size: 14px; - margin: 5px; + margin: 0; } .time { font-size: 16px; diff --git a/src/components/TabList.vue b/src/components/TabList.vue index 974190e..0425a1d 100644 --- a/src/components/TabList.vue +++ b/src/components/TabList.vue @@ -1,11 +1,15 @@ diff --git a/src/compositions/black-list.ts b/src/compositions/black-list.ts index 9702407..ffd76d5 100644 --- a/src/compositions/black-list.ts +++ b/src/compositions/black-list.ts @@ -1,10 +1,12 @@ -import { injecStorage } from "../storage/inject-storage"; -import { StorageParams } from "../storage/storage-params"; -import { isDomainEquals } from "../utils/common"; -import { extractHostname } from "./extract-hostname"; +import { injecStorage } from '../storage/inject-storage'; +import { StorageParams } from '../storage/storage-params'; +import { isDomainEquals } from '../utils/common'; +import { extractHostname } from './extract-hostname'; -export async function isInBlackList(url: string): Promise{ - const storage = injecStorage(); - const blackList = await storage.getValue(StorageParams.BLACK_LIST) as string[]; - return blackList?.find(x => isDomainEquals(extractHostname(x), extractHostname(url))) !== undefined; -} \ No newline at end of file +export async function isInBlackList(url: string): Promise { + const storage = injecStorage(); + const blackList = (await storage.getValue(StorageParams.BLACK_LIST)) as string[]; + return ( + blackList?.find(x => isDomainEquals(extractHostname(x), extractHostname(url))) !== undefined + ); +} diff --git a/src/compositions/set-badge.ts b/src/compositions/set-badge.ts index 04cef94..4662815 100644 --- a/src/compositions/set-badge.ts +++ b/src/compositions/set-badge.ts @@ -1,21 +1,22 @@ -import Browser from "webextension-polyfill"; +import Browser from 'webextension-polyfill'; export interface BadgeState { - color: BadgeColor; - tabId: number; - text: string; + color: BadgeColor; + tabId: number; + text: string; } export enum BadgeColor { - red = '#fdb8b8', - green = '#6ec05e', - none = '#000' + red = '#fdb8b8', + green = '#6ec05e', + blue = '#1a73e8', + none = '#000', } export function useBadge(badge: BadgeState): void { - Browser.action.setBadgeBackgroundColor({ color: badge.color }) - Browser.action.setBadgeText({ - tabId: badge.tabId, - text: badge.text - }); -} \ No newline at end of file + Browser.action.setBadgeBackgroundColor({ color: badge.color }); + Browser.action.setBadgeText({ + tabId: badge.tabId, + text: badge.text, + }); +} diff --git a/src/entity/tab.ts b/src/entity/tab.ts index 807d44c..4c7a2ef 100644 --- a/src/entity/tab.ts +++ b/src/entity/tab.ts @@ -1,82 +1,78 @@ -import { todayLocalDate } from "../utils/today"; -import { logger } from "../compositions/logger"; +import { todayLocalDate } from '../utils/today'; +import { logger } from '../compositions/logger'; export class Tab implements ISerializable { - url: string = ''; - favicon: string | undefined = ''; - summaryTime: number = 0; - counter: number = 0 - days: TabDay[] = []; + url: string = ''; + favicon: string | undefined = ''; + summaryTime: number = 0; + counter: number = 0; + days: TabDay[] = []; - init(url: string){ - this.url = url; - } + init(url: string) { + this.url = url; + } - incSummaryTime() :void { - this.summaryTime += 1; - if (__DEV__) logger.log(`Summary time ${this.url} - ${this.summaryTime}`); + incSummaryTime(): void { + this.summaryTime += 1; - const day = this.days.find(x => x.date == todayLocalDate()); - if (day === undefined) - this.addNewDay(); - else day.incSummaryTime(); - } + const day = this.days.find(x => x.date == todayLocalDate()); + if (day === undefined) this.addNewDay(); + else day.incSummaryTime(); + } - incCounter() :void { - this.counter +=1; - if (__DEV__) logger.log(`Counter ${this.url} - ${this.counter}`); - const day = this.days.find(x => x.date == todayLocalDate()); - if (day === undefined) - this.addNewDay(); - else day.incCounter() - } + incCounter(): void { + this.counter += 1; + if (__DEV__) logger.log(`Counter ${this.url} - ${this.counter}`); + const day = this.days.find(x => x.date == todayLocalDate()); + if (day === undefined) this.addNewDay(); + else day.incCounter(); + } - addNewDay() :void { - const newTabDay = new TabDay(); - newTabDay.init(todayLocalDate()); - this.days.push(newTabDay); - } + addNewDay(): void { + const newTabDay = new TabDay(); + newTabDay.init(todayLocalDate()); + this.days.push(newTabDay); + } - deserialize(input: Tab) { - this.url = input.url; - this.counter = input.counter; - this.favicon = input.favicon; - this.summaryTime = input.summaryTime; - if (input.days?.length > 0) - this.days = input.days.map(x => new TabDay().deserialize(x)); + deserialize(input: Tab) { + this.url = input.url; + this.counter = input.counter; + this.favicon = input.favicon; + this.summaryTime = input.summaryTime; + if (input.days?.length > 0) this.days = input.days.map(x => new TabDay().deserialize(x)); - return this; - } + return this; + } - setFavicon(favicon: string | undefined){ - this.favicon = favicon; - } + setFavicon(favicon: string | undefined) { + this.favicon = favicon; + } } export class TabDay implements ISerializable { - counter: number = 0; - date: string = ''; - summary: number = 0; + counter: number = 0; + date: string = ''; + summary: number = 0; - init(date: string){ - this.date = date; - this.counter = 1; - this.summary = 1; - } + init(date: string) { + this.date = date; + this.counter = 1; + this.summary = 1; + } - incSummaryTime() :void { - this.summary += 1; - } + incSummaryTime(): void { + this.summary += 1; + } - incCounter() :void { - this.counter += 1; - } + incCounter(): void { + this.counter += 1; + } - deserialize(input: TabDay): TabDay { - this.counter = input.counter; - this.date = input.date; - this.summary = input.summary; + deserialize(input: TabDay): TabDay { + this.counter = input.counter; + this.date = input.date; + this.summary = input.summary; - return this; - } + return this; + } } diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index 59f66e7..704b95a 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -68,10 +68,10 @@ async function openSettings() { .headerBlock .header { font-size: 16px; padding: 0 20px; - margin-top: 10px; + margin-top: 8px; display: inline-block; font-weight: 600; - color: rgb(0, 0, 0); + color: #4a4a4a; } .headerBlock img { diff --git a/src/storage/storage-params.ts b/src/storage/storage-params.ts index a222d39..3f99523 100644 --- a/src/storage/storage-params.ts +++ b/src/storage/storage-params.ts @@ -1,58 +1,63 @@ -import { Tab } from "../entity/tab"; -import { TimeInterval } from "../entity/time-interval"; +import { Tab } from '../entity/tab'; +import { TimeInterval } from '../entity/time-interval'; export enum StorageParams { - TABS = 'tabs', - BLACK_LIST = 'black_list', - RESTRICTION_LIST = 'restriction_list', - NOTIFICATION_LIST = 'notification_list', - NOTIFICATION_MESSAGE = 'notification_message', - TIMEINTERVAL_LIST = 'time_interval', - INTERVAL_INACTIVITY = 'inactivity_interval', - INTERVAL_SAVE_STORAGE = 'interval_save_in_storage', - INTERVAL_RANGE = 'range_days', - DARK_MODE = 'night_mode', - VIEW_TIME_IN_BADGE = 'view_time_in_badge', - BLOCK_DEFERRAL = 'view_block_deferral', - SHOW_HINT = 'show_hint', + TABS = 'tabs', + BLACK_LIST = 'black_list', + RESTRICTION_LIST = 'restriction_list', + NOTIFICATION_LIST = 'notification_list', + NOTIFICATION_MESSAGE = 'notification_message', + TIMEINTERVAL_LIST = 'time_interval', + INTERVAL_INACTIVITY = 'inactivity_interval', + INTERVAL_SAVE_STORAGE = 'interval_save_in_storage', + INTERVAL_RANGE = 'range_days', + DARK_MODE = 'night_mode', + VIEW_TIME_IN_BADGE = 'view_time_in_badge', + BLOCK_DEFERRAL = 'view_block_deferral', + SHOW_HINT = 'show_hint', + DAILY_SUMMARY_NOTIFICATION_TIME = 'dailySummaryNotificationTime', } -export enum StorageDeserializeParam{ - TABS = 'tabs', - TIMEINTERVAL_LIST = 'time_interval', +export enum StorageDeserializeParam { + TABS = 'tabs', + TIMEINTERVAL_LIST = 'time_interval', } -export function createDeserializeParambject(param:StorageDeserializeParam): StorageDeserializeType{ - switch (param){ - case StorageDeserializeParam.TABS: return new Tab(); - case StorageDeserializeParam.TIMEINTERVAL_LIST: return new TimeInterval(); - } +export function createDeserializeParambject( + param: StorageDeserializeParam, +): StorageDeserializeType { + switch (param) { + case StorageDeserializeParam.TABS: + return new Tab(); + case StorageDeserializeParam.TIMEINTERVAL_LIST: + return new TimeInterval(); + } } export type StorageDeserializeType = Tab | TimeInterval; export enum InactivityInterval { - Seconds_30 = 30, - Seconds_45 = 45, - Min_1 = 60, - Min_2 = 120, - Min_5 = 300, - Min_10 = 600, - Min_20 = 1200, - Min_30 = 1800 -}; + Seconds_30 = 30, + Seconds_45 = 45, + Min_1 = 60, + Min_2 = 120, + Min_5 = 300, + Min_10 = 600, + Min_20 = 1200, + Min_30 = 1800, +} export enum RangeForDays { - Days_2 = 'days2', - Days_3 = 'days3', - Days_4 = 'days4', - Days_5 = 'days5', - Days_6 = 'days6', - Days_7 = 'days7', - Month_1 = 'month1', - Month_2 = 'month2', - Month_3 = 'month3' -}; + Days_2 = 'days2', + Days_3 = 'days3', + Days_4 = 'days4', + Days_5 = 'days5', + Days_6 = 'days6', + Days_7 = 'days7', + Month_1 = 'month1', + Month_2 = 'month2', + Month_3 = 'month3', +} export const NOTIFICATION_MESSAGE_DEFAULT = 'You have spent a lot of time on this site'; export const INTERVAL_INACTIVITY_DEFAULT = InactivityInterval.Seconds_30; @@ -61,4 +66,4 @@ export const INTERVAL_RANGE_DEFAULT = RangeForDays.Days_7; export const DARK_MODE_DEFAULT = false; export const VIEW_TIME_IN_BADGE_DEFAULT = true; export const BLOCK_DEFERRAL_DEFAULT = true; -export const SHOW_HINT_DEFAULT = true; \ No newline at end of file +export const SHOW_HINT_DEFAULT = true; diff --git a/src/tracker.ts b/src/tracker.ts index 58b21f1..757a012 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -105,7 +105,7 @@ async function mainTracker( useBadge({ tabId: activeTab!.id!, text: convertSummaryTimeToBadgeString(tab.days.at(-1)!.summary), - color: BadgeColor.green, + color: BadgeColor.blue, }); else useBadge({ From 252ed6fe907a710031d79648b68b47a0ee1845e7 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 26 May 2023 17:23:49 +0300 Subject: [PATCH 072/329] Change vite build again --- src/manifest.json | 6 +++--- vite.config.ts | 2 -- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/manifest.json b/src/manifest.json index b467f58..01a397c 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -4,7 +4,7 @@ "short_name": "Web Tracker", "version": "2.0.0", "description": "Track and limit time your activity in the browser every day. Control how much time you spend on websites.", - "options_page": "settings.html", + "options_page": "src/settings.html", "icons": { "16": "16x16.png", "32": "32x32.png", @@ -22,10 +22,10 @@ ], "offline_enabled": true, "background": { - "{{chrome}}.service_worker": "background.ts" + "{{chrome}}.service_worker": "src/background.ts" }, "{{chrome}}.action": { - "default_popup": "popup.html", + "default_popup": "src/popup.html", "default_title": "Web Activity Time Tracker" } } \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index adb5132..57aa45a 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -18,9 +18,7 @@ function generateManifest() { // https://vitejs.dev/config/ export default defineConfig(({ mode }) => ({ - root: 'src', build: { - outDir: '../dist', emptyOutDir: true, sourcemap: mode === 'development' ? 'inline' : false, minify: true, From edf4e391b0cb9b4ea2c6aa7a7de675b37713ef27 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 26 May 2023 17:37:21 +0300 Subject: [PATCH 073/329] Fix chart style --- src/components/DonutChart.vue | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/src/components/DonutChart.vue b/src/components/DonutChart.vue index 64c8e27..722e345 100644 --- a/src/components/DonutChart.vue +++ b/src/components/DonutChart.vue @@ -1,6 +1,6 @@ @@ -57,24 +57,14 @@ const options = { }, }, }; - -const plugins = [ - { - id: 'legendDistance', - beforeInit(chart: any, args: any, opts: any) { - const originalFit = chart.legend.fit; - chart.legend.fit = function fit() { - originalFit.bind(chart.legend)(); - this.width += opts.padding || 0; - }; - }, - }, -]; From 41278c0dff9e21e932b050f0341e7062e8b6e2fc Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 29 May 2023 22:39:17 +0300 Subject: [PATCH 074/329] Add components for today and all days data summary --- src/components/TabList.vue | 51 ++++++++++++---------- src/compositions/all-tab-list-summary.ts | 37 ++++++++++++++++ src/compositions/today-tab-list-summary.ts | 41 +++++++++++++++++ src/pages/Popup.vue | 2 +- src/utils/tabListSummary.ts | 12 +++++ 5 files changed, 119 insertions(+), 24 deletions(-) create mode 100644 src/compositions/all-tab-list-summary.ts create mode 100644 src/compositions/today-tab-list-summary.ts create mode 100644 src/utils/tabListSummary.ts diff --git a/src/components/TabList.vue b/src/components/TabList.vue index 0425a1d..2c36973 100644 --- a/src/components/TabList.vue +++ b/src/components/TabList.vue @@ -26,7 +26,10 @@ import DonutChart from '../components/DonutChart.vue'; import { injectTabsRepository } from '../repository/inject-tabs-repository'; import { Tab } from '../entity/tab'; import { todayLocalDate } from '../utils/today'; -import { TypeOfList } from '../utils/enums'; +import { SortingBy, TypeOfList } from '../utils/enums'; +import { useTodayTabListSummary } from '../compositions/today-tab-list-summary'; +import { TabListSummary } from '../utils/tabListSummary'; +import { useAllTabListSummary } from '../compositions/all-tab-list-summary'; const props = defineProps<{ type: TypeOfList; @@ -45,30 +48,32 @@ const firstDay = computed(() => { if (props.type == TypeOfList.All) return; }); -onMounted(async () => { +async function loadList(sortingBy: SortingBy) { const repo = await injectTabsRepository(); - let unSortedTabs = repo.getTodayTabs(); - tabs.value = unSortedTabs.sort(function (a: Tab, b: Tab) { - return ( - b.days.find(s => s.date === todayLocalDate())!.summary - - a.days.find(s => s.date === todayLocalDate())!.summary - ); - }); + let tabSummary = null; + if (props.type == TypeOfList.Today) tabSummary = await useTodayTabListSummary(); + if (props.type == TypeOfList.Today) tabSummary = await useAllTabListSummary(); - const summaryTimeList = tabs.value?.map(function (tab) { - return tab.days.find(day => day.date === todayLocalDate())!.summary; - }); - const siteList = tabs.value?.map(function (tab) { - return tab.url; - }); - timeForChart.value = summaryTimeList?.slice(0, 10); - sitesForChart.value = siteList?.slice(0, 10); + if (tabSummary != null) { + tabs.value = tabSummary.tabs; + summaryTime.value = tabSummary.summaryTime; + timeForChart.value = tabSummary.chart.timeForChart; + sitesForChart.value = tabSummary.chart.sitesForChart; + } +} - summaryTime.value = - summaryTimeList != undefined && summaryTimeList.length > 0 - ? summaryTimeList.reduce(function (a, b) { - return a + b; - }) - : 0; +onMounted(async () => { + loadList(SortingBy.WebUsage); }); + +function sortingBy(sortingBy: SortingBy) { + switch (sortingBy) { + case SortingBy.WebUsage: + loadList(SortingBy.WebUsage); + break; + case SortingBy.Sessions: + loadList(SortingBy.Sessions); + break; + } +} diff --git a/src/compositions/all-tab-list-summary.ts b/src/compositions/all-tab-list-summary.ts new file mode 100644 index 0000000..f456556 --- /dev/null +++ b/src/compositions/all-tab-list-summary.ts @@ -0,0 +1,37 @@ +import { Tab } from '../entity/tab'; +import { injectTabsRepository } from '../repository/inject-tabs-repository'; +import { TabListSummary } from '../utils/tabListSummary'; + +export async function useAllTabListSummary(): Promise { + const repo = await injectTabsRepository(); + const unSortedTabs = repo.getTodayTabs(); + let tabs: Tab[] = []; + + tabs = unSortedTabs.sort(function (a: Tab, b: Tab) { + return b.summaryTime - a.summaryTime; + }); + + const summaryTimeList = tabs?.map(function (tab) { + return tab.summaryTime; + }); + const siteList = tabs?.map(function (tab) { + return tab.url; + }); + const timeForChart = summaryTimeList?.slice(0, 10); + const sitesForChart = siteList?.slice(0, 10); + + const summaryTime = + summaryTimeList != undefined && summaryTimeList.length > 0 + ? summaryTimeList.reduce(function (a, b) { + return a + b; + }) + : 0; + return { + tabs, + summaryTime, + chart: { + timeForChart, + sitesForChart, + }, + }; +} diff --git a/src/compositions/today-tab-list-summary.ts b/src/compositions/today-tab-list-summary.ts new file mode 100644 index 0000000..09062df --- /dev/null +++ b/src/compositions/today-tab-list-summary.ts @@ -0,0 +1,41 @@ +import { Tab } from '../entity/tab'; +import { injectTabsRepository } from '../repository/inject-tabs-repository'; +import { TabListSummary } from '../utils/tabListSummary'; +import { todayLocalDate } from '../utils/today'; + +export async function useTodayTabListSummary(): Promise { + const repo = await injectTabsRepository(); + const unSortedTabs = repo.getTodayTabs(); + let tabs: Tab[] = []; + + tabs = unSortedTabs.sort(function (a: Tab, b: Tab) { + return ( + b.days.find(s => s.date === todayLocalDate())!.summary - + a.days.find(s => s.date === todayLocalDate())!.summary + ); + }); + + const summaryTimeList = tabs?.map(function (tab) { + return tab.days.find(day => day.date === todayLocalDate())!.summary; + }); + const siteList = tabs?.map(function (tab) { + return tab.url; + }); + const timeForChart = summaryTimeList?.slice(0, 10); + const sitesForChart = siteList?.slice(0, 10); + + const summaryTime = + summaryTimeList != undefined && summaryTimeList.length > 0 + ? summaryTimeList.reduce(function (a, b) { + return a + b; + }) + : 0; + return { + tabs, + summaryTime, + chart: { + timeForChart, + sitesForChart, + }, + }; +} diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index 704b95a..39497cf 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -34,7 +34,7 @@
-

Delivery Contents

+

Shipping

diff --git a/src/utils/tabListSummary.ts b/src/utils/tabListSummary.ts new file mode 100644 index 0000000..363ce63 --- /dev/null +++ b/src/utils/tabListSummary.ts @@ -0,0 +1,12 @@ +import { Tab } from '../entity/tab'; + +export interface TabListSummary { + tabs: Tab[]; + summaryTime: number; + chart: DataForChart; +} + +export interface DataForChart { + timeForChart: number[]; + sitesForChart: string[]; +} From ace2b6e52418283538e61d11af90a0f15a2faeed Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 29 May 2023 22:40:05 +0300 Subject: [PATCH 075/329] Change file folder --- src/compositions/{activeTab.ts => active-tab.ts} | 0 src/{entity/ISerializable.ts => storage/serializable.ts} | 0 src/tracker.ts | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename src/compositions/{activeTab.ts => active-tab.ts} (100%) rename src/{entity/ISerializable.ts => storage/serializable.ts} (100%) diff --git a/src/compositions/activeTab.ts b/src/compositions/active-tab.ts similarity index 100% rename from src/compositions/activeTab.ts rename to src/compositions/active-tab.ts diff --git a/src/entity/ISerializable.ts b/src/storage/serializable.ts similarity index 100% rename from src/entity/ISerializable.ts rename to src/storage/serializable.ts diff --git a/src/tracker.ts b/src/tracker.ts index 757a012..c10e378 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -13,7 +13,7 @@ import { import { BadgeColor } from './compositions/set-badge'; import { injecStorage } from './storage/inject-storage'; import { addInterval, closeInterval } from './compositions/daily-intervals'; -import { ActiveTab } from './compositions/activeTab'; +import { ActiveTab } from './compositions/active-tab'; import { isLimitExceeded } from './compositions/limit-list'; import { Tab } from './entity/tab'; import { useBlockPage } from './compositions/block-page'; From 46ac5be26f07a58e33e4e8c7f8b997ea104ab2b4 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 30 May 2023 16:35:01 +0300 Subject: [PATCH 076/329] Prepare for sorting by --- src/assets/css/main.css | 9 ++++++ src/components/TabItemHeader.vue | 32 ++++++++++++++++++++-- src/components/TabList.vue | 17 ++++++------ src/compositions/today-tab-list-summary.ts | 16 +++++++---- src/utils/enums.ts | 5 ++++ 5 files changed, 61 insertions(+), 18 deletions(-) diff --git a/src/assets/css/main.css b/src/assets/css/main.css index bef7819..329fab5 100644 --- a/src/assets/css/main.css +++ b/src/assets/css/main.css @@ -36,6 +36,15 @@ body { .mr-10 { margin-right: 10px; } +.mr-5 { + margin-right: 5px; +} +.pr-5{ + padding-right: 5px; +} +.p-5{ + padding: 5px; +} .text-right { text-align: right; } diff --git a/src/components/TabItemHeader.vue b/src/components/TabItemHeader.vue index 20c7294..fcc4697 100644 --- a/src/components/TabItemHeader.vue +++ b/src/components/TabItemHeader.vue @@ -1,7 +1,16 @@ @@ -14,7 +23,7 @@ export default { diff --git a/src/components/TabList.vue b/src/components/TabList.vue index 2c36973..efd7ef0 100644 --- a/src/components/TabList.vue +++ b/src/components/TabList.vue @@ -7,6 +7,7 @@ :summaryTime="summaryTime" :countOfSites="countOfSites" :firstDay="firstDay" + @sortingBy="sorting" /> @@ -25,10 +26,8 @@ import TabItemHeader from '../components/TabItemHeader.vue'; import DonutChart from '../components/DonutChart.vue'; import { injectTabsRepository } from '../repository/inject-tabs-repository'; import { Tab } from '../entity/tab'; -import { todayLocalDate } from '../utils/today'; import { SortingBy, TypeOfList } from '../utils/enums'; import { useTodayTabListSummary } from '../compositions/today-tab-list-summary'; -import { TabListSummary } from '../utils/tabListSummary'; import { useAllTabListSummary } from '../compositions/all-tab-list-summary'; const props = defineProps<{ @@ -51,8 +50,8 @@ const firstDay = computed(() => { async function loadList(sortingBy: SortingBy) { const repo = await injectTabsRepository(); let tabSummary = null; - if (props.type == TypeOfList.Today) tabSummary = await useTodayTabListSummary(); - if (props.type == TypeOfList.Today) tabSummary = await useAllTabListSummary(); + if (props.type == TypeOfList.Today) tabSummary = await useTodayTabListSummary(sortingBy); + if (props.type == TypeOfList.Today) tabSummary = await useAllTabListSummary(sortingBy); if (tabSummary != null) { tabs.value = tabSummary.tabs; @@ -62,11 +61,7 @@ async function loadList(sortingBy: SortingBy) { } } -onMounted(async () => { - loadList(SortingBy.WebUsage); -}); - -function sortingBy(sortingBy: SortingBy) { +function sorting(sortingBy: SortingBy) { switch (sortingBy) { case SortingBy.WebUsage: loadList(SortingBy.WebUsage); @@ -76,4 +71,8 @@ function sortingBy(sortingBy: SortingBy) { break; } } + +onMounted(async () => { + loadList(SortingBy.WebUsage); +}); diff --git a/src/compositions/today-tab-list-summary.ts b/src/compositions/today-tab-list-summary.ts index 09062df..ffa41ee 100644 --- a/src/compositions/today-tab-list-summary.ts +++ b/src/compositions/today-tab-list-summary.ts @@ -1,22 +1,26 @@ import { Tab } from '../entity/tab'; import { injectTabsRepository } from '../repository/inject-tabs-repository'; +import { SortingBy } from '../utils/enums'; import { TabListSummary } from '../utils/tabListSummary'; import { todayLocalDate } from '../utils/today'; -export async function useTodayTabListSummary(): Promise { +export async function useTodayTabListSummary(sortingBy: SortingBy): Promise { const repo = await injectTabsRepository(); const unSortedTabs = repo.getTodayTabs(); let tabs: Tab[] = []; tabs = unSortedTabs.sort(function (a: Tab, b: Tab) { - return ( - b.days.find(s => s.date === todayLocalDate())!.summary - - a.days.find(s => s.date === todayLocalDate())!.summary - ); + return sortingBy == SortingBy.UsageTime + ? b.days.find(s => s.date === todayLocalDate())!.summary - + a.days.find(s => s.date === todayLocalDate())!.summary + : b.days.find(s => s.date === todayLocalDate())!.counter - + a.days.find(s => s.date === todayLocalDate())!.counter; }); const summaryTimeList = tabs?.map(function (tab) { - return tab.days.find(day => day.date === todayLocalDate())!.summary; + return sortingBy == SortingBy.UsageTime + ? tab.days.find(day => day.date === todayLocalDate())!.summary + : tab.days.find(day => day.date === todayLocalDate())!.counter; }); const siteList = tabs?.map(function (tab) { return tab.url; diff --git a/src/utils/enums.ts b/src/utils/enums.ts index 87ca9f2..2052a65 100644 --- a/src/utils/enums.ts +++ b/src/utils/enums.ts @@ -3,3 +3,8 @@ export enum TypeOfList { All, ByDays, } + +export enum SortingBy { + UsageTime, + Sessions, +} From 88853295ee66c3f3db4c077aefa79f416bf6959b Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 30 May 2023 16:35:18 +0300 Subject: [PATCH 077/329] Add prettier format --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index f33d98c..7fb9079 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "dev": "vite build --watch --mode development", "start": "vite build --watch --mode production", "build": "pnpm compile && vite build --mode production", + "format": "prettier --write .", "script:zip": "powershell scripts/zip.ps1" }, "dependencies": { From 915a66c7f447c7ade79d63778e7750f8a00fa74f Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 31 May 2023 21:06:10 +0300 Subject: [PATCH 078/329] Change packages --- package.json | 5 - pnpm-lock.yaml | 710 ++++++++++++++++++++++++---------------------- src/manifest.json | 6 +- 3 files changed, 368 insertions(+), 353 deletions(-) diff --git a/package.json b/package.json index 7fb9079..87b3325 100644 --- a/package.json +++ b/package.json @@ -3,14 +3,9 @@ "private": true, "version": "1.0.0", "type": "module", - "engines": { - "node": ">=16.15.0", - "pnpm": ">=7" - }, "scripts": { "dev": "vite build --watch --mode development", "start": "vite build --watch --mode production", - "build": "pnpm compile && vite build --mode production", "format": "prettier --write .", "script:zip": "powershell scripts/zip.ps1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0633186..cfb1849 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,24 +21,24 @@ dependencies: devDependencies: '@types/webextension-polyfill': 0.10.0 - '@vitejs/plugin-vue': 4.0.0_vite@4.1.4+vue@3.2.47 + '@vitejs/plugin-vue': 4.2.1_vite@4.3.3+vue@3.2.47 typescript: 5.0.4 - vite: 4.1.4 - vite-plugin-web-extension: 3.0.8_vite@4.1.4 - vue-tsc: 1.2.0_typescript@5.0.4 + vite: 4.3.3 + vite-plugin-web-extension: 3.0.6_vite@4.3.3 + vue-tsc: 1.6.1_typescript@5.0.4 webextension-polyfill: 0.10.0 packages: - /@babel/code-frame/7.18.6: - resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} + /@babel/code-frame/7.21.4: + resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 dev: true - /@babel/helper-string-parser/7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + /@babel/helper-string-parser/7.21.5: + resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==} engines: {node: '>=6.9.0'} /@babel/helper-validator-identifier/7.19.1: @@ -54,37 +54,29 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser/7.21.3: - resolution: {integrity: sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==} + /@babel/parser/7.21.5: + resolution: {integrity: sha512-J+IxH2IsxV4HbnTrSWgMAQj0UEo61hDA4Ny8h8PCX0MLXiibqHbqIOVneqdocemSBc22VpBKxt4J6FQzy9HarQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.21.3 + '@babel/types': 7.21.5 - /@babel/runtime/7.20.13: - resolution: {integrity: sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==} + /@babel/runtime/7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.13.11 - dev: true - /@babel/runtime/7.21.5: - resolution: {integrity: sha512-8jI69toZqqcsnqGGqwGS4Qb1VwLOEp4hz+CXPywcvjs60u3B4Pom/U/7rm4W8tMOYEB+E9wgD0mW1l3r8qlI9Q==} + /@babel/types/7.21.5: + resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.13.11 - dev: false - - /@babel/types/7.21.3: - resolution: {integrity: sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.19.4 + '@babel/helper-string-parser': 7.21.5 '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 - /@devicefarmer/adbkit-logcat/2.1.2: - resolution: {integrity: sha512-G4grpEa5s9s9wCRs8YB9LjFSnz0Os3g3RYIwZSxH3JFfV3aejL5xlu4hHMH4JY+d4oCCwImcEZJcFPY9BEP21w==} + /@devicefarmer/adbkit-logcat/2.1.3: + resolution: {integrity: sha512-yeaGFjNBc/6+svbDeul1tNHtNChw6h8pSHAt5D+JsedUrMTN7tla7B15WLDyekxsuS2XlZHRxpuC6m92wiwCNw==} engines: {node: '>= 4'} dev: true @@ -98,7 +90,7 @@ packages: engines: {node: '>= 0.10.4'} hasBin: true dependencies: - '@devicefarmer/adbkit-logcat': 2.1.2 + '@devicefarmer/adbkit-logcat': 2.1.3 '@devicefarmer/adbkit-monkey': 1.2.1 bluebird: 3.7.2 commander: 9.5.0 @@ -109,8 +101,8 @@ packages: - supports-color dev: true - /@esbuild/android-arm/0.16.17: - resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==} + /@esbuild/android-arm/0.17.18: + resolution: {integrity: sha512-EmwL+vUBZJ7mhFCs5lA4ZimpUH3WMAoqvOIYhVQwdIgSpHC8ImHdsRyhHAVxpDYUSm0lWvd63z0XH1IlImS2Qw==} engines: {node: '>=12'} cpu: [arm] os: [android] @@ -118,8 +110,8 @@ packages: dev: true optional: true - /@esbuild/android-arm64/0.16.17: - resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==} + /@esbuild/android-arm64/0.17.18: + resolution: {integrity: sha512-/iq0aK0eeHgSC3z55ucMAHO05OIqmQehiGay8eP5l/5l+iEr4EIbh4/MI8xD9qRFjqzgkc0JkX0LculNC9mXBw==} engines: {node: '>=12'} cpu: [arm64] os: [android] @@ -127,8 +119,8 @@ packages: dev: true optional: true - /@esbuild/android-x64/0.16.17: - resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==} + /@esbuild/android-x64/0.17.18: + resolution: {integrity: sha512-x+0efYNBF3NPW2Xc5bFOSFW7tTXdAcpfEg2nXmxegm4mJuVeS+i109m/7HMiOQ6M12aVGGFlqJX3RhNdYM2lWg==} engines: {node: '>=12'} cpu: [x64] os: [android] @@ -136,8 +128,8 @@ packages: dev: true optional: true - /@esbuild/darwin-arm64/0.16.17: - resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==} + /@esbuild/darwin-arm64/0.17.18: + resolution: {integrity: sha512-6tY+djEAdF48M1ONWnQb1C+6LiXrKjmqjzPNPWXhu/GzOHTHX2nh8Mo2ZAmBFg0kIodHhciEgUBtcYCAIjGbjQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] @@ -145,8 +137,8 @@ packages: dev: true optional: true - /@esbuild/darwin-x64/0.16.17: - resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==} + /@esbuild/darwin-x64/0.17.18: + resolution: {integrity: sha512-Qq84ykvLvya3dO49wVC9FFCNUfSrQJLbxhoQk/TE1r6MjHo3sFF2tlJCwMjhkBVq3/ahUisj7+EpRSz0/+8+9A==} engines: {node: '>=12'} cpu: [x64] os: [darwin] @@ -154,8 +146,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-arm64/0.16.17: - resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==} + /@esbuild/freebsd-arm64/0.17.18: + resolution: {integrity: sha512-fw/ZfxfAzuHfaQeMDhbzxp9mc+mHn1Y94VDHFHjGvt2Uxl10mT4CDavHm+/L9KG441t1QdABqkVYwakMUeyLRA==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] @@ -163,8 +155,8 @@ packages: dev: true optional: true - /@esbuild/freebsd-x64/0.16.17: - resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==} + /@esbuild/freebsd-x64/0.17.18: + resolution: {integrity: sha512-FQFbRtTaEi8ZBi/A6kxOC0V0E9B/97vPdYjY9NdawyLd4Qk5VD5g2pbWN2VR1c0xhzcJm74HWpObPszWC+qTew==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] @@ -172,8 +164,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm/0.16.17: - resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==} + /@esbuild/linux-arm/0.17.18: + resolution: {integrity: sha512-jW+UCM40LzHcouIaqv3e/oRs0JM76JfhHjCavPxMUti7VAPh8CaGSlS7cmyrdpzSk7A+8f0hiedHqr/LMnfijg==} engines: {node: '>=12'} cpu: [arm] os: [linux] @@ -181,8 +173,8 @@ packages: dev: true optional: true - /@esbuild/linux-arm64/0.16.17: - resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==} + /@esbuild/linux-arm64/0.17.18: + resolution: {integrity: sha512-R7pZvQZFOY2sxUG8P6A21eq6q+eBv7JPQYIybHVf1XkQYC+lT7nDBdC7wWKTrbvMXKRaGudp/dzZCwL/863mZQ==} engines: {node: '>=12'} cpu: [arm64] os: [linux] @@ -190,8 +182,8 @@ packages: dev: true optional: true - /@esbuild/linux-ia32/0.16.17: - resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==} + /@esbuild/linux-ia32/0.17.18: + resolution: {integrity: sha512-ygIMc3I7wxgXIxk6j3V00VlABIjq260i967Cp9BNAk5pOOpIXmd1RFQJQX9Io7KRsthDrQYrtcx7QCof4o3ZoQ==} engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -199,8 +191,8 @@ packages: dev: true optional: true - /@esbuild/linux-loong64/0.16.17: - resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==} + /@esbuild/linux-loong64/0.17.18: + resolution: {integrity: sha512-bvPG+MyFs5ZlwYclCG1D744oHk1Pv7j8psF5TfYx7otCVmcJsEXgFEhQkbhNW8otDHL1a2KDINW20cfCgnzgMQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] @@ -208,8 +200,8 @@ packages: dev: true optional: true - /@esbuild/linux-mips64el/0.16.17: - resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==} + /@esbuild/linux-mips64el/0.17.18: + resolution: {integrity: sha512-oVqckATOAGuiUOa6wr8TXaVPSa+6IwVJrGidmNZS1cZVx0HqkTMkqFGD2HIx9H1RvOwFeWYdaYbdY6B89KUMxA==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] @@ -217,8 +209,8 @@ packages: dev: true optional: true - /@esbuild/linux-ppc64/0.16.17: - resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==} + /@esbuild/linux-ppc64/0.17.18: + resolution: {integrity: sha512-3dLlQO+b/LnQNxgH4l9rqa2/IwRJVN9u/bK63FhOPB4xqiRqlQAU0qDU3JJuf0BmaH0yytTBdoSBHrb2jqc5qQ==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] @@ -226,8 +218,8 @@ packages: dev: true optional: true - /@esbuild/linux-riscv64/0.16.17: - resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==} + /@esbuild/linux-riscv64/0.17.18: + resolution: {integrity: sha512-/x7leOyDPjZV3TcsdfrSI107zItVnsX1q2nho7hbbQoKnmoeUWjs+08rKKt4AUXju7+3aRZSsKrJtaRmsdL1xA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] @@ -235,8 +227,8 @@ packages: dev: true optional: true - /@esbuild/linux-s390x/0.16.17: - resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==} + /@esbuild/linux-s390x/0.17.18: + resolution: {integrity: sha512-cX0I8Q9xQkL/6F5zWdYmVf5JSQt+ZfZD2bJudZrWD+4mnUvoZ3TDDXtDX2mUaq6upMFv9FlfIh4Gfun0tbGzuw==} engines: {node: '>=12'} cpu: [s390x] os: [linux] @@ -244,8 +236,8 @@ packages: dev: true optional: true - /@esbuild/linux-x64/0.16.17: - resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==} + /@esbuild/linux-x64/0.17.18: + resolution: {integrity: sha512-66RmRsPlYy4jFl0vG80GcNRdirx4nVWAzJmXkevgphP1qf4dsLQCpSKGM3DUQCojwU1hnepI63gNZdrr02wHUA==} engines: {node: '>=12'} cpu: [x64] os: [linux] @@ -253,8 +245,8 @@ packages: dev: true optional: true - /@esbuild/netbsd-x64/0.16.17: - resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==} + /@esbuild/netbsd-x64/0.17.18: + resolution: {integrity: sha512-95IRY7mI2yrkLlTLb1gpDxdC5WLC5mZDi+kA9dmM5XAGxCME0F8i4bYH4jZreaJ6lIZ0B8hTrweqG1fUyW7jbg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] @@ -262,8 +254,8 @@ packages: dev: true optional: true - /@esbuild/openbsd-x64/0.16.17: - resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==} + /@esbuild/openbsd-x64/0.17.18: + resolution: {integrity: sha512-WevVOgcng+8hSZ4Q3BKL3n1xTv5H6Nb53cBrtzzEjDbbnOmucEVcZeGCsCOi9bAOcDYEeBZbD2SJNBxlfP3qiA==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] @@ -271,8 +263,8 @@ packages: dev: true optional: true - /@esbuild/sunos-x64/0.16.17: - resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==} + /@esbuild/sunos-x64/0.17.18: + resolution: {integrity: sha512-Rzf4QfQagnwhQXVBS3BYUlxmEbcV7MY+BH5vfDZekU5eYpcffHSyjU8T0xucKVuOcdCsMo+Ur5wmgQJH2GfNrg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] @@ -280,8 +272,8 @@ packages: dev: true optional: true - /@esbuild/win32-arm64/0.16.17: - resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==} + /@esbuild/win32-arm64/0.17.18: + resolution: {integrity: sha512-Kb3Ko/KKaWhjeAm2YoT/cNZaHaD1Yk/pa3FTsmqo9uFh1D1Rfco7BBLIPdDOozrObj2sahslFuAQGvWbgWldAg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] @@ -289,8 +281,8 @@ packages: dev: true optional: true - /@esbuild/win32-ia32/0.16.17: - resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==} + /@esbuild/win32-ia32/0.17.18: + resolution: {integrity: sha512-0/xUMIdkVHwkvxfbd5+lfG7mHOf2FRrxNbPiKWg9C4fFrB8H0guClmaM3BFiRUYrznVoyxTIyC/Ou2B7QQSwmw==} engines: {node: '>=12'} cpu: [ia32] os: [win32] @@ -298,8 +290,8 @@ packages: dev: true optional: true - /@esbuild/win32-x64/0.16.17: - resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==} + /@esbuild/win32-x64/0.17.18: + resolution: {integrity: sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -307,13 +299,28 @@ packages: dev: true optional: true - /@eslint/eslintrc/1.4.1: - resolution: {integrity: sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==} + /@eslint-community/eslint-utils/4.4.0_eslint@8.36.0: + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.36.0 + eslint-visitor-keys: 3.4.0 + dev: true + + /@eslint-community/regexpp/4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc/2.0.2: + resolution: {integrity: sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.4.1 + espree: 9.5.1 globals: 13.20.0 ignore: 5.2.4 import-fresh: 3.3.0 @@ -324,6 +331,16 @@ packages: - supports-color dev: true + /@eslint/js/8.36.0: + resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@fluent/syntax/0.19.0: + resolution: {integrity: sha512-5D2qVpZrgpjtqU4eNOcWGp1gnUCgjfM+vKGE2y03kKN6z5EBhtx0qdRFbg8QuNNj8wXNoX93KJoYb+NqoxswmQ==} + engines: {node: '>=14.0.0', npm: '>=7.0.0'} + dev: true + /@humanwhocodes/config-array/0.11.8: resolution: {integrity: sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==} engines: {node: '>=10.10.0'} @@ -348,8 +365,8 @@ packages: resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==} dev: false - /@mdn/browser-compat-data/5.2.29: - resolution: {integrity: sha512-bEBrkTWbDAs/PB4IdRg4CtU750oBRytXHK/wC2oIDkgKZqnt76nACSooQQuHF11mK5k43f/IgFUMO5t5quRPVA==} + /@mdn/browser-compat-data/5.2.42: + resolution: {integrity: sha512-CD/2ai1W45cDN/zN2AcYduDavU+nq9aStyQizi4MHxnwkRvS/H24WIjgc1qD8CISoqXa8AAIe+A+zpWxwV7a2Q==} dev: true /@nodelib/fs.scandir/2.1.5: @@ -373,8 +390,8 @@ packages: fastq: 1.15.0 dev: true - /@pnpm/config.env-replace/1.0.0: - resolution: {integrity: sha512-ZVPVDi1E8oeXlYqkGRtX0CkzLTwE2zt62bjWaWKaAvI8NZqHzlMvGeSNDpW+JB3+aKanYb4UETJOF1/CxGPemA==} + /@pnpm/config.env-replace/1.1.0: + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} dev: true @@ -385,11 +402,11 @@ packages: graceful-fs: 4.2.10 dev: true - /@pnpm/npm-conf/2.1.0: - resolution: {integrity: sha512-Oe6ntvgsMTE3hDIqy6sajqHF+MnzJrOF06qC2QSiUEybLL7cp6tjoKUa32gpd9+KPVl4QyMs3E3nsXrx/Vdnlw==} + /@pnpm/npm-conf/2.1.1: + resolution: {integrity: sha512-yfRcuupmxxeDOSxvw4g+wFCrGiPD0L32f5WMzqMXp7Rl93EOCdFiDcaSNnZ10Up9GdNqkj70UTa8hfhPFphaZA==} engines: {node: '>=12'} dependencies: - '@pnpm/config.env-replace': 1.0.0 + '@pnpm/config.env-replace': 1.1.0 '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 dev: true @@ -414,8 +431,8 @@ packages: resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} dev: true - /@types/node/18.15.3: - resolution: {integrity: sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==} + /@types/node/18.16.3: + resolution: {integrity: sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==} dev: true /@types/webextension-polyfill/0.10.0: @@ -425,63 +442,69 @@ packages: /@types/yauzl/2.10.0: resolution: {integrity: sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==} dependencies: - '@types/node': 18.15.3 + '@types/node': 18.16.3 dev: true - /@vitejs/plugin-vue/4.0.0_vite@4.1.4+vue@3.2.47: - resolution: {integrity: sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==} + /@vitejs/plugin-vue/4.2.1_vite@4.3.3+vue@3.2.47: + resolution: {integrity: sha512-ZTZjzo7bmxTRTkb8GSTwkPOYDIP7pwuyV+RV53c9PYUouwcbkIZIvWvNWlX2b1dYZqtOv7D6iUAnJLVNGcLrSw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.1.4 + vite: 4.3.3 vue: 3.2.47 dev: true - /@volar/language-core/1.3.0-alpha.0: - resolution: {integrity: sha512-W3uMzecHPcbwddPu4SJpUcPakRBK/y/BP+U0U6NiPpUX1tONLC4yCawt+QBJqtgJ+sfD6ztf5PyvPL3hQRqfOA==} + /@volar/language-core/1.4.1: + resolution: {integrity: sha512-EIY+Swv+TjsWpxOxujjMf1ZXqOjg9MT2VMXZ+1dKva0wD8W0L6EtptFFcCJdBbcKmGMFkr57Qzz9VNMWhs3jXQ==} dependencies: - '@volar/source-map': 1.3.0-alpha.0 + '@volar/source-map': 1.4.1 dev: true - /@volar/source-map/1.3.0-alpha.0: - resolution: {integrity: sha512-jSdizxWFvDTvkPYZnO6ew3sBZUnS0abKCbuopkc0JrIlFbznWC/fPH3iPFIMS8/IIkRxq1Jh9VVG60SmtsdaMQ==} + /@volar/source-map/1.4.1: + resolution: {integrity: sha512-bZ46ad72dsbzuOWPUtJjBXkzSQzzSejuR3CT81+GvTEI2E994D8JPXzM3tl98zyCNnjgs4OkRyliImL1dvJ5BA==} dependencies: muggle-string: 0.2.2 dev: true - /@volar/typescript/1.3.0-alpha.0: - resolution: {integrity: sha512-5UItyW2cdH2mBLu4RrECRNJRgtvvzKrSCn2y3v/D61QwIDkGx4aeil6x8RFuUL5TFtV6QvVHXnsOHxNgd+sCow==} + /@volar/typescript/1.4.1_typescript@5.0.4: + resolution: {integrity: sha512-phTy6p9yG6bgMIKQWEeDOi/aeT0njZsb1a/G1mrEuDsLmAn24Le4gDwSsGNhea6Uhu+3gdpUZn2PmZXa+WG2iQ==} + peerDependencies: + typescript: '*' dependencies: - '@volar/language-core': 1.3.0-alpha.0 + '@volar/language-core': 1.4.1 + typescript: 5.0.4 dev: true - /@volar/vue-language-core/1.2.0: - resolution: {integrity: sha512-w7yEiaITh2WzKe6u8ZdeLKCUz43wdmY/OqAmsB/PGDvvhTcVhCJ6f0W/RprZL1IhqH8wALoWiwEh/Wer7ZviMQ==} + /@volar/vue-language-core/1.6.1: + resolution: {integrity: sha512-lIuxzvIx5U8MfoF+vrXNG1aZgmk8T0uyPEwI8g3EUJdESuU0qIKM84o+L4TUw77IQCYXiSefaJmsSSY87/VWnA==} dependencies: - '@volar/language-core': 1.3.0-alpha.0 - '@volar/source-map': 1.3.0-alpha.0 + '@volar/language-core': 1.4.1 + '@volar/source-map': 1.4.1 '@vue/compiler-dom': 3.2.47 '@vue/compiler-sfc': 3.2.47 '@vue/reactivity': 3.2.47 '@vue/shared': 3.2.47 - minimatch: 6.2.0 + minimatch: 9.0.0 muggle-string: 0.2.2 vue-template-compiler: 2.7.14 dev: true - /@volar/vue-typescript/1.2.0: - resolution: {integrity: sha512-zjmRi9y3J1EkG+pfuHp8IbHmibihrKK485cfzsHjiuvJMGrpkWvlO5WVEk8oslMxxeGC5XwBFE9AOlvh378EPA==} + /@volar/vue-typescript/1.6.1_typescript@5.0.4: + resolution: {integrity: sha512-5mhG6Lv2niq/AGNvHy4RSAGlJhkR+EcH7zRQ19JlffzhWDVXEdDp8luSSabCkrJzejXIMh0rsTGlKy2EFYy7vQ==} + peerDependencies: + typescript: '*' dependencies: - '@volar/typescript': 1.3.0-alpha.0 - '@volar/vue-language-core': 1.2.0 + '@volar/typescript': 1.4.1_typescript@5.0.4 + '@volar/vue-language-core': 1.6.1 + typescript: 5.0.4 dev: true /@vue/compiler-core/3.2.47: resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==} dependencies: - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.5 '@vue/shared': 3.2.47 estree-walker: 2.0.2 source-map: 0.6.1 @@ -495,7 +518,7 @@ packages: /@vue/compiler-sfc/3.2.47: resolution: {integrity: sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==} dependencies: - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.5 '@vue/compiler-core': 3.2.47 '@vue/compiler-dom': 3.2.47 '@vue/compiler-ssr': 3.2.47 @@ -503,7 +526,7 @@ packages: '@vue/shared': 3.2.47 estree-walker: 2.0.2 magic-string: 0.25.9 - postcss: 8.4.21 + postcss: 8.4.23 source-map: 0.6.1 /@vue/compiler-ssr/3.2.47: @@ -515,7 +538,7 @@ packages: /@vue/reactivity-transform/3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} dependencies: - '@babel/parser': 7.21.3 + '@babel/parser': 7.21.5 '@vue/compiler-core': 3.2.47 '@vue/shared': 3.2.47 estree-walker: 2.0.2 @@ -572,34 +595,34 @@ packages: hasBin: true dev: true - /addons-linter/5.27.0_node-fetch@3.3.0: - resolution: {integrity: sha512-gDgl0FcmhZ5cs3St0qAaO9J1BoektwnY+p4dVgcvPu8WaBqH9MG2fk0gL/evCpoHSXeSw15GA87n8Y7zy7raVQ==} + /addons-linter/5.32.0_node-fetch@3.3.1: + resolution: {integrity: sha512-Lf6oOyw8X9z5BMd9xhQwSbPlN2PUlzDLnYLAVT5lkrgXEx0fO9hRk4JRxWZ8+rFGz+mCIA2TTClZF2f+MKgJQA==} engines: {node: '>=12.21.0'} hasBin: true dependencies: - '@mdn/browser-compat-data': 5.2.29 + '@fluent/syntax': 0.19.0 + '@mdn/browser-compat-data': 5.2.42 addons-moz-compare: 1.3.0 - addons-scanner-utils: 8.3.0_node-fetch@3.3.0 + addons-scanner-utils: 8.5.0_node-fetch@3.3.1 ajv: 8.12.0 chalk: 4.1.2 cheerio: 1.0.0-rc.12 columnify: 1.6.0 common-tags: 1.8.2 - deepmerge: 4.2.2 - eslint: 8.32.0 - eslint-plugin-no-unsanitized: 4.0.2_eslint@8.32.0 + deepmerge: 4.3.1 + eslint: 8.36.0 + eslint-plugin-no-unsanitized: 4.0.2_eslint@8.36.0 eslint-visitor-keys: 3.3.0 - espree: 9.4.1 + espree: 9.5.0 esprima: 4.0.1 fast-json-patch: 3.1.1 - fluent-syntax: 0.14.0 - glob: 8.1.0 + glob: 9.3.0 image-size: 1.0.2 is-mergeable-object: 1.1.1 jed: 1.1.1 json-merge-patch: 1.0.2 os-locale: 5.0.0 - pino: 8.8.0 + pino: 8.11.0 postcss: 8.4.21 relaxed-json: 1.0.3 semver: 7.3.8 @@ -607,7 +630,7 @@ packages: source-map-support: 0.5.21 tosource: 1.0.0 upath: 2.0.1 - yargs: 17.6.2 + yargs: 17.7.1 yauzl: 2.10.0 transitivePeerDependencies: - body-parser @@ -621,10 +644,10 @@ packages: resolution: {integrity: sha512-/rXpQeaY0nOKhNx00pmZXdk5Mu+KhVlL3/pSBuAYwrxRrNiTvI/9xfQI8Lmm7DMMl+PDhtfAHY/0ibTpdeoQQQ==} dev: true - /addons-scanner-utils/8.3.0_node-fetch@3.3.0: - resolution: {integrity: sha512-XP+2kxhZxlxiVFXVJ7lyJEuxpUS8ryrolUDqnUEnvOZ/3p8qt9hWCYSliXhI2W+Swf/hZ3F4CLAG6tBnqdxDYA==} + /addons-scanner-utils/8.5.0_node-fetch@3.3.1: + resolution: {integrity: sha512-X35SYZRdSnxx7UZuAk+DizKihQp2Ze2c5GV+5nnRr/FFyx/fOgE3Zo8jdhzSne57PENE9w1ZVocBLJTN6UDB3g==} peerDependencies: - body-parser: 1.20.1 + body-parser: 1.20.2 express: 4.18.2 node-fetch: 2.6.7 safe-compare: 1.1.4 @@ -641,7 +664,7 @@ packages: '@types/yauzl': 2.10.0 common-tags: 1.8.2 first-chunk-stream: 3.0.0 - node-fetch: 3.3.0 + node-fetch: 3.3.1 strip-bom-stream: 4.0.0 upath: 2.0.1 yauzl: 2.10.0 @@ -848,8 +871,8 @@ packages: engines: {node: '>=14.16'} dev: true - /cacheable-request/10.2.8: - resolution: {integrity: sha512-IDVO5MJ4LItE6HKFQTqT2ocAQsisOoCTUDu1ddCmnhyiwFQjXNPp4081Xj23N4tO+AFEFNzGuNEf/c8Gwwt15A==} + /cacheable-request/10.2.10: + resolution: {integrity: sha512-v6WB+Epm/qO4Hdlio/sfUn69r5Shgh39SsE9DSd4bIezP0mblOlObI+I0kUEM7J0JFc+I7pSeMeYaOYtX1N/VQ==} engines: {node: '>=14.16'} dependencies: '@types/http-cache-semantics': 4.0.1 @@ -916,7 +939,7 @@ packages: css-what: 6.1.0 domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.0.1 + domutils: 3.1.0 dev: true /cheerio/1.0.0-rc.12: @@ -926,8 +949,8 @@ packages: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 - domutils: 3.0.1 - htmlparser2: 8.0.1 + domutils: 3.1.0 + htmlparser2: 8.0.2 parse5: 7.1.2 parse5-htmlparser2-tree-adapter: 7.0.0 dev: true @@ -937,7 +960,7 @@ packages: engines: {node: '>=12.13.0'} hasBin: true dependencies: - '@types/node': 18.15.3 + '@types/node': 18.16.3 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.3.0 @@ -1052,14 +1075,14 @@ packages: engines: {node: '>=12'} dependencies: dot-prop: 6.0.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 unique-string: 3.0.0 write-file-atomic: 3.0.3 xdg-basedir: 5.1.0 dev: true - /core-js/3.27.1: - resolution: {integrity: sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==} + /core-js/3.29.0: + resolution: {integrity: sha512-VG23vuEisJNkGl6XQmFJd3rEG/so/CNatqeE+7uZAwTSwFeB/qaO0be8xZYUNWprJ/GIwL8aMt9cj1kvbpTZhg==} requiresBuild: true dev: true @@ -1097,7 +1120,7 @@ packages: boolbase: 1.0.0 css-what: 6.1.0 domhandler: 5.0.3 - domutils: 3.0.1 + domutils: 3.1.0 nth-check: 2.1.1 dev: true @@ -1129,7 +1152,7 @@ packages: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} dependencies: - '@babel/runtime': 7.21.5 + '@babel/runtime': 7.21.0 dev: false /de-indent/1.0.2: @@ -1190,8 +1213,8 @@ packages: type-detect: 4.0.8 dev: true - /deepmerge/4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + /deepmerge/4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} dev: true @@ -1228,7 +1251,7 @@ packages: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 - entities: 4.4.0 + entities: 4.5.0 dev: true /domelementtype/2.3.0: @@ -1242,8 +1265,8 @@ packages: domelementtype: 2.3.0 dev: true - /domutils/3.0.1: - resolution: {integrity: sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==} + /domutils/3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} dependencies: dom-serializer: 2.0.0 domelementtype: 2.3.0 @@ -1297,8 +1320,8 @@ packages: once: 1.4.0 dev: true - /entities/4.4.0: - resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==} + /entities/4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} dev: true @@ -1317,34 +1340,34 @@ packages: engines: {node: '>=6'} dev: true - /esbuild/0.16.17: - resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==} + /esbuild/0.17.18: + resolution: {integrity: sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.16.17 - '@esbuild/android-arm64': 0.16.17 - '@esbuild/android-x64': 0.16.17 - '@esbuild/darwin-arm64': 0.16.17 - '@esbuild/darwin-x64': 0.16.17 - '@esbuild/freebsd-arm64': 0.16.17 - '@esbuild/freebsd-x64': 0.16.17 - '@esbuild/linux-arm': 0.16.17 - '@esbuild/linux-arm64': 0.16.17 - '@esbuild/linux-ia32': 0.16.17 - '@esbuild/linux-loong64': 0.16.17 - '@esbuild/linux-mips64el': 0.16.17 - '@esbuild/linux-ppc64': 0.16.17 - '@esbuild/linux-riscv64': 0.16.17 - '@esbuild/linux-s390x': 0.16.17 - '@esbuild/linux-x64': 0.16.17 - '@esbuild/netbsd-x64': 0.16.17 - '@esbuild/openbsd-x64': 0.16.17 - '@esbuild/sunos-x64': 0.16.17 - '@esbuild/win32-arm64': 0.16.17 - '@esbuild/win32-ia32': 0.16.17 - '@esbuild/win32-x64': 0.16.17 + '@esbuild/android-arm': 0.17.18 + '@esbuild/android-arm64': 0.17.18 + '@esbuild/android-x64': 0.17.18 + '@esbuild/darwin-arm64': 0.17.18 + '@esbuild/darwin-x64': 0.17.18 + '@esbuild/freebsd-arm64': 0.17.18 + '@esbuild/freebsd-x64': 0.17.18 + '@esbuild/linux-arm': 0.17.18 + '@esbuild/linux-arm64': 0.17.18 + '@esbuild/linux-ia32': 0.17.18 + '@esbuild/linux-loong64': 0.17.18 + '@esbuild/linux-mips64el': 0.17.18 + '@esbuild/linux-ppc64': 0.17.18 + '@esbuild/linux-riscv64': 0.17.18 + '@esbuild/linux-s390x': 0.17.18 + '@esbuild/linux-x64': 0.17.18 + '@esbuild/netbsd-x64': 0.17.18 + '@esbuild/openbsd-x64': 0.17.18 + '@esbuild/sunos-x64': 0.17.18 + '@esbuild/win32-arm64': 0.17.18 + '@esbuild/win32-ia32': 0.17.18 + '@esbuild/win32-x64': 0.17.18 dev: true /escalade/3.1.1: @@ -1367,48 +1390,41 @@ packages: engines: {node: '>=10'} dev: true - /eslint-plugin-no-unsanitized/4.0.2_eslint@8.32.0: + /eslint-plugin-no-unsanitized/4.0.2_eslint@8.36.0: resolution: {integrity: sha512-Pry0S9YmHoz8NCEMRQh7N0Yexh2MYCNPIlrV52hTmS7qXnTghWsjXouF08bgsrrZqaW9tt1ZiK3j5NEmPE+EjQ==} peerDependencies: eslint: ^6 || ^7 || ^8 dependencies: - eslint: 8.32.0 + eslint: 8.36.0 dev: true - /eslint-scope/7.1.1: - resolution: {integrity: sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==} + /eslint-scope/7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 dev: true - /eslint-utils/3.0.0_eslint@8.32.0: - resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} - engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} - peerDependencies: - eslint: '>=5' - dependencies: - eslint: 8.32.0 - eslint-visitor-keys: 2.1.0 - dev: true - - /eslint-visitor-keys/2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - dev: true - /eslint-visitor-keys/3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint/8.32.0: - resolution: {integrity: sha512-nETVXpnthqKPFyuY2FNjz/bEd6nbosRgKbkgS/y1C7LJop96gYHWpiguLecMHQ2XCPxn77DS0P+68WzG6vkZSQ==} + /eslint-visitor-keys/3.4.0: + resolution: {integrity: sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint/8.36.0: + resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint/eslintrc': 1.4.1 + '@eslint-community/eslint-utils': 4.4.0_eslint@8.36.0 + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.0.2 + '@eslint/js': 8.36.0 '@humanwhocodes/config-array': 0.11.8 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -1418,10 +1434,9 @@ packages: debug: 4.3.4 doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.1.1 - eslint-utils: 3.0.0_eslint@8.32.0 - eslint-visitor-keys: 3.3.0 - espree: 9.4.1 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.0 + espree: 9.5.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -1435,7 +1450,7 @@ packages: imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-sdsl: 4.3.0 + js-sdsl: 4.4.0 js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 @@ -1443,7 +1458,6 @@ packages: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.1 - regexpp: 3.2.0 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 text-table: 0.2.0 @@ -1451,13 +1465,22 @@ packages: - supports-color dev: true - /espree/9.4.1: - resolution: {integrity: sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==} + /espree/9.5.0: + resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: acorn: 8.8.2 acorn-jsx: 5.3.2_acorn@8.8.2 - eslint-visitor-keys: 3.3.0 + eslint-visitor-keys: 3.4.0 + dev: true + + /espree/9.5.1: + resolution: {integrity: sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2_acorn@8.8.2 + eslint-visitor-keys: 3.4.0 dev: true /esprima/4.0.1: @@ -1583,15 +1606,15 @@ packages: path-exists: 4.0.0 dev: true - /firefox-profile/4.2.2: - resolution: {integrity: sha512-3kI17Xl9dL9AeRkpV1yahsJ+UbekkPtlQswKrIsTY1NLgxtEOR4R19rjGGz5+7/rP8Jt6fvxHk+Bai9R6Eai3w==} + /firefox-profile/4.3.2: + resolution: {integrity: sha512-/C+Eqa0YgIsQT2p66p7Ygzqe7NlE/GNTbhw2SBCm5V3OsWDPITNdTPEcH2Q2fe7eMpYYNPKdUcuVioZBZiR6kA==} hasBin: true dependencies: adm-zip: 0.5.10 fs-extra: 9.0.1 ini: 2.0.0 minimist: 1.2.8 - xml2js: 0.4.23 + xml2js: 0.5.0 dev: true /first-chunk-stream/3.0.0: @@ -1611,12 +1634,6 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /fluent-syntax/0.14.0: - resolution: {integrity: sha512-+k8uXWfRpSrE33764RbpjIKMzIX6R9EnSjFBgaA1s0Mboc3KnW9sYe0c6vjIoZQY1C4Gst1VFvAOP6YGJjTJuA==} - engines: {node: '>=8.9.0'} - deprecated: Renamed to @fluent/syntax 0.14.0 - dev: true - /forever-agent/0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} dev: true @@ -1646,7 +1663,7 @@ packages: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 dev: true @@ -1655,7 +1672,7 @@ packages: resolution: {integrity: sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw==} engines: {node: '>=14.14'} dependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.0 dev: true @@ -1665,7 +1682,7 @@ packages: engines: {node: '>=10'} dependencies: at-least-node: 1.0.0 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 1.0.0 dev: true @@ -1682,10 +1699,6 @@ packages: dev: true optional: true - /function-bind/1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: true - /fx-runner/1.3.0: resolution: {integrity: sha512-5b37H4GCyhF+Nf8xk9mylXoDq4wb7pbGAXxlCXp/631UTeeZomWSYcEGXumY4wk8g2QAqjPMGdWW+RbNt8PUcA==} hasBin: true @@ -1754,15 +1767,14 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob/8.1.0: - resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} - engines: {node: '>=12'} + /glob/9.3.0: + resolution: {integrity: sha512-EAZejC7JvnQINayvB/7BJbpZpNOJ8Lrw2OZNEvQxe0vaLn1SuwMcfV7/MNaX8L/T0wmptBFI4YMtDvSBxYDc7w==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 5.1.6 - once: 1.4.0 + minimatch: 7.4.6 + minipass: 4.2.8 + path-scurry: 1.7.0 dev: true /global-dirs/3.0.1: @@ -1786,7 +1798,7 @@ packages: '@sindresorhus/is': 5.3.0 '@szmarczak/http-timer': 5.0.1 cacheable-lookup: 7.0.0 - cacheable-request: 10.2.8 + cacheable-request: 10.2.10 decompress-response: 6.0.0 form-data-encoder: 2.1.4 get-stream: 6.0.1 @@ -1800,6 +1812,10 @@ packages: resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} dev: true + /graceful-fs/4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + /graceful-readlink/1.0.1: resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==} dev: true @@ -1841,13 +1857,6 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: true - /he/1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -1857,13 +1866,13 @@ packages: resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} dev: true - /htmlparser2/8.0.1: - resolution: {integrity: sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==} + /htmlparser2/8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 - domutils: 3.0.1 - entities: 4.4.0 + domutils: 3.1.0 + entities: 4.5.0 dev: true /http-cache-semantics/4.1.1: @@ -1978,12 +1987,6 @@ packages: ci-info: 3.8.0 dev: true - /is-core-module/2.11.0: - resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==} - dependencies: - has: 1.0.3 - dev: true - /is-docker/2.2.1: resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} engines: {node: '>=8'} @@ -2084,12 +2087,12 @@ packages: resolution: {integrity: sha512-z35ZSEcXHxLW4yumw0dF6L464NT36vmx3wxJw8MDpraBcWuNVgUPZgPJKcu1HekNgwlMFNqol7i/IpSbjhqwqA==} dev: true - /jose/4.11.2: - resolution: {integrity: sha512-njj0VL2TsIxCtgzhO+9RRobBvws4oYyCM8TpvoUQwl/MbIM3NFJRR9+e6x0sS5xXaP1t6OCBkaBME98OV9zU5A==} + /jose/4.13.1: + resolution: {integrity: sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==} dev: true - /js-sdsl/4.3.0: - resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} + /js-sdsl/4.4.0: + resolution: {integrity: sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==} dev: true /js-tokens/4.0.0: @@ -2152,7 +2155,7 @@ packages: dependencies: universalify: 2.0.0 optionalDependencies: - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 dev: true /jsonwebtoken/9.0.0: @@ -2162,7 +2165,7 @@ packages: jws: 3.2.2 lodash: 4.17.21 ms: 2.1.3 - semver: 7.3.8 + semver: 7.5.0 dev: true /jsprim/1.4.2: @@ -2247,13 +2250,13 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /linkedom/0.14.25: - resolution: {integrity: sha512-Q5BvQVFzMveMxHvZ9L3E60duxSVPIWQRzY2HJKpCV4pRzY3jS/r/a1upLeo/Nup9mDRJ5MS0FX2hRR+wRo+Hiw==} + /linkedom/0.14.26: + resolution: {integrity: sha512-mK6TrydfFA7phrnp+1j57ycBwFI5bGSW6YXlw9acHoqF+mP/y+FooEYYyniOt5Ot57FSKB3iwmnuQ1UUyNLm5A==} dependencies: css-select: 5.1.0 cssom: 0.5.0 html-escaper: 3.0.3 - htmlparser2: 8.0.1 + htmlparser2: 8.0.2 uhyphen: 0.2.0 dev: true @@ -2292,6 +2295,11 @@ packages: yallist: 4.0.0 dev: true + /lru-cache/9.1.1: + resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==} + engines: {node: 14 || >=16.14} + dev: true + /magic-string/0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: @@ -2366,16 +2374,16 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch/5.1.6: - resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + /minimatch/7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 dev: true - /minimatch/6.2.0: - resolution: {integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==} - engines: {node: '>=10'} + /minimatch/9.0.0: + resolution: {integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==} + engines: {node: '>=16 || 14 >=14.17'} dependencies: brace-expansion: 2.0.1 dev: true @@ -2384,6 +2392,16 @@ packages: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true + /minipass/4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + dev: true + + /minipass/5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + dev: true + /mkdirp/0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true @@ -2454,8 +2472,8 @@ packages: dev: true optional: true - /nanoid/3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + /nanoid/3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -2474,8 +2492,8 @@ packages: engines: {node: '>=10.5.0'} dev: true - /node-fetch/3.3.0: - resolution: {integrity: sha512-BKwRP/O0UvoMKp7GNdwPlObhYGB5DQqwhEDQlNKuoqwVYSxkSZCSbHjnFFmUEtwSKRPU4kNK8PbDYYitwaE3QA==} + /node-fetch/3.3.1: + resolution: {integrity: sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: data-uri-to-buffer: 4.0.1 @@ -2493,7 +2511,7 @@ packages: dependencies: growly: 1.3.0 is-wsl: 2.2.0 - semver: 7.3.8 + semver: 7.5.0 shellwords: 0.1.1 uuid: 8.3.2 which: 2.0.2 @@ -2543,8 +2561,8 @@ packages: mimic-fn: 2.1.0 dev: true - /open/8.4.0: - resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} + /open/8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 @@ -2614,7 +2632,7 @@ packages: got: 12.6.0 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.3.8 + semver: 7.5.0 dev: true /pako/1.0.11: @@ -2632,7 +2650,7 @@ packages: resolution: {integrity: sha512-SA5aMiaIjXkAiBrW/yPgLgQAQg42f7K3ACO+2l/zOvtQBwX58DMUsFJXelW2fx3yMBmWOVkR6j1MGsdSbCA4UA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dependencies: - '@babel/code-frame': 7.18.6 + '@babel/code-frame': 7.21.4 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 2.0.3 @@ -2648,7 +2666,7 @@ packages: /parse5/7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: - entities: 4.4.0 + entities: 4.5.0 dev: true /path-exists/4.0.0: @@ -2666,8 +2684,12 @@ packages: engines: {node: '>=8'} dev: true - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + /path-scurry/1.7.0: + resolution: {integrity: sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 9.1.1 + minipass: 5.0.0 dev: true /pend/1.2.0: @@ -2685,27 +2707,27 @@ packages: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} dependencies: readable-stream: 4.3.0 - split2: 4.1.0 + split2: 4.2.0 dev: true - /pino-std-serializers/6.1.0: - resolution: {integrity: sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==} + /pino-std-serializers/6.2.0: + resolution: {integrity: sha512-IWgSzUL8X1w4BIWTwErRgtV8PyOGOOi60uqv0oKuS/fOA8Nco/OeI6lBuc4dyP8MMfdFwyHqTMcBIA7nDiqEqA==} dev: true - /pino/8.8.0: - resolution: {integrity: sha512-cF8iGYeu2ODg2gIwgAHcPrtR63ILJz3f7gkogaHC/TXVVXxZgInmNYiIpDYEwgEkxZti2Se6P2W2DxlBIZe6eQ==} + /pino/8.11.0: + resolution: {integrity: sha512-Z2eKSvlrl2rH8p5eveNUnTdd4AjJk8tAsLkHYZQKGHP4WTh2Gi1cOSOs3eWPqaj+niS3gj4UkoreoaWgF3ZWYg==} hasBin: true dependencies: atomic-sleep: 1.0.0 fast-redact: 3.1.2 on-exit-leak-free: 2.1.0 pino-abstract-transport: 1.0.0 - pino-std-serializers: 6.1.0 - process-warning: 2.1.0 + pino-std-serializers: 6.2.0 + process-warning: 2.2.0 quick-format-unescaped: 4.0.4 real-require: 0.2.0 - safe-stable-stringify: 2.4.2 - sonic-boom: 3.2.1 + safe-stable-stringify: 2.4.3 + sonic-boom: 3.3.0 thread-stream: 2.3.0 dev: true @@ -2713,7 +2735,16 @@ packages: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /postcss/8.4.23: + resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 @@ -2726,8 +2757,8 @@ packages: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true - /process-warning/2.1.0: - resolution: {integrity: sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg==} + /process-warning/2.2.0: + resolution: {integrity: sha512-/1WZ8+VQjR6avWOgHeEPd7SDQmFQ1B5mC1eRXsCm5TarlNmx/wCsa5GEaxGm05BORRtyG/Ex/3xq3TuRvq57qg==} dev: true /process/0.11.10: @@ -2833,16 +2864,11 @@ packages: /regenerator-runtime/0.13.11: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - /regexpp/3.2.0: - resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} - engines: {node: '>=8'} - dev: true - /registry-auth-token/5.0.2: resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} engines: {node: '>=14'} dependencies: - '@pnpm/npm-conf': 2.1.0 + '@pnpm/npm-conf': 2.1.1 dev: true /registry-url/6.0.1: @@ -2907,15 +2933,6 @@ packages: engines: {node: '>=4'} dev: true - /resolve/1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.11.0 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /responselike/3.0.0: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} @@ -2943,8 +2960,8 @@ packages: glob: 7.2.3 dev: true - /rollup/3.19.1: - resolution: {integrity: sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==} + /rollup/3.21.2: + resolution: {integrity: sha512-c4vC+JZ3bbF4Kqq2TtM7zSKtSyMybFOjqmomFax3xpfYaPZDZ4iz8NMIuBRMjnXOcKYozw7bC6vhJjiWD6JpzQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -2971,8 +2988,8 @@ packages: dev: true optional: true - /safe-stable-stringify/2.4.2: - resolution: {integrity: sha512-gMxvPJYhP0O9n2pvcfYfIuYgbledAOJFcqRThtPRmjscaipiwcwPPKLytpVzMkG2HAN87Qmo2d4PtGiri1dSLA==} + /safe-stable-stringify/2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} dev: true @@ -2988,7 +3005,7 @@ packages: resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} engines: {node: '>=12'} dependencies: - semver: 7.3.8 + semver: 7.5.0 dev: true /semver/7.3.8: @@ -2999,6 +3016,14 @@ packages: lru-cache: 6.0.0 dev: true + /semver/7.5.0: + resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /setimmediate/1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} dev: true @@ -3031,11 +3056,11 @@ packages: resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} dev: true - /sign-addon/5.2.0: - resolution: {integrity: sha512-t5CZ4MSKAd3uJBUfjgWfSyKYC1pQS6BMUbgI5OytzMkTOQ9NkdkFE8bB0AJLQIGqDrNS2b1+/ghAP56iuCUE+g==} + /sign-addon/5.3.0: + resolution: {integrity: sha512-7nHlCzhQgVMLBNiXVEgbG/raq48awOW0lYMN5uo1BaB3mp0+k8M8pvDwbfTlr3apcxZJsk9HQsAW1POwoJugpQ==} dependencies: common-tags: 1.8.2 - core-js: 3.27.1 + core-js: 3.29.0 deepcopy: 2.1.0 es6-error: 4.1.1 es6-promisify: 7.0.0 @@ -3050,8 +3075,8 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true - /sonic-boom/3.2.1: - resolution: {integrity: sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==} + /sonic-boom/3.3.0: + resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} dependencies: atomic-sleep: 1.0.0 dev: true @@ -3089,8 +3114,8 @@ packages: through: 2.3.8 dev: true - /split2/4.1.0: - resolution: {integrity: sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==} + /split2/4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} dev: true @@ -3217,11 +3242,6 @@ packages: has-flag: 4.0.0 dev: true - /supports-preserve-symlinks-flag/1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - dev: true - /text-table/0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -3367,7 +3387,7 @@ packages: is-yarn-global: 0.4.1 latest-version: 7.0.0 pupa: 3.1.0 - semver: 7.3.8 + semver: 7.5.0 semver-diff: 4.0.0 xdg-basedir: 5.1.0 dev: true @@ -3402,8 +3422,8 @@ packages: extsprintf: 1.3.0 dev: true - /vite-plugin-web-extension/3.0.8_vite@4.1.4: - resolution: {integrity: sha512-1iNRKzbC5cVfTNw+tQSQ/G/b5jU+Ocx+sry0DqsguYCzG8qegP+Lbk2VhWwDw9k6i5u5luBP328XeqtAx/Nsbg==} + /vite-plugin-web-extension/3.0.6_vite@4.3.3: + resolution: {integrity: sha512-FglKlPGzsoEajFTJygmcOHtZ8QuN6ElB1cpu9l4uwPjWO7JTvlDZo62hOEzWQPTlZ3rrskPSSTb1d6vqimSNCg==} peerDependencies: vite: ^4 dependencies: @@ -3411,14 +3431,14 @@ packages: async-lock: 1.4.0 fs-extra: 10.1.0 json5: 2.2.3 - linkedom: 0.14.25 + linkedom: 0.14.26 lodash.uniq: 4.5.0 lodash.uniqby: 4.7.0 md5: 2.3.0 - vite: 4.1.4 - web-ext: 7.5.0 + vite: 4.3.3 + web-ext: 7.6.2 webextension-polyfill: 0.10.0 - yaml: 2.2.1 + yaml: 2.2.2 transitivePeerDependencies: - body-parser - bufferutil @@ -3428,8 +3448,8 @@ packages: - utf-8-validate dev: true - /vite/4.1.4: - resolution: {integrity: sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==} + /vite/4.3.3: + resolution: {integrity: sha512-MwFlLBO4udZXd+VBcezo3u8mC77YQk+ik+fbc0GZWGgzfbPP+8Kf0fldhARqvSYmtIWoAJ5BXPClUbMTlqFxrA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -3453,10 +3473,9 @@ packages: terser: optional: true dependencies: - esbuild: 0.16.17 - postcss: 8.4.21 - resolve: 1.22.1 - rollup: 3.19.1 + esbuild: 0.17.18 + postcss: 8.4.23 + rollup: 3.21.2 optionalDependencies: fsevents: 2.3.2 dev: true @@ -3478,14 +3497,15 @@ packages: he: 1.2.0 dev: true - /vue-tsc/1.2.0_typescript@5.0.4: - resolution: {integrity: sha512-rIlzqdrhyPYyLG9zxsVRa+JEseeS9s8F2BbVVVWRRsTZvJO2BbhLEb2HW3MY+DFma0378tnIqs+vfTzbcQtRFw==} + /vue-tsc/1.6.1_typescript@5.0.4: + resolution: {integrity: sha512-cKKKrv98MdU9kgd434fkjcIpU7a5bUflhklF9usf/GzebjmZpaht7tYGm/MNdBz7V9icySceCzCr3RiG02mOJg==} hasBin: true peerDependencies: typescript: '*' dependencies: - '@volar/vue-language-core': 1.2.0 - '@volar/vue-typescript': 1.2.0 + '@volar/vue-language-core': 1.6.1 + '@volar/vue-typescript': 1.6.1_typescript@5.0.4 + semver: 7.5.0 typescript: 5.0.4 dev: true @@ -3503,7 +3523,7 @@ packages: engines: {node: '>=10.13.0'} dependencies: glob-to-regexp: 0.4.1 - graceful-fs: 4.2.10 + graceful-fs: 4.2.11 dev: true /wcwidth/1.0.1: @@ -3512,42 +3532,42 @@ packages: defaults: 1.0.4 dev: true - /web-ext/7.5.0: - resolution: {integrity: sha512-Ymflj7Aq/LOD+zGoyvwRbAPx/yMJeig2OEb/rRXYrWl6NWRI5E0c2iWGqlBcnL45iKrOzz70H438dVeJk0w2ug==} + /web-ext/7.6.2: + resolution: {integrity: sha512-xlxbzgFBIS/UWWlvWxyR1PIqRRzDj1cutoHh+VZu4ZTcJTfv35KVdKkLRZv4PQwHu4dg8VfTg7WEcNP4QLaaFQ==} engines: {node: '>=14.0.0', npm: '>=6.9.0'} hasBin: true dependencies: - '@babel/runtime': 7.20.13 + '@babel/runtime': 7.21.0 '@devicefarmer/adbkit': 3.2.3 - addons-linter: 5.27.0_node-fetch@3.3.0 + addons-linter: 5.32.0_node-fetch@3.3.1 bunyan: 1.8.15 camelcase: 7.0.1 chrome-launcher: 0.15.1 debounce: 1.2.1 decamelize: 6.0.0 es6-error: 4.1.1 - firefox-profile: 4.2.2 + firefox-profile: 4.3.2 fs-extra: 11.1.0 fx-runner: 1.3.0 import-fresh: 3.3.0 - jose: 4.11.2 + jose: 4.13.1 mkdirp: 1.0.4 multimatch: 6.0.0 mz: 2.7.0 - node-fetch: 3.3.0 + node-fetch: 3.3.1 node-notifier: 10.0.1 - open: 8.4.0 + open: 8.4.2 parse-json: 6.0.2 promise-toolbox: 0.21.0 - sign-addon: 5.2.0 + sign-addon: 5.3.0 source-map-support: 0.5.21 strip-bom: 5.0.0 strip-json-comments: 5.0.0 tmp: 0.2.1 update-notifier: 6.0.2 watchpack: 2.4.0 - ws: 8.12.0 - yargs: 17.6.2 + ws: 8.13.0 + yargs: 17.7.1 zip-dir: 2.0.0 transitivePeerDependencies: - body-parser @@ -3634,8 +3654,8 @@ packages: typedarray-to-buffer: 3.1.5 dev: true - /ws/8.12.0: - resolution: {integrity: sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==} + /ws/8.13.0: + resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -3652,8 +3672,8 @@ packages: engines: {node: '>=12'} dev: true - /xml2js/0.4.23: - resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + /xml2js/0.5.0: + resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} engines: {node: '>=4.0.0'} dependencies: sax: 1.2.4 @@ -3674,8 +3694,8 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml/2.2.1: - resolution: {integrity: sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==} + /yaml/2.2.2: + resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} engines: {node: '>= 14'} dev: true @@ -3684,8 +3704,8 @@ packages: engines: {node: '>=12'} dev: true - /yargs/17.6.2: - resolution: {integrity: sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==} + /yargs/17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} engines: {node: '>=12'} dependencies: cliui: 8.0.1 diff --git a/src/manifest.json b/src/manifest.json index 01a397c..24ec1de 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,5 +1,5 @@ { - "{{chrome}}.manifest_version": 3, + "manifest_version": 3, "name": "Web Activity Time Tracker", "short_name": "Web Tracker", "version": "2.0.0", @@ -22,9 +22,9 @@ ], "offline_enabled": true, "background": { - "{{chrome}}.service_worker": "src/background.ts" + "service_worker": "src/background.ts" }, - "{{chrome}}.action": { + "action": { "default_popup": "src/popup.html", "default_title": "Web Activity Time Tracker" } From 41b7712469b1b1c66d31d6289eb63d4231eaa2b1 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 31 May 2023 23:48:49 +0300 Subject: [PATCH 079/329] Fix counting time and sessions --- src/entity/tab.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/entity/tab.ts b/src/entity/tab.ts index 4c7a2ef..4e55146 100644 --- a/src/entity/tab.ts +++ b/src/entity/tab.ts @@ -16,22 +16,27 @@ export class Tab implements ISerializable { this.summaryTime += 1; const day = this.days.find(x => x.date == todayLocalDate()); - if (day === undefined) this.addNewDay(); - else day.incSummaryTime(); + if (day === undefined) { + const newTab = this.addNewDay(); + newTab.incSummaryTime(); + } else day.incSummaryTime(); } incCounter(): void { this.counter += 1; if (__DEV__) logger.log(`Counter ${this.url} - ${this.counter}`); const day = this.days.find(x => x.date == todayLocalDate()); - if (day === undefined) this.addNewDay(); - else day.incCounter(); + if (day === undefined) { + const newTab = this.addNewDay(); + newTab.incCounter(); + } else day.incCounter(); } - addNewDay(): void { + addNewDay(): TabDay { const newTabDay = new TabDay(); newTabDay.init(todayLocalDate()); this.days.push(newTabDay); + return newTabDay; } deserialize(input: Tab) { @@ -56,8 +61,6 @@ export class TabDay implements ISerializable { init(date: string) { this.date = date; - this.counter = 1; - this.summary = 1; } incSummaryTime(): void { From a5789a4613b119f7a5bc917849c0998cafb83ceb Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 31 May 2023 23:49:34 +0300 Subject: [PATCH 080/329] Sorting by sessions and web usage --- src/assets/css/main.css | 2 +- src/assets/icons/24-hours.svg | 34 ---------------------- src/assets/icons/pie-chart.svg | 16 ---------- src/assets/icons/stats.svg | 21 ------------- src/components/TabItem.vue | 28 +++++++++--------- src/components/TabItemHeader.vue | 18 ++++++++---- src/components/TabList.vue | 33 ++++++++++++++++----- src/compositions/all-tab-list-summary.ts | 5 ++-- src/compositions/today-tab-list-summary.ts | 8 ++--- src/dto/currentTabItem.ts | 7 +++++ src/{utils => dto}/tabListSummary.ts | 0 src/pages/Popup.vue | 15 ++-------- 12 files changed, 70 insertions(+), 117 deletions(-) delete mode 100644 src/assets/icons/24-hours.svg delete mode 100644 src/assets/icons/pie-chart.svg delete mode 100644 src/assets/icons/stats.svg create mode 100644 src/dto/currentTabItem.ts rename src/{utils => dto}/tabListSummary.ts (100%) diff --git a/src/assets/css/main.css b/src/assets/css/main.css index 329fab5..d8768b6 100644 --- a/src/assets/css/main.css +++ b/src/assets/css/main.css @@ -1,7 +1,7 @@ :root { --main-color: #6ebf5d; --popup-header: #f3f3f3; - --progress-bar: #6ebf5d; + --progress-bar: #428bff; } ::-webkit-scrollbar-track { border-radius: 10px; diff --git a/src/assets/icons/24-hours.svg b/src/assets/icons/24-hours.svg deleted file mode 100644 index b559112..0000000 --- a/src/assets/icons/24-hours.svg +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/assets/icons/pie-chart.svg b/src/assets/icons/pie-chart.svg deleted file mode 100644 index 3e9eceb..0000000 --- a/src/assets/icons/pie-chart.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/src/assets/icons/stats.svg b/src/assets/icons/stats.svg deleted file mode 100644 index 98590e6..0000000 --- a/src/assets/icons/stats.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/components/TabItem.vue b/src/components/TabItem.vue index b5f98f1..b40c959 100644 --- a/src/components/TabItem.vue +++ b/src/components/TabItem.vue @@ -1,9 +1,9 @@ @@ -25,7 +30,7 @@ export default { @@ -73,6 +101,9 @@ function openUrl(url: string) { font-size: 15px; font-weight: 600; cursor: pointer; + overflow-wrap: anywhere; + max-width: 80%; + display: inline-block; } .tab-item .url:hover { color: #1a0dab; @@ -113,4 +144,15 @@ function openUrl(url: string) { .tab-item .sessions { margin: 0 0 0 5px; } +.tab-item ::v-deep span.badge-document { + border-radius: 6px; + background-color: #0043ff9e; + padding: 3px 7px; + font-size: 11px; + color: white; + font-weight: 600; +} +.tab-item .warning-message { + color: grey; +} diff --git a/src/compositions/extract-hostname.ts b/src/compositions/extract-hostname.ts index 8877297..b0f70f1 100644 --- a/src/compositions/extract-hostname.ts +++ b/src/compositions/extract-hostname.ts @@ -1,16 +1,19 @@ -export function extractHostname(url:string | undefined):string { - let hostname; - if (url == undefined) return ''; +export function extractHostname(url: string | undefined): string { + let hostname; + if (url == undefined) return ''; - if (url.indexOf("//") > -1) { - hostname = url.split('/')[2]; - } - else { - hostname = url.split('/')[0]; - } + if (url.startsWith('file:')) { + return url; + } - hostname = hostname.split(':')[0]; - hostname = hostname.split('?')[0]; + if (url.indexOf('//') > -1) { + hostname = url.split('/')[2]; + } else { + hostname = url.split('/')[0]; + } - return hostname; -} \ No newline at end of file + hostname = hostname.split(':')[0]; + hostname = hostname.split('?')[0]; + + return hostname; +} diff --git a/src/compositions/valid-page.ts b/src/compositions/valid-page.ts index 248ae8c..33bc85f 100644 --- a/src/compositions/valid-page.ts +++ b/src/compositions/valid-page.ts @@ -1,11 +1,15 @@ import Browser from 'webextension-polyfill'; -export function isValidPage(tab: Browser.Tabs.Tab | undefined): boolean{ - if (tab == null || tab == undefined || !tab.url || !tab.id) return false; +export function isValidPage(tab: Browser.Tabs.Tab | undefined): boolean { + if (tab == null || tab == undefined || !tab.url || !tab.id) return false; - if ((!tab.url.startsWith('http:') && !tab.url.startsWith('https:')) - || tab.url.startsWith('chrome://') - || tab.url.startsWith('chrome-extension://')) - return false; - return true; -} \ No newline at end of file + if ( + (!tab.url.startsWith('http:') && + !tab.url.startsWith('https:') && + !tab.url.startsWith('file:')) || + tab.url.startsWith('chrome://') || + tab.url.startsWith('chrome-extension://') + ) + return false; + return true; +} From 2d4d8da4462757f7315bc42d64fa78d1169575cf Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 7 Jun 2023 13:46:49 +0300 Subject: [PATCH 092/329] Fix error for loading on popup --- src/repository/inject-tabs-repository.ts | 6 ++++- src/repository/tabs-repository.ts | 28 +++++++++++------------- src/tracker.ts | 6 ++--- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/repository/inject-tabs-repository.ts b/src/repository/inject-tabs-repository.ts index 56bf43f..44de742 100644 --- a/src/repository/inject-tabs-repository.ts +++ b/src/repository/inject-tabs-repository.ts @@ -9,9 +9,13 @@ async function createAndInitInstance() { return repo; } -export async function injectTabsRepository(): Promise { +export async function injectTabsRepositorySingleton(): Promise { if (instanse == null) { instanse = await createAndInitInstance(); } return instanse; } + +export async function injectTabsRepository(): Promise { + return createAndInitInstance(); +} diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts index e026137..1c93921 100644 --- a/src/repository/tabs-repository.ts +++ b/src/repository/tabs-repository.ts @@ -1,9 +1,9 @@ -import { ITabsRepository } from "./tabs-repository-interface"; -import { Tab } from "../entity/tab"; -import { injecStorage } from "../storage/inject-storage"; -import { isInBlackList } from "../compositions/black-list"; -import { StorageDeserializeParam } from "../storage/storage-params"; -import { todayLocalDate } from "../utils/today"; +import { ITabsRepository } from './tabs-repository-interface'; +import { Tab } from '../entity/tab'; +import { injecStorage } from '../storage/inject-storage'; +import { isInBlackList } from '../compositions/black-list'; +import { StorageDeserializeParam } from '../storage/storage-params'; +import { todayLocalDate } from '../utils/today'; export class TabsRepository implements ITabsRepository { private tabs: Tab[]; @@ -13,21 +13,19 @@ export class TabsRepository implements ITabsRepository { } async initAsync() { - this.tabs = (await injecStorage().getDeserializeList( - StorageDeserializeParam.TABS - )) as Tab[]; + this.tabs = (await injecStorage().getDeserializeList(StorageDeserializeParam.TABS)) as Tab[]; } getTabs(): Tab[] { return this.tabs; } - getTodayTabs(): Tab[]{ + getTodayTabs(): Tab[] { return this.tabs.filter(x => x.days.find(s => s.date === todayLocalDate())); } getTab(domain: string): Tab | undefined { - return this.tabs?.find((x) => x.url === domain); + return this.tabs?.find(x => x.url === domain); } async addTab(domain: string, favicon: string | undefined): Promise { @@ -35,10 +33,10 @@ export class TabsRepository implements ITabsRepository { const isInBlackListFlag = await isInBlackList(domain); if (!isInBlackListFlag && !tabFromStorage) { - const newTab = new Tab(); - newTab.init(domain); - this.tabs.push(newTab); - return newTab; + const newTab = new Tab(); + newTab.init(domain); + this.tabs.push(newTab); + return newTab; } return undefined; diff --git a/src/tracker.ts b/src/tracker.ts index c10e378..63ba8db 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -1,7 +1,7 @@ import Browser from 'webextension-polyfill'; import { isValidPage } from './compositions/valid-page'; import { extractHostname } from './compositions/extract-hostname'; -import { injectTabsRepository } from './repository/inject-tabs-repository'; +import { injectTabsRepositorySingleton } from './repository/inject-tabs-repository'; import { isInBlackList } from './compositions/black-list'; import { useBadge } from './compositions/set-badge'; import { @@ -28,7 +28,7 @@ export async function initTracker() { } async function trackTime() { - const repo = await injectTabsRepository(); + const repo = await injectTabsRepositorySingleton(); const window = await Browser.windows.getLastFocused({ populate: true }); if (window.focused) { const activeTab = window.tabs?.find(t => t.active === true); @@ -118,7 +118,7 @@ async function mainTracker( async function saveTabs() { const storage = injecStorage(); - const repo = await injectTabsRepository(); + const repo = await injectTabsRepositorySingleton(); const tabs = repo.getTabs(); await storage.saveTabs(tabs); } From 09d75b620074d95a70d32cef80842a036bbd9710 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 3 May 2023 14:57:00 +0100 Subject: [PATCH 093/329] Decode url for documents (cyrillic symbols) --- src/components/TabItem.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/TabItem.vue b/src/components/TabItem.vue index 33c53ee..42cd75c 100644 --- a/src/components/TabItem.vue +++ b/src/components/TabItem.vue @@ -51,7 +51,7 @@ const typeOfUrl = computed(() => const url = computed(() => typeOfUrl.value == TypeOfUrl.Document - ? encodeURI(props.item.url.split('///')[1]) + ? decodeURI(props.item.url.split('///')[1]) : props.item.url, ); From a4a9e4ddab4e900505867878b44c90438fca6275 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 3 Jun 2023 11:15:00 +0100 Subject: [PATCH 094/329] Refact tracker (cache current tab for checking every seconds) --- src/tracker.ts | 46 ++++++++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/src/tracker.ts b/src/tracker.ts index 63ba8db..68fa7d4 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -22,6 +22,13 @@ import { convertSummaryTimeToBadgeString } from './utils/converter'; const activeTabInstance = ActiveTab.getInstance(); const storage = injecStorage(); +interface CurrentObj { + tab: Tab; + activeDomain: string; +} + +let currentObj: CurrentObj | null; + export async function initTracker() { setInterval(trackTime, 1000); setInterval(saveTabs, INTERVAL_SAVE_STORAGE_DEFAULT); @@ -35,6 +42,15 @@ async function trackTime() { if (isValidPage(activeTab)) { const activeDomain = extractHostname(activeTab!.url); + if ( + currentObj != null && + currentObj.activeDomain == activeDomain && + !isActiveTabWasChanged(activeDomain) + ) { + await mainTrackerWrapper(activeTab!, activeDomain, currentObj.tab); + return; + } + if (await isInBlackList(activeDomain)) { useBadge({ tabId: activeTab!.id!, @@ -47,18 +63,14 @@ async function trackTime() { tab = await repo.addTab(activeDomain, activeTab?.favIconUrl); } if (tab != undefined) { - const inactivityInterval = (await storage.getValue( - StorageParams.INTERVAL_INACTIVITY, - INTERVAL_INACTIVITY_DEFAULT, - )) as number; - const state = await Browser.idle.queryState(inactivityInterval); - mainTracker(state, activeTab!, activeDomain, tab); + await mainTrackerWrapper(activeTab!, activeDomain, tab); } } } } else { await closeInterval(activeTabInstance.getActiveTabDomain()); activeTabInstance.setActiveTab(null); + currentObj = null; } } @@ -72,9 +84,10 @@ async function mainTracker( return state === 'idle' && activeTab.audible; } - function isActiveTabWasChanged() { - return activeDomain != activeTabInstance.getActiveTabDomain(); - } + currentObj = { + tab: tab, + activeDomain: activeDomain, + }; const isAudibleValue = isAudible(); if (state === 'active' || isAudibleValue) { @@ -85,7 +98,7 @@ async function mainTracker( return; } - if (isActiveTabWasChanged()) { + if (isActiveTabWasChanged(activeDomain)) { tab.incCounter(); await closeInterval(activeTabInstance.getActiveTabDomain()); activeTabInstance.setActiveTab(activeTab.url!); @@ -116,6 +129,19 @@ async function mainTracker( } } +async function mainTrackerWrapper(activeTab: Browser.Tabs.Tab, activeDomain: string, tab: Tab) { + const inactivityInterval = (await storage.getValue( + StorageParams.INTERVAL_INACTIVITY, + INTERVAL_INACTIVITY_DEFAULT, + )) as number; + const state = await Browser.idle.queryState(inactivityInterval); + await mainTracker(state, activeTab!, activeDomain, tab); +} + +function isActiveTabWasChanged(activeDomain: string) { + return activeDomain != activeTabInstance.getActiveTabDomain(); +} + async function saveTabs() { const storage = injecStorage(); const repo = await injectTabsRepositorySingleton(); From 05842e00a6fca3822aa7d9b074621c0f524ac91a Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 3 Jun 2023 16:19:00 +0100 Subject: [PATCH 095/329] Cache settings --- src/background.ts | 9 ++++ src/compositions/black-list.ts | 5 +- src/compositions/daily-intervals.ts | 70 ++++++++++++------------- src/compositions/limit-list.ts | 33 ++++++------ src/compositions/settings.ts | 34 +++++++++++++ src/jobs/sheduler.ts | 5 +- src/storage/inject-storage.ts | 8 +-- src/storage/local-storage.ts | 79 ++++++++++++++++------------- src/storage/storage-interface.ts | 16 +++--- src/storage/storage-params.ts | 43 +++++++++------- src/tracker.ts | 19 ++----- 11 files changed, 187 insertions(+), 134 deletions(-) create mode 100644 src/compositions/settings.ts diff --git a/src/background.ts b/src/background.ts index 6fe5e2c..a7c3c8b 100644 --- a/src/background.ts +++ b/src/background.ts @@ -2,6 +2,8 @@ import Browser from 'webextension-polyfill'; import { initTracker } from './tracker'; import { logger } from './compositions/logger'; import { scheduleJobs } from './jobs/sheduler'; +import { Settings } from './compositions/settings'; +import { StorageParams } from './storage/storage-params'; logger.log('Start background script'); @@ -9,5 +11,12 @@ Browser.runtime.onInstalled.addListener(details => { logger.log('Extension installed:', details); }); +Browser.storage.onChanged.addListener((changes, namespace) => { + for (var key in changes) { + if (Object.values(StorageParams).includes(key as StorageParams)) + Settings.getInstance().reloadSetting(key as StorageParams); + } +}); + scheduleJobs(); initTracker(); diff --git a/src/compositions/black-list.ts b/src/compositions/black-list.ts index ffd76d5..c62a33c 100644 --- a/src/compositions/black-list.ts +++ b/src/compositions/black-list.ts @@ -1,11 +1,10 @@ -import { injecStorage } from '../storage/inject-storage'; import { StorageParams } from '../storage/storage-params'; import { isDomainEquals } from '../utils/common'; import { extractHostname } from './extract-hostname'; +import { Settings } from './settings'; export async function isInBlackList(url: string): Promise { - const storage = injecStorage(); - const blackList = (await storage.getValue(StorageParams.BLACK_LIST)) as string[]; + const blackList = (await Settings.getInstance().getSetting(StorageParams.BLACK_LIST)) as string[]; return ( blackList?.find(x => isDomainEquals(extractHostname(x), extractHostname(url))) !== undefined ); diff --git a/src/compositions/daily-intervals.ts b/src/compositions/daily-intervals.ts index 5a52fb5..cde40d3 100644 --- a/src/compositions/daily-intervals.ts +++ b/src/compositions/daily-intervals.ts @@ -1,39 +1,41 @@ -import { TimeInterval } from "../entity/time-interval"; -import { injecStorage } from "../storage/inject-storage"; -import { StorageDeserializeParam, StorageParams } from "../storage/storage-params"; -import { todayLocalDate } from "../utils/today"; +import { TimeInterval } from '../entity/time-interval'; +import { injecStorage } from '../storage/inject-storage'; +import { StorageDeserializeParam, StorageParams } from '../storage/storage-params'; +import { todayLocalDate } from '../utils/today'; -export async function closeInterval(domain:string | null): Promise{ - if (domain == null) return; - const storage = injecStorage(); - const timeIntervalList = await storage.getDeserializeList(StorageDeserializeParam.TIMEINTERVAL_LIST) as TimeInterval[]; - const item = timeIntervalList?.find(x => x.domain === domain && x.day == todayLocalDate()); - item?.closeInterval(); - await storage.saveValue(StorageParams.TIMEINTERVAL_LIST, timeIntervalList); +export async function closeInterval(domain: string | null): Promise { + if (domain == null) return; + const storage = injecStorage(); + const timeIntervalList = (await storage.getDeserializeList( + StorageDeserializeParam.TIMEINTERVAL_LIST, + )) as TimeInterval[]; + const item = timeIntervalList?.find(x => x.domain === domain && x.day == todayLocalDate()); + item?.closeInterval(); + await storage.saveIntervalList(timeIntervalList); } -export async function addInterval(domain:string | null): Promise{ - if (domain == null) return; +export async function addInterval(domain: string | null): Promise { + if (domain == null) return; - const storage = injecStorage(); - let timeIntervalList = await storage.getDeserializeList(StorageDeserializeParam.TIMEINTERVAL_LIST) as TimeInterval[]; - if (timeIntervalList == undefined) - timeIntervalList = []; - const item = timeIntervalList?.find(x => x.domain === domain && x.day == todayLocalDate()); - if (item != undefined) { - if (item.day == todayLocalDate()) - item.addInterval(); - else { - const newInterval = new TimeInterval(); - newInterval.init(todayLocalDate(), domain); - newInterval.addInterval(); - timeIntervalList.push(newInterval); - } - } else { - const newInterval = new TimeInterval(); - newInterval.init(todayLocalDate(), domain); - newInterval.addInterval(); - timeIntervalList.push(newInterval); + const storage = injecStorage(); + let timeIntervalList = (await storage.getDeserializeList( + StorageDeserializeParam.TIMEINTERVAL_LIST, + )) as TimeInterval[]; + if (timeIntervalList == undefined) timeIntervalList = []; + const item = timeIntervalList?.find(x => x.domain === domain && x.day == todayLocalDate()); + if (item != undefined) { + if (item.day == todayLocalDate()) item.addInterval(); + else { + const newInterval = new TimeInterval(); + newInterval.init(todayLocalDate(), domain); + newInterval.addInterval(); + timeIntervalList.push(newInterval); } - await storage.saveValue(StorageParams.TIMEINTERVAL_LIST, timeIntervalList); -} \ No newline at end of file + } else { + const newInterval = new TimeInterval(); + newInterval.init(todayLocalDate(), domain); + newInterval.addInterval(); + timeIntervalList.push(newInterval); + } + await storage.saveIntervalList(timeIntervalList); +} diff --git a/src/compositions/limit-list.ts b/src/compositions/limit-list.ts index 9e44f8b..cbf62ce 100644 --- a/src/compositions/limit-list.ts +++ b/src/compositions/limit-list.ts @@ -1,19 +1,20 @@ -import { Restriction } from "../entity/restriction"; -import { Tab } from "../entity/tab"; -import { injecStorage } from "../storage/inject-storage"; -import { StorageParams } from "../storage/storage-params"; -import { todayLocalDate } from "../utils/today"; +import { Restriction } from '../entity/restriction'; +import { Tab } from '../entity/tab'; +import { StorageParams } from '../storage/storage-params'; +import { todayLocalDate } from '../utils/today'; +import { Settings } from './settings'; -export async function isLimitExceeded(url: string, tab: Tab): Promise{ - const storage = injecStorage(); - const limitList = await storage.getValue(StorageParams.RESTRICTION_LIST) as Restriction[]; - const item = limitList?.find(x => x.domain == url); - if (item != undefined){ - const date = tab.days.find(x => x.date == todayLocalDate()); - if (date != undefined){ - return date.summary >= item.time; - } +export async function isLimitExceeded(url: string, tab: Tab): Promise { + const limitList = (await Settings.getInstance().getSetting( + StorageParams.RESTRICTION_LIST, + )) as Restriction[]; + const item = limitList?.find(x => x.domain == url); + if (item != undefined) { + const date = tab.days.find(x => x.date == todayLocalDate()); + if (date != undefined) { + return date.summary >= item.time; } + } - return false; -} \ No newline at end of file + return false; +} diff --git a/src/compositions/settings.ts b/src/compositions/settings.ts new file mode 100644 index 0000000..70ba99c --- /dev/null +++ b/src/compositions/settings.ts @@ -0,0 +1,34 @@ +import { injecStorage } from '../storage/inject-storage'; +import { StorageParams, getDefaultValue } from '../storage/storage-params'; + +export class Settings { + private static instance: Settings; + private _settings = new Map(); + + constructor() { + if (Settings.instance) { + throw new Error('Error - use Settings.getInstance()'); + } + } + + static getInstance(): Settings { + Settings.instance = Settings.instance || new Settings(); + return Settings.instance; + } + + async getSetting(param: StorageParams) { + if (this._settings.has(param)) return this._settings.get(param); + else return await this.getValue(param); + } + + async reloadSetting(param: StorageParams) { + await this.getValue(param); + } + + private async getValue(param: StorageParams) { + const storage = injecStorage(); + const value = await storage.getValue(param, getDefaultValue(param)); + this._settings.set(param, value); + return value; + } +} diff --git a/src/jobs/sheduler.ts b/src/jobs/sheduler.ts index c7042f8..e034687 100644 --- a/src/jobs/sheduler.ts +++ b/src/jobs/sheduler.ts @@ -1,8 +1,8 @@ import Browser, { Alarms } from 'webextension-polyfill'; import { logger } from '../compositions/logger'; import { StorageParams } from '../storage/storage-params'; -import { injecStorage } from '../storage/inject-storage'; import { DAY_MINUTES, getNextTimeOfDay } from '../utils/time'; +import { Settings } from '../compositions/settings'; export enum JobId { DailySummaryNotification = '@alarm/daily-summary-notification', @@ -24,8 +24,7 @@ export function scheduleJobs(): void { } async function rescheduleJobs(): Promise { - const storage = injecStorage(); - const dailySummaryNotificationTime = (await storage.getValue( + const dailySummaryNotificationTime = (await Settings.getInstance().getSetting( StorageParams.DAILY_SUMMARY_NOTIFICATION_TIME, )) as number; await Browser.alarms.clear(JobId.DailySummaryNotification); diff --git a/src/storage/inject-storage.ts b/src/storage/inject-storage.ts index 80711d1..13713af 100644 --- a/src/storage/inject-storage.ts +++ b/src/storage/inject-storage.ts @@ -1,6 +1,6 @@ -import { LocalStorage } from "./local-storage"; -import { IStorage } from "./storage-interface"; +import { LocalStorage } from './local-storage'; +import { IStorage } from './storage-interface'; export function injecStorage(): IStorage { - return new LocalStorage(); - } \ No newline at end of file + return new LocalStorage(); +} diff --git a/src/storage/local-storage.ts b/src/storage/local-storage.ts index eae6ae3..deb1d79 100644 --- a/src/storage/local-storage.ts +++ b/src/storage/local-storage.ts @@ -1,42 +1,51 @@ -import { IStorage } from "./storage-interface"; -import { StorageDeserializeParam, StorageDeserializeType, StorageParams, createDeserializeParambject } from "./storage-params"; -import { Tab } from "../entity/tab"; +import { IStorage } from './storage-interface'; +import { + StorageDeserializeParam, + StorageDeserializeType, + StorageParams, + createDeserializeParambject, +} from './storage-params'; +import { Tab } from '../entity/tab'; import Browser from 'webextension-polyfill'; -import { isEmpty } from "../utils/common"; +import { isEmpty } from '../utils/common'; +import { TimeInterval } from '../entity/time-interval'; export class LocalStorage implements IStorage { - async getDeserializeList(param: StorageDeserializeParam): Promise { - return new Promise(async resolve => { - const obj = await Browser.storage.local.get(param); - const list = obj[param]; - if (list != undefined){ - let tempList:StorageDeserializeType[] = []; - for (let i = 0; i < list.length; i++) { - const obj = createDeserializeParambject(param); - tempList.push(obj.deserialize(list[i])); - } - return resolve(tempList); - } - else resolve([]); - }); - } + async getDeserializeList(param: StorageDeserializeParam): Promise { + return new Promise(async resolve => { + const obj = await Browser.storage.local.get(param); + const list = obj[param]; + if (list != undefined) { + let tempList: StorageDeserializeType[] = []; + for (let i = 0; i < list.length; i++) { + const obj = createDeserializeParambject(param); + tempList.push(obj.deserialize(list[i])); + } + return resolve(tempList); + } else resolve([]); + }); + } - async saveTabs(value: Tab[]): Promise { - return await Browser.storage.local.set({ tabs: value }); - } + async saveTabs(value: Tab[]): Promise { + return await Browser.storage.local.set({ [StorageDeserializeParam.TABS]: value }); + } - async saveValue(name: StorageParams, value: any): Promise { - return await Browser.storage.local.set({ - [name]: value - }); - } + async saveIntervalList(value: TimeInterval[]): Promise { + return await Browser.storage.local.set({ [StorageDeserializeParam.TIMEINTERVAL_LIST]: value }); + } - async getValue(name: StorageParams, defaultValue?: any): Promise { - let value = await Browser.storage.local.get(name); - if (isEmpty(value) && defaultValue != undefined){ - await this.saveValue(name, defaultValue); - return defaultValue; - } - return value[name]; + async saveValue(name: StorageParams, value: any): Promise { + return await Browser.storage.local.set({ + [name]: value, + }); + } + + async getValue(name: StorageParams, defaultValue?: any): Promise { + let value = await Browser.storage.local.get(name); + if (isEmpty(value) && defaultValue != undefined) { + await this.saveValue(name, defaultValue); + return defaultValue; } -} \ No newline at end of file + return value[name]; + } +} diff --git a/src/storage/storage-interface.ts b/src/storage/storage-interface.ts index 95bce45..a4aded6 100644 --- a/src/storage/storage-interface.ts +++ b/src/storage/storage-interface.ts @@ -1,9 +1,11 @@ -import { StorageDeserializeParam, StorageDeserializeType, StorageParams } from "./storage-params"; -import { Tab } from "../entity/tab"; +import { StorageDeserializeParam, StorageDeserializeType, StorageParams } from './storage-params'; +import { Tab } from '../entity/tab'; +import { TimeInterval } from '../entity/time-interval'; export interface IStorage { - getDeserializeList(param: StorageDeserializeParam): Promise; - saveTabs(value:Tab[]): Promise; - saveValue(name:StorageParams, value: any): Promise; - getValue(name:StorageParams, defaultValue?: any): Promise; -} \ No newline at end of file + getDeserializeList(param: StorageDeserializeParam): Promise; + saveTabs(value: Tab[]): Promise; + saveIntervalList(value: TimeInterval[]): Promise; + saveValue(name: StorageParams, value: any): Promise; + getValue(name: StorageParams, defaultValue?: any): Promise; +} diff --git a/src/storage/storage-params.ts b/src/storage/storage-params.ts index 3f99523..14a0b5a 100644 --- a/src/storage/storage-params.ts +++ b/src/storage/storage-params.ts @@ -2,19 +2,14 @@ import { Tab } from '../entity/tab'; import { TimeInterval } from '../entity/time-interval'; export enum StorageParams { - TABS = 'tabs', BLACK_LIST = 'black_list', RESTRICTION_LIST = 'restriction_list', NOTIFICATION_LIST = 'notification_list', NOTIFICATION_MESSAGE = 'notification_message', - TIMEINTERVAL_LIST = 'time_interval', INTERVAL_INACTIVITY = 'inactivity_interval', - INTERVAL_SAVE_STORAGE = 'interval_save_in_storage', - INTERVAL_RANGE = 'range_days', DARK_MODE = 'night_mode', VIEW_TIME_IN_BADGE = 'view_time_in_badge', BLOCK_DEFERRAL = 'view_block_deferral', - SHOW_HINT = 'show_hint', DAILY_SUMMARY_NOTIFICATION_TIME = 'dailySummaryNotificationTime', } @@ -47,23 +42,35 @@ export enum InactivityInterval { Min_30 = 1800, } -export enum RangeForDays { - Days_2 = 'days2', - Days_3 = 'days3', - Days_4 = 'days4', - Days_5 = 'days5', - Days_6 = 'days6', - Days_7 = 'days7', - Month_1 = 'month1', - Month_2 = 'month2', - Month_3 = 'month3', -} - export const NOTIFICATION_MESSAGE_DEFAULT = 'You have spent a lot of time on this site'; export const INTERVAL_INACTIVITY_DEFAULT = InactivityInterval.Seconds_30; export const INTERVAL_SAVE_STORAGE_DEFAULT = 5000; -export const INTERVAL_RANGE_DEFAULT = RangeForDays.Days_7; export const DARK_MODE_DEFAULT = false; export const VIEW_TIME_IN_BADGE_DEFAULT = true; export const BLOCK_DEFERRAL_DEFAULT = true; export const SHOW_HINT_DEFAULT = true; +// default time is 20:00, time in miliseconds +export const DAILY_SUMMARY_NOTIFICATION_TIME_DEFAULT = 20 * 60 * 60 * 1000; + +export function getDefaultValue(param: StorageParams) { + switch (param) { + case StorageParams.BLACK_LIST: + return []; + case StorageParams.RESTRICTION_LIST: + return []; + case StorageParams.NOTIFICATION_LIST: + return []; + case StorageParams.NOTIFICATION_MESSAGE: + return NOTIFICATION_MESSAGE_DEFAULT; + case StorageParams.INTERVAL_INACTIVITY: + return INTERVAL_INACTIVITY_DEFAULT; + case StorageParams.DARK_MODE: + return DARK_MODE_DEFAULT; + case StorageParams.VIEW_TIME_IN_BADGE: + return VIEW_TIME_IN_BADGE_DEFAULT; + case StorageParams.BLOCK_DEFERRAL: + return BLOCK_DEFERRAL_DEFAULT; + case StorageParams.DAILY_SUMMARY_NOTIFICATION_TIME: + return DAILY_SUMMARY_NOTIFICATION_TIME_DEFAULT; + } +} diff --git a/src/tracker.ts b/src/tracker.ts index 68fa7d4..7a771cd 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -4,12 +4,7 @@ import { extractHostname } from './compositions/extract-hostname'; import { injectTabsRepositorySingleton } from './repository/inject-tabs-repository'; import { isInBlackList } from './compositions/black-list'; import { useBadge } from './compositions/set-badge'; -import { - INTERVAL_INACTIVITY_DEFAULT, - INTERVAL_SAVE_STORAGE_DEFAULT, - StorageParams, - VIEW_TIME_IN_BADGE_DEFAULT, -} from './storage/storage-params'; +import { INTERVAL_SAVE_STORAGE_DEFAULT, StorageParams } from './storage/storage-params'; import { BadgeColor } from './compositions/set-badge'; import { injecStorage } from './storage/inject-storage'; import { addInterval, closeInterval } from './compositions/daily-intervals'; @@ -18,9 +13,9 @@ import { isLimitExceeded } from './compositions/limit-list'; import { Tab } from './entity/tab'; import { useBlockPage } from './compositions/block-page'; import { convertSummaryTimeToBadgeString } from './utils/converter'; +import { Settings } from './compositions/settings'; const activeTabInstance = ActiveTab.getInstance(); -const storage = injecStorage(); interface CurrentObj { tab: Tab; @@ -109,10 +104,7 @@ async function mainTracker( tab.incSummaryTime(); - const viewInBadge = (await storage.getValue( - StorageParams.VIEW_TIME_IN_BADGE, - VIEW_TIME_IN_BADGE_DEFAULT, - )) as boolean; + const viewInBadge = await Settings.getInstance().getSetting(StorageParams.VIEW_TIME_IN_BADGE); if (viewInBadge) useBadge({ @@ -130,10 +122,9 @@ async function mainTracker( } async function mainTrackerWrapper(activeTab: Browser.Tabs.Tab, activeDomain: string, tab: Tab) { - const inactivityInterval = (await storage.getValue( + const inactivityInterval = await Settings.getInstance().getSetting( StorageParams.INTERVAL_INACTIVITY, - INTERVAL_INACTIVITY_DEFAULT, - )) as number; + ); const state = await Browser.idle.queryState(inactivityInterval); await mainTracker(state, activeTab!, activeDomain, tab); } From c190df10633c08379247f2c4f1995ecf6cad84a7 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 10 Jun 2023 17:40:42 +0300 Subject: [PATCH 096/329] Chart by days --- src/components/ByDays.vue | 34 +++++++++++ src/components/ByDaysChart.vue | 87 ++++++++++++++++++++++++++++ src/compositions/tab-list-by-days.ts | 57 ++++++++++++++++++ src/dto/tabListSummary.ts | 12 ++++ src/pages/Popup.vue | 9 +-- 5 files changed, 195 insertions(+), 4 deletions(-) create mode 100644 src/components/ByDays.vue create mode 100644 src/components/ByDaysChart.vue create mode 100644 src/compositions/tab-list-by-days.ts diff --git a/src/components/ByDays.vue b/src/components/ByDays.vue new file mode 100644 index 0000000..9fbb1c6 --- /dev/null +++ b/src/components/ByDays.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/components/ByDaysChart.vue b/src/components/ByDaysChart.vue new file mode 100644 index 0000000..bd1f9df --- /dev/null +++ b/src/components/ByDaysChart.vue @@ -0,0 +1,87 @@ + + + + + + + diff --git a/src/compositions/tab-list-by-days.ts b/src/compositions/tab-list-by-days.ts new file mode 100644 index 0000000..b7d4a32 --- /dev/null +++ b/src/compositions/tab-list-by-days.ts @@ -0,0 +1,57 @@ +import { ActiveDay, DayTabs, TabListByDays } from '../dto/tabListSummary'; +import { Tab, TabDay } from '../entity/tab'; +import { injectTabsRepository } from '../repository/inject-tabs-repository'; +import { SortingBy } from '../utils/enums'; +import { daysBetween } from '../utils/time'; +import { todayLocalDate } from '../utils/today'; + +export async function useTabListByDays(dateFrom: Date, dateTo: Date): Promise { + const repo = await injectTabsRepository(); + const unSortedTabs = repo.getTabs(); + let daysTabs: DayTabs[] = []; + + const unSortedTabsByDays = unSortedTabs.filter( + x => x.days.find(s => new Date(s.date) >= dateFrom && new Date(s.date) <= dateTo) != undefined, + ); + + unSortedTabsByDays.forEach(tab => { + tab.days.forEach(day => { + if (new Date(day.date) >= dateFrom && new Date(day.date) <= dateTo) { + let dayTab = daysTabs.find(x => x.day == day.date); + if (dayTab == undefined) { + dayTab = { + day: day.date, + tabs: [], + time: day.summary, + }; + dayTab.tabs.push({ + favicon: tab.favicon, + url: tab.url, + sessions: day.counter, + summaryTime: day.summary, + summaryTimeForCurrent: day.summary, + }); + daysTabs.push(dayTab); + } else { + dayTab.time += day.summary; + dayTab.tabs.push({ + favicon: tab.favicon, + url: tab.url, + sessions: day.counter, + summaryTime: day.summary, + summaryTimeForCurrent: day.summary, + }); + } + } + }); + }); + + daysTabs = daysTabs.sort(function (a, b) { + return new Date(a.day).valueOf() - new Date(b.day).valueOf(); + }); + + return { + days: daysTabs, + summaryTime: 0, + }; +} diff --git a/src/dto/tabListSummary.ts b/src/dto/tabListSummary.ts index 47babcb..df058ac 100644 --- a/src/dto/tabListSummary.ts +++ b/src/dto/tabListSummary.ts @@ -1,4 +1,5 @@ import { Tab } from '../entity/tab'; +import { CurrentTabItem } from './currentTabItem'; export interface OverallStats extends TabListSummary { firstDay: Date; @@ -25,3 +26,14 @@ export interface DataForChart { timeForChart: number[]; sitesForChart: string[]; } + +export interface TabListByDays { + days: DayTabs[]; + summaryTime: number; +} + +export interface DayTabs { + day: string; + tabs: CurrentTabItem[]; + time: number; +} diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index 9bdb885..2d5c14b 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -40,18 +40,18 @@
-
+
-
+
-
-

Shipping

+
+
@@ -61,6 +61,7 @@ import { onMounted, ref } from 'vue'; import Browser from 'webextension-polyfill'; import TabList from '../components/TabList.vue'; +import ByDays from '../components/ByDays.vue'; import { TypeOfList } from '../utils/enums'; async function openSettings() { From 4f3c6392c5be867f1a8d9d2b3143aabc30e83bde Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 11 Jun 2023 14:19:00 +0100 Subject: [PATCH 097/329] Get the most day except today --- src/compositions/all-tab-list-summary.ts | 58 ++++++++++++++++++++---- src/dto/tabListSummary.ts | 2 + 2 files changed, 50 insertions(+), 10 deletions(-) diff --git a/src/compositions/all-tab-list-summary.ts b/src/compositions/all-tab-list-summary.ts index 10c1579..45be73f 100644 --- a/src/compositions/all-tab-list-summary.ts +++ b/src/compositions/all-tab-list-summary.ts @@ -43,6 +43,8 @@ export async function useAllTabListSummary(sortingBy: SortingBy): Promise x.date != todayLocalDate()) + .sort(function (a, b) { + return new Date(a.date).valueOf() - new Date(b.date).valueOf(); + }); + + const sortedByTimeDaysWithoutToday = daysWithoutToday.sort(function (a, b) { + return a.summary - b.summary; + }); + + const mostActiveDayExceptToday = sortedByTimeDaysWithoutToday[0]; + const mostActiveDayObjExceptToday = fillMostDay(mostActiveDayExceptToday); + + const mostInactiveDayExceptToday = + sortedByTimeDaysWithoutToday[sortedByTimeDaysWithoutToday.length - 1]; + const mostInactiveDayObjExceptToday = fillMostDay(mostInactiveDayExceptToday); + + return { + mostActiveDayObjExceptToday, + mostInactiveDayObjExceptToday, + }; +} + +function fillMostList(days: TabDay[]) { + const sortedByTimeDays = days.sort(function (a, b) { + return a.summary - b.summary; + }); + + const mostActiveDay = sortedByTimeDays[0]; + const mostActiveDayObj = fillMostDay(mostActiveDay); + + const mostInactiveDay = sortedByTimeDays[sortedByTimeDays.length - 1]; + const mostInactiveDayObj = fillMostDay(mostInactiveDay); + + return { + mostActiveDayObj, + mostInactiveDayObj, + }; +} diff --git a/src/dto/tabListSummary.ts b/src/dto/tabListSummary.ts index df058ac..0763b45 100644 --- a/src/dto/tabListSummary.ts +++ b/src/dto/tabListSummary.ts @@ -9,6 +9,8 @@ export interface OverallStats extends TabListSummary { averageTimeByActiveDays: number; mostActiveDay: ActiveDay; mostInactiveDay: ActiveDay; + mostActiveDayExceptToday: ActiveDay; + mostInactiveDayExceptToday: ActiveDay; } export interface ActiveDay { From e9fd648bccc5da9def47354a01cb0334af084932 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 11 Jun 2023 17:45:00 +0100 Subject: [PATCH 098/329] Get average time by days --- src/components/ByDays.vue | 35 ++++++++++++++++++++++++++-- src/compositions/tab-list-by-days.ts | 17 +++++++++----- src/dto/tabListSummary.ts | 1 + 3 files changed, 45 insertions(+), 8 deletions(-) diff --git a/src/components/ByDays.vue b/src/components/ByDays.vue index 9fbb1c6..288567a 100644 --- a/src/components/ByDays.vue +++ b/src/components/ByDays.vue @@ -1,8 +1,13 @@ @@ -17,6 +22,7 @@ import { computed, onMounted, ref } from 'vue'; import ByDaysChart from '../components/ByDaysChart.vue'; import { TabListByDays } from '../dto/tabListSummary'; import { useTabListByDays } from '../compositions/tab-list-by-days'; +import { convertSummaryTimeToString } from '../utils/converter'; const tabsByDays = ref(); @@ -25,10 +31,35 @@ const countOfDays = computed(() => ); async function loadList() { - tabsByDays.value = await useTabListByDays(new Date('06/01/2023'), new Date('06/10/2023')); + tabsByDays.value = await useTabListByDays(new Date('06/01/2023'), new Date('06/14/2023')); } onMounted(async () => { await loadList(); }); + + diff --git a/src/compositions/tab-list-by-days.ts b/src/compositions/tab-list-by-days.ts index b7d4a32..34d45a8 100644 --- a/src/compositions/tab-list-by-days.ts +++ b/src/compositions/tab-list-by-days.ts @@ -1,9 +1,5 @@ -import { ActiveDay, DayTabs, TabListByDays } from '../dto/tabListSummary'; -import { Tab, TabDay } from '../entity/tab'; +import { DayTabs, TabListByDays } from '../dto/tabListSummary'; import { injectTabsRepository } from '../repository/inject-tabs-repository'; -import { SortingBy } from '../utils/enums'; -import { daysBetween } from '../utils/time'; -import { todayLocalDate } from '../utils/today'; export async function useTabListByDays(dateFrom: Date, dateTo: Date): Promise { const repo = await injectTabsRepository(); @@ -50,8 +46,17 @@ export async function useTabListByDays(dateFrom: Date, dateTo: Date): Promise x.time) + .reduce(function (a, b) { + return a + b; + }); + + const averageTime = Math.round(summaryTime / daysTabs.length); + return { days: daysTabs, - summaryTime: 0, + summaryTime: summaryTime, + averageTime: averageTime, }; } diff --git a/src/dto/tabListSummary.ts b/src/dto/tabListSummary.ts index 0763b45..99951e9 100644 --- a/src/dto/tabListSummary.ts +++ b/src/dto/tabListSummary.ts @@ -31,6 +31,7 @@ export interface DataForChart { export interface TabListByDays { days: DayTabs[]; + averageTime: number; summaryTime: number; } From 79fc9f1966a68717d8a8ae8df218eb1535465b67 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 12 Jun 2023 11:45:00 +0100 Subject: [PATCH 099/329] List of tabs for days --- src/components/ByDays.vue | 19 ++++- src/components/Expander.vue | 108 +++++++++++++++++++++++++++ src/components/TabItem.vue | 9 +-- src/components/TabList.vue | 16 ++-- src/compositions/tab-list-by-days.ts | 9 ++- src/dto/currentTabItem.ts | 1 - 6 files changed, 145 insertions(+), 17 deletions(-) create mode 100644 src/components/Expander.vue diff --git a/src/components/ByDays.vue b/src/components/ByDays.vue index 288567a..ef99f1a 100644 --- a/src/components/ByDays.vue +++ b/src/components/ByDays.vue @@ -6,8 +6,21 @@

{{ convertSummaryTimeToString(tabsByDays.averageTime) }}

-
- +
+ + + +
@@ -19,7 +32,9 @@ export default { + + + + diff --git a/src/components/TabItem.vue b/src/components/TabItem.vue index 42cd75c..b2b58b2 100644 --- a/src/components/TabItem.vue +++ b/src/components/TabItem.vue @@ -38,6 +38,7 @@ import { CurrentTabItem } from '../dto/currentTabItem'; const props = defineProps<{ item: CurrentTabItem; + summaryTimeForWholeDay: number; }>(); enum TypeOfUrl { @@ -61,12 +62,8 @@ const sessions = computed(() => { if (props.item.sessions == 1) return `${props.item.sessions} session`; }); -const summaryTimeForTab = computed(() => - convertSummaryTimeToString(props.item.summaryTimeForCurrent), -); -const percent = computed(() => - getPercentage(props.item.summaryTimeForCurrent, props.item.summaryTime), -); +const summaryTimeForTab = computed(() => convertSummaryTimeToString(props.item.summaryTime)); +const percent = computed(() => getPercentage(props.item.summaryTime, props.summaryTimeForWholeDay)); const styleForProgressBar = computed(() => `width: ${percent.value}%`); diff --git a/src/components/TabList.vue b/src/components/TabList.vue index 4b3a545..5be8ffa 100644 --- a/src/components/TabList.vue +++ b/src/components/TabList.vue @@ -12,7 +12,12 @@ @sortingBy="sorting" /> - + @@ -86,17 +91,16 @@ async function sorting(sortingBy: SortingBy) { function getItem(tab: Tab): CurrentTabItem { return { - summaryTime: summaryTime.value!, + summaryTime: + props.type == TypeOfList.Today + ? tab.days.find(day => day.date === todayLocalDate())!.summary + : tab.summaryTime, favicon: tab.favicon, url: tab.url, sessions: props.type == TypeOfList.Today ? tab.days.find(day => day.date === todayLocalDate())!.counter : tab.counter, - summaryTimeForCurrent: - props.type == TypeOfList.Today - ? tab.days.find(day => day.date === todayLocalDate())!.summary - : tab.summaryTime, }; } diff --git a/src/compositions/tab-list-by-days.ts b/src/compositions/tab-list-by-days.ts index 34d45a8..48e61bd 100644 --- a/src/compositions/tab-list-by-days.ts +++ b/src/compositions/tab-list-by-days.ts @@ -1,3 +1,4 @@ +import { CurrentTabItem } from '../dto/currentTabItem'; import { DayTabs, TabListByDays } from '../dto/tabListSummary'; import { injectTabsRepository } from '../repository/inject-tabs-repository'; @@ -25,7 +26,6 @@ export async function useTabListByDays(dateFrom: Date, dateTo: Date): Promise { + dayTab.tabs = dayTab.tabs.sort(function (a: CurrentTabItem, b: CurrentTabItem) { + return b.summaryTime - a.summaryTime; + }); + }); + const summaryTime = daysTabs .map(x => x.time) .reduce(function (a, b) { diff --git a/src/dto/currentTabItem.ts b/src/dto/currentTabItem.ts index bd58f0c..eeed770 100644 --- a/src/dto/currentTabItem.ts +++ b/src/dto/currentTabItem.ts @@ -1,7 +1,6 @@ export interface CurrentTabItem { url: string; favicon: string | undefined; - summaryTimeForCurrent: number; summaryTime: number; sessions: number; } From a1e66df5971543e1599f20dd7ad2ab1085b44958 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 12 Jun 2023 15:45:00 +0100 Subject: [PATCH 100/329] Fix error after test migration data from old version --- src/assets/css/general.css | 4 ++-- src/components/ByDaysChart.vue | 4 +--- src/components/Favicon.vue | 22 ++++++++++------------ src/components/TabItem.vue | 2 +- src/compositions/tab-list-by-days.ts | 4 ++-- 5 files changed, 16 insertions(+), 20 deletions(-) diff --git a/src/assets/css/general.css b/src/assets/css/general.css index 6335bcb..135ecbe 100644 --- a/src/assets/css/general.css +++ b/src/assets/css/general.css @@ -36,6 +36,6 @@ select{ .w-100{ width: 100%; } -.w-85{ - width: 85%; +.w-80{ + width: 80%; } \ No newline at end of file diff --git a/src/components/ByDaysChart.vue b/src/components/ByDaysChart.vue index bd1f9df..e92db6c 100644 --- a/src/components/ByDaysChart.vue +++ b/src/components/ByDaysChart.vue @@ -31,8 +31,7 @@ const props = defineProps<{ ChartJS.register(CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend); const labelsForChart = props.data.days.map(x => x.day); const dataForChart = props.data.days.map(x => x.time); -const maxTimeValue = dataForChart.sort((a, b) => b - a)[0]; -const tickStep = Math.round(maxTimeValue / 5 / 60) * 60; +const tickStep = Math.round(dataForChart[0] / 5 / 600) * 600; const data = { labels: labelsForChart, @@ -65,7 +64,6 @@ const options = { scales: { y: { ticks: { - max: maxTimeValue / 60, stepSize: tickStep, callback: function (value: any, index: number, ticks: number) { return convertSummaryTimeToString(value); diff --git a/src/components/Favicon.vue b/src/components/Favicon.vue index 64de406..38132ce 100644 --- a/src/components/Favicon.vue +++ b/src/components/Favicon.vue @@ -1,16 +1,6 @@ From f1699914e6d5de18cc04852b9d351695ea56ce0e Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 Jun 2023 20:57:23 +0300 Subject: [PATCH 102/329] Preloader for tab list and by days --- src/assets/css/main.css | 1 + src/assets/icons/preloader.gif | Bin 0 -> 20410 bytes src/assets/icons/preloader.svg | 1 - src/components/ByDays.vue | 48 ++++++++++++++++++------------- src/components/TabList.vue | 51 +++++++++++++++++++-------------- 5 files changed, 59 insertions(+), 42 deletions(-) create mode 100644 src/assets/icons/preloader.gif delete mode 100644 src/assets/icons/preloader.svg diff --git a/src/assets/css/main.css b/src/assets/css/main.css index 97e5004..81fb695 100644 --- a/src/assets/css/main.css +++ b/src/assets/css/main.css @@ -28,6 +28,7 @@ body { text-align: center; font-size: 16px; font-weight: 600; + margin-top: 30%; } .tabs { } diff --git a/src/assets/icons/preloader.gif b/src/assets/icons/preloader.gif new file mode 100644 index 0000000000000000000000000000000000000000..32ac2b463bc9e29563eb5ac69da257fe8cdb2bfd GIT binary patch literal 20410 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 literal 0 HcmV?d00001 diff --git a/src/assets/icons/preloader.svg b/src/assets/icons/preloader.svg deleted file mode 100644 index cdd962e..0000000 --- a/src/assets/icons/preloader.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/components/ByDays.vue b/src/components/ByDays.vue index ef99f1a..3ed4f53 100644 --- a/src/components/ByDays.vue +++ b/src/components/ByDays.vue @@ -1,25 +1,30 @@ @@ -40,16 +45,19 @@ import { useTabListByDays } from '../compositions/tab-list-by-days'; import { convertSummaryTimeToString } from '../utils/converter'; const tabsByDays = ref(); +const isLoading = ref(); const countOfDays = computed(() => tabsByDays.value != undefined ? tabsByDays.value.days.length : 0, ); async function loadList() { - tabsByDays.value = await useTabListByDays(new Date('06/01/2023'), new Date('06/14/2023')); + tabsByDays.value = await useTabListByDays(new Date('06/03/2023'), new Date('06/14/2023')); + isLoading.value = false; } onMounted(async () => { + isLoading.value = true; await loadList(); }); diff --git a/src/components/TabList.vue b/src/components/TabList.vue index 55cf87e..6bd7f49 100644 --- a/src/components/TabList.vue +++ b/src/components/TabList.vue @@ -1,26 +1,31 @@ @@ -64,6 +69,7 @@ const firstDay = ref(); const countOfActiveDays = ref(); const countOfSites = computed(() => (tabs.value != undefined ? tabs.value.length : 0)); +const isLoading = ref(); const showOnlyFirst100Items = ref(); @@ -94,6 +100,8 @@ async function loadList(sortingBy: SortingBy) { tabs.value = tabSummary.tabs.slice(0, 100); } else showOnlyFirst100Items.value = false; } + + isLoading.value = false; } async function sorting(sortingBy: SortingBy) { @@ -123,6 +131,7 @@ function getItem(tab: Tab): CurrentTabItem { } onMounted(async () => { + isLoading.value = true; await loadList(SortingBy.UsageTime); }); From 02d5f276c02901e7f30fedf6545defed775592c1 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 15 Jun 2023 07:45:00 +0100 Subject: [PATCH 103/329] Set goodbye page after uninstall --- src/background.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/background.ts b/src/background.ts index a7c3c8b..5d9fb86 100644 --- a/src/background.ts +++ b/src/background.ts @@ -18,5 +18,6 @@ Browser.storage.onChanged.addListener((changes, namespace) => { } }); +Browser.runtime.setUninstallURL('https://webtracker.online/goodbye.html'); scheduleJobs(); initTracker(); From c74eb0233579506b01fdfb1638c769460e662ea3 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 16 Jun 2023 11:45:07 +0300 Subject: [PATCH 104/329] Fix initial for empty data --- src/components/ByDays.vue | 14 ++++++++++-- src/components/TabList.vue | 9 +++++--- src/compositions/all-tab-list-summary.ts | 12 +++++++---- src/compositions/tab-list-by-days.ts | 14 +++++++++++- src/compositions/today-tab-list-summary.ts | 4 +++- src/dto/tabListSummary.ts | 4 ++-- src/pages/Settings.vue | 25 +++++++++++++++++----- 7 files changed, 64 insertions(+), 18 deletions(-) diff --git a/src/components/ByDays.vue b/src/components/ByDays.vue index 3ed4f53..f34d44f 100644 --- a/src/components/ByDays.vue +++ b/src/components/ByDays.vue @@ -3,7 +3,12 @@
-
No data
+
+ No data +
+
+
No data for selected period
+
Average time on selected days
@@ -46,13 +51,18 @@ import { convertSummaryTimeToString } from '../utils/converter'; const tabsByDays = ref(); const isLoading = ref(); +const noData = ref(); const countOfDays = computed(() => tabsByDays.value != undefined ? tabsByDays.value.days.length : 0, ); async function loadList() { - tabsByDays.value = await useTabListByDays(new Date('06/03/2023'), new Date('06/14/2023')); + const tabList = await useTabListByDays(new Date('06/03/2023'), new Date('06/14/2023')); + if (tabList != null) { + tabsByDays.value = tabList; + if (tabList.days.length == 0 && tabList.summaryTime == 0) noData.value = true; + } isLoading.value = false; } diff --git a/src/components/TabList.vue b/src/components/TabList.vue index 6bd7f49..9456a9e 100644 --- a/src/components/TabList.vue +++ b/src/components/TabList.vue @@ -83,9 +83,12 @@ async function loadList(sortingBy: SortingBy) { if (props.type == TypeOfList.Today) tabSummary = await useTodayTabListSummary(sortingBy); if (props.type == TypeOfList.All) { tabSummary = await useAllTabListSummary(sortingBy); - firstDay.value = tabSummary.firstDay; - countOfActiveDays.value = tabSummary.activeDaysTotal; - dataForOvarallStats.value = tabSummary; + + if (tabSummary != null) { + firstDay.value = tabSummary.firstDay; + countOfActiveDays.value = tabSummary.activeDaysTotal; + dataForOvarallStats.value = tabSummary; + } } if (tabSummary != null) { diff --git a/src/compositions/all-tab-list-summary.ts b/src/compositions/all-tab-list-summary.ts index 45be73f..cd0e404 100644 --- a/src/compositions/all-tab-list-summary.ts +++ b/src/compositions/all-tab-list-summary.ts @@ -5,12 +5,13 @@ import { SortingBy } from '../utils/enums'; import { daysBetween } from '../utils/time'; import { todayLocalDate } from '../utils/today'; -export async function useAllTabListSummary(sortingBy: SortingBy): Promise { +export async function useAllTabListSummary(sortingBy: SortingBy): Promise { const repo = await injectTabsRepository(); const unSortedTabs = repo.getTabs(); let tabs: Tab[] = []; - const todayTabs = unSortedTabs.filter(x => x.days.find(s => s.date === todayLocalDate())); + if (unSortedTabs.length == 0) return null; + const todayTabs = unSortedTabs?.filter(x => x.days.find(s => s.date === todayLocalDate())); const summaryTimeListForToday = todayTabs.map(function (tab) { return tab.days.find(day => day.date === todayLocalDate())!.summary; @@ -82,8 +83,10 @@ export async function useAllTabListSummary(sortingBy: SortingBy): Promise { +export async function useTabListByDays( + dateFrom: Date, + dateTo: Date, +): Promise { const repo = await injectTabsRepository(); const unSortedTabs = repo.getTabs(); let daysTabs: DayTabs[] = []; + if (unSortedTabs.length == 0) return null; + const unSortedTabsByDays = unSortedTabs.filter( x => x.days.find(s => new Date(s.date) >= dateFrom && new Date(s.date) <= dateTo) != undefined, ); + if (unSortedTabsByDays.length == 0) + return { + days: [], + averageTime: 0, + summaryTime: 0, + }; + unSortedTabsByDays.forEach(tab => { tab.days.forEach(day => { if (new Date(day.date) >= dateFrom && new Date(day.date) <= dateTo) { diff --git a/src/compositions/today-tab-list-summary.ts b/src/compositions/today-tab-list-summary.ts index 370aba4..3cb64f1 100644 --- a/src/compositions/today-tab-list-summary.ts +++ b/src/compositions/today-tab-list-summary.ts @@ -4,11 +4,13 @@ import { injectTabsRepository } from '../repository/inject-tabs-repository'; import { SortingBy } from '../utils/enums'; import { todayLocalDate } from '../utils/today'; -export async function useTodayTabListSummary(sortingBy: SortingBy): Promise { +export async function useTodayTabListSummary(sortingBy: SortingBy): Promise { const repo = await injectTabsRepository(); const unSortedTabs = repo.getTodayTabs(); let tabs: Tab[] = []; + if (unSortedTabs.length == 0) return null; + tabs = unSortedTabs.sort(function (a: Tab, b: Tab) { return sortingBy == SortingBy.UsageTime ? b.days.find(s => s.date === todayLocalDate())!.summary - diff --git a/src/dto/tabListSummary.ts b/src/dto/tabListSummary.ts index 99951e9..f68266b 100644 --- a/src/dto/tabListSummary.ts +++ b/src/dto/tabListSummary.ts @@ -9,8 +9,8 @@ export interface OverallStats extends TabListSummary { averageTimeByActiveDays: number; mostActiveDay: ActiveDay; mostInactiveDay: ActiveDay; - mostActiveDayExceptToday: ActiveDay; - mostInactiveDayExceptToday: ActiveDay; + mostActiveDayExceptToday: ActiveDay | null; + mostInactiveDayExceptToday: ActiveDay | null; } export interface ActiveDay { diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 5fdd3c5..9e3dd72 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -173,7 +173,13 @@ diff --git a/src/settings.ts b/src/settings.ts index 53aae2c..0ba46b5 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -1,4 +1,7 @@ import Settings from './pages/Settings.vue'; +import Notifications from '@kyvg/vue3-notification'; import { createApp } from 'vue'; -createApp(Settings).mount('body'); +const app = createApp(Settings); +app.use(Notifications); +app.mount('body'); From b4929790170643e7395ba66dfc1196c1f051d7d6 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 17 Jun 2011 11:00:00 +0100 Subject: [PATCH 106/329] Refact saving settings - remove dublicate saving --- src/pages/Settings.vue | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue index 069784f..5f6ed72 100644 --- a/src/pages/Settings.vue +++ b/src/pages/Settings.vue @@ -17,6 +17,7 @@ class="filled-in" id="viewTimeInBadge" v-model="viewTimeInBadge" + @change="onChange(StorageParams.VIEW_TIME_IN_BADGE, $event.target.checked)" /> Display time tracker in icon

@@ -31,6 +32,7 @@ class="filled-in" id="blockDeferral" v-model="allowDeferringBlock" + @change="onChange(StorageParams.BLOCK_DEFERRAL, $event.target.checked)" /> Allow deferring block for 5 minutes

@@ -40,7 +42,13 @@

@@ -50,7 +58,11 @@ >Stop tracking if there is no activity during:
- @@ -195,14 +207,8 @@ onMounted(async () => { whiteList.value = await settingsStorage.getValue(StorageParams.BLACK_LIST, []); }); -watchEffect(async () => await save(StorageParams.VIEW_TIME_IN_BADGE, viewTimeInBadge.value)); -watchEffect(async () => await save(StorageParams.INTERVAL_INACTIVITY, intervalInactivity.value)); -watchEffect(async () => await save(StorageParams.DARK_MODE, darkMode.value)); -watchEffect(async () => await save(StorageParams.BLOCK_DEFERRAL, allowDeferringBlock.value)); -watchEffect(async () => await save(StorageParams.BLACK_LIST, whiteList.value)); - async function save(storageParam: StorageParams, value: any) { - await settingsStorage.saveValue(storageParam, value); + if (value != undefined) await settingsStorage.saveValue(storageParam, value); } async function addWebsite() { @@ -216,8 +222,14 @@ async function addWebsite() { }); } else { whiteList.value?.push(newWebsiteForWhiteList.value!); + onChange(StorageParams.BLACK_LIST, whiteList.value); + newWebsiteForWhiteList.value = ''; } } + +function onChange(storageParam: StorageParams, value: any) { + save(storageParam, value); +} diff --git a/src/tracker.ts b/src/tracker.ts index 7a771cd..502ecf1 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -50,7 +50,7 @@ async function trackTime() { useBadge({ tabId: activeTab!.id!, text: 'n/a', - color: BadgeColor.red, + color: BadgeColor.green, }); } else { let tab = repo.getTab(activeDomain); From f50240846e029a5ef14817d7c71c10408ab8dfe3 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 17 Jun 2023 19:03:30 +0300 Subject: [PATCH 108/329] Load data by days - add datepicker --- package.json | 1 + pnpm-lock.yaml | 21 ++++++++++++ src/components/ByDays.vue | 40 ++++++++++++++++++++-- src/components/TabList.vue | 2 +- src/compositions/all-tab-list-summary.ts | 2 +- src/compositions/daily-intervals.ts | 2 +- src/compositions/limit-list.ts | 2 +- src/compositions/today-tab-list-summary.ts | 2 +- src/entity/tab.ts | 2 +- src/popup.ts | 6 +++- src/repository/tabs-repository.ts | 2 +- src/utils/date.ts | 30 ++++++++++++++++ src/utils/time.ts | 2 +- src/utils/today.ts | 9 ----- 14 files changed, 102 insertions(+), 21 deletions(-) create mode 100644 src/utils/date.ts delete mode 100644 src/utils/today.ts diff --git a/package.json b/package.json index 90a4898..fce09d6 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "@kyvg/vue3-notification": "^2.9.1", + "@vuepic/vue-datepicker": "^5.3.0", "chart.js": "^4.3.0", "date-fns": "^2.30.0", "vue": "^3.2.47", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1fb9f78..abdb9fc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,7 @@ specifiers: '@kyvg/vue3-notification': ^2.9.1 '@types/webextension-polyfill': ^0.10.0 '@vitejs/plugin-vue': ^4.0.0 + '@vuepic/vue-datepicker': ^5.3.0 chart.js: ^4.3.0 date-fns: ^2.30.0 typescript: ^5.0.4 @@ -16,6 +17,7 @@ specifiers: dependencies: '@kyvg/vue3-notification': 2.9.1_vue@3.2.47 + '@vuepic/vue-datepicker': 5.3.0_vue@3.2.47 chart.js: 4.3.0 date-fns: 2.30.0 vue: 3.2.47 @@ -584,6 +586,17 @@ packages: /@vue/shared/3.2.47: resolution: {integrity: sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==} + /@vuepic/vue-datepicker/5.3.0_vue@3.2.47: + resolution: {integrity: sha512-eW5LRa3mH5klbRaKedG96/KY4EZC7ns+Zs7A+4guRBL+dQQthd8HV0xyS9nkI7hjr1K5zU+FQ3TOdo/oX5r3og==} + engines: {node: '>=14'} + peerDependencies: + vue: '>=3.2.0' + dependencies: + date-fns: 2.30.0 + date-fns-tz: 1.3.8_date-fns@2.30.0 + vue: 3.2.47 + dev: false + /abort-controller/3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -1158,6 +1171,14 @@ packages: engines: {node: '>= 12'} dev: true + /date-fns-tz/1.3.8_date-fns@2.30.0: + resolution: {integrity: sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==} + peerDependencies: + date-fns: '>=2.0.0' + dependencies: + date-fns: 2.30.0 + dev: false + /date-fns/2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} diff --git a/src/components/ByDays.vue b/src/components/ByDays.vue index f77211e..c280eeb 100644 --- a/src/components/ByDays.vue +++ b/src/components/ByDays.vue @@ -10,6 +10,20 @@
No data for the selected period
+
+ + +
Average time on selected days

{{ convertSummaryTimeToString(tabsByDays.averageTime) }}

@@ -48,17 +62,21 @@ import Expander from '../components/Expander.vue'; import { TabListByDays } from '../dto/tabListSummary'; import { useTabListByDays } from '../compositions/tab-list-by-days'; import { convertSummaryTimeToString } from '../utils/converter'; +import { ranges, ThisWeekRange } from '../utils/date'; const tabsByDays = ref(); const isLoading = ref(); const noData = ref(); +const selectedDate = ref(); + +const presetRanges = ranges(); const countOfDays = computed(() => tabsByDays.value != undefined ? tabsByDays.value.days.length : 0, ); -async function loadList() { - const tabList = await useTabListByDays(new Date('06/03/2023'), new Date('06/14/2023')); +async function loadList(dateFrom: Date, dateTo: Date) { + const tabList = await useTabListByDays(dateFrom, dateTo); if (tabList != null) { tabsByDays.value = tabList; if (tabList.days.length == 0 && tabList.summaryTime == 0) noData.value = true; @@ -66,9 +84,19 @@ async function loadList() { isLoading.value = false; } +async function handleDate(modelData: Date[]) { + selectedDate.value = modelData; + const dateFrom = selectedDate.value?.[0] as Date; + const dateTo = selectedDate.value?.[1] as Date; + await loadList(dateFrom, dateTo); +} + onMounted(async () => { isLoading.value = true; - await loadList(); + selectedDate.value = ThisWeekRange; + const dateFrom = selectedDate.value?.[0] as Date; + const dateTo = selectedDate.value?.[1] as Date; + await loadList(dateFrom, dateTo); }); @@ -95,4 +123,10 @@ onMounted(async () => { font-size: 13px; color: rgb(59, 59, 59); } +.date-block { + margin: 0 20px 0 20px; +} +.date-picker { + width: 250px; +} diff --git a/src/components/TabList.vue b/src/components/TabList.vue index 9456a9e..16032d6 100644 --- a/src/components/TabList.vue +++ b/src/components/TabList.vue @@ -47,7 +47,7 @@ import { SortingBy, TypeOfList } from '../utils/enums'; import { useTodayTabListSummary } from '../compositions/today-tab-list-summary'; import { useAllTabListSummary } from '../compositions/all-tab-list-summary'; import { CurrentTabItem } from '../dto/currentTabItem'; -import { todayLocalDate } from '../utils/today'; +import { todayLocalDate } from '../utils/date'; import { OverallStats } from '../dto/tabListSummary'; const props = defineProps<{ diff --git a/src/compositions/all-tab-list-summary.ts b/src/compositions/all-tab-list-summary.ts index cd0e404..ee163f8 100644 --- a/src/compositions/all-tab-list-summary.ts +++ b/src/compositions/all-tab-list-summary.ts @@ -3,7 +3,7 @@ import { Tab, TabDay } from '../entity/tab'; import { injectTabsRepository } from '../repository/inject-tabs-repository'; import { SortingBy } from '../utils/enums'; import { daysBetween } from '../utils/time'; -import { todayLocalDate } from '../utils/today'; +import { todayLocalDate } from '../utils/date'; export async function useAllTabListSummary(sortingBy: SortingBy): Promise { const repo = await injectTabsRepository(); diff --git a/src/compositions/daily-intervals.ts b/src/compositions/daily-intervals.ts index cde40d3..3f58b22 100644 --- a/src/compositions/daily-intervals.ts +++ b/src/compositions/daily-intervals.ts @@ -1,7 +1,7 @@ import { TimeInterval } from '../entity/time-interval'; import { injecStorage } from '../storage/inject-storage'; import { StorageDeserializeParam, StorageParams } from '../storage/storage-params'; -import { todayLocalDate } from '../utils/today'; +import { todayLocalDate } from '../utils/date'; export async function closeInterval(domain: string | null): Promise { if (domain == null) return; diff --git a/src/compositions/limit-list.ts b/src/compositions/limit-list.ts index cbf62ce..c6f110f 100644 --- a/src/compositions/limit-list.ts +++ b/src/compositions/limit-list.ts @@ -1,7 +1,7 @@ import { Restriction } from '../entity/restriction'; import { Tab } from '../entity/tab'; import { StorageParams } from '../storage/storage-params'; -import { todayLocalDate } from '../utils/today'; +import { todayLocalDate } from '../utils/date'; import { Settings } from './settings'; export async function isLimitExceeded(url: string, tab: Tab): Promise { diff --git a/src/compositions/today-tab-list-summary.ts b/src/compositions/today-tab-list-summary.ts index 3cb64f1..fcd6afd 100644 --- a/src/compositions/today-tab-list-summary.ts +++ b/src/compositions/today-tab-list-summary.ts @@ -2,7 +2,7 @@ import { TabListSummary } from '../dto/tabListSummary'; import { Tab } from '../entity/tab'; import { injectTabsRepository } from '../repository/inject-tabs-repository'; import { SortingBy } from '../utils/enums'; -import { todayLocalDate } from '../utils/today'; +import { todayLocalDate } from '../utils/date'; export async function useTodayTabListSummary(sortingBy: SortingBy): Promise { const repo = await injectTabsRepository(); diff --git a/src/entity/tab.ts b/src/entity/tab.ts index 4e55146..9a2ea79 100644 --- a/src/entity/tab.ts +++ b/src/entity/tab.ts @@ -1,4 +1,4 @@ -import { todayLocalDate } from '../utils/today'; +import { todayLocalDate } from '../utils/date'; import { logger } from '../compositions/logger'; export class Tab implements ISerializable { diff --git a/src/popup.ts b/src/popup.ts index 9c09d56..58e737d 100644 --- a/src/popup.ts +++ b/src/popup.ts @@ -1,4 +1,8 @@ import Popup from './pages/Popup.vue'; +import VueDatePicker from '@vuepic/vue-datepicker'; +import '@vuepic/vue-datepicker/dist/main.css'; import { createApp } from 'vue'; -createApp(Popup).mount('body'); +const app = createApp(Popup); +app.component('VueDatePicker', VueDatePicker); +app.mount('body'); diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts index 1c93921..73b59f3 100644 --- a/src/repository/tabs-repository.ts +++ b/src/repository/tabs-repository.ts @@ -3,7 +3,7 @@ import { Tab } from '../entity/tab'; import { injecStorage } from '../storage/inject-storage'; import { isInBlackList } from '../compositions/black-list'; import { StorageDeserializeParam } from '../storage/storage-params'; -import { todayLocalDate } from '../utils/today'; +import { todayLocalDate } from '../utils/date'; export class TabsRepository implements ITabsRepository { private tabs: Tab[]; diff --git a/src/utils/date.ts b/src/utils/date.ts new file mode 100644 index 0000000..9c69dba --- /dev/null +++ b/src/utils/date.ts @@ -0,0 +1,30 @@ +import { endOfMonth, endOfWeek, startOfMonth, startOfWeek, subMonths } from 'date-fns'; +import startOfToday from 'date-fns/startOfToday'; + +export function todayLocalDate() { + return new Date().toLocaleDateString('en-US'); +} + +export function getToday(): number { + return startOfToday().getTime(); +} + +export const TodayRange = [new Date(), new Date()]; +export const ThisWeekRange = [startOfWeek(new Date()), endOfWeek(new Date())]; +export const ThisMonthRange = [startOfMonth(new Date()), endOfMonth(new Date())]; +export const LatMonthRange = [ + startOfMonth(subMonths(new Date(), 1)), + endOfMonth(subMonths(new Date(), 1)), +]; + +export function ranges() { + return [ + { label: 'Today', range: TodayRange }, + { label: 'This week', range: ThisWeekRange }, + { label: 'This month', range: ThisMonthRange }, + { + label: 'Last month', + range: LatMonthRange, + }, + ]; +} diff --git a/src/utils/time.ts b/src/utils/time.ts index 2073cc2..96ea67d 100644 --- a/src/utils/time.ts +++ b/src/utils/time.ts @@ -1,4 +1,4 @@ -import { getToday } from './today'; +import { getToday } from './date'; //Every day - 60 minutes * 24 hours export const DAY_MINUTES = 1440; diff --git a/src/utils/today.ts b/src/utils/today.ts deleted file mode 100644 index 9be75de..0000000 --- a/src/utils/today.ts +++ /dev/null @@ -1,9 +0,0 @@ -import startOfToday from 'date-fns/startOfToday'; - -export function todayLocalDate() { - return new Date().toLocaleDateString('en-US'); -} - -export function getToday(): number { - return startOfToday().getTime(); -} From 42bd301d92ceac089be4b9d7d2ff66f999cb9a6d Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 17 Jun 2023 19:10:35 +0300 Subject: [PATCH 109/329] Date selector if no data for selected range --- src/components/ByDays.vue | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/components/ByDays.vue b/src/components/ByDays.vue index c280eeb..91ac6e9 100644 --- a/src/components/ByDays.vue +++ b/src/components/ByDays.vue @@ -7,7 +7,21 @@ No data
-
No data for the selected period
+
+ No data for the selected period + + +
@@ -80,6 +94,7 @@ async function loadList(dateFrom: Date, dateTo: Date) { if (tabList != null) { tabsByDays.value = tabList; if (tabList.days.length == 0 && tabList.summaryTime == 0) noData.value = true; + else noData.value = false; } isLoading.value = false; } @@ -126,7 +141,14 @@ onMounted(async () => { .date-block { margin: 0 20px 0 20px; } -.date-picker { +.date-block .date-picker { + width: 250px; +} +.no-data .date-picker { + font-weight: normal; + text-align: center; width: 250px; + margin: auto; + margin-top: 15px; } From 2d03a8c710b91559baf3c3dcd387858c6ce8d705 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 17 Jun 2023 19:58:03 +0300 Subject: [PATCH 110/329] Export to csv from tabs by days --- src/assets/css/general.css | 27 +++++++++++++++++++++++++++ src/assets/css/settings.css | 28 ---------------------------- src/components/ByDays.vue | 18 +++++++++++++++++- src/compositions/loadFile.ts | 14 ++++++++++++++ src/compositions/toCsv.ts | 35 +++++++++++++++++++++++++++++++++++ 5 files changed, 93 insertions(+), 29 deletions(-) create mode 100644 src/compositions/loadFile.ts create mode 100644 src/compositions/toCsv.ts diff --git a/src/assets/css/general.css b/src/assets/css/general.css index 44d9edb..f5433b1 100644 --- a/src/assets/css/general.css +++ b/src/assets/css/general.css @@ -44,4 +44,31 @@ select{ } .w-80{ width: 80%; +} +input[type="button"]{ + background: #428bff; + color: #fff; + border-radius: 3px; + height: 35px; + line-height: 35px; + padding: 0 20px; + border: 0; + font-size: 14px; + font-weight: 500; + cursor: pointer; + min-width: 80px; + text-align: center; + width: 200px; +} + +input[type="button"]:hover { + background: #5c9dfe; + text-decoration: none; +} + + +input[type="button"][disabled]{ + border: 1px solid #999999; + background-color: #cccccc; + color: #666666; } \ No newline at end of file diff --git a/src/assets/css/settings.css b/src/assets/css/settings.css index d5cfe1b..2690bdb 100644 --- a/src/assets/css/settings.css +++ b/src/assets/css/settings.css @@ -185,34 +185,6 @@ label{ z-index: 0 } -input[type="button"]{ - background: #428bff; - color: #fff; - border-radius: 3px; - height: 35px; - line-height: 35px; - padding: 0 20px; - border: 0; - font-size: 14px; - font-weight: 500; - cursor: pointer; - min-width: 80px; - text-align: center; - width: 200px; -} - -input[type="button"]:hover { - background: #5c9dfe; - text-decoration: none; - } - - - input[type="button"][disabled]{ - border: 1px solid #999999; - background-color: #cccccc; - color: #666666; - } - .hidden{ display: none !important; } diff --git a/src/components/ByDays.vue b/src/components/ByDays.vue index 91ac6e9..17b9d4b 100644 --- a/src/components/ByDays.vue +++ b/src/components/ByDays.vue @@ -37,6 +37,7 @@ {{ label }} +
Average time on selected days
@@ -77,6 +78,8 @@ import { TabListByDays } from '../dto/tabListSummary'; import { useTabListByDays } from '../compositions/tab-list-by-days'; import { convertSummaryTimeToString } from '../utils/converter'; import { ranges, ThisWeekRange } from '../utils/date'; +import { useImportToCsvWithData } from '../compositions/toCsv'; +import { useFile, FileType } from '../compositions/loadFile'; const tabsByDays = ref(); const isLoading = ref(); @@ -113,6 +116,17 @@ onMounted(async () => { const dateTo = selectedDate.value?.[1] as Date; await loadList(dateFrom, dateTo); }); + +async function exportToCsv() { + const dateFrom = selectedDate.value?.[0] as Date; + const dateTo = selectedDate.value?.[1] as Date; + const csv = await useImportToCsvWithData(tabsByDays.value?.days); + useFile( + csv, + FileType.CSV, + `websites_${dateFrom.toLocaleDateString()}-${dateTo.toLocaleDateString()}.csv`, + ); +} diff --git a/src/settings.ts b/src/settings.ts index 0ba46b5..8ee7945 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -1,7 +1,10 @@ import Settings from './pages/Settings.vue'; import Notifications from '@kyvg/vue3-notification'; +import VueDatePicker from '@vuepic/vue-datepicker'; +import '@vuepic/vue-datepicker/dist/main.css'; import { createApp } from 'vue'; const app = createApp(Settings); app.use(Notifications); +app.component('VueDatePicker', VueDatePicker); app.mount('body'); From 2a5214979f29ac78c3ea195d072b62931a2f2f26 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 24 Jun 2011 21:01:00 +0100 Subject: [PATCH 112/329] Dashboard template --- .../css/{settings.css => dashboard.css} | 97 +++--- src/components/About.vue | 46 +++ src/components/GeneralSettings.vue | 179 ++++++++++ src/components/WhiteList.vue | 92 +++++ src/{settings.html => dashboard.html} | 6 +- src/{settings.ts => dashboard.ts} | 2 +- src/manifest.json | 2 +- src/pages/Dashboard.vue | 77 +++++ src/pages/Popup.vue | 29 +- src/pages/Settings.vue | 325 ------------------ 10 files changed, 465 insertions(+), 390 deletions(-) rename src/assets/css/{settings.css => dashboard.css} (84%) create mode 100644 src/components/About.vue create mode 100644 src/components/GeneralSettings.vue create mode 100644 src/components/WhiteList.vue rename src/{settings.html => dashboard.html} (63%) rename src/{settings.ts => dashboard.ts} (87%) create mode 100644 src/pages/Dashboard.vue delete mode 100644 src/pages/Settings.vue diff --git a/src/assets/css/settings.css b/src/assets/css/dashboard.css similarity index 84% rename from src/assets/css/settings.css rename to src/assets/css/dashboard.css index 2690bdb..ea29464 100644 --- a/src/assets/css/settings.css +++ b/src/assets/css/dashboard.css @@ -1,7 +1,8 @@ body { font-family: "Segoe UI", Tahoma, sans-serif !important; color: #262626; - background-color: rgb(255, 255, 255); + background-color: #eee; + margin: 0; } .container { @@ -257,57 +258,51 @@ label{ position: absolute; } - -/* Tabs */ - .tabs { - position: relative; - min-height: 500px; - clear: both; - margin: 25px 0; - } - .tab { - float: left; - clear: both; - width: 286px; - } - .tab > label { - padding: 10px; - margin-left: -1px; +.settings-tabs { +} +.settings-tab { + clear: both; + width: 286px; +} +.settings-tab label[name="tabName"] { + background: #eee; + padding: 5px 0 5px 35px; font-size: 16px; vertical-align: middle; - position: relative; - width: 100px; - height: 30px; + width: 250px; + height: 40px; display: table-cell; cursor: pointer; - } - .tab [type=radio]:not(:checked) ~ label:hover{ - background-color: #e4e4e4; - border-radius: 10px; - } - .tab [type=radio] { - display: none; - } - .content { - position: absolute; - top: 0; - left: 140px; - background: white; - right: 0; - bottom: 0; - padding: 10px 20px; - } - .content { - opacity: 0; - transition: all 0.6s ease; - } - [type=radio]:checked ~ label { - background: white; - border-bottom: 2px solid #6ebf5d; - z-index: 2; - } - [type=radio]:checked ~ label ~ .content { - opacity: 1; - transform: translateX(0); - z-index: 1; - } \ No newline at end of file +} +.settings-tab [type=radio] { + display: none; +} +.settings-content { + position: absolute; + top: 0; + left: 286px; + background: white; + right: 0; + bottom: 0; + padding: 50px; + border-left: 1px solid #ccc; + } +.settings-content span { + animation: 0.5s ease-out 0s 1 slideInFromTop; +} +[type=radio]:checked ~ label { + background: white; + border-bottom: 2px solid #8bc34a; + z-index: 2; +} +[type=radio]:checked ~ label ~ .settings-content { + z-index: 1; +} +.settings-item { + margin-bottom: 30px; +} +.url-list img { + vertical-align: middle; + margin-right: 10px; + cursor: pointer; +} \ No newline at end of file diff --git a/src/components/About.vue b/src/components/About.vue new file mode 100644 index 0000000..ecbf016 --- /dev/null +++ b/src/components/About.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/src/components/GeneralSettings.vue b/src/components/GeneralSettings.vue new file mode 100644 index 0000000..53d8c88 --- /dev/null +++ b/src/components/GeneralSettings.vue @@ -0,0 +1,179 @@ + + + + + + + diff --git a/src/components/WhiteList.vue b/src/components/WhiteList.vue new file mode 100644 index 0000000..ee3c84c --- /dev/null +++ b/src/components/WhiteList.vue @@ -0,0 +1,92 @@ + + + + + + + diff --git a/src/settings.html b/src/dashboard.html similarity index 63% rename from src/settings.html rename to src/dashboard.html index c1bfd1b..1bd0d52 100644 --- a/src/settings.html +++ b/src/dashboard.html @@ -4,13 +4,13 @@ - Web Activity Time Tracker - Settings + Web Activity Time Tracker - Dashboard - + - + diff --git a/src/settings.ts b/src/dashboard.ts similarity index 87% rename from src/settings.ts rename to src/dashboard.ts index 8ee7945..ba7d32b 100644 --- a/src/settings.ts +++ b/src/dashboard.ts @@ -1,4 +1,4 @@ -import Settings from './pages/Settings.vue'; +import Settings from './pages/Dashboard.vue'; import Notifications from '@kyvg/vue3-notification'; import VueDatePicker from '@vuepic/vue-datepicker'; import '@vuepic/vue-datepicker/dist/main.css'; diff --git a/src/manifest.json b/src/manifest.json index 24ec1de..3e5e8ba 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -4,7 +4,7 @@ "short_name": "Web Tracker", "version": "2.0.0", "description": "Track and limit time your activity in the browser every day. Control how much time you spend on websites.", - "options_page": "src/settings.html", + "options_page": "src/dashboard.html", "icons": { "16": "16x16.png", "32": "32x32.png", diff --git a/src/pages/Dashboard.vue b/src/pages/Dashboard.vue new file mode 100644 index 0000000..8346411 --- /dev/null +++ b/src/pages/Dashboard.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index 2d5c14b..4ea4d8e 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -1,9 +1,12 @@ @@ -44,8 +51,11 @@ import { DAILY_NOTIFICATION_DEFAULT, DAILY_SUMMARY_NOTIFICATION_TIME_DEFAULT, } from '../storage/storage-params'; -import { convertHHMMToMilliSeconds, convertMilliSecondsToHHMM } from '../utils/converter'; +import { convertHHMMToSeconds, convertSecondsToHHMM } from '../utils/converter'; import { Time } from '../utils/time'; +import { rescheduleJobs } from '../jobs/sheduler'; +import ListWithTimeComponent from '../components/ListWithTime.vue'; +import { ListWithTime } from '../utils/enums'; const settingsStorage = injecStorage(); @@ -64,17 +74,18 @@ onMounted(async () => { DAILY_SUMMARY_NOTIFICATION_TIME_DEFAULT, )) as number; - const timeObj = convertMilliSecondsToHHMM(dailyNotificationTime.value); + const timeObj = convertSecondsToHHMM(dailyNotificationTime.value); notificationTime.value = timeObj; }); -function handleDate(modelData: Time) { +async function handleDate(modelData: Time) { if (modelData != null) { notificationTime.value = modelData; save( StorageParams.DAILY_SUMMARY_NOTIFICATION_TIME, - convertHHMMToMilliSeconds(notificationTime.value.hours, notificationTime.value.minutes), + convertHHMMToSeconds(notificationTime.value.hours, notificationTime.value.minutes), ); + await rescheduleJobs(); } } diff --git a/src/components/WhiteList.vue b/src/components/WhiteList.vue index ea3783e..0979dbd 100644 --- a/src/components/WhiteList.vue +++ b/src/components/WhiteList.vue @@ -12,7 +12,7 @@
@@ -85,4 +85,8 @@ async function save(value: any) { margin-bottom: 30px; display: block; } + +.custom-width { + width: 538px; +} diff --git a/src/entity/baseTimeList.ts b/src/entity/baseTimeList.ts new file mode 100644 index 0000000..42dfe28 --- /dev/null +++ b/src/entity/baseTimeList.ts @@ -0,0 +1,4 @@ +export interface BaseTimeList { + domain: string; + time: number; +} diff --git a/src/entity/deffering.ts b/src/entity/deffering.ts index a602ad7..0e58c8e 100644 --- a/src/entity/deffering.ts +++ b/src/entity/deffering.ts @@ -1,6 +1,7 @@ import { MINUTE } from '../utils/time'; +import { BaseTimeList } from './baseTimeList'; -export class Deffering { +export class Deffering implements BaseTimeList { domain: string; time: number; diff --git a/src/entity/notification.ts b/src/entity/notification.ts new file mode 100644 index 0000000..c3ab1d2 --- /dev/null +++ b/src/entity/notification.ts @@ -0,0 +1,12 @@ +import { convertHHMMToSeconds } from '../utils/converter'; +import { BaseTimeList } from './baseTimeList'; + +export class Notifications implements BaseTimeList { + domain: string; + time: number; + + constructor(domain: string, hours: number, minutes: number) { + this.domain = domain; + this.time = convertHHMMToSeconds(hours, minutes); + } +} diff --git a/src/jobs/sheduler.ts b/src/jobs/sheduler.ts index c170235..284b01f 100644 --- a/src/jobs/sheduler.ts +++ b/src/jobs/sheduler.ts @@ -32,7 +32,7 @@ export async function rescheduleJobs(): Promise { await Browser.alarms.clear(JobId.DailySummaryNotification); Browser.alarms.create(JobId.DailySummaryNotification, { when: getNextTimeOfDay(dailySummaryNotificationTime), - periodInMinutes: 1, + periodInMinutes: DAY_MINUTES, }); } diff --git a/src/utils/enums.ts b/src/utils/enums.ts index d42cf23..de0bd6e 100644 --- a/src/utils/enums.ts +++ b/src/utils/enums.ts @@ -17,6 +17,11 @@ export enum SettingsTab { About, } +export enum ListWithTime { + Limits, + Notifications, +} + export enum TypeOfUrl { WebSite, Document, From 952e5aa590e2e97726eec95d25a608d36eb56a69 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2023 10:39:30 +0300 Subject: [PATCH 127/329] Fix schedule time --- src/jobs/sheduler.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/jobs/sheduler.ts b/src/jobs/sheduler.ts index 284b01f..0639aa0 100644 --- a/src/jobs/sheduler.ts +++ b/src/jobs/sheduler.ts @@ -1,7 +1,7 @@ import Browser, { Alarms } from 'webextension-polyfill'; import { log } from '../compositions/logger'; import { StorageParams } from '../storage/storage-params'; -import { DAY_MINUTES, getNextTimeOfDay } from '../utils/time'; +import { DAY_MINUTES, SECOND, getNextTimeOfDay } from '../utils/time'; import { Settings } from '../compositions/settings'; import { dailySummaryNotification } from './daily-summary-notification'; @@ -31,7 +31,7 @@ export async function rescheduleJobs(): Promise { )) as number; await Browser.alarms.clear(JobId.DailySummaryNotification); Browser.alarms.create(JobId.DailySummaryNotification, { - when: getNextTimeOfDay(dailySummaryNotificationTime), + when: getNextTimeOfDay(dailySummaryNotificationTime * SECOND), periodInMinutes: DAY_MINUTES, }); } From 239486f7ee479cc802894ccb4951d4345743db35 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Jul 2023 10:40:17 +0300 Subject: [PATCH 128/329] Show notifications for websites --- src/components/Notifications.vue | 32 ++++++++++++++++++++- src/compositions/limit-list.ts | 1 + src/compositions/notification-list.ts | 40 ++++++++++++++++++++++++++ src/compositions/show-notification.ts | 21 ++++++++++++++ src/jobs/daily-summary-notification.ts | 17 ++--------- src/tracker.ts | 10 +++++++ 6 files changed, 105 insertions(+), 16 deletions(-) create mode 100644 src/compositions/notification-list.ts create mode 100644 src/compositions/show-notification.ts diff --git a/src/components/Notifications.vue b/src/components/Notifications.vue index c7f9873..b04d614 100644 --- a/src/components/Notifications.vue +++ b/src/components/Notifications.vue @@ -34,6 +34,23 @@

+
+ +

You will see this message in notification for websites every time

+ + +
@@ -46,7 +63,7 @@ export default { From 187e8ab8662f04d1ee80417dc2ee2bd2d0434562 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 12 Jul 2023 11:13:52 +0300 Subject: [PATCH 134/329] Change name and description extension in manifest --- src/manifest.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/manifest.json b/src/manifest.json index 3e5e8ba..2b814b4 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,9 +1,9 @@ { "manifest_version": 3, - "name": "Web Activity Time Tracker", + "name": "Web Activity Time Tracker - Web Analytics", "short_name": "Web Tracker", "version": "2.0.0", - "description": "Track and limit time your activity in the browser every day. Control how much time you spend on websites.", + "description": "Track, limit and block the time of your web activity. Monitor how much time you spend on websites and review your web analytics.", "options_page": "src/dashboard.html", "icons": { "16": "16x16.png", From 892005e56ebe962fe32dbfd57d87b81067cbfb86 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 12 Jul 2023 07:02:00 +0100 Subject: [PATCH 135/329] Base for localization --- package.json | 6 +- pnpm-lock.yaml | 417 ++++++++++++++++++++++++++++++++-- src/_locales/de/messages.json | 6 + src/_locales/en/messages.json | 12 + src/_locales/ru/messages.json | 12 + src/block.ts | 5 +- src/dashboard.ts | 2 + src/manifest.json | 5 +- src/plugins/i18n.ts | 17 ++ src/popup.ts | 2 + vite.config.ts | 5 + 11 files changed, 464 insertions(+), 25 deletions(-) create mode 100644 src/_locales/de/messages.json create mode 100644 src/_locales/en/messages.json create mode 100644 src/_locales/ru/messages.json create mode 100644 src/plugins/i18n.ts diff --git a/package.json b/package.json index 4c3e55b..44178cf 100644 --- a/package.json +++ b/package.json @@ -10,16 +10,18 @@ "script:zip": "powershell scripts/zip.ps1" }, "dependencies": { + "@intlify/unplugin-vue-i18n": "^0.12.2", "chart.js": "^4.3.0", "date-fns": "^2.30.0", "vue": "^3.2.47", - "vue-chartjs": "^5.2.0" + "vue-chartjs": "^5.2.0", + "vue-i18n": "^9.2.2" }, "devDependencies": { "@kyvg/vue3-notification": "^2.9.1", - "@vuepic/vue-datepicker": "^5.3.0", "@types/webextension-polyfill": "^0.10.0", "@vitejs/plugin-vue": "^4.0.0", + "@vuepic/vue-datepicker": "^5.3.0", "typescript": "^5.0.4", "vite": "^4.1.4", "vite-plugin-web-extension": "^3.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab0e1d0..daa4f3b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,6 +1,7 @@ lockfileVersion: 5.4 specifiers: + '@intlify/unplugin-vue-i18n': ^0.12.2 '@kyvg/vue3-notification': ^2.9.1 '@types/webextension-polyfill': ^0.10.0 '@vitejs/plugin-vue': ^4.0.0 @@ -12,14 +13,17 @@ specifiers: vite-plugin-web-extension: ^3.0.0 vue: ^3.2.47 vue-chartjs: ^5.2.0 + vue-i18n: ^9.2.2 vue-tsc: ^1.2.0 webextension-polyfill: ^0.10.0 dependencies: + '@intlify/unplugin-vue-i18n': 0.12.2_vue-i18n@9.2.2 chart.js: 4.3.0 date-fns: 2.30.0 vue: 3.2.47 vue-chartjs: 5.2.0_chart.js@4.3.0+vue@3.2.47 + vue-i18n: 9.2.2_vue@3.2.47 devDependencies: '@kyvg/vue3-notification': 2.9.1_vue@3.2.47 @@ -365,6 +369,119 @@ packages: resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true + /@intlify/bundle-utils/7.0.2_vue-i18n@9.2.2: + resolution: {integrity: sha512-8wbx9xhbawBFTE5LPTECiK26RRqrNS31jyWSur72ZXZZ4it5jiZTcG6eUJlNirr4+jXYio2DGY299JsGVT4cpw==} + engines: {node: '>= 14.16'} + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + dependencies: + '@intlify/message-compiler': 9.3.0-beta.24 + '@intlify/shared': 9.3.0-beta.24 + acorn: 8.8.2 + escodegen: 2.1.0 + estree-walker: 2.0.2 + jsonc-eslint-parser: 1.4.1 + magic-string: 0.30.1 + mlly: 1.4.0 + source-map-js: 1.0.2 + vue-i18n: 9.2.2_vue@3.2.47 + yaml-eslint-parser: 0.3.2 + dev: false + + /@intlify/core-base/9.2.2: + resolution: {integrity: sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==} + engines: {node: '>= 14'} + dependencies: + '@intlify/devtools-if': 9.2.2 + '@intlify/message-compiler': 9.2.2 + '@intlify/shared': 9.2.2 + '@intlify/vue-devtools': 9.2.2 + dev: false + + /@intlify/devtools-if/9.2.2: + resolution: {integrity: sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==} + engines: {node: '>= 14'} + dependencies: + '@intlify/shared': 9.2.2 + dev: false + + /@intlify/message-compiler/9.2.2: + resolution: {integrity: sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==} + engines: {node: '>= 14'} + dependencies: + '@intlify/shared': 9.2.2 + source-map: 0.6.1 + dev: false + + /@intlify/message-compiler/9.3.0-beta.24: + resolution: {integrity: sha512-prhHATkgp0mpPqoVgiAtLmUc1JMvs8fMH6w53AVEBn+VF87dLhzanfmWY5FoZWORG51ag54gBDBOoM/VFv3m3A==} + engines: {node: '>= 16'} + dependencies: + '@intlify/shared': 9.3.0-beta.24 + source-map-js: 1.0.2 + dev: false + + /@intlify/shared/9.2.2: + resolution: {integrity: sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==} + engines: {node: '>= 14'} + dev: false + + /@intlify/shared/9.3.0-beta.24: + resolution: {integrity: sha512-AKxJ8s7eKIQWkNaf4wyyoLRwf4puCuQgjSChlDJm5JBEt6T8HGgnYTJLRXu6LD/JACn3Qwu6hM/XRX1c9yvjmQ==} + engines: {node: '>= 16'} + dev: false + + /@intlify/unplugin-vue-i18n/0.12.2_vue-i18n@9.2.2: + resolution: {integrity: sha512-IIgzLRSPUKZM1FBdUAZ9NwVPiLUr4ea5g/HLWe2lB7gNtPDz4FOfUNUllIT504hT+3pDoJmjaYJ6pyqT7F4Wuw==} + engines: {node: '>= 14.16'} + peerDependencies: + petite-vue-i18n: '*' + vue-i18n: '*' + vue-i18n-bridge: '*' + peerDependenciesMeta: + petite-vue-i18n: + optional: true + vue-i18n: + optional: true + vue-i18n-bridge: + optional: true + dependencies: + '@intlify/bundle-utils': 7.0.2_vue-i18n@9.2.2 + '@intlify/shared': 9.3.0-beta.24 + '@rollup/pluginutils': 5.0.2 + '@vue/compiler-sfc': 3.2.47 + debug: 4.3.4 + fast-glob: 3.3.0 + js-yaml: 4.1.0 + json5: 2.2.3 + pathe: 1.1.1 + picocolors: 1.0.0 + source-map-js: 1.0.2 + unplugin: 1.3.2 + vue-i18n: 9.2.2_vue@3.2.47 + transitivePeerDependencies: + - rollup + - supports-color + dev: false + + /@intlify/vue-devtools/9.2.2: + resolution: {integrity: sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==} + engines: {node: '>= 14'} + dependencies: + '@intlify/core-base': 9.2.2 + '@intlify/shared': 9.2.2 + dev: false + + /@jridgewell/sourcemap-codec/1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: false + /@kurkle/color/0.3.2: resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==} dev: false @@ -387,12 +504,10 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true /@nodelib/fs.stat/2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true /@nodelib/fs.walk/1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -400,7 +515,6 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - dev: true /@pnpm/config.env-replace/1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -423,6 +537,20 @@ packages: config-chain: 1.1.13 dev: true + /@rollup/pluginutils/5.0.2: + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: false + /@sindresorhus/is/5.3.0: resolution: {integrity: sha512-CX6t4SYQ37lzxicAqsBtxA3OseeoVrh9cSJ5PFYam0GksYlupRfy1A+Q4aYD3zvcfECLc0zO2u+ZnR2UYKvCrw==} engines: {node: '>=14.16'} @@ -435,6 +563,10 @@ packages: defer-to-connect: 2.0.1 dev: true + /@types/estree/1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + dev: false + /@types/http-cache-semantics/4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} dev: true @@ -547,6 +679,10 @@ packages: '@vue/compiler-dom': 3.2.47 '@vue/shared': 3.2.47 + /@vue/devtools-api/6.5.0: + resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} + dev: false + /@vue/reactivity-transform/3.2.47: resolution: {integrity: sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==} dependencies: @@ -604,6 +740,14 @@ packages: event-target-shim: 5.0.1 dev: true + /acorn-jsx/5.3.2_acorn@7.4.1: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 7.4.1 + dev: false + /acorn-jsx/5.3.2_acorn@8.8.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -612,11 +756,22 @@ packages: acorn: 8.8.2 dev: true + /acorn/7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + + /acorn/8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: false + /acorn/8.8.2: resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==} engines: {node: '>=0.4.0'} hasBin: true - dev: true /addons-linter/5.32.0_node-fetch@3.3.1: resolution: {integrity: sha512-Lf6oOyw8X9z5BMd9xhQwSbPlN2PUlzDLnYLAVT5lkrgXEx0fO9hRk4JRxWZ8+rFGz+mCIA2TTClZF2f+MKgJQA==} @@ -755,9 +910,16 @@ packages: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} dev: true + /anymatch/3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: false + /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true /array-differ/4.0.0: resolution: {integrity: sha512-Q6VPTLMsmXZ47ENG3V+wQyZS1ZxXMxFyYzA+Z/GMrJ6yIutAIEf9wTyroTzmGjNfox9/h3GdGBCVh43GVFx4Uw==} @@ -824,6 +986,11 @@ packages: tweetnacl: 0.14.5 dev: true + /binary-extensions/2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: false + /bluebird/3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: true @@ -859,6 +1026,13 @@ packages: balanced-match: 1.0.2 dev: true + /braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: false + /buffer-crc32/0.2.13: resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} dev: true @@ -978,6 +1152,21 @@ packages: parse5-htmlparser2-tree-adapter: 7.0.0 dev: true + /chokidar/3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: false + /chrome-launcher/0.15.1: resolution: {integrity: sha512-UugC8u59/w2AyX5sHLZUHoxBAiSiunUhZa3zZwMH6zPVis0C3dDKiRWyUGIo14tTbZHGVviWxv3PQWZ7taZ4fg==} engines: {node: '>=12.13.0'} @@ -1214,7 +1403,6 @@ packages: optional: true dependencies: ms: 2.1.2 - dev: true /decamelize/6.0.0: resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} @@ -1420,6 +1608,18 @@ packages: engines: {node: '>=10'} dev: true + /escodegen/2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + dev: false + /eslint-plugin-no-unsanitized/4.0.2_eslint@8.36.0: resolution: {integrity: sha512-Pry0S9YmHoz8NCEMRQh7N0Yexh2MYCNPIlrV52hTmS7qXnTghWsjXouF08bgsrrZqaW9tt1ZiK3j5NEmPE+EjQ==} peerDependencies: @@ -1436,6 +1636,18 @@ packages: estraverse: 5.3.0 dev: true + /eslint-utils/2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: false + + /eslint-visitor-keys/1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: false + /eslint-visitor-keys/3.3.0: resolution: {integrity: sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1495,6 +1707,15 @@ packages: - supports-color dev: true + /espree/6.2.1: + resolution: {integrity: sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==} + engines: {node: '>=6.0.0'} + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2_acorn@7.4.1 + eslint-visitor-keys: 1.3.0 + dev: false + /espree/9.5.0: resolution: {integrity: sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -1517,7 +1738,6 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: true /esquery/1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} @@ -1536,7 +1756,6 @@ packages: /estraverse/5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - dev: true /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -1544,7 +1763,6 @@ packages: /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: true /event-target-shim/5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} @@ -1584,6 +1802,17 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true + /fast-glob/3.3.0: + resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: false + /fast-json-patch/3.1.1: resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} dev: true @@ -1605,7 +1834,6 @@ packages: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: reusify: 1.0.4 - dev: true /fd-slicer/1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -1628,6 +1856,13 @@ packages: flat-cache: 3.0.4 dev: true + /fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: false + /find-up/5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -1726,7 +1961,6 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: true optional: true /fx-runner/1.3.0: @@ -1764,6 +1998,13 @@ packages: assert-plus: 1.0.0 dev: true + /glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: false + /glob-parent/6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} @@ -2006,6 +2247,13 @@ packages: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} dev: true + /is-binary-path/2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: false + /is-buffer/1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: true @@ -2026,7 +2274,6 @@ packages: /is-extglob/2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true /is-fullwidth-code-point/3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -2038,7 +2285,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true /is-installed-globally/0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} @@ -2057,6 +2303,11 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true + /is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: false + /is-obj/2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} @@ -2134,7 +2385,6 @@ packages: hasBin: true dependencies: argparse: 2.0.1 - dev: true /jsbn/0.1.1: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} @@ -2178,7 +2428,21 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - dev: true + + /jsonc-eslint-parser/1.4.1: + resolution: {integrity: sha512-hXBrvsR1rdjmB2kQmUjf1rEIa+TqHBGMge8pwi++C+Si1ad7EjZrJcpgwym+QGK/pqTx+K7keFAtLlVNdLRJOg==} + engines: {node: '>=8.10.0'} + dependencies: + acorn: 7.4.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 1.3.0 + espree: 6.2.1 + semver: 6.3.1 + dev: false + + /jsonc-parser/3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: false /jsonfile/6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -2311,7 +2575,6 @@ packages: /lodash/4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true /lowercase-keys/3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} @@ -2335,6 +2598,13 @@ packages: dependencies: sourcemap-codec: 1.4.8 + /magic-string/0.30.1: + resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: false + /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} dev: true @@ -2371,6 +2641,19 @@ packages: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true + /merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: false + + /micromatch/4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: false + /mime-db/1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} @@ -2446,6 +2729,15 @@ packages: hasBin: true dev: true + /mlly/1.4.0: + resolution: {integrity: sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==} + dependencies: + acorn: 8.10.0 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.1.2 + dev: false + /moment/2.29.4: resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} requiresBuild: true @@ -2458,7 +2750,6 @@ packages: /ms/2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: true /ms/2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -2547,6 +2838,11 @@ packages: which: 2.0.2 dev: true + /normalize-path/3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: false + /normalize-url/8.0.0: resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} engines: {node: '>=14.16'} @@ -2722,6 +3018,10 @@ packages: minipass: 5.0.0 dev: true + /pathe/1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: false + /pend/1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true @@ -2733,6 +3033,11 @@ packages: /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: false + /pino-abstract-transport/1.0.0: resolution: {integrity: sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==} dependencies: @@ -2761,6 +3066,14 @@ packages: thread-stream: 2.3.0 dev: true + /pkg-types/1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.0 + pathe: 1.1.1 + dev: false + /postcss/8.4.21: resolution: {integrity: sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==} engines: {node: ^10 || ^12 || >=14} @@ -2837,7 +3150,6 @@ packages: /queue-microtask/1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true /queue/6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} @@ -2886,6 +3198,13 @@ packages: process: 0.11.10 dev: true + /readdirp/3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: false + /real-require/0.2.0: resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} engines: {node: '>= 12.13.0'} @@ -2973,7 +3292,6 @@ packages: /reusify/1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true /rimraf/2.4.5: resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} @@ -3002,7 +3320,6 @@ packages: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true /safe-buffer/5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -3038,6 +3355,11 @@ packages: semver: 7.5.0 dev: true + /semver/6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: false + /semver/7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} engines: {node: '>=10'} @@ -3310,6 +3632,13 @@ packages: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + /to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: false + /tosource/1.0.0: resolution: {integrity: sha512-N6g8eQ1eerw6Y1pBhdgkubWIiPFwXa2POSUrlL8jth5CyyEWNWzoGKRkO3CaO7Jx27hlJP54muB3btIAbx4MPg==} engines: {node: '>=0.4.0'} @@ -3376,6 +3705,10 @@ packages: hasBin: true dev: true + /ufo/1.1.2: + resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} + dev: false + /uhyphen/0.2.0: resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} dev: true @@ -3397,6 +3730,15 @@ packages: engines: {node: '>= 10.0.0'} dev: true + /unplugin/1.3.2: + resolution: {integrity: sha512-Lh7/2SryjXe/IyWqx9K7IKwuKhuOFZEhotiBquOODsv2IVyDkI9lv/XhgfjdXf/xdbv32txmnBNnC/JVTDJlsA==} + dependencies: + acorn: 8.10.0 + chokidar: 3.5.3 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.5.0 + dev: false + /upath/2.0.1: resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} engines: {node: '>=4'} @@ -3520,6 +3862,19 @@ packages: vue: 3.2.47 dev: false + /vue-i18n/9.2.2_vue@3.2.47: + resolution: {integrity: sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==} + engines: {node: '>= 14'} + peerDependencies: + vue: ^3.0.0 + dependencies: + '@intlify/core-base': 9.2.2 + '@intlify/shared': 9.2.2 + '@intlify/vue-devtools': 9.2.2 + '@vue/devtools-api': 6.5.0 + vue: 3.2.47 + dev: false + /vue-template-compiler/2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} dependencies: @@ -3617,6 +3972,15 @@ packages: resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} dev: true + /webpack-sources/3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + dev: false + + /webpack-virtual-modules/0.5.0: + resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} + dev: false + /when/3.7.7: resolution: {integrity: sha512-9lFZp/KHoqH6bPKjbWqa+3Dg/K/r2v0X/3/G2x4DBGchVS2QX2VXL3cZV994WQVnTM1/PD71Az25nAzryEUugw==} dev: true @@ -3724,6 +4088,19 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true + /yaml-eslint-parser/0.3.2: + resolution: {integrity: sha512-32kYO6kJUuZzqte82t4M/gB6/+11WAuHiEnK7FreMo20xsCKPeFH5tDBU7iWxR7zeJpNnMXfJyXwne48D0hGrg==} + dependencies: + eslint-visitor-keys: 1.3.0 + lodash: 4.17.21 + yaml: 1.10.2 + dev: false + + /yaml/1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: false + /yaml/2.2.2: resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==} engines: {node: '>= 14'} diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json new file mode 100644 index 0000000..680dbef --- /dev/null +++ b/src/_locales/de/messages.json @@ -0,0 +1,6 @@ +{ + "settings": "", + "today": "", + "allTime": "", + "byDays": "" +} \ No newline at end of file diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json new file mode 100644 index 0000000..0698d81 --- /dev/null +++ b/src/_locales/en/messages.json @@ -0,0 +1,12 @@ +{ + "extName": { + "message": "Web Activity Time Tracker - Web Analytics" + }, + "extDescription": { + "message": "Track, limit and block the time of your web activity. Monitor how much time you spend on websites and review your web analytics." + }, + "settings": "Settings", + "today": "Today", + "allTime": "All The Time", + "byDays": "By Days" +} \ No newline at end of file diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json new file mode 100644 index 0000000..820e2ed --- /dev/null +++ b/src/_locales/ru/messages.json @@ -0,0 +1,12 @@ +{ + "extName": { + "message": "Web Activity Time Tracker - Веб аналитика" + }, + "extDescription": { + "message": "Отслеживайте, ограничивайте и блокируйте время вашей веб-активности. Следите за тем, сколько времени вы проводите на сайтах." + }, + "settings": "Настройки", + "today": "Сегодня", + "allTime": "За все время", + "byDays": "По дням" +} \ No newline at end of file diff --git a/src/block.ts b/src/block.ts index e77b3ec..fd1c16d 100644 --- a/src/block.ts +++ b/src/block.ts @@ -1,4 +1,7 @@ import Block from './pages/Block.vue'; import { createApp } from 'vue'; +import i18n from './plugins/i18n'; -createApp(Block).mount('body'); +const app = createApp(Block); +app.use(i18n); +app.mount('body'); diff --git a/src/dashboard.ts b/src/dashboard.ts index ba7d32b..1d55780 100644 --- a/src/dashboard.ts +++ b/src/dashboard.ts @@ -3,8 +3,10 @@ import Notifications from '@kyvg/vue3-notification'; import VueDatePicker from '@vuepic/vue-datepicker'; import '@vuepic/vue-datepicker/dist/main.css'; import { createApp } from 'vue'; +import i18n from './plugins/i18n'; const app = createApp(Settings); app.use(Notifications); +app.use(i18n); app.component('VueDatePicker', VueDatePicker); app.mount('body'); diff --git a/src/manifest.json b/src/manifest.json index 2b814b4..81ccaf0 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,10 +1,11 @@ { "manifest_version": 3, - "name": "Web Activity Time Tracker - Web Analytics", + "name": "__MSG_extName__", "short_name": "Web Tracker", "version": "2.0.0", - "description": "Track, limit and block the time of your web activity. Monitor how much time you spend on websites and review your web analytics.", + "description": "__MSG_extDescription__", "options_page": "src/dashboard.html", + "default_locale": "en", "icons": { "16": "16x16.png", "32": "32x32.png", diff --git a/src/plugins/i18n.ts b/src/plugins/i18n.ts new file mode 100644 index 0000000..3c11ccb --- /dev/null +++ b/src/plugins/i18n.ts @@ -0,0 +1,17 @@ +import { createI18n } from 'vue-i18n'; +import en from '../_locales/en/messages.json'; +import ru from '../_locales/ru/messages.json'; +import de from '../_locales/de/messages.json'; + +const i18n = createI18n({ + legacy: false, + locale: import.meta.env.VITE_I18N_LOCALE || 'ru', + fallbackLocale: import.meta.env.VITE_I18N_FALLBACK_LOCALE || 'en', + messages: { + en, + ru, + de, + }, +}); + +export default i18n; diff --git a/src/popup.ts b/src/popup.ts index 58e737d..42ccbf5 100644 --- a/src/popup.ts +++ b/src/popup.ts @@ -2,7 +2,9 @@ import Popup from './pages/Popup.vue'; import VueDatePicker from '@vuepic/vue-datepicker'; import '@vuepic/vue-datepicker/dist/main.css'; import { createApp } from 'vue'; +import i18n from './plugins/i18n'; const app = createApp(Popup); app.component('VueDatePicker', VueDatePicker); +app.use(i18n); app.mount('body'); diff --git a/vite.config.ts b/vite.config.ts index ef8f7d8..eaab621 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,9 @@ import { defineConfig } from 'vite'; +import path from 'path'; import vue from '@vitejs/plugin-vue'; import webExtension, { readJsonFile } from 'vite-plugin-web-extension'; import pkg from './package.json'; +import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'; const APPID_CHROME = 'hhfnghjdeddcfegfekjeihfmbjenlomm'; @@ -45,6 +47,9 @@ export default defineConfig(({ mode }) => ({ }, plugins: [ vue(), + VueI18nPlugin({ + include: path.resolve(__dirname, '..', 'src/assets/_locales/*'), + }), webExtension({ manifest: generateManifest, watchFilePaths: ['package.json', 'manifest.json'], From e7f3c0e343c899684a0c00164b3a4a1765350207 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 12 Jul 2023 08:21:00 +0100 Subject: [PATCH 136/329] Copy locales to output folder --- package.json | 1 + pnpm-lock.yaml | 106 +++++++++++++++++++++++++++++----- src/_locales/de/messages.json | 6 -- src/plugins/i18n.ts | 2 - vite.config.ts | 4 ++ 5 files changed, 96 insertions(+), 23 deletions(-) delete mode 100644 src/_locales/de/messages.json diff --git a/package.json b/package.json index 44178cf..dc31a8b 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "@intlify/unplugin-vue-i18n": "^0.12.2", "chart.js": "^4.3.0", "date-fns": "^2.30.0", + "rollup-plugin-copy": "^3.4.0", "vue": "^3.2.47", "vue-chartjs": "^5.2.0", "vue-i18n": "^9.2.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index daa4f3b..9eb0e43 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,7 @@ specifiers: '@vuepic/vue-datepicker': ^5.3.0 chart.js: ^4.3.0 date-fns: ^2.30.0 + rollup-plugin-copy: ^3.4.0 typescript: ^5.0.4 vite: ^4.1.4 vite-plugin-web-extension: ^3.0.0 @@ -21,6 +22,7 @@ dependencies: '@intlify/unplugin-vue-i18n': 0.12.2_vue-i18n@9.2.2 chart.js: 4.3.0 date-fns: 2.30.0 + rollup-plugin-copy: 3.4.0 vue: 3.2.47 vue-chartjs: 5.2.0_chart.js@4.3.0+vue@3.2.47 vue-i18n: 9.2.2_vue@3.2.47 @@ -567,17 +569,28 @@ packages: resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} dev: false + /@types/fs-extra/8.1.2: + resolution: {integrity: sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==} + dependencies: + '@types/node': 18.16.3 + dev: false + + /@types/glob/7.2.0: + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + dependencies: + '@types/minimatch': 3.0.5 + '@types/node': 18.16.3 + dev: false + /@types/http-cache-semantics/4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} dev: true /@types/minimatch/3.0.5: resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} - dev: true /@types/node/18.16.3: resolution: {integrity: sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==} - dev: true /@types/webextension-polyfill/0.10.0: resolution: {integrity: sha512-If4EcaHzYTqcbNMp/FdReVdRmLL/Te42ivnJII551bYjhX19bWem5m14FERCqdJA732OloGuxCRvLBvcMGsn4A==} @@ -926,6 +939,11 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true + /array-union/2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: false + /array-union/3.0.1: resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==} engines: {node: '>=12'} @@ -974,7 +992,6 @@ packages: /balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: true /base64-js/1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1018,7 +1035,6 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true /brace-expansion/2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -1225,6 +1241,10 @@ packages: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} dev: true + /colorette/1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + dev: false + /columnify/1.6.0: resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==} engines: {node: '>=8.0.0'} @@ -1263,7 +1283,6 @@ packages: /concat-map/0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true /concat-stream/1.6.2: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} @@ -1457,6 +1476,13 @@ packages: engines: {node: '>=0.4.0'} dev: true + /dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: false + /doctrine/3.0.0: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} @@ -1942,6 +1968,15 @@ packages: universalify: 2.0.0 dev: true + /fs-extra/8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + dev: false + /fs-extra/9.0.1: resolution: {integrity: sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==} engines: {node: '>=10'} @@ -1954,7 +1989,6 @@ packages: /fs.realpath/1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: true /fsevents/2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} @@ -2036,7 +2070,6 @@ packages: minimatch: 3.1.2 once: 1.4.0 path-is-absolute: 1.0.1 - dev: true /glob/9.3.0: resolution: {integrity: sha512-EAZejC7JvnQINayvB/7BJbpZpNOJ8Lrw2OZNEvQxe0vaLn1SuwMcfV7/MNaX8L/T0wmptBFI4YMtDvSBxYDc7w==} @@ -2062,6 +2095,20 @@ packages: type-fest: 0.20.2 dev: true + /globby/10.0.1: + resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} + engines: {node: '>=8'} + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.0 + glob: 7.2.3 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: false + /got/12.6.0: resolution: {integrity: sha512-WTcaQ963xV97MN3x0/CbAriXFZcXCfgxVp91I+Ze6pawQOa7SgzwSx2zIJJsX+kTajMnVs0xcFD1TxZKFqhdnQ==} engines: {node: '>=14.16'} @@ -2085,7 +2132,6 @@ packages: /graceful-fs/4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: true /graceful-readlink/1.0.1: resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==} @@ -2179,7 +2225,6 @@ packages: /ignore/5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} - dev: true /image-size/1.0.2: resolution: {integrity: sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==} @@ -2216,11 +2261,9 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: true /inherits/2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: true /ini/1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} @@ -2318,6 +2361,11 @@ packages: engines: {node: '>=8'} dev: true + /is-plain-object/3.0.1: + resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} + engines: {node: '>=0.10.0'} + dev: false + /is-relative/0.1.3: resolution: {integrity: sha512-wBOr+rNM4gkAZqoLRJI4myw5WzzIdQosFAAbnvfXP5z1LyzgAI3ivOKehC5KfqlQJZoihVhirgtCBj378Eg8GA==} engines: {node: '>=0.10.0'} @@ -2444,6 +2492,12 @@ packages: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} dev: false + /jsonfile/4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + dev: false + /jsonfile/6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} dependencies: @@ -2685,7 +2739,6 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: true /minimatch/7.4.6: resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} @@ -2878,7 +2931,6 @@ packages: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: true /onetime/5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -3003,7 +3055,6 @@ packages: /path-is-absolute/1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} - dev: true /path-key/3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} @@ -3018,6 +3069,11 @@ packages: minipass: 5.0.0 dev: true + /path-type/4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: false + /pathe/1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} dev: false @@ -3308,6 +3364,17 @@ packages: glob: 7.2.3 dev: true + /rollup-plugin-copy/3.4.0: + resolution: {integrity: sha512-rGUmYYsYsceRJRqLVlE9FivJMxJ7X6jDlP79fmFkL8sJs7VVMSVyA2yfyL+PGyO/vJs4A87hwhgVfz61njI+uQ==} + engines: {node: '>=8.3'} + dependencies: + '@types/fs-extra': 8.1.2 + colorette: 1.4.0 + fs-extra: 8.1.0 + globby: 10.0.1 + is-plain-object: 3.0.1 + dev: false + /rollup/3.21.2: resolution: {integrity: sha512-c4vC+JZ3bbF4Kqq2TtM7zSKtSyMybFOjqmomFax3xpfYaPZDZ4iz8NMIuBRMjnXOcKYozw7bC6vhJjiWD6JpzQ==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} @@ -3427,6 +3494,11 @@ packages: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} dev: true + /slash/3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: false + /sonic-boom/3.3.0: resolution: {integrity: sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==} dependencies: @@ -3720,6 +3792,11 @@ packages: crypto-random-string: 4.0.0 dev: true + /universalify/0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + dev: false + /universalify/1.0.0: resolution: {integrity: sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==} engines: {node: '>= 10.0.0'} @@ -4037,7 +4114,6 @@ packages: /wrappy/1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: true /write-file-atomic/3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json deleted file mode 100644 index 680dbef..0000000 --- a/src/_locales/de/messages.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "settings": "", - "today": "", - "allTime": "", - "byDays": "" -} \ No newline at end of file diff --git a/src/plugins/i18n.ts b/src/plugins/i18n.ts index 3c11ccb..374fa1b 100644 --- a/src/plugins/i18n.ts +++ b/src/plugins/i18n.ts @@ -1,7 +1,6 @@ import { createI18n } from 'vue-i18n'; import en from '../_locales/en/messages.json'; import ru from '../_locales/ru/messages.json'; -import de from '../_locales/de/messages.json'; const i18n = createI18n({ legacy: false, @@ -10,7 +9,6 @@ const i18n = createI18n({ messages: { en, ru, - de, }, }); diff --git a/vite.config.ts b/vite.config.ts index eaab621..7ee76ab 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,6 +4,7 @@ import vue from '@vitejs/plugin-vue'; import webExtension, { readJsonFile } from 'vite-plugin-web-extension'; import pkg from './package.json'; import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'; +import copy from 'rollup-plugin-copy'; const APPID_CHROME = 'hhfnghjdeddcfegfekjeihfmbjenlomm'; @@ -55,6 +56,9 @@ export default defineConfig(({ mode }) => ({ watchFilePaths: ['package.json', 'manifest.json'], additionalInputs: ['src/block.html'], }), + copy({ + targets: [{ src: 'src/_locales', dest: 'dist' }], + }), ], optimizeDeps: { include: ['vue', 'webextension-polyfill'], From 923546235383dc46cd1908392d26b3ac4169a398 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 14 Jul 2023 11:32:43 +0300 Subject: [PATCH 137/329] Prepare localization --- src/_locales/en/messages.json | 16 ++++++++++++---- src/_locales/ru/messages.json | 18 +++++++++++++----- src/pages/Popup.vue | 19 +++++++++++++++---- 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 0698d81..687b9aa 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -5,8 +5,16 @@ "extDescription": { "message": "Track, limit and block the time of your web activity. Monitor how much time you spend on websites and review your web analytics." }, - "settings": "Settings", - "today": "Today", - "allTime": "All The Time", - "byDays": "By Days" + "settings": { + "message": "Settings" + }, + "today": { + "message": "Today" + }, + "allTime": { + "message": "All The Time" + }, + "byDays": { + "message": "By Days" + } } \ No newline at end of file diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index 820e2ed..8b3c0be 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -1,12 +1,20 @@ { "extName": { - "message": "Web Activity Time Tracker - Веб аналитика" + "message": "Web Activity Time Tracker - \u0412\u0435\u0431 аналитика" }, "extDescription": { "message": "Отслеживайте, ограничивайте и блокируйте время вашей веб-активности. Следите за тем, сколько времени вы проводите на сайтах." }, - "settings": "Настройки", - "today": "Сегодня", - "allTime": "За все время", - "byDays": "По дням" + "settings": { + "message": "Настройки" + }, + "today": { + "message": "Сегодня" + }, + "allTime": { + "message": "\u0417\u0430 все время" + }, + "byDays": { + "message": "По дням" + } } \ No newline at end of file diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index 983ed63..77df4c6 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -6,7 +6,9 @@
@@ -31,13 +33,19 @@ />
  • - +
  • - +
  • - +
@@ -62,11 +70,14 @@ + + diff --git a/src/tracker.ts b/src/tracker.ts index a3dbd10..29d3d62 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -91,7 +91,13 @@ async function mainTracker( const limitExceeded = await isLimitExceeded(activeDomain, tab); if (limitExceeded.IsLimitExceeded) { const summaryCounter = tab.days.at(-1)!.counter; - await useBlockPage(activeDomain, activeTab.url!, limitExceeded.LimitTime!, summaryCounter); + await useBlockPage( + activeDomain, + activeTab.url!, + limitExceeded.LimitTime!, + summaryCounter, + activeTab.favIconUrl, + ); return; } diff --git a/src/utils/block-page.ts b/src/utils/block-page.ts index 0888365..2d7f6ff 100644 --- a/src/utils/block-page.ts +++ b/src/utils/block-page.ts @@ -3,6 +3,7 @@ export enum BlockParams { URL = 'url', LimitTime = 'summaryTime', SummaryCounter = 'summaryCounter', + Favicon = 'favicon', } export function buildBlockQuery( @@ -10,14 +11,16 @@ export function buildBlockQuery( url: string, liimitTime: number, summaryCounter: number, + favicon: string, ) { - return `?domain=${domain}&url=${url}&summaryTime=${liimitTime}&summaryCounter=${summaryCounter}`; + return `?domain=${domain}&url=${url}&summaryTime=${liimitTime}&summaryCounter=${summaryCounter}&favicon=${favicon}`; } export function getValueFromQuery(url: string) { const urlObj = new URL(url); const domain = urlObj.searchParams.get(BlockParams.Domain); const sourceUrl = urlObj.searchParams.get(BlockParams.URL); + const favicon = urlObj.searchParams.get(BlockParams.Favicon); const limitTime = Number(urlObj.searchParams.get(BlockParams.LimitTime)); const summaryCounter = Number(urlObj.searchParams.get(BlockParams.SummaryCounter)); @@ -26,5 +29,6 @@ export function getValueFromQuery(url: string) { url: sourceUrl, limitTime: limitTime, summaryCounter: summaryCounter, + favicon: favicon, }; } From 1ec08e3fd1f21402f6bec665f2142a257b6ca7ce Mon Sep 17 00:00:00 2001 From: Alex Khrisanfov Date: Sat, 22 Jul 2023 19:50:28 +0300 Subject: [PATCH 155/329] Update README.md --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8961d15..bac2cf1 100644 --- a/README.md +++ b/README.md @@ -9,11 +9,12 @@ Extension uses only local [chrome.storage API](https://developer.chrome.com/apps You can see your daily stats. -![image](https://user-images.githubusercontent.com/23387046/206865189-2ffe27b2-c88a-40e0-82b5-a8df675554af.png) +![image](https://github.com/Stigmatoz/web-activity-time-tracker/assets/23387046/d67c812c-2ba4-4ef8-a685-ab5fd77c7fbe) + And you can see your overall stats. -![image](https://user-images.githubusercontent.com/23387046/206865219-31fe0473-b550-4a41-8348-576401be1395.png) +![image](https://github.com/Stigmatoz/web-activity-time-tracker/assets/23387046/6ea4547e-8bc6-4df7-ba0c-b5b330117270) If you have suggestions or problems using the extension, please [submit a bug or a feature request](https://github.com/Stigmatoz/web-activity-time-tracker/issues). @@ -29,6 +30,10 @@ Web Activity Time Tracker is available via the official [Chrome Web Store](https 3. Click on the "Load unpacked extension..." button. 4. Browse to the src directory of the unarchived folder and confirm. +# Run + +```pnpm run dev``` + # License This work is licensed under a MIT License. From 4fb0d141bccb6f0e7f866c3a29ac2e001e06431d Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 25 Jul 2023 08:02:19 +0300 Subject: [PATCH 156/329] Fix inactive service worker --- src/background.ts | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/background.ts b/src/background.ts index fa23a17..ad7dba0 100644 --- a/src/background.ts +++ b/src/background.ts @@ -22,16 +22,11 @@ Browser.storage.onChanged.addListener((changes, namespace) => { } }); -Browser.runtime.onInstalled.addListener(details => { - if ( - details.reason == 'update' && - details.previousVersion != undefined && - details.previousVersion < '2.0.0' - ) { - } -}); - Browser.runtime.setUninstallURL('https://webtracker.online/goodbye.html'); +Browser.runtime.onStartup.addListener(() => { + logger.log(`onStartup event`); +}); + scheduleJobs(); initTracker(); From ed6f9152fb60a17d4b2f9b1f0df15c9fae8ae272 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 25 Jul 2023 08:04:04 +0300 Subject: [PATCH 157/329] Change description size for en locale --- src/_locales/en/messages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 0043047..1fb0532 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -3,7 +3,7 @@ "message": "Web Activity Time Tracker - Web Analytics" }, "extDescription": { - "message": "Track and limit the time of your web activity and block access to the web resources. Monitor the time limits and review your web analytics." + "message": "Track and limit the time of your web activity and block access to the websites. Monitor your web usage." }, "settings": { "message": "Settings" From 86697911c5ace966dcf201462413b853247a296b Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 25 Jul 2023 08:05:51 +0300 Subject: [PATCH 158/329] Bump version 2.0.1 --- src/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index fd0a524..7cd92f2 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "__MSG_extName__", "short_name": "Web Tracker", - "version": "2.0.0", + "version": "2.0.1", "description": "__MSG_extDescription__", "options_page": "src/dashboard.html", "default_locale": "en", From b6a649e5df297442462b750dcad6949a991f627d Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 27 Jul 2023 13:44:13 +0300 Subject: [PATCH 159/329] Add a new tab for time chart --- src/pages/Dashboard.vue | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/pages/Dashboard.vue b/src/pages/Dashboard.vue index cdf2053..62f71f1 100644 --- a/src/pages/Dashboard.vue +++ b/src/pages/Dashboard.vue @@ -5,12 +5,27 @@

Web Activity Time Tracker

+
+ + +
+ +
+
+ +
+ @@ -83,6 +98,7 @@ import { useI18n } from 'vue-i18n'; import GeneralSettings from '../components/GeneralSettings.vue'; import WhiteList from '../components/WhiteList.vue'; import Limits from '../components/Limits.vue'; +import TimeIntervalChart from '../components/TimeIntervalChart.vue'; import DailyNotifications from '../components/Notifications.vue'; import About from '../components/About.vue'; import { SettingsTab } from '../utils/enums'; @@ -91,7 +107,7 @@ const { t } = useI18n(); const selectedTab = ref(); -onMounted(() => (selectedTab.value = SettingsTab.GeneralSettings)); +onMounted(() => (selectedTab.value = SettingsTab.TimeIntervalChart)); function selectTab(value: SettingsTab) { selectedTab.value = value; @@ -112,4 +128,9 @@ function selectTab(value: SettingsTab) { .header-block .logo { margin: 10px 20px; } +.tab-separator { + margin-left: 10px; + font-size: 13px; + font-weight: 600; +} From 86c116fde21e0fa29ac1aecabd115f0dea17f777 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 27 Jul 2023 14:07:54 +0300 Subject: [PATCH 160/329] Time chart by hours --- src/_locales/de/messages.json | 8 +- src/_locales/en/messages.json | 8 +- src/_locales/ru/messages.json | 8 +- src/components/TimeIntervalChart.vue | 198 +++++++++++++++++++++++++++ src/pages/Dashboard.vue | 2 +- src/utils/converter.ts | 12 +- src/utils/enums.ts | 1 + src/utils/time.ts | 3 + 8 files changed, 235 insertions(+), 5 deletions(-) create mode 100644 src/components/TimeIntervalChart.vue diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index fc89df6..e5c6d59 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -114,7 +114,7 @@ "message": "Im letzten Monat" }, "generalSettings": { - "message": "Grundlegende Einstellungen" + "message": "Einstellungen" }, "whiteListSettings": { "message": "Weiße Liste" @@ -225,5 +225,11 @@ }, "mostVisited": { "message": "Die meistbesuchte Website " + }, + "timeChart": { + "message": "Die heutige Zeit" + }, + "timeChartDescription": { + "message": "Dies ist eine stundenweise Zeitleiste für den Tag" } } diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 0043047..7ee797d 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -114,7 +114,7 @@ "message": "Last month" }, "generalSettings": { - "message": "General Settings" + "message": "Settings" }, "whiteListSettings": { "message": "WhiteList" @@ -225,5 +225,11 @@ }, "mostVisited": { "message": "Most visited website " + }, + "timeChart": { + "message": "Today's time" + }, + "timeChartDescription": { + "message": "This is a chart of time during the day by the hour" } } diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index 0e763cd..cb4c1c3 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -114,7 +114,7 @@ "message": "Последний месяц" }, "generalSettings": { - "message": "Основные настройки" + "message": "Настройки" }, "whiteListSettings": { "message": "Белый список" @@ -225,5 +225,11 @@ }, "mostVisited": { "message": "Самый посещаемый сайт " + }, + "timeChart": { + "message": "Время сегодня" + }, + "timeChartDescription": { + "message": "Это график времени в течение дня по часам" } } diff --git a/src/components/TimeIntervalChart.vue b/src/components/TimeIntervalChart.vue new file mode 100644 index 0000000..2757bcd --- /dev/null +++ b/src/components/TimeIntervalChart.vue @@ -0,0 +1,198 @@ + + + + + + + diff --git a/src/pages/Dashboard.vue b/src/pages/Dashboard.vue index 62f71f1..dd24598 100644 --- a/src/pages/Dashboard.vue +++ b/src/pages/Dashboard.vue @@ -14,7 +14,7 @@ checked v-on:change="selectTab(SettingsTab.TimeIntervalChart)" /> - +
diff --git a/src/utils/converter.ts b/src/utils/converter.ts index fc48e4b..06ac8f5 100644 --- a/src/utils/converter.ts +++ b/src/utils/converter.ts @@ -1,5 +1,5 @@ import i18n, { getMessagesFromLocale } from '../plugins/i18n'; -import { HOUR, MINUTE, Time } from './time'; +import { HOUR, HOUR_IN_SECONDS, MINUTE, MINUTE_IN_SECONDS, Time } from './time'; export function convertHHMMToSeconds(hours: number, minutes: number) { return hours * 3600 + minutes * 60; @@ -82,3 +82,13 @@ function zeroAppend(time: number) { if (time < 10) return `0${time}`; else return time; } + +export function convertStringTimeIntervalToSeconds(timeInterval: string) { + const time = timeInterval.split(':'); + return Number(time[0]) * HOUR_IN_SECONDS + Number(time[1]) * MINUTE_IN_SECONDS + Number(time[2]); +} + +export function convertHoursToTime(time: number) { + const timeInSeconds = Math.floor(time * MINUTE_IN_SECONDS); + return convertSummaryTimeToString(timeInSeconds); +} diff --git a/src/utils/enums.ts b/src/utils/enums.ts index de0bd6e..9534f06 100644 --- a/src/utils/enums.ts +++ b/src/utils/enums.ts @@ -10,6 +10,7 @@ export enum SortingBy { } export enum SettingsTab { + TimeIntervalChart, GeneralSettings, WhiteList, Limits, diff --git a/src/utils/time.ts b/src/utils/time.ts index 8a8259b..1c779c9 100644 --- a/src/utils/time.ts +++ b/src/utils/time.ts @@ -5,6 +5,9 @@ export type Time = { minutes: number; }; +export const MINUTE_IN_SECONDS = 60; +export const HOUR_IN_SECONDS = 60 * MINUTE_IN_SECONDS; + //Every day - 60 minutes * 24 hours export const DAY_MINUTES = 1440; export const SECOND = 1000; From 43dd5eab8825e063b6678b6f79efa60ef8457765 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 27 Jul 2023 14:55:08 +0300 Subject: [PATCH 161/329] Dashboard --- src/_locales/de/messages.json | 4 +-- src/_locales/en/messages.json | 4 +-- src/_locales/ru/messages.json | 4 +-- src/assets/css/general.css | 6 +++++ src/assets/css/main.css | 5 ---- src/components/BadgeIcons.vue | 6 ++++- src/components/Dashboad.vue | 37 ++++++++++++++++++++++++++++ src/components/TabItemHeader.vue | 3 ++- src/components/TabList.vue | 13 +++++++--- src/components/TimeIntervalChart.vue | 20 +-------------- src/dashboard.html | 2 +- src/pages/Dashboard.vue | 6 ++--- src/utils/enums.ts | 1 + 13 files changed, 71 insertions(+), 40 deletions(-) create mode 100644 src/components/Dashboad.vue diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index e5c6d59..740a144 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -226,8 +226,8 @@ "mostVisited": { "message": "Die meistbesuchte Website " }, - "timeChart": { - "message": "Die heutige Zeit" + "dashboard": { + "message": "Dashboard" }, "timeChartDescription": { "message": "Dies ist eine stundenweise Zeitleiste für den Tag" diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 7ee797d..8f1c026 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -226,8 +226,8 @@ "mostVisited": { "message": "Most visited website " }, - "timeChart": { - "message": "Today's time" + "dashboard": { + "message": "Dashboard" }, "timeChartDescription": { "message": "This is a chart of time during the day by the hour" diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index cb4c1c3..308507b 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -226,8 +226,8 @@ "mostVisited": { "message": "Самый посещаемый сайт " }, - "timeChart": { - "message": "Время сегодня" + "dashboard": { + "message": "Дашборд" }, "timeChartDescription": { "message": "Это график времени в течение дня по часам" diff --git a/src/assets/css/general.css b/src/assets/css/general.css index 3da15dd..00c826c 100644 --- a/src/assets/css/general.css +++ b/src/assets/css/general.css @@ -1,3 +1,9 @@ +:root { + --main-color: #6ebf5d; + --popup-header: #efefef; + --progress-bar: #428bff; +} + .float-right { float: right; } diff --git a/src/assets/css/main.css b/src/assets/css/main.css index e804281..49bc227 100644 --- a/src/assets/css/main.css +++ b/src/assets/css/main.css @@ -1,8 +1,3 @@ -:root { - --main-color: #6ebf5d; - --popup-header: #efefef; - --progress-bar: #428bff; -} ::-webkit-scrollbar-track { border-radius: 10px; background-color: #f5f5f5; diff --git a/src/components/BadgeIcons.vue b/src/components/BadgeIcons.vue index d9ab734..cf44a3f 100644 --- a/src/components/BadgeIcons.vue +++ b/src/components/BadgeIcons.vue @@ -31,7 +31,11 @@ const isLimit = computedAsync(async () => { }, false); const showDocumentBadge = computed(() => props.type == TypeOfUrl.Document); -const showLimitBadge = computed(() => props.listType == TypeOfList.Today && isLimit.value == true); +const showLimitBadge = computed( + () => + (props.listType == TypeOfList.Today || props.listType == TypeOfList.Dashboard) && + isLimit.value == true, +); diff --git a/src/components/TabItemHeader.vue b/src/components/TabItemHeader.vue index 92da4fb..d2c6311 100644 --- a/src/components/TabItemHeader.vue +++ b/src/components/TabItemHeader.vue @@ -43,7 +43,8 @@ const emit = defineEmits<{ }>(); const title = computed(() => { - if (props.listType == TypeOfList.Today) return t('today.message'); + if (props.listType == TypeOfList.Today || props.listType == TypeOfList.Dashboard) + return t('today.message'); if (props.listType == TypeOfList.All) { let countOfActiveDays = props.countOfActiveDays > 1 ? `(${props.countOfActiveDays} ${t('days.message')})` : ''; diff --git a/src/components/TabList.vue b/src/components/TabList.vue index 26b7981..f07c84a 100644 --- a/src/components/TabList.vue +++ b/src/components/TabList.vue @@ -8,7 +8,11 @@
- + day.date === todayLocalDate())!.summary : tab.summaryTime, favicon: tab.favicon, url: tab.url, sessions: - props.type == TypeOfList.Today + props.type == TypeOfList.Today || props.type == TypeOfList.Dashboard ? tab.days.find(day => day.date === todayLocalDate())!.counter : tab.counter, }; diff --git a/src/components/TimeIntervalChart.vue b/src/components/TimeIntervalChart.vue index 2757bcd..b4ac6be 100644 --- a/src/components/TimeIntervalChart.vue +++ b/src/components/TimeIntervalChart.vue @@ -1,11 +1,5 @@ - - diff --git a/src/dashboard.html b/src/dashboard.html index e62fae6..1bd0d52 100644 --- a/src/dashboard.html +++ b/src/dashboard.html @@ -1,4 +1,4 @@ - + diff --git a/src/pages/Dashboard.vue b/src/pages/Dashboard.vue index dd24598..de912b3 100644 --- a/src/pages/Dashboard.vue +++ b/src/pages/Dashboard.vue @@ -14,10 +14,10 @@ checked v-on:change="selectTab(SettingsTab.TimeIntervalChart)" /> - +
- +
@@ -98,10 +98,10 @@ import { useI18n } from 'vue-i18n'; import GeneralSettings from '../components/GeneralSettings.vue'; import WhiteList from '../components/WhiteList.vue'; import Limits from '../components/Limits.vue'; -import TimeIntervalChart from '../components/TimeIntervalChart.vue'; import DailyNotifications from '../components/Notifications.vue'; import About from '../components/About.vue'; import { SettingsTab } from '../utils/enums'; +import Dashboad from '../components/Dashboad.vue'; const { t } = useI18n(); diff --git a/src/utils/enums.ts b/src/utils/enums.ts index 9534f06..e3231dc 100644 --- a/src/utils/enums.ts +++ b/src/utils/enums.ts @@ -2,6 +2,7 @@ export enum TypeOfList { Today, All, ByDays, + Dashboard, } export enum SortingBy { From 650ed860a91819936b699e936d32db5eee26c7e9 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 27 Jul 2023 16:24:50 +0300 Subject: [PATCH 162/329] Add link to dashboard --- src/assets/icons/dashboard.svg | 2 ++ src/pages/Dashboard.vue | 26 ++++++++++++++++++++++---- src/pages/Popup.vue | 21 +++++++++++++++++---- src/utils/enums.ts | 2 +- 4 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 src/assets/icons/dashboard.svg diff --git a/src/assets/icons/dashboard.svg b/src/assets/icons/dashboard.svg new file mode 100644 index 0000000..10996e9 --- /dev/null +++ b/src/assets/icons/dashboard.svg @@ -0,0 +1,2 @@ + +dashboard \ No newline at end of file diff --git a/src/pages/Dashboard.vue b/src/pages/Dashboard.vue index de912b3..815d96b 100644 --- a/src/pages/Dashboard.vue +++ b/src/pages/Dashboard.vue @@ -11,13 +11,13 @@ type="radio" id="timeIntervalChart-tab" name="settings-group" - checked - v-on:change="selectTab(SettingsTab.TimeIntervalChart)" + :checked="selectedTab == SettingsTab.Dashboard" + v-on:change="selectTab(SettingsTab.Dashboard)" />
- +
@@ -26,6 +26,7 @@ type="radio" id="general-tab" name="settings-group" + :checked="selectedTab == SettingsTab.GeneralSettings" v-on:change="selectTab(SettingsTab.GeneralSettings)" /> @@ -40,6 +41,7 @@ type="radio" id="white-list-tab" name="settings-group" + :checked="selectedTab == SettingsTab.WhiteList" v-on:change="selectTab(SettingsTab.WhiteList)" /> @@ -54,6 +56,7 @@ type="radio" id="limits-tab" name="settings-group" + :checked="selectedTab == SettingsTab.Limits" v-on:change="selectTab(SettingsTab.Limits)" /> @@ -67,6 +70,7 @@ type="radio" id="notification-tab" name="settings-group" + :checked="selectedTab == SettingsTab.Notifications" v-on:change="selectTab(SettingsTab.Notifications)" /> @@ -81,6 +85,7 @@ type="radio" id="about-tab" name="settings-group" + :checked="selectedTab == SettingsTab.About" v-on:change="selectTab(SettingsTab.About)" /> @@ -107,7 +112,20 @@ const { t } = useI18n(); const selectedTab = ref(); -onMounted(() => (selectedTab.value = SettingsTab.TimeIntervalChart)); +onMounted(() => { + const urlObj = new URL(location.href); + const tabName = urlObj.searchParams.get('tab'); + if (tabName != null && tabName != '') { + switch (tabName) { + case 'dashboard': + selectedTab.value = SettingsTab.Dashboard; + break; + case 'settings': + selectedTab.value = SettingsTab.GeneralSettings; + break; + } + } else selectedTab.value = selectedTab.value = SettingsTab.Dashboard; +}); function selectTab(value: SettingsTab) { selectedTab.value = value; diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index 77df4c6..d15a681 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -6,7 +6,10 @@
@@ -74,13 +77,23 @@ import { useI18n } from 'vue-i18n'; import Browser from 'webextension-polyfill'; import TabList from '../components/TabList.vue'; import ByDays from '../components/ByDays.vue'; -import { TypeOfList } from '../utils/enums'; +import { SettingsTab, TypeOfList } from '../utils/enums'; const { t } = useI18n(); -async function openDashboard() { +async function openPage(tab: SettingsTab) { + let tabName = ''; + switch (tab) { + case SettingsTab.Dashboard: + tabName = 'dashboard'; + break; + case SettingsTab.GeneralSettings: + tabName = 'settings'; + break; + } + const url = Browser.runtime.getURL(`src/dashboard.html${tabName != '' ? `?tab=${tabName}` : ''}`); await Browser.tabs.create({ - url: Browser.runtime.getURL('src/dashboard.html'), + url: url, active: true, }); } diff --git a/src/utils/enums.ts b/src/utils/enums.ts index e3231dc..c5ba351 100644 --- a/src/utils/enums.ts +++ b/src/utils/enums.ts @@ -11,7 +11,7 @@ export enum SortingBy { } export enum SettingsTab { - TimeIntervalChart, + Dashboard, GeneralSettings, WhiteList, Limits, From a6816c3939f5059915c5bea9ff5615b6b5e898d6 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 27 Jul 2023 16:46:42 +0300 Subject: [PATCH 163/329] Change icons for dashboard and settings --- src/assets/css/general.css | 7 +++++++ src/assets/icons/dashboard.svg | 2 +- src/assets/icons/settings.svg | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/assets/css/general.css b/src/assets/css/general.css index 00c826c..94d2e40 100644 --- a/src/assets/css/general.css +++ b/src/assets/css/general.css @@ -4,6 +4,13 @@ --progress-bar: #428bff; } +.no-data { + text-align: center; + font-size: 16px; + font-weight: 600; + margin-top: 30%; +} + .float-right { float: right; } diff --git a/src/assets/icons/dashboard.svg b/src/assets/icons/dashboard.svg index 10996e9..8789249 100644 --- a/src/assets/icons/dashboard.svg +++ b/src/assets/icons/dashboard.svg @@ -1,2 +1,2 @@ -dashboard \ No newline at end of file + \ No newline at end of file diff --git a/src/assets/icons/settings.svg b/src/assets/icons/settings.svg index 9b86d3e..206e8a9 100644 --- a/src/assets/icons/settings.svg +++ b/src/assets/icons/settings.svg @@ -1,2 +1,2 @@ - - \ No newline at end of file + + \ No newline at end of file From 3819c85458f3f4f3e7465e4c5d157c750c591a9d Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 27 Jul 2023 20:38:56 +0300 Subject: [PATCH 164/329] Change ui --- src/assets/css/dashboard.css | 1 + src/components/Dashboad.vue | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 32a2f14..e84c3a4 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -288,6 +288,7 @@ label { bottom: 0; padding: 50px; border-left: 1px solid #ccc; + overflow-y: auto; } .settings-content span { animation: 0.5s ease-out 0s 1 slideInFromTop; diff --git a/src/components/Dashboad.vue b/src/components/Dashboad.vue index 505a556..7e50b6d 100644 --- a/src/components/Dashboad.vue +++ b/src/components/Dashboad.vue @@ -1,13 +1,15 @@ @@ -27,6 +29,10 @@ const { t } = useI18n(); diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index d15a681..4b8e964 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -69,6 +69,7 @@
+ diff --git a/src/components/TimeIntervalChart.vue b/src/components/TimeIntervalChart.vue index f890cb4..78fddd9 100644 --- a/src/components/TimeIntervalChart.vue +++ b/src/components/TimeIntervalChart.vue @@ -141,7 +141,7 @@ function fillData(timeIntervalList: TimeInterval[]) { objects.forEach(obj => { const emptyArray: number[] = Object.assign([], tempArray); - emptyArray[obj.hour] = Number((obj.summary / 60).toFixed(4)); + emptyArray[obj.hour] = Number(obj.summary / 60); result.push({ backgroundColor: ['#5668e2'], data: emptyArray, diff --git a/src/storage/storage-params.ts b/src/storage/storage-params.ts index add1a2d..2e76730 100644 --- a/src/storage/storage-params.ts +++ b/src/storage/storage-params.ts @@ -15,6 +15,7 @@ export enum StorageParams { DAILY_SUMMARY_NOTIFICATION_TIME = 'daily-summary-notification-time', DAILY_NOTIFICATION = 'daily_notification', REVIEW_DATE = 'review_date', + REVIEW_PROMPT_AT = 'review_prompt_at', INSTALL_DATE = 'install-date', } diff --git a/src/globals.d.ts b/src/types/globals.d.ts similarity index 60% rename from src/globals.d.ts rename to src/types/globals.d.ts index 66fb358..4b087f8 100644 --- a/src/globals.d.ts +++ b/src/types/globals.d.ts @@ -2,5 +2,5 @@ declare var __EXTENSION_MODE__: ExtensionMode; declare var __DEV__: boolean; declare var __PROD__: boolean; -declare var __EXTENSION_VERSION__: string; -declare var __REAL_APP_ID__: string; +declare var __APP_ID__: string; +declare var __BROWSER__: string; diff --git a/vite.config.ts b/vite.config.ts index 7812f81..7d37288 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -2,11 +2,11 @@ import { defineConfig } from 'vite'; import path from 'path'; import vue from '@vitejs/plugin-vue'; import webExtension, { readJsonFile } from 'vite-plugin-web-extension'; -import pkg from './package.json'; import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'; import copy from 'rollup-plugin-copy'; const APPID_CHROME = 'hhfnghjdeddcfegfekjeihfmbjenlomm'; +const browser = process.env.TARGET || 'chrome'; function generateManifest() { const manifest = readJsonFile('src/manifest.json'); @@ -43,8 +43,8 @@ export default defineConfig(({ mode }) => ({ __EXTENSION_MODE__: JSON.stringify(mode), __DEV__: mode === 'development', __PROD__: mode === 'production', - __EXTENSION_VERSION__: JSON.stringify(pkg.version), - __REAL_APP_ID__: APPID_CHROME, + __APP_ID__: JSON.stringify(APPID_CHROME), + __BROWSER__: JSON.stringify(browser), }, plugins: [ vue(), From 63254291f179b783856eb21f712095a4338145a7 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 30 Jul 2023 23:53:13 +0300 Subject: [PATCH 174/329] Bump version 2.0.3 --- src/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index 560a327..c0e5090 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "__MSG_extName__", "short_name": "Web Tracker", - "version": "2.0.2", + "version": "2.0.3", "description": "__MSG_extDescription__", "options_page": "src/dashboard.html", "default_locale": "en", From 35de20ff65014d805a891b1089466f3d6a2cbd16 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 1 Aug 2023 20:06:17 +0300 Subject: [PATCH 175/329] Change icons for settings and dashboard --- src/assets/icons/dashboard.svg | 6 +++++- src/assets/icons/settings.svg | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/assets/icons/dashboard.svg b/src/assets/icons/dashboard.svg index 8789249..099ec8c 100644 --- a/src/assets/icons/dashboard.svg +++ b/src/assets/icons/dashboard.svg @@ -1,2 +1,6 @@ - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/src/assets/icons/settings.svg b/src/assets/icons/settings.svg index 206e8a9..4096f43 100644 --- a/src/assets/icons/settings.svg +++ b/src/assets/icons/settings.svg @@ -1,2 +1,5 @@ - \ No newline at end of file + + + + \ No newline at end of file From 227be70f05cf2efacdb3d1a96155581fefe29988 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 1 Aug 2023 20:06:32 +0300 Subject: [PATCH 176/329] UI for deleting all data --- src/_locales/de/messages.json | 13 ++++++++ src/_locales/en/messages.json | 13 ++++++++ src/_locales/ru/messages.json | 13 ++++++++ src/assets/css/general.css | 50 ++++++++++++++++++++++++++++++ src/components/GeneralSettings.vue | 33 ++++++++++++++++++++ 5 files changed, 122 insertions(+) diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index 01a83e4..68a4f58 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -235,5 +235,18 @@ "enjoyAndReview": { "message": "Genießen Sie die Erweiterung?", "description": "Bewerten Web Activity Time Tracker" + }, + "removeAllData": { + "message": "Alle Daten entfernen", + "description": "Sie können alle Daten und Statistiken der besuchten Websites für immer löschen." + }, + "remove": { + "message": "Entfernen" + }, + "removeAllDataConfirm": { + "message": "Sind Sie sicher, dass Sie alle Daten löschen möchten?" + }, + "cancel": { + "message": "Annullierung" } } diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 2633710..5d5364c 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -235,5 +235,18 @@ "enjoyAndReview": { "message": "Enjoying the extension?", "description": "Rate Web Activity Time Tracker" + }, + "removeAllData": { + "message": "Remove all data", + "description": "You can delete all data and statistics of visited websites for all time" + }, + "remove": { + "message": "Remove" + }, + "removeAllDataConfirm": { + "message": "Are you sure you want to delete all data?" + }, + "cancel": { + "message": "Cancel" } } diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index 0794fab..015dd21 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -235,5 +235,18 @@ "enjoyAndReview": { "message": "Вам нравится расширение?", "description": "Оцените Web Activity Time Tracker" + }, + "removeAllData": { + "message": "Удалить все данные", + "description": "Вы можете удалить все данные и статистику посещенных сайтов за все время" + }, + "remove": { + "message": "Удалить" + }, + "removeAllDataConfirm": { + "message": "Вы уверены, что хотите удалить все данные, включая статистику посещенных сайтов?" + }, + "cancel": { + "message": "Отмена" } } diff --git a/src/assets/css/general.css b/src/assets/css/general.css index 94d2e40..b179477 100644 --- a/src/assets/css/general.css +++ b/src/assets/css/general.css @@ -79,8 +79,58 @@ input[type='button']:hover { text-decoration: none; } +input[type='button'].alert { + background: #fe5c5c !important; +} + +input[type='button'].info { + background: #ffffff !important; + color: black; + border: 1px solid black; +} + input[type='button'][disabled] { border: 1px solid #999999; background-color: #cccccc; color: #666666; } +.modal { + display: block; + position: fixed; + z-index: 1; + left: 0; + top: 0; + width: 100%; + height: 100%; + overflow: auto; + background-color: rgb(0,0,0); + background-color: rgba(0,0,0,0.4); +} + +.modal-content { + background-color: #fefefe; + margin: 15% auto; + padding: 20px; + border: 1px solid #888; + width: 40%; + border-radius: 10px; +} + +.modal-content p{ + font-size: 18px; + font-weight: 600; +} + +.close { + color: #aaa; + float: right; + font-size: 28px; + font-weight: bold; +} + +.close:hover, +.close:focus { + color: black; + text-decoration: none; + cursor: pointer; +} diff --git a/src/components/GeneralSettings.vue b/src/components/GeneralSettings.vue index 12ee14a..ad2e880 100644 --- a/src/components/GeneralSettings.vue +++ b/src/components/GeneralSettings.vue @@ -81,6 +81,25 @@ +
+ +

{{ t('removeAllData.description') }}

+ +
+ From 178513042702777c3294ca69e6860aa5f96d5315 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 1 Aug 2023 20:51:27 +0300 Subject: [PATCH 178/329] Remove all data --- src/components/GeneralSettings.vue | 4 +++- src/compositions/remove-all-data.ts | 10 ++++++++++ src/repository/tabs-repository-interface.ts | 1 + src/repository/tabs-repository.ts | 4 ++++ src/tracker.ts | 10 ++++++++++ src/utils/messages.ts | 1 + 6 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/compositions/remove-all-data.ts diff --git a/src/components/GeneralSettings.vue b/src/components/GeneralSettings.vue index ad2e880..52c5d8e 100644 --- a/src/components/GeneralSettings.vue +++ b/src/components/GeneralSettings.vue @@ -124,6 +124,7 @@ import { import { ranges, ThisWeekRange } from '../utils/date'; import { useImportToCsv } from '../compositions/toCsv'; import { FileType, useFile } from '../compositions/loadFile'; +import { removeAllData } from '../compositions/remove-all-data'; const { t } = useI18n(); @@ -195,7 +196,8 @@ async function removeAll() { needToConfirmDeleteAllData.value = true; } -function removeAllConfirm() { +async function removeAllConfirm() { + await removeAllData(); needToConfirmDeleteAllData.value = false; } diff --git a/src/compositions/remove-all-data.ts b/src/compositions/remove-all-data.ts new file mode 100644 index 0000000..aaa127d --- /dev/null +++ b/src/compositions/remove-all-data.ts @@ -0,0 +1,10 @@ +import Browser from 'webextension-polyfill'; +import { injecStorage } from '../storage/inject-storage'; +import { Messages } from '../utils/messages'; + +export async function removeAllData() { + const storage = injecStorage(); + await storage.saveIntervalList([]); + + Browser.runtime.sendMessage(Messages.ClearAllData); +} diff --git a/src/repository/tabs-repository-interface.ts b/src/repository/tabs-repository-interface.ts index a14b124..9c5ff02 100644 --- a/src/repository/tabs-repository-interface.ts +++ b/src/repository/tabs-repository-interface.ts @@ -2,6 +2,7 @@ import { Tab } from '../entity/tab'; export interface ITabsRepository { getTabs(): Tab[]; + removeAllTabs(): void; getTodayTabs(): Tab[]; getTab(domain: string): Tab | undefined; addTab(domain: string, favicon: string | undefined): Promise; diff --git a/src/repository/tabs-repository.ts b/src/repository/tabs-repository.ts index 73b59f3..b3c555e 100644 --- a/src/repository/tabs-repository.ts +++ b/src/repository/tabs-repository.ts @@ -20,6 +20,10 @@ export class TabsRepository implements ITabsRepository { return this.tabs; } + removeAllTabs(): void { + this.tabs = []; + } + getTodayTabs(): Tab[] { return this.tabs.filter(x => x.days.find(s => s.date === todayLocalDate())); } diff --git a/src/tracker.ts b/src/tracker.ts index 054ea9e..b22e7aa 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -16,6 +16,7 @@ import { convertSummaryTimeToBadgeString } from './utils/converter'; import { Settings } from './compositions/settings'; import { isNeedToShowNotification } from './compositions/notification-list'; import { NotificationType, showNotification } from './compositions/show-notification'; +import { Messages } from './utils/messages'; const activeTabInstance = ActiveTab.getInstance(); @@ -160,3 +161,12 @@ async function saveTabs() { const tabs = repo.getTabs(); await storage.saveTabs(tabs); } + +Browser.runtime.onMessage.addListener(async message => { + if (message == Messages.ClearAllData) { + const storage = injecStorage(); + const repo = await injectTabsRepositorySingleton(); + repo.removeAllTabs(); + await storage.saveTabs([]); + } +}); diff --git a/src/utils/messages.ts b/src/utils/messages.ts index 362dba9..201522f 100644 --- a/src/utils/messages.ts +++ b/src/utils/messages.ts @@ -1,3 +1,4 @@ export enum Messages { RescheduleJobs = 'reschedule-jobs', + ClearAllData = 'clear-data', } From 40e9d0193bb7112e44de38d71564646e27f72da7 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 1 Aug 2023 20:55:21 +0300 Subject: [PATCH 179/329] Bump version 2.0.4 --- src/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index c0e5090..b1e8fa7 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "__MSG_extName__", "short_name": "Web Tracker", - "version": "2.0.3", + "version": "2.0.4", "description": "__MSG_extDescription__", "options_page": "src/dashboard.html", "default_locale": "en", From a3914fb5fc1617d8004c8338bad623ab399fff2c Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 1 Aug 2023 21:17:35 +0300 Subject: [PATCH 180/329] Vite: set empty output dir --- vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vite.config.ts b/vite.config.ts index 7d37288..977b915 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -34,7 +34,7 @@ export default defineConfig(({ mode }) => ({ }, }, - emptyOutDir: true, + emptyOutDir: false, sourcemap: mode === 'development' ? 'inline' : false, minify: mode === 'development' ? false : true, }, From 20e64ae92e793b378905886072fb26bced6fd150 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 2 Aug 2023 16:48:57 +0300 Subject: [PATCH 181/329] Remove old unnessesary files --- src/index.html | 145 ------- src/style/block.css | 50 --- src/style/chart.css | 115 ------ src/style/picker/clockpicker.min.css | 169 -------- src/style/picker/standalone.min.css | 187 --------- src/style/settings.css | 479 ---------------------- src/style/webact.css | 586 --------------------------- 7 files changed, 1731 deletions(-) delete mode 100644 src/index.html delete mode 100644 src/style/block.css delete mode 100644 src/style/chart.css delete mode 100644 src/style/picker/clockpicker.min.css delete mode 100644 src/style/picker/standalone.min.css delete mode 100644 src/style/settings.css delete mode 100644 src/style/webact.css diff --git a/src/index.html b/src/index.html deleted file mode 100644 index 3688b51..0000000 --- a/src/index.html +++ /dev/null @@ -1,145 +0,0 @@ - - - - - Web Activity Time Tracker - - - - - -
-
-
Loading...
-
-
- - - - - - - - - - -
-

Web Activity Time Tracker

-
-
- Today - All-time - By days - Settings -
-
-

In Web Activity Time Tracker you can:

-

Set daily limits for sites

-

Set notifications after a certain time has elapsed

-

Set a list of sites with no tracking

-

Enable time tracking on YouTube.com

-

Enable time tracking on Netflix.com

-

Enable dark mode

-
-
-
-

Overall statistics

-
-
-
-
First day
-
-
-
-
Active days
-
-
-
-
Days in total
-
-
-
-
-
-
Today
-
-
-
-
All-time
-
-
-
-
Average by active days
-
-
-
-
-
-
- Most active day -
- Don't include the current day in the calculation of statistics -
-
-
-
-
- -
-
-
-
-
-
- Most inactive day -
- Don't include the current day in the calculation of statistics -
-
-
-
-
- -
-
-
-
-
-
-
- -
-
- -
-
-
-
- - - - - - - - - diff --git a/src/style/block.css b/src/style/block.css deleted file mode 100644 index 58640af..0000000 --- a/src/style/block.css +++ /dev/null @@ -1,50 +0,0 @@ -body { - padding: 150px; - text-align: center; - background-color: rgb(243, 243, 243); -} - -.title { - font-size: 23px; - font-weight: 600; -} - -.description { - font-size: 15px; - font-weight: 400; -} - -.current-site { - font-size: 18px; - font-weight: 500; - color: rgb(202, 48, 48); -} - -.current-limit { - font-weight: 500; - color: rgb(128, 128, 128); -} - -.margin-top-10 { - margin-top: 10px; -} - -.product-title { - font-size: 16px; - color: rgb(128, 128, 128); - position: absolute; - bottom: 30px; - right: 30px; -} - -.defferer-link { - color: gray; - text-decoration: underline; - cursor: pointer; -} - -.deferred-metrics { - font-weight: 500; - font-size: 1.2rem; - color: rgb(202, 48, 48); -} diff --git a/src/style/chart.css b/src/style/chart.css deleted file mode 100644 index da62d0c..0000000 --- a/src/style/chart.css +++ /dev/null @@ -1,115 +0,0 @@ -/*Styling for the lines connecting the labels to the slices*/ -polyline { - opacity: 0.3; - stroke: black; - stroke-width: 2px; - fill: none; -} - -/* Make the percentage on the text labels bold*/ -.labelName tspan { - font-style: normal; - font-weight: 700; -} - -/* In biology we generally italicise species names. */ -.labelName { - font-size: 1.1em; -} - -tspan { - font-size: 1.2em; - font-weight: 600; -} - -.siteName { - font-size: 1em !important; - font-weight: 400 !important; -} - -.percentageValue { - font-size: 1.8em !important; - font-weight: 600 !important; -} - -g.slices > path:hover { - transform: translate(0, -1px); - filter: url(#dropShadow); - transition: transform 0.1s; -} - -g.slices > path.mouse-over { - transform: translate(0, -1px); - filter: url(#dropShadow); - transition: transform 0.1s; -} - -/*styles for chart of days*/ -.axis path, -.axis line { - fill: none; - stroke: #000; - shape-rendering: crispEdges; -} - -.bar { - fill: orange; -} - -.bar:hover { - fill: orangered; -} - -.x.axis path { - display: none; -} - -.d3-tip { - font-size: 11px; - line-height: 1; - font-weight: bold; - padding: 7px; - background: rgba(0, 0, 0, 0.8); - color: #fff; - border-radius: 2px; -} - -/* Creates a small triangle extender for the tooltip */ -.d3-tip:after { - box-sizing: border-box; - display: inline; - font-size: 10px; - line-height: 1; - color: rgba(0, 0, 0, 0.8); - content: '\25BC'; - position: absolute; - text-align: center; - right: 0; -} - -/* Style northward tooltips differently */ -.d3-tip.n:after { - margin: -1px 0 0 0; - top: 100%; - left: 0; -} - -.red-label { - color: red; -} - -.height-0 { - height: 0 !important; -} - -.grid .tick { - stroke: lightgrey; - opacity: 0.1; -} -.grid path { - stroke-width: 0; -} - -body { - min-height: 250px; -} diff --git a/src/style/picker/clockpicker.min.css b/src/style/picker/clockpicker.min.css deleted file mode 100644 index 930b2a0..0000000 --- a/src/style/picker/clockpicker.min.css +++ /dev/null @@ -1,169 +0,0 @@ -.clockpicker .input-group-addon { - cursor: pointer; -} -.clockpicker-moving { - cursor: move; -} -.clockpicker-align-left.popover > .arrow { - left: 25px; -} -.clockpicker-align-top.popover > .arrow { - top: 17px; -} -.clockpicker-align-right.popover > .arrow { - left: auto; - right: 25px; -} -.clockpicker-align-bottom.popover > .arrow { - top: auto; - bottom: 6px; -} -.clockpicker-popover .popover-title { - background-color: #fff; - color: #999; - font-size: 24px; - font-weight: 700; - line-height: 30px; - text-align: center; -} -.clockpicker-popover .popover-title span { - cursor: pointer; -} -.clockpicker-popover .popover-content { - background-color: #f8f8f8; - padding: 12px; -} -.popover-content:last-child { - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; -} -.clockpicker-plate { - background-color: #fff; - border: 1px solid #ccc; - border-radius: 50%; - width: 200px; - height: 200px; - overflow: visible; - position: relative; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.clockpicker-canvas, -.clockpicker-dial { - width: 200px; - height: 200px; - position: absolute; - left: -1px; - top: -1px; -} -.clockpicker-minutes { - visibility: hidden; -} -.clockpicker-tick { - border-radius: 50%; - color: #666; - line-height: 26px; - text-align: center; - width: 26px; - height: 26px; - position: absolute; - cursor: pointer; -} -.clockpicker-tick.active, -.clockpicker-tick:hover { - background-color: #c0e5f7; - background-color: rgba(0, 149, 221, 0.25); -} -.clockpicker-button { - background-image: none; - background-color: #fff; - border-width: 1px 0 0; - border-top-left-radius: 0; - border-top-right-radius: 0; - margin: 0; - padding: 10px 0; -} -.clockpicker-button:hover { - background-image: none; - background-color: #ebebeb; -} -.clockpicker-button:focus { - outline: none !important; -} -.clockpicker-dial { - -webkit-transition: - -webkit-transform 350ms, - opacity 350ms; - -moz-transition: - -moz-transform 350ms, - opacity 350ms; - -ms-transition: - -ms-transform 350ms, - opacity 350ms; - -o-transition: - -o-transform 350ms, - opacity 350ms; - transition: - transform 350ms, - opacity 350ms; -} -.clockpicker-dial-out { - opacity: 0; -} -.clockpicker-hours.clockpicker-dial-out { - -webkit-transform: scale(1.2, 1.2); - -moz-transform: scale(1.2, 1.2); - -ms-transform: scale(1.2, 1.2); - -o-transform: scale(1.2, 1.2); - transform: scale(1.2, 1.2); -} -.clockpicker-minutes.clockpicker-dial-out { - -webkit-transform: scale(0.8, 0.8); - -moz-transform: scale(0.8, 0.8); - -ms-transform: scale(0.8, 0.8); - -o-transform: scale(0.8, 0.8); - transform: scale(0.8, 0.8); -} -.clockpicker-canvas { - -webkit-transition: opacity 175ms; - -moz-transition: opacity 175ms; - -ms-transition: opacity 175ms; - -o-transition: opacity 175ms; - transition: opacity 175ms; -} -.clockpicker-canvas-out { - opacity: 0.25; -} -.clockpicker-canvas-bearing, -.clockpicker-canvas-fg { - stroke: none; - fill: #0095dd; -} -.clockpicker-canvas-bg { - stroke: none; - fill: #c0e5f7; -} -.clockpicker-canvas-bg-trans { - fill: rgba(0, 149, 221, 0.25); -} -.clockpicker-canvas line { - stroke: #0095dd; - stroke-width: 1; - stroke-linecap: round; -} -.clockpicker-button.am-button { - margin: 1px; - padding: 5px; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 4px; -} -.clockpicker-button.pm-button { - margin: 1px 1px 1px 136px; - padding: 5px; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 4px; -} diff --git a/src/style/picker/standalone.min.css b/src/style/picker/standalone.min.css deleted file mode 100644 index 8668a07..0000000 --- a/src/style/picker/standalone.min.css +++ /dev/null @@ -1,187 +0,0 @@ -.popover { - position: absolute; - top: 0; - left: 0; - z-index: 1010; - display: none; - max-width: 276px; - padding: 1px; - text-align: left; - white-space: normal; - background-color: #fff; - background-clip: padding-box; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 6px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -} -.popover.top { - margin-top: -10px; -} -.popover.right { - margin-left: 10px; -} -.popover.bottom { - margin-top: 10px; -} -.popover.left { - margin-left: -10px; -} -.popover-title { - padding: 8px 14px; - margin: 0; - font-size: 14px; - font-weight: 400; - line-height: 18px; - background-color: #f7f7f7; - border-bottom: 1px solid #ebebeb; - border-radius: 5px 5px 0 0; -} -.popover-content { - padding: 9px 14px; -} -.popover > .arrow, -.popover > .arrow:after { - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - overflow: visible; - margin: 0; - padding: 0; - z-index: auto; - background-color: transparent; - -webkit-box-shadow: none; - box-shadow: none; - bottom: auto; - left: auto; - right: auto; - top: auto; - -webkit-transform: none; - -ms-transform: none; - transform: none; -} -.popover > .arrow { - border-width: 11px; -} -.popover > .arrow:after { - content: ''; - border-width: 10px; -} -.popover.top > .arrow { - bottom: -11px; - left: 50%; - margin-left: -11px; - border-top-color: #999; - border-top-color: rgba(0, 0, 0, 0.25); - border-bottom-width: 0; -} -.popover.top > .arrow:after { - bottom: 1px; - margin-left: -10px; - content: ' '; - border-top-color: #fff; - border-bottom-width: 0; -} -.popover.right > .arrow { - top: 50%; - left: -11px; - margin-top: -11px; - border-right-color: #999; - border-right-color: rgba(0, 0, 0, 0.25); - border-left-width: 0; -} -.popover.right > .arrow:after { - bottom: -10px; - left: 1px; - content: ' '; - border-right-color: #fff; - border-left-width: 0; -} -.popover.bottom > .arrow { - top: -11px; - left: 50%; - margin-left: -11px; - border-top-width: 0; - border-bottom-color: #999; - border-bottom-color: rgba(0, 0, 0, 0.25); -} -.popover.bottom > .arrow:after { - top: 1px; - margin-left: -10px; - content: ' '; - border-top-width: 0; - border-bottom-color: #fff; -} -.popover.left > .arrow { - top: 50%; - right: -11px; - margin-top: -11px; - border-right-width: 0; - border-left-color: #999; - border-left-color: rgba(0, 0, 0, 0.25); -} -.popover.left > .arrow:after { - right: 1px; - bottom: -10px; - content: ' '; - border-right-width: 0; - border-left-color: #fff; -} -.btn { - cursor: pointer; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - background-image: none; - border: 1px solid transparent; -} -.btn:focus, -.btn:active:focus, -.btn.active:focus { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.btn:hover, -.btn:focus { - color: #333; - text-decoration: none; -} -.btn:active, -.btn.active { - background-image: none; - outline: 0; - -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} -.btn-default { - color: #333; - background-color: #fff; - border-color: #ccc; -} -.btn-default:hover, -.btn-default:focus, -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - color: #333; - background-color: #ebebeb; - border-color: #adadad; -} -.btn-default:active, -.btn-default.active, -.open .dropdown-toggle.btn-default { - background-image: none; -} -.btn-block { - display: block; - width: 100%; -} -.text-primary { - color: #428bca; -} diff --git a/src/style/settings.css b/src/style/settings.css deleted file mode 100644 index a817431..0000000 --- a/src/style/settings.css +++ /dev/null @@ -1,479 +0,0 @@ -body { - font-family: 'Segoe UI', Tahoma, sans-serif !important; - color: #262626; - background-color: aliceblue; -} - -.content { - width: 750px; - margin: 10px auto; - display: grid; - grid-template-columns: 200px auto; - grid-column-gap: 40px; - grid-template-areas: 'h h' 'n m'; -} - -.title { - font-size: 23px; - font-weight: 650; -} - -.header { - grid-area: h; - margin: 0 0 10px; - font-size: 20px; -} - -a { - color: #3477db; - text-decoration: none; - cursor: pointer; -} - -.nav { - grid-area: n; - border-right: 1px solid #ddd; - padding-right: 15px; - align-self: start; -} - -.nav a { - font-size: 16px; - margin-bottom: 20px; - color: #888; - display: block; -} - -.nav a:hover { - font-size: 16px; - margin-bottom: 20px; - color: #3477db; - display: block; - font-weight: 650; -} - -.nav .active { - color: #3477db; - font-weight: bold; -} - -label { - font-size: 14px; -} - -[type='checkbox']:not(:checked), -[type='checkbox']:checked { - position: absolute; - opacity: 0; - pointer-events: none; -} - -[type='checkbox'] + span { - position: relative; - padding-left: 35px; - cursor: pointer; - display: inline-block; - height: 25px; - line-height: 25px; - font-size: 14px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -[type='checkbox'] + span:before, -[type='checkbox']:not(.filled-in) + span:after { - content: ''; - position: absolute; - top: 0; - left: 0; - width: 18px; - height: 18px; - z-index: 0; - border: 2px solid #5a5a5a; - border-radius: 1px; - margin-top: 3px; -} - -[type='checkbox']:not(:checked):disabled + span:before { - border: none; - background-color: rgba(0, 0, 0, 0.42); -} - -[type='checkbox']:checked:disabled + span:before { - border-right: 2px solid rgba(0, 0, 0, 0.42); - border-bottom: 2px solid rgba(0, 0, 0, 0.42); -} - -[type='checkbox'].filled-in + span:after { - border-radius: 2px; -} - -[type='checkbox'].filled-in + span:before, -[type='checkbox'].filled-in + span:after { - content: ''; - left: 0; - position: absolute; - z-index: 1; -} - -[type='checkbox'].filled-in:not(:checked) + span:before { - width: 0; - height: 0; - border: 3px solid transparent; - left: 6px; - top: 10px; - -webkit-transform: rotateZ(37deg); - transform: rotateZ(37deg); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; -} - -[type='checkbox'].filled-in:not(:checked) + span:after { - height: 17px; - width: 17px; - background-color: transparent; - border: 2px solid #5a5a5a; - top: 0px; - z-index: 0; -} - -[type='checkbox'].filled-in:checked + span:before { - top: -3px; - left: -2px; - width: 7px; - height: 12px; - border-top: 3px solid transparent; - border-left: 3px solid transparent; - border-right: 3px solid #fff; - border-bottom: 3px solid #fff; - -webkit-transform: rotateZ(35deg); - transform: rotateZ(35deg); - -webkit-transform-origin: 100% 100%; - transform-origin: 100% 100%; -} - -[type='checkbox'].filled-in:checked + span:after { - top: 0; - width: 17px; - height: 17px; - border: 2px solid #3477db; - background-color: #3477db; - z-index: 0; -} - -input[type='button'] { - background: #3477db; - color: #fff; - border-radius: 3px; - height: 35px; - line-height: 35px; - padding: 0 20px; - border: 0; - font-size: 14px; - font-weight: 500; - cursor: pointer; - min-width: 80px; - text-align: center; - width: 200px; -} - -input[type='button']:hover { - background: #5c9dfe; - text-decoration: none; -} - -input[type='button'][disabled] { - border: 1px solid #999999; - background-color: #cccccc; - color: #666666; -} - -.margin-top-10 { - margin-top: 10px; -} - -.margin-top-20 { - margin-top: 20px; -} - -.margin-left-5 { - margin-left: 5px; -} - -.option { - min-width: 170px; - color: #444; - background: #fff; - border-radius: 3px; - margin: 0; - padding: 10px 30px 10px 15px; - font-size: 14px; - border-color: #ccc; - position: relative; - cursor: pointer; -} - -.tooltip { - position: relative; - display: inline-block; -} - -/* Tooltip text */ -.tooltip .tooltiptext { - visibility: hidden; - width: 250px; - background-color: #555; - color: #fff; - text-align: center; - padding: 5px 0; - border-radius: 6px; - - /* Position the tooltip text */ - position: absolute; - z-index: 1; - transform: translateX(-50%) translateY(-150%); - - /* Fade in tooltip */ - opacity: 0; - transition: opacity 0.3s; -} - -/* Show the tooltip text when you mouse over the tooltip container */ -.tooltip:hover .tooltiptext { - visibility: visible; - opacity: 1; -} - -.hidden { - display: none !important; -} - -.notify { - width: 220px; - height: 27px; - margin: auto; - background-color: rgb(21, 104, 0); - color: rgb(255, 255, 255); - text-align: center; - font-weight: 600; - border-radius: 5px; - position: fixed; - z-index: 1; - top: 10px; - right: 20px; - font-size: 15px; - white-space: nowrap; - padding: 10px; -} - -.listbox { - overflow-y: auto; - width: 350px; - height: 120px; - padding: 3px; - padding: 3px 5px 3px 5px; - border: 1px solid rgb(172, 169, 169); -} - -.listbox img { - float: right; - cursor: pointer; -} - -#addBlackSiteLbl { - width: 321px; - height: 15px; - padding: 3px; -} - -#addBlackSiteBtn { - height: 24px !important; - line-height: 20px !important; - padding: 0 5px !important; - min-width: 20px !important; - width: 28px !important; -} - -.label-with-list { - width: 333px; - height: 15px; - padding: 3px; -} - -.btn-with-list { - height: 24px !important; - line-height: 20px !important; - padding: 0 5px !important; - min-width: 20px !important; - width: 28px !important; -} - -.list { - width: 440px; - height: 250px; -} - -.clock { - width: 65px; - height: 15px; - padding: 3px; -} - -.clock-li-readonly { - border: none; - margin-left: -3px; -} - -.inline-block { - display: inline-block !important; -} - -.block { - display: block; -} - -.readonly-input { - cursor: default; - border: 0; - display: block; -} - -.element-item { - width: 380px; - font-weight: 600; -} - -.notify.warning { - background-color: rgb(219, 93, 104); -} - -.notify-width-300 { - width: 300px !important; -} - -.button { - background: #ff813f; - color: #fff; - border-radius: 3px; - line-height: 47px; - display: inline-block; - border: 0; - font-size: 15px; - cursor: pointer; - text-align: center; - height: 51px; - min-width: 200px; -} - -.bmc-button img { - width: 27px !important; - margin-bottom: 4px !important; - box-shadow: none !important; - border: none !important; - vertical-align: middle !important; -} - -.bmc-button span { - margin-left: 15px; - font-size: 15px !important; -} - -.bmc-button { - padding: 15px 25px 18px 18px !important; - line-height: 35px !important; - height: 51px !important; - width: 217px !important; - text-decoration: none !important; - color: #ffffff !important; - background-color: #ff813f !important; - border-radius: 3px !important; - border: 1px solid transparent !important; - margin: 0 auto !important; - box-sizing: border-box !important; -} - -.button:hover, -.button:active, -.button:focus, -.bmc-button:hover, -.bmc-button:active, -.bmc-button:focus { - -webkit-box-shadow: 0px 1px 2px 2px rgba(190, 190, 190, 0.5) !important; - text-decoration: none !important; - box-shadow: 0px 1px 2px 2px rgba(190, 190, 190, 0.5) !important; - opacity: 0.85 !important; - color: #ffffff !important; -} - -.setting-notify-block { - width: 450px; - height: 100px; - margin-top: 15px; - background-color: rgb(71, 69, 69); -} - -.setting-notify-block .setting-notify-title { - padding: 15px 20px 5px 0; - font-weight: 700; - color: #ffffff; - font-size: 15px; - text-align: left; - display: block; -} - -.setting-notify-block .setting-notify-message { - padding: 3px 20px 5px 0; - font-size: 14px; - display: block; - width: 320px; -} -.setting-notify-block .setting-notify-message-g { - padding: 0 30px 5px 0; - color: rgb(199, 199, 199); - font-size: 11px; - display: block; -} - -.setting-notify-block .setting-notify-img { - height: 50px; - padding: 25px 15px 25px 25px; -} - -.setting-notify-block .setting-notify-message-block { - display: inline-block; - position: absolute; -} - -.bold { - font-weight: 650; -} - -.site-name { - display: inline-block; - width: 100px; -} - -.permission-btn { - height: 25px !important; - line-height: 25px !important; - background-color: green !important; -} - -.setting-header { - font-weight: 550; - font-size: 15px; -} - -.separator { - margin: 30px 0; -} - -.time-save-btn { - max-width: 20px !important; - margin-left: 5px !important; -} -.time-selector { - min-width: 10px !important; -} diff --git a/src/style/webact.css b/src/style/webact.css deleted file mode 100644 index 98bb108..0000000 --- a/src/style/webact.css +++ /dev/null @@ -1,586 +0,0 @@ -body { - font-family: 'Segoe UI', Tahoma, sans-serif !important; - color: #262626; -} - -.list-of-site { - overflow-y: auto; -} - -#extensionTitle { - margin-top: -20px; -} - -.inline-flex { - display: flex; - height: 40px; - margin: 10px 5px; - box-shadow: - 0 -1px 5px 0 rgb(0 0 0 / 9%), - 0 1px 4px 0 rgb(0 0 0 / 12%); - border-radius: 10px; - padding: 5px; -} - -.inline-flex:hover { - cursor: pointer; -} - -.inline-flex:hover .p-url { - font-size: 15px; - font-weight: 650; -} - -.inline-flex:hover .span-time { - color: rgb(0, 0, 0); -} - -.inline-flex:hover .span-percentage { - color: rgb(0, 0, 0); - font-weight: 650; -} - -.p-url { - width: 320px; - text-decoration: none; - color: rgb(0, 0, 0); - font-size: 15px; - cursor: pointer; - margin: 0; - font-weight: 500; -} - -.p-visits { - width: 320px; - text-decoration: none; - color: rgb(71, 71, 71); - font-size: 13px; - cursor: pointer; - margin: 0; -} - -.span-total { - width: 450px; - text-decoration: none; - color: rgb(0, 0, 0); - margin-left: 5px; - font-size: 12px; - font-weight: 700; - cursor: pointer; -} - -#total .total-block { - width: 344px; - font-size: 13px; - font-weight: 600; -} - -#total .title { - font-weight: 550; - font-size: 12px; - text-align: right; -} - -#total .span-time { - font-weight: 750; - text-align: right; -} - -.visits { - text-decoration: underline; - text-decoration-style: solid; - /* border-bottom: 1px dotted #ccc; */ -} - -.span-percentage { - color: black; - font-size: 12px; -} - -.span-time { - color: #c5c3c3; - font-weight: 700; - text-align: right; - margin-left: auto; - margin-right: 15px; -} - -.span-time .span-active-time { - color: rgb(0, 0, 0); -} - -.day-time .span-active-time { - color: rgb(0, 0, 0); -} - -.margin-left-auto { - margin-left: auto; -} - -.favicon { - margin: 2px 7px 5px 3px; -} - -hr { - border: none; - background-color: rgb(223, 222, 222); - height: 2px; -} - -::-webkit-scrollbar-track { - border-radius: 10px; - background-color: #f5f5f5; -} - -::-webkit-scrollbar { - width: 7px; - background-color: #f5f5f5; -} - -::-webkit-scrollbar-thumb { - border-radius: 10px; - background-color: #555; -} - -.title { - font-size: 12px; - font-weight: 650; - margin: 2px; - text-align: center; -} - -a { - color: rgb(122 122 122); - padding: 4px 5px; - text-align: center; - display: inline-block; - font-size: 12px; - font-weight: 650; - margin: 4px 7px; - transition-duration: 0.4s; - cursor: pointer; - text-decoration: none; - text-transform: uppercase; - border-bottom: 2px solid rgb(195, 194, 194); - background: transparent; - width: 20%; -} - -a:hover { - color: rgb(76, 160, 175); - border-bottom: 2px solid rgb(76, 160, 175); -} - -a.active { - color: rgb(76, 160, 175); - border-bottom: 2px solid rgb(76, 160, 175); -} - -input[type='date'] { - margin: 4px 6px; - height: 22px; -} - -.btn-block { - width: 580px; - margin-bottom: 5px; -} - -.no-data { - width: 500px; - text-align: center; - font-weight: 600; - font-size: 14px; -} - -.calendar-block { - margin-top: 0px; -} - -.today-icon { - cursor: pointer; -} - -.table-header { - border-radius: 5px; - font-weight: 600; - font-size: 13px; - padding: 4px; - background-color: rgb(235, 243, 251); - text-align: center; - margin: 0; -} - -p.table-header { - text-align: center; -} - -.day-block { - display: inline-flex; - width: 100%; - height: 40px; - cursor: pointer; -} - -.day { - width: 415px; - font-size: 13px; - margin-left: 15px; - font-weight: 600; -} - -.day-time { - width: 80px; - margin-left: auto; - margin-right: 10px; - font-weight: 650; - font-size: 13px; - color: #c5c3c3; -} - -.header-title-day { - margin-left: 5px; -} - -.header-title-time { - margin-right: 5px; - float: right; -} - -input[type='checkbox'] { - display: none; -} - -.lbl-toggle { - font-size: 12px; - cursor: pointer; -} - -.collapsible-content { - max-height: 0px; - overflow-y: auto; - transition: max-height 0.25s ease-in-out; -} - -.toggle:checked + .lbl-toggle + .collapsible-content { - max-height: 250px; -} - -.toggle:checked + .lbl-toggle { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.collapsible-content .content-inner { - background: rgba(250, 224, 66, 0.2); - border-bottom: 1px solid rgba(250, 224, 66, 0.45); - border-bottom-left-radius: 7px; - border-bottom-right-radius: 7px; - padding: 7px; - overflow-y: auto; - /* border-left: 3px solid rgb(151, 218, 52); */ -} - -.margin-left-5 { - margin-left: 5px; -} - -.tooltip { - position: relative; - display: inline-block; - vertical-align: middle; -} - -/* Tooltip text */ - -.tooltip .tooltiptext { - font-size: 11px; - font-weight: 500; - visibility: hidden; - width: 180px; - background-color: #555; - color: #fff; - text-align: center; - padding: 5px 0; - border-radius: 6px; - /* Position the tooltip text */ - position: absolute; - z-index: 1; - transform: translateX(-40%) translateY(-120%); - /* Fade in tooltip */ - opacity: 0; - transition: opacity 0.3s; -} - -.visits.tooltip .tooltiptext { - width: 120px; - transform: translateX(-50%) translateY(-120%); -} - -.current-url.tooltip .tooltiptext { - width: 120px; - transform: translateX(-50%) translateY(-120%); -} - -/* Show the tooltip text when you mouse over the tooltip container */ - -.tooltip:hover .tooltiptext { - visibility: visible; - opacity: 1; -} - -.block-img { - width: 28px; - height: 28px; - margin: 3px 15px 5px 3px; -} - -.expander { - background-color: rgb(231, 227, 227); - height: 20px; - text-align: center; - font-weight: 600; - border-radius: 5px; - cursor: pointer; -} - -.button { - width: 42%; - background-color: white; - color: rgb(195, 194, 194); - border: 2px solid rgb(209, 207, 207); -} - -.button:hover { - background-color: white; - color: black; - color: rgb(76, 160, 175); - border: 2px solid rgb(76, 160, 175); -} - -.button.active { - background-color: white; - color: black; - color: rgb(76, 160, 175); - border: 2px solid rgb(76, 160, 175); -} - -.hide { - display: none; -} - -.chart-btn { - border-radius: 5px; - background-color: transparent; - background-repeat: no-repeat; - background-position: 5px; - cursor: pointer; - height: 16px; - padding-left: 16px; - vertical-align: middle; -} - -.chart-btn-donut { - background-image: url(/icons/pie-chart.png); -} - -.chart-btn-heatmap { - background-image: url(/icons/heat-map-16.png); -} - -#statsBlock { - color: #9b9b9b; - font-size: 13px; -} - -#statsBlock .block { - width: 45%; - display: inline-block; - text-align: center; -} - -#statsBlock .summary-title { - background: #dbdbdb; - border: #dbdbdb 1px solid; - border-radius: 10px; - color: #919191; - padding: 2px; -} - -#statsBlock .block-additional { - width: 30%; - display: inline-block; - text-align: center; - height: 55px; -} - -#statsBlock .span-time { - font-weight: 600; - text-align: center !important; - height: 35px; -} - -#statsBlock .span-time-active { - font-weight: 600; -} - -#statsBlock .title-block { - margin-left: 10%; - margin-top: 5px; -} - -#statsBlock .value-block { - color: black; - font-weight: 600; -} - -#statsBlock .inline-block { - display: inline-block; -} - -#statsBlock .most-active-days-title { - width: 50%; - display: inline-block; -} - -#statsBlock .most-active-days-value { - display: inline-block; - margin-left: 20%; - vertical-align: top; -} - -.warning { - color: #9b9b9b; - font-size: 13px; - text-align: center; -} - -.preloader { - position: fixed; - left: 0; - top: 0; - right: 0; - bottom: 0; - overflow: hidden; - background: #fff; - z-index: 1001; -} - -.preloader__image { - position: relative; - top: 50%; - left: 50%; - width: 64px; - height: 64px; - margin-top: -32px; - margin-left: -32px; - background: url(/icons/preloader.svg) no-repeat 50% 50%; -} - -.loaded_hiding .preloader { - transition: 0.3s opacity; - opacity: 0; -} - -.loaded .preloader { - display: none; -} - -.hint-for-settings { - background: rgba(62, 155, 192, 1); - border-radius: 5px; - top: 65px; - color: #fff; - right: 2%; - padding: 5px 15px; - position: absolute; - z-index: 98; - width: 400px; - height: 220px; -} - -.hint-for-settings p { - font-size: 13px; -} - -.hint-for-settings::before { - border: solid; - border-color: rgba(62, 155, 192, 1) transparent; - border-width: 0 10px 10px 10px; - top: -10px; - content: ''; - left: 75%; - position: absolute; - z-index: 99; -} - -.title-block { - margin-top: 0; - font-weight: 600; - font-size: 13px; -} - -.close-hint { - position: absolute; - top: 10px; - right: 10px; - cursor: pointer; -} - -.arrow { - color: yellow; -} - -.dark-mode { - color: #ffffff !important; - background-color: #121212 !important; -} - -.dark-mode .span-active-time { - color: #ffffff; -} - -.dark-mode .p-url { - color: #ffffff; -} - -.dark-mode .table-header { - color: #ffffff; - background-color: #838383; -} - -.dark-mode .inline-flex:hover .span-percentage { - color: #ffffff; -} - -.dark-mode .span-percentage { - color: #ffffff; -} - -.dark-mode .block .value-block { - color: #ffffff !important; -} - -.dark-mode .inline-flex:hover .span-time { - color: #ffffff; -} - -.dark-mode .inline-flex .p-visits { - color: #ffffff; -} - -.dark-mode .inline-flex:hover .p-visits { - color: #ffffff; -} - -.dark-mode .span-time { - color: #a5a5a5; -} - -.dark-mode .summary-title { - color: #000000 !important; -} - -.dark-mode .value-block { - color: #ffffff !important; -} From 5f0677c37185afa63524b91711c55ac7368098a7 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 7 Aug 2023 23:57:19 +0300 Subject: [PATCH 182/329] Fix review style and german localization --- src/_locales/de/messages.json | 100 ++++++++++++------------- src/components/Review.vue | 2 +- src/jobs/daily-summary-notification.ts | 15 ++-- 3 files changed, 60 insertions(+), 57 deletions(-) diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index 68a4f58..7221e2c 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -3,7 +3,7 @@ "message": "Web Activity Time Tracker - Web Analytics" }, "extDescription": { - "message": "Verfolgen, beschränken und blockieren Sie die Zeit Ihrer Web-Aktivität. Achte darauf, wie viel Zeit Sie auf Seiten verbringen." + "message": "Verfolgen und begrenzen Sie die Zeit Ihrer Webaktivitäten und blockieren Sie den Zugang zu den Websites. Überwachen Sie Ihre Internetnutzung." }, "settings": { "message": "Einstellungen" @@ -12,7 +12,7 @@ "message": "Heute" }, "allTime": { - "message": "Die ganze Zeit " + "message": "Gesamte Zeit" }, "byDays": { "message": "Täglich" @@ -27,37 +27,37 @@ "message": "Alle Websites anzeigen" }, "sortBy": { - "message": "Nach sortieren" + "message": "Sortieren nach" }, "usageTime": { "message": "Verwendungszeit" }, "session": { - "message": "Die Session " + "message": "Sitzung" }, "someSession": { - "message": "Die Sessionen" + "message": "Sitzungen" }, "sessions": { - "message": "Die Sessionen " + "message": "Sitzungen" }, "days": { "message": "Tage" }, "aggregate": { - "message": "Aggregierte Daten seit" + "message": "Gesammelte Daten seit" }, "websites": { - "message": "webseiten" + "message": "Webseiten" }, "cannotOpenFile": { - "message": "Aus Sicherheitsgründen können Sie keine lokale Datei öffnen" + "message": "Aufgrund des Sicherheitsprotokolls können Sie eine lokale Datei nicht öffnen" }, "document": { - "message": "Das Dokument" + "message": "Dokument" }, "limit": { - "message": "Das Limit " + "message": "Limit" }, "d": { "message": "d" @@ -93,25 +93,25 @@ "message": "Der inaktivste Tag" }, "todayInclude": { - "message": "Der heutige Tag ist in der Statistik enthalten. Klicken Sie auf, wenn Sie aus der Statistik ausschließen möchten." + "message": "Der heutige Tag ist in der Statistik enthalten. Aus der Statistik ausschließen." }, "todayEcclude": { - "message": "Der heutige Tag ist aus der Statistik ausgeschlossen. Klicken Sie auf, wenn Sie in die Statistik einbeziehen möchten." + "message": "Der heutige Tag ist aus der Statistik ausgeschlossen. In die Statistik einbeziehen." }, "averageTimeByDays": { "message": "Durchschnittliche Zeit für ausgewählte Tage" }, "exportToCsv": { - "message": "In CSV exportieren" + "message": "Als CSV exportieren" }, "week": { "message": "Diese Woche" }, "month": { - "message": "In diesem Monat " + "message": "Diesen Monat" }, "lastMonth": { - "message": "Im letzten Monat" + "message": "Letzter Monat" }, "generalSettings": { "message": "Einstellungen" @@ -120,44 +120,44 @@ "message": "Weiße Liste" }, "limitsSettings": { - "message": "Die Beschränkungen" + "message": "Beschränkungen" }, "notificationsSettings": { - "message": "Die Notifikationen" + "message": "Benachrichtigungen" }, "aboutSettings": { - "message": "Über das Programm" + "message": "Über die Erweiterung" }, "viewTimeInBadge": { "message": "Zeitindikator anzeigen", - "description": "Sie können die aktuellen Informationen zur \"verbrauchten Zeit\" im Kurzformat anzeigen" + "description": "Die aktuellen Informationen zur \"verbrauchten Zeit\" im Kurzformat anzeigen" }, "deferringDescription": { - "message": "Sie können die Sperre nur einmal während des Tages um 5 Minuten verschieben" + "message": "Die Sperre kann nur einmal pro Tag um 5 Minuten verschoben werden" }, "allowDeferringBlock": { "message": "Verzögerung der Sperre um 5 Minuten zulassen", "description": "Nachdem die Site gesperrt wurde, können Sie die Sperrung einmal täglich um 5 Minuten verschieben" }, "intervalInactivity": { - "message": "Stoppen Sie den Tracker, wenn es keine Aktionen während:", - "description": "Dies sind alle Aktionen mit der Maus oder der Tastatur" + "message": "Zeiterfassung stoppen, bei Inaktivität für:", + "description": "Betrifft alle Aktionen mit der Maus oder der Tastatur" }, "exportToCsvSetting": { - "message": "Ihre Webaktivitätsdaten werden in das CSV-Format exportiert", - "description": "Sie können Ihre Webaktivität für jeden Datumsbereich exportieren" + "message": "Ihre Webaktivitätsdaten als CSV-Datei exportieren", + "description": "Ihre Webaktivitäten für einen beliebigen Zeitraum exportieren" }, "sec": { - "message": "sekundenschnelle" + "message": "Sekunden" }, "min": { - "message": "minute" + "message": "Minute" }, "2min": { - "message": "minuten" + "message": "Minuten" }, "mins": { - "message": "minuten" + "message": "Minuten" }, "whiteList": { "message": "Aktivität und Zeit für diese Websites werden nicht erfasst." @@ -166,56 +166,56 @@ "message": "Website hinzufügen" }, "enterWebsite": { - "message": "Geben Sie Ihre Website ein..." + "message": "Namen der Website eingeben..." }, "enterNotification": { - "message": "Geben Sie den Text für die Benachrichtigung ein..." + "message": "Text für die Benachrichtigung eingeben..." }, "limits": { - "message": "Tägliche Zugriffsbeschränkungen für die Website", + "message": "Tägliche Zugriffsbeschränkungen für Websites", "description": "Legen Sie die maximale Zeit fest, die pro Tag für den Besuch der Website zulässig ist. Nach dieser Zeit wird die Website gesperrt." }, "limitsTip": { - "message": "Wenn Sie die Blockierungszeit auf 0 Stunden 0 Minuten einstellen, wird die Site sofort blockiert" + "message": "Setzen Sie die Blockierungszeit auf 0 Stunden 0 Minuten, um die Website sofort zu blockieren." }, "save": { "message": "Speichern" }, "showDailyNotifacation": { - "message": "Tägliche Zusammenfassungsbenachrichtigungen", + "message": "Tägliche Zusammenfassung als Benachrichtigung", "description": "Am Ende jedes Tages erhalten Sie eine Benachrichtigung mit einer Zusammenfassung Ihrer täglichen Nutzung." }, "notificationTime": { "message": "Benachrichtigungen für Websites", - "description": "Zeigen Sie jedes Mal Benachrichtigungen an, wenn Sie den angegebenen Zeitraum auf der Website verbringen" + "description": "Jedes Mal eine Benachrichtigung anzeigen, wenn Sie den angegebenen Zeitraum auf einer Website verbringen." }, "notificationMessage": { "message": "Benachrichtigungstext", "description": "Dieser Text wird in der Benachrichtigung für Websites angezeigt" }, "notificationTimeSetting": { - "message": "Benachrichtigungszeit mit zusammenfassenden Informationen zur täglichen Nutzung" + "message": "Tägliche Zusammenfassung um folgende Uhrzeit anzeigen:" }, "github": { - "message": "Wenn Sie eine Frage haben oder ein Problem melden möchten, können Sie dies tun" + "message": "Feedback zur Erweiterung geben oder ein Problem melden: " }, "question": { - "message": "Sie können auch Fragen stellen oder Ihre Vorschläge hier abgeben (hinterlassen)" + "message": "Eine Frage stellen oder Verbesserungen vorschlagen: " }, "supportForm": { - "message": "unterstützungsformular" + "message": "Unterstützungsformular" }, "doYouEnjoy": { - "message": "Gefällt Ihnen" + "message": "Gefällt Ihnen diese Erweiterung?" }, "review": { - "message": "Schreiben Sie eine Bewertung" + "message": "Schreiben Sie eine Bewertung!" }, "block": { - "message": "Sie haben heute Ihr Nutzungslimit erreicht" + "message": "Sie haben Ihr tägliches Nutzungslimit erreicht für " }, "5mins": { - "message": "+ 5 minuten" + "message": "+ 5 Minuten" }, "todayUsageTime": { "message": "Bisherige Gesamtnutzungszeit " @@ -227,26 +227,26 @@ "message": "Die meistbesuchte Website " }, "dashboard": { - "message": "Dashboard" + "message": "Übersicht" }, "timeChartDescription": { "message": "Dies ist eine stundenweise Zeitleiste für den Tag" }, "enjoyAndReview": { - "message": "Genießen Sie die Erweiterung?", - "description": "Bewerten Web Activity Time Tracker" + "message": "Gefällt Ihnen diese Erweiterung?", + "description": "Web Activity Time Tracker bewerten" }, "removeAllData": { "message": "Alle Daten entfernen", - "description": "Sie können alle Daten und Statistiken der besuchten Websites für immer löschen." + "description": "Alle Daten und Statistiken der besuchten Websites für immer löschen." }, "remove": { - "message": "Entfernen" + "message": "Löschen" }, "removeAllDataConfirm": { "message": "Sind Sie sicher, dass Sie alle Daten löschen möchten?" }, "cancel": { - "message": "Annullierung" + "message": "Abbrechen" } -} +} \ No newline at end of file diff --git a/src/components/Review.vue b/src/components/Review.vue index 250451b..adca4ae 100644 --- a/src/components/Review.vue +++ b/src/components/Review.vue @@ -67,7 +67,7 @@ async function openStore() { diff --git a/src/tracker.ts b/src/tracker.ts index 06afc2f..b28e2a1 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -41,8 +41,8 @@ async function trackTime() { const activeDomain = extractHostname(activeTab!.url); if (await isInBlackList(activeDomain)) { - useBadge({ - tabId: activeTab!.id!, + await useBadge({ + tabId: activeTab?.id, text: 'n/a', color: BadgeColor.green, }); @@ -128,14 +128,14 @@ async function mainTracker( const viewInBadge = await Settings.getInstance().getSetting(StorageParams.VIEW_TIME_IN_BADGE); if (viewInBadge) - useBadge({ - tabId: activeTab!.id!, + await useBadge({ + tabId: activeTab?.id, text: convertSummaryTimeToBadgeString(tab.days.at(-1)!.summary), color: BadgeColor.blue, }); else - useBadge({ - tabId: activeTab!.id!, + await useBadge({ + tabId: activeTab?.id, text: '', color: BadgeColor.red, }); diff --git a/src/welcome.html b/src/welcome.html new file mode 100644 index 0000000..1a91c8f --- /dev/null +++ b/src/welcome.html @@ -0,0 +1,13 @@ + + + + + + + Welcome to the Web Activity Time Tracker + + + + + + diff --git a/src/welcome.ts b/src/welcome.ts new file mode 100644 index 0000000..c7d5b0e --- /dev/null +++ b/src/welcome.ts @@ -0,0 +1,7 @@ +import Welcome from './pages/Welcome.vue'; +import { createApp } from 'vue'; +import i18n from './plugins/i18n'; + +const app = createApp(Welcome); +app.use(i18n); +app.mount('body'); diff --git a/vite.config.ts b/vite.config.ts index 977b915..67a0bbd 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -54,7 +54,7 @@ export default defineConfig(({ mode }) => ({ webExtension({ manifest: generateManifest, watchFilePaths: ['package.json', 'manifest.json'], - additionalInputs: ['src/block.html'], + additionalInputs: ['src/block.html', 'src/welcome.html'], }), copy({ targets: [{ src: 'src/_locales', dest: 'dist' }], From 6288b3cd6880a8100231fd1ff629048c946ab65f Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 22 Aug 2023 18:10:28 +0300 Subject: [PATCH 191/329] Localization welcome page --- src/_locales/de/messages.json | 36 +++++++++++++++++++++++++++++++++++ src/_locales/en/messages.json | 36 +++++++++++++++++++++++++++++++++++ src/_locales/ru/messages.json | 36 +++++++++++++++++++++++++++++++++++ src/pages/Welcome.vue | 35 +++++++++++++++------------------- 4 files changed, 123 insertions(+), 20 deletions(-) diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index d3d3113..601c159 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -258,5 +258,41 @@ }, "restore": { "message": "Wiederherstellen" + }, + "welcome": { + "message": "Willkommen bei Web Activity Time Tracker", + "description": "Web Activity Time Tracker ist eine open-source, kostenlose und werbefreie Erweiterung, mit der Sie die Zeit, die Sie für das Durchsuchen von Websites aufgewendet haben, und die Anzahl der Besuche nachverfolgen können." + }, + "getStarted": { + "message": "Anleitung" + }, + "welcomeStart": { + "message": "Sie können die Erweiterung in nur 3 einfachen Schritten schnell verwenden" + }, + "pinIcon": { + "message": "Pin das Symbol" + }, + "pinIconPart1": { + "message": "Um diese Erweiterung bequemer zu verwenden, können Sie das Symbol an die Symbolleiste anheften. Klicken Sie auf das Symbol" + }, + "pinIconPart2": { + "message": "und klicken Sie dann auf das Pin-Symbol" + }, + "browse": { + "message": "Durchsuchen Sie alle Websites", + "description": "Wenn Sie eine Website besuchen, werden Sie sehen, dass die Uhrzeit auf dem Symbol angezeigt wird, genau wie hier" + }, + "seeData": { + "message": "Zeigen Sie Ihre Daten auf der Popup-Seite und im Dashboard an", + "description": "Klicken Sie auf das Erweiterungssymbol, um eine Popup-Seite zu öffnen, und Sie können die mit einem Kreisdiagramm gerenderten Daten für heute, für alle Zeiten oder für Tage lesen. In einem Popup-Fenster können Sie das Dashboard öffnen, und es zeigt Ihnen die heutige Zeit nach Stunden an. Und Sie können ein tägliches Zeitlimit für alle Websites festlegen, Benachrichtigungen für Websites festlegen oder Daten in CSV exportieren." + }, + "close": { + "message": "Schließen" + }, + "useExtension": { + "message": "Verwenden Sie die Erweiterung" + }, + "next": { + "message": "Weiter" } } \ No newline at end of file diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index bf0424a..4af188c 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -258,5 +258,41 @@ }, "restore": { "message": "Restore" + }, + "welcome": { + "message": "Welcome to Web Activity Time Tracker", + "description": "Web Activity Time Tracker is open-source, free and no ads extension, which can help you track the time you spent on browsing websites and the count of visit." + }, + "getStarted": { + "message": "Get started" + }, + "welcomeStart": { + "message": "You can quicly start using the extension in just 3 easy steps" + }, + "pinIcon": { + "message": "Pin the icon" + }, + "pinIconPart1": { + "message": "To use this extension more conveniently, you can pin the icon to toolbar. Click the icon" + }, + "pinIconPart2": { + "message": "and then click the pin icon" + }, + "browse": { + "message": "Browse any websites", + "description": "When you visit any website, you will see that the time is displayed on the icon, just like here" + }, + "seeData": { + "message": "View your data on the popup page and on the dashboard", + "description": "Click on the extension icon to open a popup page and you will be able to read the data visualized using a pie chart, for today, for all time or by day. In the popup window, you can open the dashboard and it will show you today's time by the clock. And you can set a daily time limit for any websites, notifications for websites, or export data to CSV." + }, + "close": { + "message": "Close" + }, + "useExtension": { + "message": "Use the extension" + }, + "next": { + "message": "Next" } } diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index f019ff2..00e4db7 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -258,5 +258,41 @@ }, "restore": { "message": "Восстановить из резервной копиии" + }, + "welcome": { + "message": "Добро пожаловать в Web Activity Time Tracker", + "description": "Web Activity Time Tracker это бесплатное, без рекламы и \u0441 открытым исходным кодом расширение, которое поможем вам отслеживать время, потраченное вами на просмотр веб-сайтов, и покажет количество посещений." + }, + "getStarted": { + "message": "Руководство" + }, + "welcomeStart": { + "message": "Вы можете быстро начать использовать расширение всего за 3 простых шага" + }, + "pinIcon": { + "message": "Закрепите значок" + }, + "pinIconPart1": { + "message": "Чтобы более удобно использовать это расширение, вы можете прикрепить значок к панели инструментов. Нажмите на значок" + }, + "pinIconPart2": { + "message": "и затем нажмите на значок закрепления" + }, + "browse": { + "message": "Просматривайте любые веб-сайты", + "description": "При посещении любого веб-сайта вы увидите, что время отображается на значке, точно так же, как здесь" + }, + "seeData": { + "message": "Просматривайте ваши данные на всплывающей странице и на панели мониторинга", + "description": "Нажмите на значок расширения, чтобы открыть всплывающую страницу, и вы сможете увидеть данные посещения сайтов за сегодня, за все время и по дням. Во всплывающем окне вы можете открыть панель мониторинга, и вы увидите сегодняшнее время по часам. Там же вы можете установить ежедневное ограничение по времени для любых веб-сайтов, уведомления для веб-сайтов или экспортировать данные в CSV." + }, + "close": { + "message": "Закрыть" + }, + "useExtension": { + "message": "Начать пользоваться" + }, + "next": { + "message": "Продолжить" } } diff --git a/src/pages/Welcome.vue b/src/pages/Welcome.vue index 6642e50..9f43a16 100644 --- a/src/pages/Welcome.vue +++ b/src/pages/Welcome.vue @@ -1,37 +1,30 @@ diff --git a/src/utils/get-type-of-url.ts b/src/utils/get-type-of-url.ts new file mode 100644 index 0000000..6c56f9f --- /dev/null +++ b/src/utils/get-type-of-url.ts @@ -0,0 +1,5 @@ +import { TypeOfUrl } from './enums'; + +export function getTypeOfUrl(url: string) { + return url.startsWith('file:') ? TypeOfUrl.Document : TypeOfUrl.WebSite; +} From a18766060e626219216febbf905cc48a5de46ada Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 31 Oct 2023 14:11:48 +0300 Subject: [PATCH 218/329] Chart by days for domain --- src/components/ByDays.vue | 5 +- src/components/ByDaysChart.vue | 2 +- src/components/WebsiteStats.vue | 13 ++++- src/compositions/useTabStatsByDays.ts | 84 +++++++++++++++++++++++++++ 4 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 src/compositions/useTabStatsByDays.ts diff --git a/src/components/ByDays.vue b/src/components/ByDays.vue index 5f0d0b6..25e4b24 100644 --- a/src/components/ByDays.vue +++ b/src/components/ByDays.vue @@ -41,7 +41,7 @@
{{ t('averageTimeByDays.message') }}

{{ convertSummaryTimeToString(tabsByDays!.averageTime) }}

-
+
@@ -161,4 +161,7 @@ async function exportToCsv() { justify-content: space-between; margin: 0 25px; } +.by-days-chart { + height: 240px; +} diff --git a/src/components/ByDaysChart.vue b/src/components/ByDaysChart.vue index a5b3b42..1e6d699 100644 --- a/src/components/ByDaysChart.vue +++ b/src/components/ByDaysChart.vue @@ -95,7 +95,7 @@ function refreshChart() { diff --git a/src/compositions/useTabStatsByDays.ts b/src/compositions/useTabStatsByDays.ts new file mode 100644 index 0000000..1bbfdfb --- /dev/null +++ b/src/compositions/useTabStatsByDays.ts @@ -0,0 +1,84 @@ +import { CurrentTabItem } from '../dto/currentTabItem'; +import { DayTabs, TabListByDays } from '../dto/tabListSummary'; +import { injectTabsRepository } from '../repository/inject-tabs-repository'; +import { isSameDay } from 'date-fns'; + +export async function useTabStatsByDays( + dateFrom: Date, + dateTo: Date, + domain: string, +): Promise { + const repo = await injectTabsRepository(); + const tab = repo.getTab(domain); + let daysTabs: DayTabs[] = []; + + if (tab == undefined) return null; + + const isTheSameDay = isSameDay(dateFrom, dateTo); + + const unSortedTabsByDays = isTheSameDay + ? tab.days.filter(s => isSameDay(new Date(s.date), dateFrom)) + : tab.days.filter(s => new Date(s.date) >= dateFrom && new Date(s.date) <= dateTo); + + if (unSortedTabsByDays.length == 0) + return { + days: [], + averageTime: 0, + summaryTime: 0, + }; + + unSortedTabsByDays.forEach(tabDay => { + if ( + (new Date(tabDay.date) >= dateFrom && new Date(tabDay.date) <= dateTo) || + (isTheSameDay && isSameDay(new Date(tabDay.date), dateFrom)) + ) { + let dayTab = daysTabs.find(x => x.day == tabDay.date); + if (dayTab == undefined) { + dayTab = { + day: tabDay.date, + tabs: [], + time: tabDay.summary, + }; + dayTab.tabs.push({ + favicon: tab.favicon, + url: tab.url, + sessions: tabDay.counter, + summaryTime: tabDay.summary, + }); + daysTabs.push(dayTab); + } else { + dayTab.time += tabDay.summary; + dayTab.tabs.push({ + favicon: tab.favicon, + url: tab.url, + sessions: tabDay.counter, + summaryTime: tabDay.summary, + }); + } + } + }); + + daysTabs.sort(function (a, b) { + return new Date(a.day).valueOf() - new Date(b.day).valueOf(); + }); + + daysTabs.forEach(dayTab => { + dayTab.tabs.sort(function (a: CurrentTabItem, b: CurrentTabItem) { + return b.summaryTime - a.summaryTime; + }); + }); + + const summaryTime = daysTabs + .map(x => x.time) + .reduce(function (a, b) { + return a + b; + }); + + const averageTime = Math.round(summaryTime / daysTabs.length); + + return { + days: daysTabs, + summaryTime: summaryTime, + averageTime: averageTime, + }; +} From 56a3bc51800c3c9b5d7a501b6aa1e02200d63d8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nik=20Jan=20=C5=A0pruk?= Date: Sat, 4 Nov 2023 22:30:58 +0100 Subject: [PATCH 219/329] Update messages.json - Typo Fixed a typo --- src/_locales/en/messages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 4bcfade..0de7787 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -300,7 +300,7 @@ "description": "Show the list of changes after updating extension" }, "byHours": { - "message": "Horly" + "message": "Hourly" }, "intervals": { "message": "Intervals" From f955c431f918d34e2b28bb6ffd2ea99d939d6e05 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 5 Nov 2023 20:32:06 +0300 Subject: [PATCH 220/329] Details stats component --- src/components/WebsiteStats.vue | 6 ++- src/components/WebsiteStatsDetails.vue | 67 ++++++++++++++++++++++++++ src/compositions/useTabListByDays.ts | 10 ++++ src/compositions/useTabStatsByDays.ts | 10 ++++ src/dto/tabListSummary.ts | 2 + 5 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 src/components/WebsiteStatsDetails.vue diff --git a/src/components/WebsiteStats.vue b/src/components/WebsiteStats.vue index 0e07c61..7368467 100644 --- a/src/components/WebsiteStats.vue +++ b/src/components/WebsiteStats.vue @@ -46,7 +46,10 @@ >
- + +
+
+
@@ -64,6 +67,7 @@ import { useI18n } from 'vue-i18n'; import Favicon from './Favicon.vue'; import NoDataByDays from './NoDataByDays.vue'; import ByDaysChart from '../components/ByDaysChart.vue'; +import WebsiteStatsDetails from '../components/WebsiteStatsDetails.vue'; import { openPage } from '../utils/open-page'; import { computed, onMounted, ref } from 'vue'; import { SettingsTab } from '../utils/enums'; diff --git a/src/components/WebsiteStatsDetails.vue b/src/components/WebsiteStatsDetails.vue new file mode 100644 index 0000000..3df6c2e --- /dev/null +++ b/src/components/WebsiteStatsDetails.vue @@ -0,0 +1,67 @@ + + + + + + + diff --git a/src/compositions/useTabListByDays.ts b/src/compositions/useTabListByDays.ts index e755c76..0e8525c 100644 --- a/src/compositions/useTabListByDays.ts +++ b/src/compositions/useTabListByDays.ts @@ -26,6 +26,7 @@ export async function useTabListByDays( days: [], averageTime: 0, summaryTime: 0, + sessions: 0, }; unSortedTabsByDays.forEach(tab => { @@ -40,6 +41,7 @@ export async function useTabListByDays( day: day.date, tabs: [], time: day.summary, + sessions: day.counter, }; dayTab.tabs.push({ favicon: tab.favicon, @@ -50,6 +52,7 @@ export async function useTabListByDays( daysTabs.push(dayTab); } else { dayTab.time += day.summary; + dayTab.sessions += day.counter; dayTab.tabs.push({ favicon: tab.favicon, url: tab.url, @@ -77,11 +80,18 @@ export async function useTabListByDays( return a + b; }); + const totalSessions = daysTabs + .map(x => x.sessions) + .reduce(function (a, b) { + return a + b; + }); + const averageTime = Math.round(summaryTime / daysTabs.length); return { days: daysTabs, summaryTime: summaryTime, averageTime: averageTime, + sessions: totalSessions, }; } diff --git a/src/compositions/useTabStatsByDays.ts b/src/compositions/useTabStatsByDays.ts index 1bbfdfb..e85b03a 100644 --- a/src/compositions/useTabStatsByDays.ts +++ b/src/compositions/useTabStatsByDays.ts @@ -25,6 +25,7 @@ export async function useTabStatsByDays( days: [], averageTime: 0, summaryTime: 0, + sessions: 0, }; unSortedTabsByDays.forEach(tabDay => { @@ -38,6 +39,7 @@ export async function useTabStatsByDays( day: tabDay.date, tabs: [], time: tabDay.summary, + sessions: tabDay.counter, }; dayTab.tabs.push({ favicon: tab.favicon, @@ -48,6 +50,7 @@ export async function useTabStatsByDays( daysTabs.push(dayTab); } else { dayTab.time += tabDay.summary; + dayTab.sessions += tabDay.counter; dayTab.tabs.push({ favicon: tab.favicon, url: tab.url, @@ -74,11 +77,18 @@ export async function useTabStatsByDays( return a + b; }); + const totalSessions = daysTabs + .map(x => x.sessions) + .reduce(function (a, b) { + return a + b; + }); + const averageTime = Math.round(summaryTime / daysTabs.length); return { days: daysTabs, summaryTime: summaryTime, averageTime: averageTime, + sessions: totalSessions, }; } diff --git a/src/dto/tabListSummary.ts b/src/dto/tabListSummary.ts index f68266b..400fa39 100644 --- a/src/dto/tabListSummary.ts +++ b/src/dto/tabListSummary.ts @@ -33,10 +33,12 @@ export interface TabListByDays { days: DayTabs[]; averageTime: number; summaryTime: number; + sessions: number; } export interface DayTabs { day: string; tabs: CurrentTabItem[]; time: number; + sessions: number; } From aee26e44d7db3b2db0352a784c081e1143a058b5 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 5 Nov 2023 20:59:32 +0300 Subject: [PATCH 221/329] Localization --- src/_locales/de/messages.json | 3 +++ src/_locales/en/messages.json | 3 +++ src/_locales/ru/messages.json | 3 +++ src/components/WebsiteStatsDetails.vue | 6 +++--- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index 46e00c5..0dfd814 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -86,6 +86,9 @@ "averageTime": { "message": "Durchschnittliche Zeit an aktiven Tagen" }, + "averageDailyUsage": { + "message": "Durchschnittliche tägliche Nutzung" + }, "mostActiveDay": { "message": "Der aktivste Tag" }, diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 4bcfade..8700960 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -86,6 +86,9 @@ "averageTime": { "message": "Average time for active days" }, + "averageDailyUsage": { + "message": "Average daily usage" + }, "mostActiveDay": { "message": "The most active day" }, diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index e3f9ccc..270c112 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -86,6 +86,9 @@ "averageTime": { "message": "Среднее время по активным дням" }, + "averageDailyUsage": { + "message": "Среднее ежедневное использование" + }, "mostActiveDay": { "message": "Самый активный день" }, diff --git a/src/components/WebsiteStatsDetails.vue b/src/components/WebsiteStatsDetails.vue index 3df6c2e..e205021 100644 --- a/src/components/WebsiteStatsDetails.vue +++ b/src/components/WebsiteStatsDetails.vue @@ -1,19 +1,19 @@ - diff --git a/src/functions/useBadge.ts b/src/functions/useBadge.ts index ddd9a6d..2f08c4e 100644 --- a/src/functions/useBadge.ts +++ b/src/functions/useBadge.ts @@ -8,9 +8,9 @@ export interface BadgeState { } export enum BadgeIcon { - timer = '/assets/icons/128x128.png', - pomodoroWorkingTime = '/assets/icons/empty.png', - pomodoroRestTime = '/assets/icons/empty.png', + default = '/assets/icons/128x128.png', + pomodoroWorkingTime = '/assets/icons/pomodoro.png', + pomodoroRestTime = '/assets/icons/pomodoro-rest-icon.png', } export enum BadgeColor { @@ -26,8 +26,15 @@ export async function useBadge(badge: BadgeState): Promise { tabId: badge.tabId, text: badge.text, }); - if (badge.icon) + if (badge.icon) { await Browser.action.setIcon({ path: badge.icon, }); + await Browser.action.setBadgeText({ + text: badge.text, + }); + } else + await Browser.action.setIcon({ + path: BadgeIcon.default, + }); } diff --git a/src/tracker.ts b/src/tracker.ts index 9c534ed..27bca9d 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -42,7 +42,7 @@ async function trackTime() { await checkPomodoro(); - if (await isInBlackList(activeDomain)) { + if ((await isInBlackList(activeDomain)) && (await canChangeBadge())) { await useBadge({ tabId: activeTab?.id, text: 'n/a', @@ -127,7 +127,9 @@ async function mainTracker( tab.incSummaryTime(); - const viewInBadge = await Settings.getInstance().getSetting(StorageParams.VIEW_TIME_IN_BADGE); + const viewInBadge = + (await Settings.getInstance().getSetting(StorageParams.VIEW_TIME_IN_BADGE)) && + (await canChangeBadge()); if (viewInBadge) await useBadge({ @@ -164,6 +166,10 @@ async function saveTabs() { await storage.saveTabs(tabs); } +async function canChangeBadge() { + return !(await Settings.getInstance().getSetting(StorageParams.IS_POMODORO_ENABLED)) as boolean; +} + Browser.runtime.onMessage.addListener(async message => { if (message == Messages.ClearAllData) { const storage = injecStorage(); From bd98225e7d719f4bcbe3d2efdc02db23372889a4 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 13 Feb 2024 19:45:57 +0300 Subject: [PATCH 253/329] Fix broken datepicker styles --- src/assets/css/general.css | 10 +++++----- src/components/Dashboad.vue | 14 +++++++++++++- src/components/Pomodoro.vue | 12 +++++++++++- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/assets/css/general.css b/src/assets/css/general.css index a803a71..bac2baf 100644 --- a/src/assets/css/general.css +++ b/src/assets/css/general.css @@ -74,7 +74,7 @@ select { .w-100 { width: 100%; } -button, input[type='button'] { +input[type='button'] { background: #428bff; color: #fff; border-radius: 3px; @@ -90,22 +90,22 @@ button, input[type='button'] { width: 200px; } -button, input[type='button']:hover { +input[type='button']:hover { background: #5c9dfe; text-decoration: none; } -button, input[type='button'].alert { +input[type='button'].alert { background: #fe5c5c !important; } -button, input[type='button'].info { +input[type='button'].info { background: #ffffff !important; color: black; border: 1px solid black; } -button, input[type='button'][disabled] { +input[type='button'][disabled] { border: 1px solid #999999; background-color: #cccccc; color: #666666; diff --git a/src/components/Dashboad.vue b/src/components/Dashboad.vue index b94beb1..9658ff2 100644 --- a/src/components/Dashboad.vue +++ b/src/components/Dashboad.vue @@ -71,7 +71,19 @@ function openChart(type: TypeOfChart) { height: 390px; } .chart-btn { - background-color: rgb(202, 202, 202); + background-color: rgb(192, 192, 192); + color: #fff; + border-radius: 3px; + height: 36px; + line-height: 35px; + padding: 0 20px; + border: 0; + font-size: 14px; + font-weight: 500; + cursor: pointer; + min-width: 80px; + text-align: center; + width: 200px; } .chart-btn.active { diff --git a/src/components/Pomodoro.vue b/src/components/Pomodoro.vue index 4447b42..846cc95 100644 --- a/src/components/Pomodoro.vue +++ b/src/components/Pomodoro.vue @@ -125,8 +125,18 @@ async function changeStatus() { margin-top: 5px; } button { - color: white !important; border: none; + color: #fff; + border-radius: 3px; + height: 36px; + line-height: 35px; + padding: 0 20px; + font-size: 14px; + font-weight: 500; + cursor: pointer; + min-width: 80px; + text-align: center; + width: 200px; } button.start { background-color: rgb(62, 148, 62) !important; From 299db96bfa5fdcd3e034be4772cf7c671e56743e Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 Feb 2024 07:00:00 +0100 Subject: [PATCH 254/329] Add link to pomodoro on dashboard --- src/assets/css/dark.css | 2 +- src/pages/Popup.vue | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/assets/css/dark.css b/src/assets/css/dark.css index ce5ce44..a168b80 100644 --- a/src/assets/css/dark.css +++ b/src/assets/css/dark.css @@ -8,7 +8,7 @@ .dark .headerBlock .icons-block a:hover{ filter: invert(40%) sepia(94%) saturate(3371%) hue-rotate(227deg) brightness(99%) contrast(92%); } -.dark .headerBlock .icons-block a img { +.dark .headerBlock .icons-block a.filter img { filter: invert(100%) sepia(17%) saturate(0%) hue-rotate(24deg) brightness(103%) contrast(102%); } .dark .header-block { diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index d16554a..9cd17fd 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -21,10 +21,14 @@ v-if="darkMode == false" @click="changeDarkMode(true)" /> - {{ t('pomodoroMode.message') }} + {{ t('dashboard.message') }} - {{ t('settings.message') }} @@ -153,7 +157,7 @@ function updateTab() { } .headerBlock .icons-block { float: right; - margin: 7px 10px 0 0; + margin: 7px 0 0 0; } .headerBlock .icons-block a:hover { From 044a4a8a3d845c84e7d6e395295ca26f6c7487cc Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 Feb 2024 08:59:00 +0100 Subject: [PATCH 255/329] Fix work/rest periods --- src/components/Pomodoro.vue | 18 ++++++++++++- src/functions/pomodoro.ts | 51 ++++++++++++++++++++++--------------- src/functions/useBadge.ts | 10 +++++--- src/tracker.ts | 32 +++++++++++------------ src/utils/converter.ts | 8 +++--- src/utils/time.ts | 4 --- vite.config.ts | 3 ++- 7 files changed, 76 insertions(+), 50 deletions(-) diff --git a/src/components/Pomodoro.vue b/src/components/Pomodoro.vue index 846cc95..25653be 100644 --- a/src/components/Pomodoro.vue +++ b/src/components/Pomodoro.vue @@ -42,6 +42,7 @@ import { } from '../storage/storage-params'; import { Time } from '../utils/time'; import { logger } from '../utils/logger'; +import { useBadge, BadgeColor, BadgeIcon } from '../functions/useBadge'; const { t } = useI18n(); const settingsStorage = injecStorage(); @@ -90,11 +91,26 @@ async function changeStatus() { StorageParams.POMODORO_INTERVAL_REST, convertHHMMToSeconds(restTime.value.hours, restTime.value.minutes), ); - await settingsStorage.saveValue(StorageParams.POMODORO_START_TIME, new Date()); + await settingsStorage.saveValue(StorageParams.POMODORO_START_TIME, new Date().toString()); await settingsStorage.saveValue(StorageParams.POMODORO_FREQUENCY, frequency.value); isEnabled.value = !isEnabled.value; + if (isEnabled.value) + await useBadge({ + text: null, + color: BadgeColor.none, + icon: BadgeIcon.pomodoroWorkingTime, + }); + else { + await settingsStorage.saveValue(StorageParams.POMODORO_START_TIME, null); + await useBadge({ + text: null, + color: BadgeColor.none, + icon: BadgeIcon.default, + }); + } + logger.log(`Change pomodoro status to ${String(isEnabled.value).toUpperCase()}`); } diff --git a/src/functions/pomodoro.ts b/src/functions/pomodoro.ts index 49c74bf..d3f3eae 100644 --- a/src/functions/pomodoro.ts +++ b/src/functions/pomodoro.ts @@ -1,18 +1,19 @@ import { addSeconds } from 'date-fns'; import { injecStorage } from '../storage/inject-storage'; import { StorageParams } from '../storage/storage-params'; -import { Time, timeToSeconds } from '../utils/time'; import { useBadge, BadgeIcon, BadgeColor } from './useBadge'; +import { Settings } from './settings'; +import Browser from 'webextension-polyfill'; export async function checkPomodoro() { - function isTargetPeriod(isRest: boolean) { + function isTargetPeriod() { for (let index = 1; index <= frequency; index++) { - const plusWorkingTime = timeToSeconds(workTime) * (isRest ? index : index--); - const plusRestTime = timeToSeconds(restTime) * index--; + const plusWorkingTime = workTime * (index - 1); + const plusRestTime = restTime * (index - 1); const isPomodoroTargetPeriodStart = addSeconds(startTime, plusWorkingTime + plusRestTime); const isPomodoroTargetPeriodEnd = addSeconds( startTime, - plusWorkingTime + plusRestTime + timeToSeconds(workTime), + plusWorkingTime + plusRestTime + workTime, ); const isTargetPeriod = now.getTime() >= isPomodoroTargetPeriodStart.getTime() && @@ -24,40 +25,50 @@ export async function checkPomodoro() { } const storage = injecStorage(); - const isPomodoroEnabled = (await storage.getValue(StorageParams.IS_POMODORO_ENABLED)) as boolean; + const isPomodoroEnabled = (await Settings.getInstance().getSetting( + StorageParams.IS_POMODORO_ENABLED, + )) as boolean; if (!isPomodoroEnabled) return; - const startTime = (await storage.getValue(StorageParams.POMODORO_START_TIME)) as Date; - const workTime = (await storage.getValue(StorageParams.POMODORO_INTERVAL_WORK)) as Time; - const restTime = (await storage.getValue(StorageParams.POMODORO_INTERVAL_REST)) as Time; - const frequency = (await storage.getValue(StorageParams.POMODORO_FREQUENCY)) as number; + const startTime = new Date( + (await Settings.getInstance().getSetting(StorageParams.POMODORO_START_TIME)) as string, + ); + const workTime = (await Settings.getInstance().getSetting( + StorageParams.POMODORO_INTERVAL_WORK, + )) as number; + const restTime = (await Settings.getInstance().getSetting( + StorageParams.POMODORO_INTERVAL_REST, + )) as number; + const frequency = (await Settings.getInstance().getSetting( + StorageParams.POMODORO_FREQUENCY, + )) as number; const now = new Date(); - const pomodoroEndTime = addSeconds( - startTime, - timeToSeconds(workTime) * frequency + timeToSeconds(restTime) * frequency, - ); + const pomodoroEndTime = addSeconds(startTime, workTime * frequency + restTime * frequency); - if (pomodoroEndTime > now) { + if (now > pomodoroEndTime) { await storage.saveValue(StorageParams.IS_POMODORO_ENABLED, false); await storage.saveValue(StorageParams.POMODORO_START_TIME, null); return; } - const isWork = isTargetPeriod(false); - const isRest = isTargetPeriod(true); + const isWork = isTargetPeriod(); + + const activeTab = await Browser.tabs.query({ active: true }); if (isWork) await useBadge({ - text: '', + tabId: activeTab[0].id, + text: null, color: BadgeColor.none, icon: BadgeIcon.pomodoroWorkingTime, }); - if (isRest) + else await useBadge({ - text: '', + tabId: activeTab[0].id, + text: null, color: BadgeColor.none, icon: BadgeIcon.pomodoroRestTime, }); diff --git a/src/functions/useBadge.ts b/src/functions/useBadge.ts index 2f08c4e..8854b25 100644 --- a/src/functions/useBadge.ts +++ b/src/functions/useBadge.ts @@ -1,16 +1,16 @@ import Browser from 'webextension-polyfill'; export interface BadgeState { - text: string; + text: string | null; color: BadgeColor; tabId?: number; icon?: BadgeIcon; } export enum BadgeIcon { - default = '/assets/icons/128x128.png', + default = '/128x128.png', pomodoroWorkingTime = '/assets/icons/pomodoro.png', - pomodoroRestTime = '/assets/icons/pomodoro-rest-icon.png', + pomodoroRestTime = '/assets/icons/pomodoro-rest.png', } export enum BadgeColor { @@ -21,7 +21,8 @@ export enum BadgeColor { } export async function useBadge(badge: BadgeState): Promise { - await Browser.action.setBadgeBackgroundColor({ color: badge.color }); + if (badge.color != BadgeColor.none) + await Browser.action.setBadgeBackgroundColor({ color: badge.color }); await Browser.action.setBadgeText({ tabId: badge.tabId, text: badge.text, @@ -31,6 +32,7 @@ export async function useBadge(badge: BadgeState): Promise { path: badge.icon, }); await Browser.action.setBadgeText({ + tabId: badge.tabId, text: badge.text, }); } else diff --git a/src/tracker.ts b/src/tracker.ts index 27bca9d..b5dcb03 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -127,22 +127,22 @@ async function mainTracker( tab.incSummaryTime(); - const viewInBadge = - (await Settings.getInstance().getSetting(StorageParams.VIEW_TIME_IN_BADGE)) && - (await canChangeBadge()); - - if (viewInBadge) - await useBadge({ - tabId: activeTab?.id, - text: convertSummaryTimeToBadgeString(tab.days.at(-1)!.summary), - color: BadgeColor.blue, - }); - else - await useBadge({ - tabId: activeTab?.id, - text: '', - color: BadgeColor.red, - }); + const viewInBadge = await Settings.getInstance().getSetting(StorageParams.VIEW_TIME_IN_BADGE); + + if (await canChangeBadge()) { + if (viewInBadge) + await useBadge({ + tabId: activeTab?.id, + text: convertSummaryTimeToBadgeString(tab.days.at(-1)!.summary), + color: BadgeColor.blue, + }); + else + await useBadge({ + tabId: activeTab?.id, + text: null, + color: BadgeColor.none, + }); + } } else await closeOpenInterval(); } diff --git a/src/utils/converter.ts b/src/utils/converter.ts index 06ac8f5..a80a5a7 100644 --- a/src/utils/converter.ts +++ b/src/utils/converter.ts @@ -2,7 +2,7 @@ import i18n, { getMessagesFromLocale } from '../plugins/i18n'; import { HOUR, HOUR_IN_SECONDS, MINUTE, MINUTE_IN_SECONDS, Time } from './time'; export function convertHHMMToSeconds(hours: number, minutes: number) { - return hours * 3600 + minutes * 60; + return hours * HOUR_IN_SECONDS + minutes * MINUTE_IN_SECONDS; } export function convertHHMMToMilliSeconds(hours: number, minutes: number) { @@ -10,9 +10,9 @@ export function convertHHMMToMilliSeconds(hours: number, minutes: number) { } export function convertSecondsToHHMM(seconds: number): Time { - const hours = Math.floor(seconds / 3600); - const totalSeconds = seconds % 3600; - const mins = Math.floor(totalSeconds / 60); + const hours = Math.floor(seconds / HOUR_IN_SECONDS); + const totalSeconds = seconds % HOUR_IN_SECONDS; + const mins = Math.floor(totalSeconds / MINUTE_IN_SECONDS); return { hours: hours, diff --git a/src/utils/time.ts b/src/utils/time.ts index e18a6f6..1c779c9 100644 --- a/src/utils/time.ts +++ b/src/utils/time.ts @@ -29,7 +29,3 @@ export function daysBetween(startDate: Date, endDate: Date): number { const millisecondsPerDay = 24 * 60 * 60 * 1000; return (treatAsUTC(endDate).valueOf() - treatAsUTC(startDate).valueOf()) / millisecondsPerDay + 1; } - -export function timeToSeconds(time: Time) { - return time.hours * HOUR_IN_SECONDS + time.minutes * MINUTE_IN_SECONDS; -} diff --git a/vite.config.ts b/vite.config.ts index 67a0bbd..b2a571e 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -22,6 +22,7 @@ function generateManifest() { // https://vitejs.dev/config/ export default defineConfig(({ mode }) => ({ build: { + assetsInlineLimit: 1024, rollupOptions: { output: { assetFileNames: assetInfo => { @@ -29,7 +30,7 @@ export default defineConfig(({ mode }) => ({ if (/png|jpe?g|svg|gif|tiff|bmp|ico/i.test(extType)) { extType = 'icons'; } - return `assets/${extType}/[name]-[hash][extname]`; + return `assets/${extType}/[name][extname]`; }, }, }, From 47ca6b226dc3cb1d8526bd2072a6176a9c6266a1 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 14 Feb 2024 14:37:27 +0300 Subject: [PATCH 256/329] Try my other apps --- src/_locales/de/messages.json | 7 +++ src/_locales/en/messages.json | 7 +++ src/_locales/ru/messages.json | 7 +++ src/_locales/zh_CN/messages.json | 7 +++ src/assets/icons/clear-youtube-logo.svg | 11 ++++ src/components/About.vue | 2 + src/components/MyApps.vue | 72 +++++++++++++++++++++++++ 7 files changed, 113 insertions(+) create mode 100644 src/assets/icons/clear-youtube-logo.svg create mode 100644 src/components/MyApps.vue diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index 6e4ca47..908c01a 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -315,5 +315,12 @@ "promoClearYoutube": { "message": "Möchten Sie Kurzfilme, Kommentare, empfohlene Videos, Abonnements und andere YouTube-Ablenkungen blockieren? Wir haben eine weitere Erweiterung erstellt, mit der Sie YouTube ohne Ablenkung ansehen können.", "description": "Install" + }, + "tryMyOtherApps": { + "message": "Probieren Sie meine anderen Apps aus" + }, + "clearYoutube": { + "message": "Clear YouTube", + "description": "Chrome-Erweiterung, die YouTube-Shorts, empfohlene Videos, Kommentare, Feeds, Homepage-Empfehlungen und andere Ablenkungen ausblenden kann. Sieh dir YouTube ohne Ablenkungen an." } } \ No newline at end of file diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 7e57e18..1ce811f 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -315,5 +315,12 @@ "intervalsChart": { "message": "Only time intervals greater than", "description": "are shown" + }, + "tryMyOtherApps": { + "message": "Try my other apps" + }, + "clearYoutube": { + "message": "Clear YouTube", + "description": "Chrome extension that can hide YouTube shorts, recomended videos, comments, feed, homepage recommendations and other distractions. Watch YouTube free of distractions." } } diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index c67edc7..3a87e2c 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -316,5 +316,12 @@ "intervalsChart": { "message": "Отображаются только временные интервалы, превышающие", "description": "" + }, + "tryMyOtherApps": { + "message": "Попробуйте другие мои приложения" + }, + "clearYoutube": { + "message": "Clear YouTube", + "description": "Расширение для Chrome, которое может скрывать шортс YouTube, рекомендуемые видео, комментарии, ленту новостей, рекомендации по домашней странице и другие отвлекающие факторы. Смотрите YouTube без отвлекающих факторов." } } diff --git a/src/_locales/zh_CN/messages.json b/src/_locales/zh_CN/messages.json index 8bbba44..b8b7d8c 100644 --- a/src/_locales/zh_CN/messages.json +++ b/src/_locales/zh_CN/messages.json @@ -315,5 +315,12 @@ "promoClearYoutube": { "message": "您想屏蔽短片、评论、推荐视频、订阅和其他 YouTube 干扰内容吗? 我们创建了另一个扩展程序,可帮助您不受干扰地观看 YouTube", "description": "安装" + }, + "tryMyOtherApps": { + "message": "试试我的其他应用程序" + }, + "clearYoutube": { + "message": "Clear YouTube", + "description": "Chrome扩展程序,可以隐藏YouTube短片,推荐视频,评论,feed,主页推荐和其他分心。 观看YouTube免费分心。" } } diff --git a/src/assets/icons/clear-youtube-logo.svg b/src/assets/icons/clear-youtube-logo.svg new file mode 100644 index 0000000..5854613 --- /dev/null +++ b/src/assets/icons/clear-youtube-logo.svg @@ -0,0 +1,11 @@ + + + + + + + \ No newline at end of file diff --git a/src/components/About.vue b/src/components/About.vue index 8acfe4f..0938fe8 100644 --- a/src/components/About.vue +++ b/src/components/About.vue @@ -22,6 +22,7 @@ {{ t('review.message') }} + + + + + From 4b4ddeefabfade60c9385cf0d52aaabb9974cc7e Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 16 Feb 2024 11:36:58 +0300 Subject: [PATCH 257/329] Localization --- src/_locales/de/messages.json | 36 ++++++++++++++++++++++++++++++ src/_locales/en/messages.json | 38 +++++++++++++++++++++++++++++++- src/_locales/ru/messages.json | 38 +++++++++++++++++++++++++++++++- src/_locales/zh_CN/messages.json | 36 ++++++++++++++++++++++++++++++ src/assets/css/dashboard.css | 2 +- src/components/Pomodoro.vue | 28 ++++++++++++++++++++++- src/pages/Popup.vue | 3 +-- 7 files changed, 175 insertions(+), 6 deletions(-) diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index 6e4ca47..8c51cd9 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -128,6 +128,38 @@ "notificationsSettings": { "message": "Benachrichtigungen" }, + "pomodoroMode": { + "message": "Pomodoro" + }, + "pomodoro": { + "message": "Pomodoro", + "description": "Die Pomodoro-Methode ist eine Zeitmanagementtechnik, die auf dem Wechsel von konzentrierten Arbeits- und Ruhephasen basiert. Bei der klassischen Pomodoro-Methode dauert die Arbeitsphase 25 Minuten und die Ruhephase 5 Minuten." + }, + "pomodoroExplanationIcon": { + "message": "Wenn der Pomodoro-Modus aktiviert ist und der Betriebsmodus aktiv ist, sehen Sie dieses Symbol", + "description": "Während der Ruhezeiten sehen Sie dieses Erweiterungssymbol" + }, + "pomodoroExplanationTime": { + "message": "Während des Pomodoro-Modus berücksichtigt die Erweiterung weiterhin die Zeit, die Sie auf den Seiten verbracht haben, alle Grenzen und Benachrichtigungen funktionieren." + }, + "pomodoroExplanationStop": { + "message": "Nach dem Drücken von 'Stop' werden die Betriebs- und Ruhezeiten auf Null zurückgesetzt." + }, + "pomodoroWork": { + "message": "Zeitraum der Arbeit" + }, + "pomodoroRest": { + "message": "Ruhezeit" + }, + "pomodoroFrequency": { + "message": "Anzahl der Wiederholungen" + }, + "start": { + "message": "Starten Sie" + }, + "stop": { + "message": "Stop" + }, "aboutSettings": { "message": "Über die Erweiterung" }, @@ -315,5 +347,9 @@ "promoClearYoutube": { "message": "Möchten Sie Kurzfilme, Kommentare, empfohlene Videos, Abonnements und andere YouTube-Ablenkungen blockieren? Wir haben eine weitere Erweiterung erstellt, mit der Sie YouTube ohne Ablenkung ansehen können.", "description": "Install" + }, + "completelyBlocked": { + "message": "Vollständig blockiert", + "description": "Vollständig blockieren" } } \ No newline at end of file diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 7e57e18..3d00fc7 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -3,7 +3,7 @@ "message": "Web Activity Time Tracker - Block Sites" }, "extDescription": { - "message": "Time tracking of your web activity, limit and block distracting websites. Monitor your web usage." + "message": "Track time of your web activity, limit and block distracting websites. Monitor your web usage." }, "settings": { "message": "Settings" @@ -128,6 +128,38 @@ "notificationsSettings": { "message": "Notifications" }, + "pomodoroMode": { + "message": "Pomodoro" + }, + "pomodoro": { + "message": "Pomodoro", + "description": "The Pomodoro method is a time management technique based on alternating periods of focused work and rest. According to the classics of the Pomodoro method, the work period lasts 25 minutes, the rest period is 5 minutes." + }, + "pomodoroExplanationIcon": { + "message": "When Pomodoro mode is on and operation mode is active, you will see this icon", + "description": "During rest periods, you will see this extension icon" + }, + "pomodoroExplanationTime": { + "message": "During Pomodoro mode, the extension continues to take into account the time you spent on the sites, all limits and notifications work." + }, + "pomodoroExplanationStop": { + "message": "After clicking 'Stop', work and rest time is reset to zero." + }, + "pomodoroWork": { + "message": "The period of work" + }, + "pomodoroRest": { + "message": "The rest period" + }, + "pomodoroFrequency": { + "message": "Number of repetitions" + }, + "start": { + "message": "Run" + }, + "stop": { + "message": "Stop" + }, "aboutSettings": { "message": "About" }, @@ -315,5 +347,9 @@ "intervalsChart": { "message": "Only time intervals greater than", "description": "are shown" + }, + "completelyBlocked": { + "message": "Completely Blocked", + "description": "Completely Block" } } diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index c67edc7..4f5d33a 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -128,6 +128,38 @@ "notificationsSettings": { "message": "Уведомления" }, + "pomodoroMode": { + "message": "Pomodoro" + }, + "pomodoro": { + "message": "Pomodoro", + "description": "Метод Pomodoro — это техника тайм-менеджмента, завязанная на чередовании периодов сфокусированной работы и отдыха. По классике метода помодоро период работы длится 25 минут, период отдыха 5 минут." + }, + "pomodoroExplanationIcon": { + "message": "Когда режим Pomodoro включен и активен режим работы, то вы будете видеть эту иконку", + "description": "В периоды отдыха вы будете видеть эту иконку расширения" + }, + "pomodoroExplanationTime": { + "message": "Во время режима Pomodoro, расширение продолжает учитывать время, которые вы провели на сайтах,работают все лимиты и уведомления." + }, + "pomodoroExplanationStop": { + "message": "После нажатия 'Остановить', время работы и отдыха обнуляется." + }, + "pomodoroWork": { + "message": "Период работы" + }, + "pomodoroRest": { + "message": "Период отдыха" + }, + "pomodoroFrequency": { + "message": "Количество повторов" + }, + "start": { + "message": "Запустить" + }, + "stop": { + "message": "Остановить" + }, "aboutSettings": { "message": "\u041E программе" }, @@ -310,11 +342,15 @@ "message": "По часам" }, "intervals": { - "message": "Интервальны", + "message": "Интервалы", "description": "Отображаются только временные интервалы, превышающие 5 секунд" }, "intervalsChart": { "message": "Отображаются только временные интервалы, превышающие", "description": "" + }, + "completelyBlocked": { + "message": "Полностью заблокирован", + "description": "Полностью заблокировать" } } diff --git a/src/_locales/zh_CN/messages.json b/src/_locales/zh_CN/messages.json index 8bbba44..edebbac 100644 --- a/src/_locales/zh_CN/messages.json +++ b/src/_locales/zh_CN/messages.json @@ -128,6 +128,38 @@ "notificationsSettings": { "message": "通知" }, + "pomodoroMode": { + "message": "Pomodoro" + }, + "pomodoro": { + "message": "Pomodoro", + "description": "Pomodoro 工作法是一种时间管理技术,以交替集中工作和休息为基础。根据经典的 Pomodoro 方法,工作时间为 25 分钟,休息时间为 5 分钟。" + }, + "pomodoroExplanationIcon": { + "message": "启用 Pomodoro 模式并激活操作模式后,您将看到以下图标", + "description": "在休息时间,您会看到这个扩展图标" + }, + "pomodoroExplanationTime": { + "message": "在 Pomodoro 模式下,扩展会继续考虑你在网站上花费的时间、所有限制和通知。" + }, + "pomodoroExplanationStop": { + "message": "按下 '停止' 键后,运行时间和休息时间将重置为零" + }, + "pomodoroWork": { + "message": "工作期限" + }, + "pomodoroRest": { + "message": "休息时间" + }, + "pomodoroFrequency": { + "message": "重复次数" + }, + "start": { + "message": "启动" + }, + "stop": { + "message": "停止" + }, "aboutSettings": { "message": "关于" }, @@ -315,5 +347,9 @@ "promoClearYoutube": { "message": "您想屏蔽短片、评论、推荐视频、订阅和其他 YouTube 干扰内容吗? 我们创建了另一个扩展程序,可帮助您不受干扰地观看 YouTube", "description": "安装" + }, + "completelyBlocked": { + "message": "完全封锁", + "description": "完全封锁" } } diff --git a/src/assets/css/dashboard.css b/src/assets/css/dashboard.css index 8730208..f50eb56 100644 --- a/src/assets/css/dashboard.css +++ b/src/assets/css/dashboard.css @@ -21,7 +21,7 @@ body { } .description { - font-size: 13px; + font-size: 14px; color: grey; margin: 7px 0 15px 0; font-weight: normal; diff --git a/src/components/Pomodoro.vue b/src/components/Pomodoro.vue index 25653be..21579c9 100644 --- a/src/components/Pomodoro.vue +++ b/src/components/Pomodoro.vue @@ -3,6 +3,18 @@

{{ t('pomodoro.description') }}

+
+

+ {{ t('pomodoroExplanationIcon.message') }} + . + {{ t('pomodoroExplanationIcon.description') }} + . +

+

+ {{ t('pomodoroExplanationTime.message') }} +

+

{{ t('pomodoroExplanationStop.message') }}

+

{{ t('pomodoroWork.message') }}

@@ -26,7 +38,11 @@ - + + + + + diff --git a/src/components/Review.vue b/src/components/Review.vue index b12d619..c1cf061 100644 --- a/src/components/Review.vue +++ b/src/components/Review.vue @@ -82,6 +82,7 @@ async function openStore() { display: inline-block; margin: 8px; font-size: 17px; + font-weight: 500; } .review-block img { padding: 9px 0 0 0; diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index b1f294c..419d084 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -88,6 +88,7 @@
+ @@ -97,6 +98,7 @@ import { useI18n } from 'vue-i18n'; import TabList from '../components/TabList.vue'; import ByDays from '../components/ByDays.vue'; import Review from '../components/Review.vue'; +import PomodoroInfo from '../components/PomodoroInfo.vue'; import { openPage } from '../utils/open-page'; import { SettingsTab, TypeOfList } from '../utils/enums'; import { injecStorage } from '../storage/inject-storage'; From affb0762816c1475ff92d6504b63b78969d4b454 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 16 Feb 2024 18:01:15 +0300 Subject: [PATCH 260/329] Disable changes settings when pomodoro is enabled --- src/components/Pomodoro.vue | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/components/Pomodoro.vue b/src/components/Pomodoro.vue index 21579c9..3716b90 100644 --- a/src/components/Pomodoro.vue +++ b/src/components/Pomodoro.vue @@ -15,17 +15,19 @@

{{ t('pomodoroExplanationStop.message') }}

-
-

{{ t('pomodoroWork.message') }}

- -
-
-

{{ t('pomodoroRest.message') }}

- -
-
-

{{ t('pomodoroFrequency.message') }}

- +
+
+

{{ t('pomodoroWork.message') }}

+ +
+
+

{{ t('pomodoroRest.message') }}

+ +
+
+

{{ t('pomodoroFrequency.message') }}

+ +
+ + @@ -159,6 +161,7 @@ import { onMounted, ref, watch } from 'vue'; import { useI18n } from 'vue-i18n'; import GeneralSettings from '../components/GeneralSettings.vue'; +import PromoTrackerJam from '../components/PromoTrackerJam.vue'; import WhiteList from '../components/WhiteList.vue'; import Limits from '../components/Limits.vue'; import DailyNotifications from '../components/Notifications.vue'; diff --git a/src/storage/storage-params.ts b/src/storage/storage-params.ts index 09c001f..5683a71 100644 --- a/src/storage/storage-params.ts +++ b/src/storage/storage-params.ts @@ -29,6 +29,8 @@ export enum StorageParams { POMODORO_AUDIO_AFTER_FINISHED = 'pomodoro-audio-after-finished', POMODORO_INTERVAL_REST = 'pomodoro-interval-rest', POMODORO_FREQUENCY = 'pomodoro-frequency', + PROMO_TRACKERJAM_DATE = 'promo-trackerjam-date', + PROMO_TRACKERJAM_PROMPT_AT = 'promo-trackerjam-prompt-at', } export enum StorageDeserializeParam { From c7061ecd48730c8b774a682259b8d69be9ea5053 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 3 Aug 2024 14:53:27 +0300 Subject: [PATCH 295/329] UI for dark --- src/assets/css/dark.css | 3 +++ src/components/PromoTrackerJam.vue | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/assets/css/dark.css b/src/assets/css/dark.css index 0175901..87dffc6 100644 --- a/src/assets/css/dark.css +++ b/src/assets/css/dark.css @@ -71,4 +71,7 @@ } .dark .pomodoro-popup-block p{ color:#303030; +} +.dark .promo{ + color: black !important; } \ No newline at end of file diff --git a/src/components/PromoTrackerJam.vue b/src/components/PromoTrackerJam.vue index 9db7190..c72689a 100644 --- a/src/components/PromoTrackerJam.vue +++ b/src/components/PromoTrackerJam.vue @@ -1,6 +1,6 @@ @@ -39,7 +28,6 @@ const { t } = useI18n(); enum App { ClearYoutube, - TrackerJam, } function openAppLink(app: App) { @@ -47,9 +35,6 @@ function openAppLink(app: App) { case App.ClearYoutube: window.open(CHROME_STORE_CLEAR_YOUTUBE_URL, '_blank'); break; - case App.TrackerJam: - window.open('https://trackerjam.com/?utm_source=watt_extension', '_blank'); - break; } } From 5916b38ca8adb25a881e8a3c8908aa0444488edf Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 6 Aug 2024 13:44:23 +0300 Subject: [PATCH 301/329] Update UI small promo block --- src/components/PromoClearYouTube.vue | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/components/PromoClearYouTube.vue b/src/components/PromoClearYouTube.vue index 62d4ebb..6bba3f5 100644 --- a/src/components/PromoClearYouTube.vue +++ b/src/components/PromoClearYouTube.vue @@ -1,10 +1,11 @@ @@ -59,16 +60,14 @@ async function saveValue() { font-size: 14px; background-color: #efefef; border-radius: 10px; - min-width: 655px; + display: flex; + justify-content: space-between; } .review-block .btn-block { margin: 8px 5px 0 0; vertical-align: top; float: right; } -.review-block input[type='button'] { - float: right; -} .review-block p { display: inline-block; margin: 0 10px; From f7b12dd2915fecc8a863adc7c53edd90f3f0d985 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 6 Aug 2024 14:03:41 +0300 Subject: [PATCH 302/329] Promo modal --- src/assets/clear-youtube-promo.png | Bin 0 -> 168314 bytes src/assets/trackerjam-promo.jpg | Bin 58602 -> 0 bytes ...ckerJam.vue => PromoCleanYoutubeModal.vue} | 34 +++++++++--------- src/pages/Dashboard.vue | 4 +-- src/storage/storage-params.ts | 4 +-- 5 files changed, 21 insertions(+), 21 deletions(-) create mode 100644 src/assets/clear-youtube-promo.png delete mode 100644 src/assets/trackerjam-promo.jpg rename src/components/{PromoTrackerJam.vue => PromoCleanYoutubeModal.vue} (66%) diff --git a/src/assets/clear-youtube-promo.png b/src/assets/clear-youtube-promo.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f07e808ef3363fdb7299c75a3b3d2ae573285f GIT binary patch literal 168314 zcmcF~gIl! z-W5VgPFlyyWMle{8J!|pY6murE}j7#&-iW#JBN|x9M7;tE0TP?TzSZ_6L5fcpp`SdKG=Vyv$)>ltAx6T9j>P6F;#-XH>1|!FD7;g`cs;REn?E+ZpqRidf z*XY-;x1~Dli)5^VE?5|#?OAoLcAg!iH#VZ2b;Yo%42HOG#k*DM6`qpZp9Dy;k2HKu zhZa2zHHdcUhKE9U|zxgxK8h{CFn_^?Uaeb}%0-9Fj5c;Y}WJ+(44`QtL5N zDwrwvy;{qtWe7@Y!U)2eK2*FCFcH-u(r%QWB?o*0lPQH@hV3?`;rrrGZ<+l85q=*2 zRWwloMaG+oH=Ys>RxIB5wHSGmH&`no+=aL@woLEnEWeOFeTcEA3e4kiWUl=XNvK@G z9LL1s^ii0mQTG4puJmEhqQi(qA22O#{0al&jXl zB3k@5Mzx}pk90q7beQ10f(7Z@B!6~%o>BcFuYCgk0Bt1S&q zpn%Gsj0ggJR+xv!)_BcC7GQ>C_7KNzmEctvtRiEBz~hLCmX#*h`0$HOwH+asF>X~! zw_ndLbzfZgZu1{=@bDxkflCU-X32wrmER$-_iXR%c#mCD*K|#}m<*L$T+%pTUI44S zf_ICErYiUjjGc|IpuAA$#L&u2B};b*&c0}AXm_VV?MMP6w+X)|@TQJOK;+>mo^?xa zmtqhe(H|K6xp2;0HGN$T>ZG8&?l!gH$aG$0em47j8FO5IQQoh$LcNO$HI`Dk!Hue% zq;(=IC}zlDQxml+O$Am#h6%aDJ;Di!#QFqVm`5gEd>BdZ_&>h;(v&Q4 z@xr}!i>tm?KMPMqNjGODU(}y1RP=`)YT+*{0lQ@O1#q)VQiTtX&)DmkCtVfpn9RFH zT(^;Cs`iT;hB{D*uJ|}$t)dT7z>R0PUZpc(6A<3z(rBYw@)RY0^z{iI{@?e~+-&*S zofJt_P_D0!)brLYr5on7)Cc590Vc~W12{FOtM)QY&0#tk&*0O7oRE8QX~79rRkn|e z3TQAyswBfWl`egVnph$X_JE^Pt>Drmys_NZ(8^RGGx-4v-~Rt_@M@AjD2HfuLA$gi z;jh-t^YjXC>mY+Rc61H(QN!(M7qMYLAuo@BMiWQ$Mb&AjlgZ}_Qk&(9R;rK)A@7g}zM2cZf#^b~9+K6XvgccnbZBkXQNGTqU@&49n_5@cvI zEV-GnYz?MI5^ka6`F(P~O1}CZ6wHvCNwxY+7xZ04a~S5N?EY&)Ffl7e_W^Q)!+x=$ zpA5v-t+j#(Z8(gfxnHEsqX()C%JXH;)9l5j`cos`xEpdqiao6CRXw}Q5mR!-TJl|a zJ#W=oK*F5=#R?vQ%1LN)em8L@nzcl$5?PE*m@cmvfhI0?TX$#fNh-ars!}xqe~-b~ zRiKz^8d$D1N8(-btUEgy^`vNYNKJS%?cN8>3}~EE^>C;o8>QI^H8;*=^7aW|a#Llz zca!IjE7Og?Hzv;G;Vc=_wN&%qV~ZKZ(_Uf9|I6uqVV%!3yzouw>v$%+Y>GumI9bv6 z;VQuL_t;e<1v?{4^ym#-TuKkQ_w#m;D=o3Bnh3;6s@q`}eUSp#R zg$=p3Zh0kG4S7CMA6AsdWlC64@w`3)%u?zgU7z5qmq<}SK_Q?=dD^WK0FH7f@tBOB z8lL;>Uq{7bHLx-@QBgTq0f@ns3DI{l5pi*g7g4!$6z+SLYI;W{AIgSj<6B>m3=0)o-Kqnu2Awv+e^GZ1u0Or+fqe2L#;*n@Xqk}OJkr( zkBTkyaj}@0VU!7!=|gw9pVhC54JD+6#%(C>jfh`YzLq;d!G|LcvU+smnvG*f!XcU< z6y@dhuXDV;B{NUv&1PNKmLZY@FL*Jmr1D4?tKJT4A1d-2&b1;3E*g2CJ?;Hsk+J9( zo151FD2>yHOuXzRf?(cb>n6~u-|dl8ZlHisQ&oX0~S*I zu*l?mOk(R>kBuJo0?mPg0Hr8R#5S`&Ih<)XaGP zld2RB&+7mf=hKdDl0p+Nje@#-2+PS77ayp; zve8;sCJmAq7u(CqGg*ZrRdwIvw~UI*0lT)Ra@hZ$ipp-44`2PJ;`yq)r$B8kzE&S6 z5;qU`-Or_|E!5s{*9dMEuye5$Fs=xnQ)8C$>fsx%LA1&I8yoMtzO83# zC`FlARc#C;fGYD9^?8hOY_Z+-6q?Wkp^Jo~RJr^*FOn}W3?%qumrTaxK=_xPJnv7H)s-F8iX{_ejx;o+f{3#Qqb!YHNL>7dpo5KNB7E?yOC zntHc&QW=sFU3vMr9msd~8cB$^9G0!a;69!>+r$^_n9py9^*PUcbtUy|uF6Z2Ccb9_ z6(8ku!XJ&6XP>^$Tc~2B`_~l0w}jqW)qpCoL2=@%hB=XiqWe&VCDeN>5bxJryRS{U&o~g#P|T`$r5a($UcB)OT?kBQDsH_1RjJ}fKmzFWK zj@SR(){KlB*j=jj7<$o^Kbru}3o+IyD4tA^O-&t71JCjR)_J!lL@7h~S`8i9LS@%o zGDw%4S}7zxOIYx-uK4UnQqDHq0o>2t#01R zFt;1BYm4eq9t`p_X%BDb)5;LrdML2)DWj6%#V}gYtjr9IQlU6+W;d0C@V-S?#sHRm zd{<@N&G?8FCus}FDaRdi;G=N5oHl?W?I%g>;4hM1I#quC@M%AE7#Ic5f~dEe?nkeyC81qU#0sCL0Yze=O9YlCX0zLUSu|$Zi2P` z_-}#sM3WGk4QyNeg^&+#up>fgw55dMN-#vjFV)^5F!wUSlw9o~@5<7Rr-DNS--be3 zi;@{tggsyJ4sqfRzFuHj2KSC$tqI3YHSw7wKd`R%8*rnl%~iwZQ4{?eDO5?<=Bl@6 zv+fQ{22_6k$mR4(t~Op|bf?=Eo;vdeD^3Q6P&Iv-M z2CuM?FK)fD#5yw2RsHWgJ?`#L$~TOm`wk*;;4Xj5V~Q5+I75tTkK?01mEmjR^yG9t zvL$v^^HN%!mx9k~Tn(Q6F(0;O)#ReVCvRzG(E8Y=u%c@*)hE@;ZjG}Az`VU>&o_RI znPMwuB}fq!TKTlM_C~t0oYCMx0hD%PFUZ1<8NZa~oYNWs-CRjB9Ps3MK_$`r2k-5x z@Z|Ev85910t*f3@Nk%r~fqlW61CJ9*??w}=Iay|j_57V`UZoNogs#59DVRN|& zHdg*D{)gUH;!(*!?DII(RNk675@1QbsR_2yeO{qlETOz|eeZoaNFV(AYBwYYS1cuVs@GJHa9tIGon zF7vqVjV#2Ze!z7c6rN^+b)W)h7QXA{?JcL@L;@aO^ABNITx$-yike{zsSrl9+wP{d z)pbc+jfwoG_6n&}=otBYGG93XGA(H-vIpaZ8S9aZ(-!)Kq)HEK!_2fv92JUptgjK|2xMl};%%k5GlH#-iT z7O1HYbyP_cxs7kg{Z<3y8D3^oI_9NsScQ77vAlfp;PA_{j@gb}=f9^7G)I_H=st^E z{BAw2WRF?RV|_gsyD_8-8-eai^G!l2uhyn^zE{>EHA4`8*}v`mBGIaYyvQBst76J3 zX)unRdi?+jmCakc9R9H|W9h_$cq4S%8q0F_?ej{mbuW#}=Yvz5Lrt{B-(Yw=&r`K- zB$-56OSl@W;xH+%O#p zq&67atJ2F3m?D=^s|HSi{|uulR}03QS|%s@6~ww|r7`7BkvcVL+SJU!4e*HgM_zv7 zP5VGLG~jb>T z-0*Qr4ZrkjH6)$}eHHq1cV?_K`8NzwJ@g(TKCMG_4i+mox$i+E&;XQ4p7yhJ-J}FC zdu9mfQu&0u!9xZXh*$$fDufpEz1Z*YG3qFpL)R99o`2v%)oQFJ z6ns$yu=Wn7%vl=w#HL`@@cAsdE;OWFJ=b;qams$)=f8z4f30J#r(od|+o!YG$bYE% ze*BFLWzRzEL%2*Sb4?elr3Uc=G$MQ>NiaKz8TaA>M*XNruiH;F;uiHkH(^8Vb3^#- z9Upi(e6}YOf+=OEgh;oHQIP3FtZW5^s0qx>os0P#?Q}*svAGWRWVU%woTzT5^+b$v z?VZlK$QxYG|B1!8k%#x2*Brp*hz*#Cv*EaJdr5M!VI!-#y8a`Eav`FI zqozHWYyA`R*?Vd}cjTlFOBcmKIx=s0rZ9r&52e5(*Tug=5gOFfHF3QW?@*`qA4W7C z$T*06F>E*K3Tsg_47NnxbJQjV>-8={i)FYIY}5}5Z_C)L&fjjgkPaBswDH{QYqZE9 zd3pIy#Ic8H;bA3ls^dyca)%e)_I|+#jI}XkWLloW7@7MpbG~}wdcK1u9R*x-0pVUp zceALQ?4xazTA#~H{zSj_a*BTy_KBAF+Um>i3)vDan~K?mf9Q?vor08GDRLh61Uq74 z)2!4Cw*p)9aV9YmO=LlAOT54k>*=pd!(yrf`Y1Oat?((Ipl6ZpjZ)oruo zcs{?Tig3ccE-jQqN?liQDze$`zA?&DqG*J_h11i+rZ$1FxLhnrrnsmee*MAwszv_( zWXQ^%x_k6og%ZlTKel=w=B2~sYTf_f!rg8mLR9C3hy9mFdK5fRVg%gUjrU=5gdYX2HpE*8q6TZnjPuZ4%CQLa*h zF$AUcRyZ(|mb@;YDUfkeEUQy5l>>KoV9Qp<0S7P4nEoUOxOj*ON$CbOA%F@UrsHwd zeFA4o)_PY7HmIad+&6*IXg^AXB|`{@@j0EMo~yclc%HMJD5$xrk9-4zgFVZp@E1)d z#ONb3xwY|;Ow0ZF4?H`lZ2r;fga%==-xb~ z9f`4kMuJOVMGsm>Jww0B(nB@w5$}#SKT&~BPZdSXgI0LlCg@(Zi-TSyqiGI#)kCPt6pwM0oJ7Z z``SaSFVi|-YIDBCpDBrM$a3R}>5L_?>BwtPf6`S*h|tj>F>*;;w2vP>t$UQ4 zD5O}FH6d38i?}4S>$-SUA+mDuiHAM!{h5O|#Gt};OK{<%v7yUVKh>f!wGZ3!Ad2Ry zP=OZ{mXUg`&5`^Ad)StIQ*t|4y(-qb)wEfCVLoeqgnnD>E_=e*?6!nj$dzKgB8g4KBHg1<#O{G z0i*lj>)wbNK<@h~qfP0p82fUC!zbE^iH*NtuQn`~WJP-ZxvyVB*D2;#VBsSyd#C7W zXy1%^4?BrA5j0GnV7k!Slf;n-O5h{;5S5xtGz_hYSeV z5a*sCc&8`)LrLEdon4&62V2?l6p_UZYegg+ z)p;<+{9z<^!_Ufl_d}0tVA?l*(EoXQTeF&bVCr;c7x>j z!J)`x8{JdX+NYcW>-6pZjL%|be(8eQ0a00fdX~*re!|8gn_(!WbP!ly6u@WCS1#1$ zk$ZYAPaNQk4h}inF#jUf=&sF_9?pe~W2hgU_ru#3Q z98dZ1S-8S}INM+ANbSi}^bFwoqPc7NXn^HzRh#`xEberq5B(v|v^{3|l zO!7qd9>pKKHV?@DO9YtT_?OfPA^2~{K=Ch8V`lIloA&=};0znqaL}^o#SFu;fW$ix zhiSFGakZ)O=+~lx(UHpCy1OJSwYGd)j=x=E$Ei8^q2sQwy@TUB|6YvH>}3{#wz5RX z*2qn~=7)-9Rg&E-qcZ(p#D)Pq z;7fVe%WMNRbr;QxQR8{C&-#x||I-!YZ&i3HvZ^3eJ+Orf8(}YSmSBRB>_>TQ32eAG z^p8@5990s_>RXJ5e~#;I&T7pM3!`qK+MQR4w|W~6n)+)LY~GjG03344h3+$Q|6Ryf z_xVw?BuNm46YAakt}^d4gU*A_r!@Y0nU{2V!2{q(d*v4FYcwfV-=>+~ z`E|2D7ch7m{M^#lVMb>V$FEchqVO1O{6^yka?cyFJM2f62r z6%wA!CwlgzlXdk~!`i36`O3v>xetu}G^~E+w!MF1Omq0PrJ@Bgk&bju@1rF=mCbnR zsK&!WMs)l941d)xX)bROg?-kw(Z_lo`l? z=PZuq>3)aAoTcEco26VIS!e|FkH6u%`2EJ53$7q5w}PPU?41Z@c24^1HB?Ay6;-;J zDB8~PU;+_S{xe>+Nl}G#6O^VnvLudrVSVAR?yNz#$+g1B-PRvL=z8Iw?zr+AXQiIP z>xAuD)n+EAq&)F68E3U$`EpvVmINIh7_W5iERJ%5jMrIsvZwL_#U81x@sH?n~_Y%s816F4!fbmZdX0M4kjVI`YIQ z>wacMjMcmCw(gaeoAG=}Ph8*in)1NU_&PaE|GE7Qu(y}H#CN_3AV!mHj4$aVOc$j< zx-E|XudlttQ`?>$(5>`KH+C;)H7^{b+)1y}+7JB*Y@x%O8%pFiY;IcuzM5)yTJGR) zpfFoKaG|o2Q{Vej>2dX=RoZINuT|^>Al#F}NF}ywn31bUG>& zL0PXUipYG5-7!w7M%UWzFBOR;Pm22ZWR@8`rBE4sGNVMK@H@*1!{|fLco@X6cfMEw z#l{D@Z7m#feyAL$J;!T)+n@R~q=PFdJ&A`GtGc;)a3QJ_;KcJ6GCHaxnKox-GL3Gi zm^GOuMAION_U@^Rt1L%is`HG9b#J=Zx($wdz}>He z<27zz98QToke+2zzG@_FP5cg?FtrBPRQi|d^Hfn@kRjZ|+SlLOg6jNq&4g!IgNB{G2rR9X zmF07a9HNawpOu$ecGnqFxRU5S-n+rH%=aeO!L6o6k)mzZN1w=b*RaQx(;uJJpr1wA zrRY(x6~dIxnb|5@F$a&1kf0-qq4w?829BZ!zyXj@4TY%KPo5Ifn$DJ%6=k&*ttsLv z_V&tg6xb9g>yaeQgbG*Dk3U4}jLEMNn>AkC`c0a`iDD@jVNTJsF>}d>M|Y$cBYowi zi$(G|bz$~7Bz_`gd?0zAxnmy*k&Nb8`TI+~FoDblPE!B8_iZ3Onv`V!fUCBEcRMjq zs9v?QbIOt6h;T_EYYsh^p)mKuozwF)v*u-fSDN35Z1eHN&3-0Sr*=2+W}ZYd*UdMe zCrdXhPMq#oXR`LO6HY8;bkd7y@>A{kUNi=spX+j9;r!-sqxtYo(jRHB_-Rm^_`XUx zI00e+5U>e#Hw&x;PY!*i=_I{ZtqcZ2q)Mcw4R#)ONijpM1N2kP0L zM%8&XAaTna%N9iKX3x#>0;?5A4HSc_k5~5YqZ$aMzz<498{57jsS}g^GJ3MHg2xLLwwm}(%oNmhqRX` zB`l*w0naER>MNC{rCT;&IK_C3`LKU_;)C$t`^vZBA_<`{DP1A?TPLMkSMgh*uGNHY zD!5WB3zMiA$D;^$54mK~c?o1{2e_j%UY;?YdfSQ<=`SB7L^+q+A3adfo2dkNJZiW` z<%i#uvb&pX)wiCSeEfxShOn(4-=8sf@E9#- zeHF#Zk;-c;)2uk#S^OD`jY_Fjm=D`e1f+@iB0J;Uh0LYJ5~rRFh4-x+^Ee%ys8G6x zKBEXv6-A5YP)r%hID)#khRf>Mm{Q;V%j zHJuij&Rp#WoS#I@ie7`4R3WIv`XzRqWVZF;yP(&`IkxM1 zeCBc#=Fn(#OK6(QqQTFps=>VC(M93#E!P>w{13v*hcSw&Le; zUcYjj4Ux&|?X69p6r@rGm-E!7E9zJAII-?l%PA5T7C_RU1Db*u>%tb$J-iPxQUa^9 zk*|W9YG)^BHoW@r%yBPEkdKrIiBv%1H%K?6eU3PZv?|&rFCra1CRg-wRha zTGn4E#3y`|@%!K+JcY{1_n6Ab+QIkshtd!InsTteF18UO6# zV)8oRXKsvTa*Xi{zoo%N4(_^NgZ9PsOC7YuwX1a;CG|($>&3M{PuGjlCm|RvQ_1-r z=hTDufYsMARykVC5EkyR_5F<9TUqJ>kSPX;0@Q80KHL2YEFrO+RH#+@pfX(Y%IK+p z#IUnw=OspLqAx0^gD1n;e{OzZQjRgI-6JL`)u#R{qJ+{Q$Y+Q zeM%h)EN`-csaix*9Z4uDv*&X&>R~7?od|2tXXB0ok7ovy>~^uy zK~OU_9UO40GI9!QCheM=#Gc}M6B06#b#qfpk`<5cJq|6}l_hZj-JTIR`SGbmoL$0> zbI@W`FQ;u93b_Z2TaCAmHv(^M-kSsxuOd&~IPL1ChQvKM9mRLFF14M!J0eL9(N*|w zJ9xBH%$l7nO@CqxoN{cA6G%4D@Kz-c1`>s-Ceao}JY)9o94*)-_Gf7pe&Q z`eQ(VOR5VN_DbE)eH{zzJ=85a)P<~xm^i(7wz9vLteC}`=1}4^bFN_Fr&})BshSc4 zvR_|2*5;cqS4VG|n>_2|YrdnIy2}paOZLKD?|gJbsYr~+rdZJ?ieyJq^Db3!f1 z^n+bSe>I4~Z05y#DmUSyj9%X_ehvGszuOe6sS4f~#mYpU==2~%yB0#6@{SG!y62PA zeSO3)eVpEw^v!MzxWtBi*%@nW0El=`zRU1Sdl@y_G(A6^Yu{HOv7Bo?LGIW7Y>h5| zm5)o;C5@%Wg-?_NcGs?jD`3V0|J#Sr1*g6 zoGMaC&TC=;rwAjER?(kzU(Nn>G!|C#iWvsJm#&WK!ZnyMM1&iB69gjHdl>u0B~PZ~ z)XMU$W*PODrJ6>y*W&ak8PodKyZZX5H8myuH&(*;cynU?k32j)w@dQJO|`}BJ1WY{ z2hIMPD|GQf&nV4za>4mrhrV}978p%V9&Z$6LRcbc`Fw`HXSUv4Hl-UJo6^#s?H`(= z*$PA8M)0IaN!Bm6Yg_&hBZ@PDt=H}r)f?4U;(f9-8Bk%SoM-)37PB&cH`T=Nu(;08 zcsf6;OpA|;?_7VSQM}_$gJ`@Y%9}cxr)*fTdSVsg;gbm2BG0tdI7vK_CBQAG{x}YG zIMcxQhwybh2E0dY{~BWApfnYZEi(YM9gSW&Z<{i_b67`B`V}TgDi{?`$6ussyBfY3 zStV7w+EC{*7OnUC2tw_q`KH%yHcF*RFjJ%UBD%vBKf|>cdPt~5+r7;Z7Sq#^qWU9` zDtVkyvqehF&+eb$kAlfh-Ulj9qqTTA$RpgUN4E=XKPOG=y|g|dwT>?2Bw5x#7Js-tLOqKVzRn%7HmAPxP@Col9oHdX3j^CYZ5HR~oAzavWT(5H2`fyxCkg6QM`~7TnoTri zFz8T)0?^*VjdK~!6kV!FSkOZe@3ra_(OyY4n!+ZCNyOuMHxQlpvA2WVc$6!OGxbrb z23wQU;Jrr=jOmN^QrJsgasY(*87bKYX6!mFWN?NijTCq7ZeP3`kORgYFBWB(N@$j% zKScLQv^L3B0bE@1Eff;9yCr;2VE31>9&4+euYDDlG4`guJB(L#zs_B;uis6K4IH?7 zXjE-a>`&e2Zfe*%^qhTr_!CD#wy+Goxnu9tP`iYvOsU??EpQ5xdwkH=mdBV~S-|L_ za-9g@?olHpnjf5gmsbi?Lqyu|^Y?M~S~xRUc^uC9v+;alm@{BE9H>~IIu3Y)UFF-~ zGtl3xTQ)hr=wp~zopd5oPtxGY7k9EWy!`GQycdJP&pS86uJCauiz3C7IN%I(z?2U1 z$}J&enrq9r{_Bgh0zHt+%w7T}5nkyquX;+>fi2w6-El$2yw&NDnRYMIYJ5&_Sx=li zh+YLCd+f93F41GaGHR6+Lq2e!@1{sOrqC$VFQ;f(7+WTD(jFU{M!CsW=DtO|vFmLt za!e@pUAtOtf@|Hz1U9lqoHb+7Uu;w(*rLo8r3ads_OrV7)jK{ljmFuX7=}5^m-ju+ zWSmjd?U&!e)wj2IdY!3CfNM?lma)!hy~4xsDIv@h^9@ zQDT!;Mw5=>aV^!HjT(Wd=yPJBdI)&jw=I_!mil93g%3K6YV zs}-!AgWyxdwiVD}B5uE_z_s-SAQ$!Q^25s;W6N<8&9xbDXA8xse7YY)xTZ%fW`9vc z75h6wc;*;|taJ=*!>)Hr; zTV@em&#Y?bQZ>9);8?giuz4O9x0LFO zsZX3ffB%A3ED|lojD?Fj9u3_z%|xTCtO6h^e(@-?_LVSK?wY+i6cmtJ%GBl1Hoxyf z+}4jla;2c&F6N%U^0T&X-~&@#20gluP4dMe(&?=M2iX&+?zZcy2C9>e3nSjHDN*sM zMA5I@Op`ZYaj&2@B3&#Yn- zeVybGpkD*gY$fu!PvfF|eCxxexDk!52p@%?dh#Nn9?tgxUfUO};lvy65g) zR~LKl)Yk7|bmvz^AP65kQ8DgWUT_1UwK_3zdg$a>zGD4(!1E~3OMGT#+&1~b|H1Wf zdvm|gJA58_%F`+N5~+?cNAqHo7Pmpz=;lFj4;^y*wK!m}!9hWjwR4-4ZA5c&aNyFw zFSxT`<_<8;=Wc8H7@cYR&wVHsBwkb_cSb2F% zMoIbReXEQ8{14X>O{ZVuzL@oh)xFzTsO8)2&Kyc>Oy^lC9vfoOg|rq919<7vi*3?MR_w)zJe#$BL+Ckw@_xT6r= z7MSCt2o${b-Y%de+3bf(Em({VF)1NmmbROBz}fPyC(WTlEuvCgm9{Ept{0w}BO4sO zK!$$YvszJ4I3KgxHKfDLUP~v9$0I&a{bF(aUB~F=ZexW&ysG^{k$lGJGR_TTf?wE} zv6$UomIMUIJ^}hKuUFaHazncOoKv`8%|@YTlR|U+g+IB8PLEAdgjqSZEbaOD&38uH zZEqA8=h-{hi5z^PON2}k1AE0hH*F#72HqW+8fxD`83xd4(lGwY3fvDH^*ztH-vx+} zy75MmcneQ zPr>CPmuxxQ42eR5{kD1~0UHC>O7eVbpvH#F-l9YI_(v)ViBL6hsS!b^pAk)0 zn3ATG%5DGo(W_t6^L>(+eTi4wlTHqKc23#RpWjb4ytKK^hvwDlW}xc+uxV`Sbuptp zeHnK)EnIzTFK=`A&H93zi>g8zn*gz-5w7a$zk3CN`>~SAM3yI_j3Ue0S768_Rz{uY>~zpNqKhERfua@OixI zUNp07%~^Zu>N&Mrt^1 zVDI^KVu)TnMHN^3$gEBgL@V(yD(v}jl@DP)+NWB9*2appWM=-1k`#CyObB*uB-fsi z#LP6q$yspOL7x83S30rHf@7^06s4Q+dAJ|R)y&|X{dgpfI%LtF^5Dt1v*NaZ=i&H>5@z9%!N2=>+bc z5p$p?RK=~B8m*bG9F5)AvL?y`xX*7#Cl`iDY9o@C22>OimnlKxuhRwP4?amSx+zov z_9Vn-mxtZ0I_IZ>y^tbe00amq0zim|&paKUh*hI2Eu1c3&lCdA@EPmYGHIcG$wGO# z{C#abZVd$hx&+sf!B9n@WORIwEAasg)ulb&WKmIZzhk_hh(vsCR)4>|Se@A_`* zHdF&%Ru;?8;FW-vjQ-WtvG+`9Q)#PvwIxUX6(+HlZM+BYm%RcPegF~~=8=lsqfw-Q3TVm|~)QPTOf%@8_#rv3XATkTP3uV@aT z$dW#>*Jqx3&9U{u1NEMQ7au$7sJj)~9NJ4p#TjxmGLsd1dLW`WJr$1v^U z)9AeU^Hnc#2DR+@F1M$!aHiN8FZQ%5(xaC2iWLjc6xnWt664d}G|RTS9EMYzP^0hh z@z!bY@%HH^$<}2PmSa6jE!fQRSPHpZBym&}mq|;S>|l#e(bc#ZvpB z@8raSz2~Vv$~GAuX6%0mFviuuV=#tKKFpg-C7u$f@IrEaM6EE`Q4Jqb`JKiq#cFq} zciEZ((*Z8Q4WERNGe^%Yyk&kZDw=(0&0!;1eEm~pz*sGaT%)B@(H}7-#zOqKGCMkF zjmGSWL&{UnSAO*MLq-#PslWg?vJwa`Vq24P*Ml#HrBI6lGB(36^pr*=9}@yBzUS0( zsnHd^huQAoK2!1^2c00K`Z!L!{eL*Q1Qm#sASm7Wt?$289$e%uA2X)+;dlJR?n=kU;g#!^AXOC09alL z;+YiRGxhwHb^fb-t>Kck;8e2ex4!5Lz+KQ*cQx%Z_r>J4J8Ujg8Pat%p^H zX7#4VNE8i>d>kLJepyt!-}}f{-P)74w?RZCVZOVEYkt={4b*g!AS761e72;*-L!jd zZ_McP?&Eiun5*Si9y6H4nb74=?&zt##lCa@Udl9*Y&TPE+2w)4HqGW>fn&2uL_E*x z_Cvp#LteDJ(1Zk;qJ=zCgbPrwd+b6nUl@TZ)63^iU3f}`t8_f+(vPMwdd+9ZuKV;rLf^@|kZF~L;Wb*xdxd0uxu zopNPvi=0|1+v@gqq$!j@_RPL4F1RR1>s|NOK3Lq*_+rRx+9Xz5Ho*#@JRP{g%%6Ye zq5)>dt`=|YT$^sD*0;pS_2uHHJq~X4Tt0?N(qbUUKz#RS!TQyC^Q`}VXp`j5_pH9g zoxP)J-(X03wad7#6Z(gQ5J-QV`$9{{1iiFq!w*$PuDpEhqW`-Ghi#s$iDZYrH!07X z^|a9pF=7-pthaX0yo%6SRc8CIE&M{;se?~POKvfHY&E99)ennJFdp8}r+u$3J(MBHcDecCvBYaM6)kk{w#(qf7HM>;M67NtKlg+eN&f zrxTe};dXRTHg64tp*Mn5xN7v%?-IS98&wV@@+CNPUztbO*jFCZN~!4ZzWeVN{I z%9xw+SJyO*=Vp`Vaz{B^4oK4dJa_6Qh3#ay#jGrCRV25Kty2omRira+xrco}qz8*l zz9#)4jT(!L3GQyfoLh(GfGNkcygiOa|4eQ(+t*1~6quSQAj`4Tq z(baL3&+F8q-9HPtr#D%;HeY?r2&HDUZD;R!mB)5-iu7k@dUS-@Lhm^bt?3 zJL;^Slh#7hj&4ojx1f{tI0i|3R(dL6>4NTJ5;CQWs_|h50%2S2yIAKioqm0-Z4!we z!=BE5*$|2e2__`WDXc6qDwf1IGgXvt95uM)TAQP1(Hlw6@AKGf>?fywBIT2BkBz!3 zjOx7oLT9GBQp7fp4>V_2ZP!NflPg9&PO5ayGGDZ1)xP)Gfd@Pow8iubL@PSkI+2`S zT=$*SiinJh4A1W_EG~X#6g!Q?Ev2H}x+3%9lvTnpDk>D*Nxm&29IO}EBuPYJ_R#Wv z9W84WWK@8^*bmZ%S)cjTNh)Ek+_FbAU!54}%xLzzvtT@rF3{Q;t(B$9Dmb=!RrdI* z0_W=+D$SQ+%+_+<4eR-Kl%uS23!Gc!6?pi6TBhS4R)3A4w9W|xLd1@xYW(+qwRVg^mF_13lSBd>gCCW){+Q^Tok%c2%}OaRVlUx% zuPx=Rax%%06vSkjc>cke+!kUr&@5_1>jQ(`2Di-Cs)!;>FuR}#16Q?MuW|pwZr=fm zbA|b5)Iv$1Z-rWXG1f-jP(#ZcMI?^Es{2{2q;ip@5T5=EC<_UuzE(mxn?kM)A?SBW zymjDPpo@3JQ_Lq8J-+C{%MDpfv3ma%gb44AA5}XAIMTMLH4!xnJe3%T>``NOg+Tj> zrBM65mci61H0$}QFcWnX`&=_r-!V%RF0r?7ksi2TB=;W1nnj8#dZg##AS(D`T)Wk; zXUA#2@H0yG9ExY=m64w7pDLgbxrWskWOrEM%D3Y#wB^o)WG%O%H`{gT5oZ(K`4fc6 z^@m=qL(z74ZWNeu0jxljr~9!%l~Q}qd4mQ|QmT%hiIa(=qmr|xl9IE$H?@TR=iDTI z^Yd@_=C2D_ZdtK4*Si=_jGcp>|K_2PX~2FFdbkp5t7zeZ^%o7F{K@+Fb4c(WwZ$j> zweZTj>sfiF}ALIcKjnmNcv`ts@7VD-H!!wVvq7C4_vSb?j z=Q8S{Z29h-n=)0mX(>(7d+ds#;#1~ zU+jY|$BvX`f-@EHeIY_`5ZqtTT}wX#Fq4jg-wMf;$tGUCc5hi~d%_3R7-NQw65CY)ckwCln3LU& zU4BGR9VZ<8R>$AVtiHJ`PNp#7${Br7?e%W;Pm}h4=3GxvN(Iyodc4?lw5bItH-Pjc z^!S6lX5hxQUc!}9m#HF!Haou7Kd%4&=m`P_eCuYXXK2@-(_5>MxPD`&*lm6Nwp*r% z$J@UQ9C6ha0xqqEF3k5;l8Ei5G{ z_Px?)(vL>@mXi$&&?%zHP|a3$^?tY2a8uju!eZMaXL8<$^}V6rrz)htp>o+jhXm1! zBfej~J9@piHB_07$ecyAFDzfXWEI;z7&W)B0F0wM`e8zBQY8bqwuiN@Q^s&)BhOkK zPwc2JWqT^UXR(Ib--y`zF`&*{Fry`jbjgx+Udr=z9D_#LFY$Z($WIs0igRvF8#4<% z-iI(k*hVU5#tl6rjA{CLa-RCR+G{Ju)Vfjblct`@>A;d2@df?7nmLwtuBN+L?6cR8 zPmRw6wZBnYkDPrL7xmRGuD<+EcR^;+^Cd%yJw?!SlIqWlbXPzsB3po$rC`O}Q|QOO zpB8SAZx{vnlpmB>rG|5;zI7>ZL?ppQRf<{HCcaiC4YRl*X+9K-uhkL1edpjIiXYaU z*{Xv9jL`vne|>|V_H(+JKI*vHC*u;JEZzYH#rTF>hr;R!szN{uWky<`8n@GoiE?%? zn{e0CSLfmLPBO3ST6LDnTOtdrb-==Rcv`;P0Sq~AH4~mSDzK=AaJxU2D#f$zk4$1RuB z^#35Tx%yA3^u_xAv^sg{BX7ApPhIt(LDY63=cJo>&>b+rI+78@_k(7ISxfMDgh{iL zjt|H!rTP!VcVE?3B}|Q^!=nd@kQ2no<^G_d2-2p#Sp`rVn_{k0VH0hqqpxqg-&!?w zU*UtR-|cO>m?q&srmfAwn}9k}w#Tla>$Qv4tx#$+@uljVh$arh+ui-x zvfDn_1ADnQJ6r8}mg1mNy|44Ot~sZ8`|XLYN~XlkJc?uydSU9({E+nW^^@8Dz;eKI z$+zE{OCZ~c8gK964P`p8GvamiW6ud=QyI#Cg7M!3`6N#QcV`G1R9kJACUdsJzKJT3v)ukbhh-{8l z9}0Hu3B@`yX715Zsol7AwDmXj-YY5;GrIc8i(4&)3BMXHjgbZ-gfzuxW^Y%xxVpHn zzk;DZHq*BMHF7Q)2X5i)pY>khAJW7@{9pB>3aK=`CJTh=w6h%K6W4C4HFYR3hTPBs zDx1JkH8YA0rm#`)PXC(}d^ny0d%yFyyBfUu>+rCzPhPi8j-r!P7Q|`8MypNA)S|i< zQ)Kj=^n0By;-9dZ(-h43gI;zlIEp1cZ4eej%1!GVV;aCZ;}aan^=hz(VTg*4j&z6X z!h)Gt;s!C=&+nz9ia#$El?vUcNIOpA&!BgN694hs6ovNIH$Uh|6yVz~FHG;T&SmPH z-TW`Zw%;`2h1_gWMQ$4RJ`!9K?vT0jJIc?BelAo<=lsJCiOCg*ftP~~`0DZUoxE9h zx?vf81NXY9sGfbQLc^G%c-YN4B;&Gg3@%Xam&M8%_Bxa9RAl+C%ew|m!uVDflN^6o za5u735Ra5G9rz`#-774ipD#5t@Pg*zx7pn%lgX_3*#{KPX!@Rx8!Oq$%{ntRf}U*D3Rkf;p;rowyb&CZJ3R2AsD; z?ji6kxapT4YLB|dMbswM^el273J*B^A=^%NSke-rSZnAjY_Fs zw#rf?9Y532iL$8JUX}r%g(`IdLN=EJe)X9&y(iI9&U2_d*dJL1k#2hU?zzBx`uVQ@ za05747I}F*B8$*s#au4Ui&D`0m7)6c*Lz=+y&_8fehpRgjUmy2&9O{AAoIx~VU%rz zJ?hj4cILxO^_6Q{)JkB{wom@J{Uiyi+HGC;R6jZD*Oeti94>_-%>PH}G5<-%QB$18 zI7r%1o2xRmRoT+j{})pL1gEDsRv560b(&)j5x;Q{>LSK3;Lb$#-+NPq6gV20P_&_C z1-wCa!b^r(4c|v0&_}>j=K=(XIi)OL04&rl8u^a_fTy`kK_b05N#k)+f8@qYYK(T9 zupxz_o7F5eLm6h?GFZ`Gt#aK~wXeHo*pG|o4^obNlWOoLtAU>C%fI52c!B6j_dY)9 zOXJV^#@8>w)KA*#Rg5ivYG5a81SKinN>|ddRg+xR!g@nwStn&a(V^U5_w)Zj=kl*? zut(SLDCLQvP(QF9j@g16(pPi{)i3j#!hUMlqZmnoKHeU2`VLPqP(_=fQ)ByiO**6O z?kjeyHt%d`|BY0D*W03G1@UVVNWFvk5&^Iqt9$WJe2Veia7$tRigJDN`w|%tH&a_c zW?7o!h{2xie$o#UV#>h-|7_5U@ciB9D5}m||2Rst?{Fh+#-)L*ig^3R7a*M8y}D(Z z_F8QPM}?Q>siEO737=w-h$>Bf@kEEQ$+%YU^5%fa8cBW2`@v-d$fh-B zX6jDQ{}W_8|ArF2V!ODe0pp1`4u&6d-I#pwOl`ZSLkF69X-QQM859}42^8QyS6MRR z8Uv`2G9f-&v1}~osZWU+vj0hZ<_Kb}pI?Jt6`lTfpzncebPx$2M=OI6kK3FLiiJ-M z#g((BYnNe=M{Dy{jT5S_XI?k@jE(XDho>4r;KZ&5r#dL_IeYAz~eUx?Ij;E-&_UJB0{5P z6r+jMr^a#+@&Luos{dzgEFGPv=-+valF62Sw9G$c2x2wPGw8C;FylL%8n`P)Dw&-f zAPp(2T4{XCmdWL#E*-LIglwP%wem1Y938v;HdFWQEm({A?jw_5`BXd^WaSR|i&}%2 z(R-!+_rJCnp3T@64Ao(hZBF)+0kHzTv%(M2Nbd;&^h(Xwl@G90U-j9`eZDSZ>A+Rf zo5?T(!OH6pqyf_VK>I@OisEPXzDp4z|9wX-{pyrIz9&C-O6=gT7bjQq?@U4DzF}EA z1dE#UKV;HOsh9TUYB41l4vW^MFjJu-@2Lu5`b~uV3A1;P=9>weSFHp7RcA?CKKAJ^ z&av+)YsM#Tq^HV^Un|#szv0@b*JXyiCI}9(XYoUMOG_xAVm{fEQbXEGzUJT~cDWU{ zGD<_ODKnvLWW$8CdG~~+>dt)1f0O23pS$UCA-OPXV zomy;h zsxcTrr-iwZ=cHL6+0+fPSug^`-ro-u9- zBycA5c=G(9=%}Q-g6CVL8Xr-y9Gv`V%^GSShjtT4t|})k3aE)?)oiEbi`0pty`2SA zB|9kkH%L%o6y82t>=+|OcO zvXqxyJ;e{Je+UtBJ!92Xn_6ss>UqDbbgzP4y}up8+h{+K2Ycg{!xO*(KM+v#3`(}k z;lSFD0(V4jj*IE*&?ws%@$79H9E^kssKFEq!nC*|u`0Q4aDXhu(JsWy0X5tI#CoZ7 z^T&b&i>CN!k(QtRLFkEuAAiDk9r!uG-WjTVaqv(d9p-lMHZ0>ZHDX}1`NFJ-2l?FZ zJ*oH`a1>aspYg={#`;`QZ79=`Y$B@9YD8mNmOp2_I~7)N^a-= zTsfQ{-98eQC_M;O=7I`A#Rr9`+pAXpv_4tZh{EupuXqF!xTE0+Xe~CSeydKaAF+|6 z${2zVk|Cttn|1B09*VFwm|!WgSYxZ_>+;r8wQ?}gR;p54owgREA*8&|P<@iF=!Sj} zvS_5xNl6!2ZF4GjSN8zW7NPBAMkSm^hAl*d!b(8B&(Cnk={r<(U<6p?0r0w`6ctJU zG($D8ZaU;^?;|zsHj_PS@7;#0ESP8r39vCzwQ?R6hhu%2JQz3$t+ zuK2QzJq{L6>$#rzDD-WC$$5RmQ>sJ?nvy%PAAcHhi^JroBf+)lGCOEr*5tTxxRl)I{bX= zH4Jt!wb^wpcH^>Z1~%}bPFu_GM5 zOBMFq4|SG_T7kf=gWeULXgvf2t;aQns}Zr$$lf>il?A*paoIkk||6_53GgM zhy=a6baUbVA&Fi4n?P>ov)kH;ocVi5`FHw1@rfK6UNW&b$zuIu>$0`}EdDb+50#uQ zB)>eb&o1j)d!{>UgfQ<9vBxJ5sHpGVjCerV0jQ|%fwiUd{ea2+l~+6i8!MV@E1@Oo zYos#SsO1+UEjPgRy#w|yQQisW$&$M{Z8cgKt%cOp$5k^Hk)|}B&i|TlN$320KV9lw zRuFcy$&ppOD@w^}0fxT@gZvKXyRA*Xu2Mh275BYyi$cD-Da4{tI=n8ZnuBnRi6G%qZ_W(EqB8Q=87u-S=VTQR?8bWP42x zrx>OLLd;*BC^d9{B6pdZ4)9-%Wy$00;E?-3EVJKNV9i$gku~dEKCDY?ks0N7gT(?rafGn-J~%W*xJIY>dY&|YQ`0`=7h2d;i*3^9y`70zZ9Cw{VN z_%A-Kc0>^J?TovXf1@8uI<@ReE2g9wbu3nZy2|-4aX4Lz!58{EBYTHN z_Q7j)PrGbSREVaWy6&&+=={{FI$8d$zr4J@Hy7`goIP~+)H*XY9K2&6$_ecH69LWl8bS+@} zPVQ|+xq=$E-`n;raehV;M=nJO{a15zz0TrKktJ7e(4U~AinT*LJ{!sy#f3xYpFcM? z4rw;{3QR~tv8fck#p(*4e#+MJ{fJ22dxeJUa|2T$2Bzy|25Xc5YK}Yui9!-#cF9<= z^szwY?^Nm>Ny%GgH$q_z8b3_-sZkK;JA(Xg*s&gEh*X6>=rx&K2*A%z#}i}qPVv78 z6=-5gH}*lCHR@>J6aAN_C0?E7P5l_7D9VjDjBc}<;tFYOaVYTdiMYJ;)!Mx`ZetNC zdE?Mg{!`g2`3E;a&yI`suC!N$|J_S;GKXx&{!Aw1R9e=<8}k%K88o`|c@(}si!o>< zHu5_^8=SsDMRmDc%11rJ+vqZcK5*`Vuw5beqg7yDWz%3Kly*vVId&-JOR;4);A5a2 zI{WOksq-*HUB89Gv7-k01bYupL*)D@___z}k^B%(WWC>hC#6dHI(Kz>Aiv7qRCr2x zXvS4Hyi2gtfy5PVa{uDnh2YEzPyG#6m+)@i7#!ng`wY}q4H**h@1)WW zM5n2*UD~CH`)BHu#yX->t8&u{VRz1~Dn6_8oFs| z0fA}{a=tpagQ?yX+~0F-3$=dmv836s68BnwxmdZ|TI;e|hSRwDFH)JeAVw1iDVq(F zJa0VAKon;8uIGy9)gPK!0Y?%oF0&y1o;=n^{Oq}Nqob|%D9B)z)bQ0mi#0~qD z$uW_?-gRbbddldj;_wWmIeuL1n#G5tH-sfMt5m{JS@&;Cf_=8-hxzfcHt9Ja8U4FV z5~-otUj-ty^*Q~TV&L)jPebkhAhP>k+4y{!CG_9VyM8<+E9<{Ks}&{1c)gE4^*WQ| zlRI&nvvrgUeE8#K{|$=9G$Pb=tUPffJ#^#EZ$l-&<+mb|N2bHR2mJ$t6nhd#_I>NBNazs)K2Xp-|G@Oj~ zclzb1<&-{O4((NN)E)pSjmo9QZ#qzYdH-*p|A8+3m3ZoIn)^-GkSKk=j}^f~@&;yp zQ{T6~l|7)kcjw>TH!8WW8hg2HfJ7(v5h|Xbc(YE5YK{KiHrwvW(fr0Y^FJ-#75v*c z{`UCAZgr~Nk@gy4N-s0nI9$Lrl@Lr%WmDJtljf-!v2!Fr}t9RW0?QN#g*$ry@RPTQL`wOaf|9@O9!tZmwd%4}I_&#Ca z`QJPb#b#rTrRI`}sEycdpq~^RkTKJ{*|c==9q7jZ$E9BtPqgk(ru)ZMibbs97VqOu z$){3^Z7cXJkBgBHe1)7U{w{NuW3UREdrw-FSqd_AyKDc*qhS@F-tS3$_2jm_5wBEM zx@l+m-5^?4dK*C*s`f988kr3Iv_LJ6azdutA^D0fy1^a`@S7mItkIoZ-X9*A8mC7- zqI@^$W4dB0O`tRCYbmpMfnI>xH60pp_3)hG+FMJq49)c!AMa*+!@i6Z*@q4BWB?zG z>1ASXJNSvgQ;XOFo8mL#rilhO9P7}#CQA;o88r{?9$slt{78tD*?PXzp;=V!*f9}o znX7h~b3`@V=r&3*XZp0T!y*$YLw*0dX$K>Zl=7v{0-sR9+4srU>xFQdk;$=vu~aRp z`)N0*w5k5iVDD_~AA`)VtGCJS#om%xojgv9o;K`I(qO^Ip5poC%A0`e&uLZ@`GCd_ z&L_qWO3=Ctpy8LuuVr`M=I9DmJzKW0UbT9l44evj|Hb2B_N>GceO=v?g1lO6TPVtRKHy(H6r#JKx`<`ECLD znM74Ot&+%BrS}PPRYAw`Qg;jgP1yv7zSl7+0W=J+9eOgb-Q2^!#{kn4c4{Q+#fKOP zf!hgVMsAf+#mw`rDwW9xfFT}cVOFMjD7N~0uRzciG%Kw7+wSykFGNZHp#P%vV65!H zupH}-TOpreMV2=<&1k6ELD$`GNk1zmWGw;7|CWdL#@nLZ0rWb;0(mGkf`!Cc8X2sh z6|`NKYK+r*xOAu1f^idkSz&97n@30HP@z6sW&&_$uKL7Zr}c=`nr-V7(&B-YQ>*NajX)k4 zZ#%{JONE(ZH+9d=a~<~M@V?J9(D|TKfXiVxtAGtW8kly48u2EKc~&@RHAuET*Q-kg z2;E5yZ)$NNXyjg?e8SHy6bstjE>ZQ|rc~sV6qb5_l-jk=eYTzdw!BtA&-Lu2_jxN{ zWrsLEc*BHjx;GuuX0XonwPu4He&C-Qud#gft7AQ}cUH3gQbv99h7aMXP>D zUD7_C2X3G3`=6g-xX$qBTr;Qb2}JOG&*AI^MTj0k_OIY&X$jTCSo_O~cWv_jmST@FuM?a@|8|P6wnY{hqW!L8O3WJ1V-)Kk#GTh(2&IQ{1+DGivF&O5o`t zA5J?$&V^leLaOTlqUu<#zk^gq*~hmxb;9t(xw+$_3-WMo8?fW2o{rmquQBjy7tRnmd%31Iv14&<9$K-kM@G@k<$Cj+9Utj*Qc2Qqo9wdSCZgUyjpK>^1wKm#=8o zclFGlvzmOfTWUAIEpNfX{b@6U$~R0CTBqKF<`WY*{HG zRJIVC*hP@U(MPKZBypUWeg546&BEl@4uyIUd$H`%SvkVlx3ovLRT=r&JV|`wZh_FI zA6GF_c*eA$mfxAB9<2*4QWa)0C5~e!Rp=O@#q8qgnj9KtbMKkK?T|x|l$FE=iEm_U zYv`|!FC?I8(Zc|*^*X8PAac2}ASDfbipY6kmVGIknq!XTaSvN4SGH4G5mN46l)qZO zFCvx@ahvUlAF<3UOzg|!E^mi{IxrVL%csn% zxtzP7I*jTc*?A|IyRGms<-x-tyu8JVV%NbN8%7B;OqEs_3EOjls~i_(yvNxBZZ6OT zP*xN0qu(kx=vYWY9pmxMG0>ZDV6VPQ|H2qObxX(jJyaR}*uhAz<;spHz$x$00$%V}2qtSHQLpp}#NeVc+gjYstQ184Eh`2tw% z;ffW2S;tGJ<1ZD$x;BKc=~JM=?~R|g`yqHNaOM zARqVsrm?9Q=|ydkVO_DQF_Zg3nbb7b&*W7dKVHk=3Rv|Mru|d{!8-*Wu3MkQ0Vdf( zdm28xLTtHQyT$%r-|nt;jBI@}TOS;3;Pjs9Gh)2CwlUD6XfFFW;{y!a z?BlT%A=FY?=x5=kBd~fGXqhX*l%N!h!EB$c7`N_c19P3Wr>ZaZAw%iC0z!Num4YZ* zl5g#VJklQMeXQ&0~9AvdCeC&;glv{*V?1xE4pJ{!%g@AsFc4`b7Ns%cE zhs>IBXp5n>+DUKADij!0SBH*Pl19R1rlbAE^g+YO?JvzI86QGy-CAVdZUe~X`%Nn^ zG|XBD2C8L33>T{-wtRy&cFuA@I7{G&Z<`h97X~|#G!r)tGOa9ho>{4g$RXXg`row~ z)xFHn9uEJ8t|h@caR!DMMN*})8e^odo97QexXiHh?es^@40y(0S3rFnTw)M0Ijdo% z`rplkFHuD+ny3*UI^s}>a-!&0n&{>(`*X3%6&D>uy~$uLWTP=nSD;kofC^wUwEl=w z_S-|*sTiQpJvpEA={xApb;LrqWoEVnh z>%K;V-c5>gnVUK#A?mxC9)bHE1~NitQ)7&>C0+2Q@U&b>+b&aE2fSnJMn$@@l%%Zm zOM-8MoKj^#M>r-2;XDrY8Op5NEHf1_(zdFp3Qn4BY4kiV;p1kG-{WJ+Jg1ineEf zXzj%K26?E7Epu4gdF2H@X8edE;^%@gMBr!)?CzTgC;J0SZ1{(NR9T zdNMolkd(AhF|yG8zE?W#UA^llh?OT1YPk9f<37|qYP6L^7J6;xT2ATC zmr9l0lA7}25j2w^B*id8ANflIyLS6fMUl#xbp?+&cmJZHzDMnZ5+1mblDh1YdDddb zWqw|xS6dq?2fo8;`{u&CHBG zWV>`df~#$XYoT-#(S#d7d}dATbX>Q2lDJ}&l6Be`JMi&(yA$_l?Ru0{Y119>mO&y> zX{m;=8rv^W=WI1syIKwOKcH=|bZ1epIh-=gJ=zwS+si|VSTt@n!y%RCfh#3G4%#i+Ll4Y$H&=mARXOP zO4YoVm&V>r1cV(R-P;yF<~Hqaz?p^bWivM%hC@Cz^3AUwcH@+frktaPTAijFo^%!X z&W^&!=hYne@chQ0gAAaSnV-9EQ?a-?!_8Ph_3+ZB$t3~+H5Y7qNW+{B-rvRh#2$DK zu3Q}UAA}L-T9+wc@&HskXZ%rJ^HG_AV(6fZv3b?vCLB^B3mht|`MS+MEP*Es`_>Jm zOB~lEge*+ZY9k$+E(S5Q4i;hi<=d?R_}*u_?L}8myn>cBq~^dP9f7BqZAb9tND&Y^ z-g?w6cd=LFZxu3I0*B=I97G!ehX69%jKqy2G?#w@TW&$O9M=n)c{qgx6D#`4cki`p z*`9Xa(n$J+aTqQ&w;)`ejo}0D0}!ndG;}3aU?nO5+>~b)%bDn2T7f+?W_`y{CNwP? zbcl!{Hk@u`c{CpB1zi(J%k?=Jg&PY(b8xKAjf9=4b%m!Qzx$tWdo-U-Hg1!b4Y!e7 zGigvzUn9yW2ecxyI+z8pWOH0WcN6*$-64$cXhUuk`*BOZJ^jGmwnIeCg)PynjwlXW zdJWZ}jRuD>=mjfs5Ez^Ob>Wi_Rlt@19kWHGJ}3K}dlX!jXXpN;JGrgj=fzORU7%ol zcU6e*_uVGL$Xmat#l3+8v_m@4-yR7%h*vz($@rx)Hem8m&R%=HUsLtG&J8tGG!?yC zj>MyYTJ-Uv1cc(Q_Z9%;s+@?cNE5kRy`m_2QuJKrCO!6Bos zua-BgtzXE7DUU!EZfKoH*ZC;!#`IK>&)m>O-wudjOO0TzvmWk*GoQg$M2X#FsrDFo zMms)5U3Ziw?Gc=SSrr zWLc-1&1WalGHB3hu`D1rVuhPaZtLMJkYc@iFK zH5vsOnz+icz>{#`M6(`~Q$p8(=Qs?Q6S}d$%LVo$uf$gr37_qjr&$~>h7CZ=FcU4i zzikr~{pLa_uY$u1&SFs&O`AJ&<|f0~_|I&K^0x-9qfQW+JuYTG-FU5xV}b@?Ww{Wb z=bLGyvl?*-RrJGeRyS^)W}0P9Of|i(MCC@Y`P}=K2 zO`PF(o0aFLv{x5h{;A7Sk`<|FVa%d3WG0#Wd<_6!2s>V1MW38GM}a+m{G4oWxYio= zI*|6hq;wW4$63fqR8o?Z_=}J?eeXB3mNYrR>ilG;t?AT9icI|Q2<^k|ht3MSIHImp z8kNqIUqdK-H9(g^p%oKTHwfFUi!*8Fq3Ae_`AN0a*+#jebiM25x(|#IA6sTh5D{*& z!Lkb6jmwmMV0n0woN%^_l$!Azm&BMKw}dtSuEh8g-6a5{O?kvAyTazy8W*JtIBlgg zaQRdIE7TN_h};WP+Qpt;%%cH;nf`umC4@|P%1XhO4P1vF~P08)6m5qzh zD38`10@ul2L=R56YpDntcmgez$(>3jhFR2g@Lh_jfc+-39~Ak-bv)6~$ucuro?+I& zLOcjVlr$rf@l>6Ft#vw_U2)@#Yn>$xa+{3C`VVF)d33Sv4MFjkCcl>R-pa~`Gc;x{ zUsZ#F+ZPSrOWyVf@*|K0`22wBd z3@?EY9~*U(qr;qXwncL5b|)wi|9wR<7`uC@y>kWUTzWtZAboH$+}rIxonbS!wJor) z&_QMv-0g(6vEJ3o+J3Et?Z4~}MvPv_`uOzg{|v!B(tzZRn>ZLjI{-dJ3E zHIrA`d2G2E-Yvv87zeIMm-8N)yytR=%Bmj^e&Rh|qTw!kIFMpo+3MnATk!k%x*D`+ z@~jp+Pb^ci*prCK=RFvM-C57yWfh2yzHXwHHGf<-zx$*sFX`F-N+hPOF|X(qCm@F@ zWPC}XTXIizkc(MtW1@m$WlZZa*Ajr&3@Qbx`3awqr6ycUrzW;USiH1t&P@=W5X9PO z22+ss@K9XB^uC$JUc^h|>{joABq61fU0RV4;`oF+ip19RD#oO|!C~dII1KW8;|3Vv zN)FhQ6cBFOnYMo~u4)kCu3-x@M_(66W6NP$@ZJ0CJpX?a>)q1w&Gu*?(AG6u@fdNf z)sHRor7-uan-RBUbyi)kFsP4}?nV!pkl7RFK!+l&hv)n60tHnlln zK1bRO=DuC-GL)q*XBI5n6=nY-yP5m~7m7QB6Bk5wq;|vAjIay|_Gv z&CC)zDI<056yf!foBw+9)}V-AonoJ?zK*MhvqqMYXnlhUR0`?c|GoK5O=C-w?P;6$ z^r1!zwVA}7?e*Yp2c(3Mno%!n33%>})2(g$fjckzNL}HV!fX0Tjghc_Ei5W$SCd5>64(_!t>iVn%icD9 zzU*;+o<@n&>c@nOHCjn#9jH}$DTO%p;Z_Gw_znsVV4XdEY4Y`z*Pz#1QFrVDy>1iK z{hJCh>Eqs-DgOkQRYe9$NLlskrvkx~tW`m}v=!BMB}F!<)iBWEs?tv3#R&~^xl0MzuU|9U*>`SGwO-09J5Y1?U!TIlY1s`2nuCk`PkaA^sFy%f2o>3U4z z2q*69^Y4QLWM??mLnncsr@t<|P@f^})11jL{)zu7?E8mhn9bwLShgPUQ+F&WtnI?M zRqCE7-Qd^YfhIFt)`p8S!P&*x#f9+wjXq{H@nc53J zWvpXVRN+5BSz^^g5`lq2;nqQN>n@(lQb~p3zo-17=9Vz&fc6b{BGw)u_hM0PDx6uVN6nX17)FLd%5NaErE)Db+(4kt_&Ac;M02y3 zzVxiLK+(?`iYq$hCw`N%`kOSB{L-dZ8hTxZLl4=xGL<}L!_E&s6uCUDE2Ohn5|h`v8(%2c zZ+$<^F;%EGrxuqeD2Ni%!cv#r)a1>K{=}`o@w(t!aCezKvpMMXG##wW?k|cNwfMz( zOm5g&fjDqR%;lim$6-zaI0SYOJnByMS3C`Ndc3it1FfmUO*Q6K6!jcj5$GAPFqao& z#DFso4-AC2bIjC))yU*D{Nykt@umCrX8 z+G!Q?2j*z%qJA_M?^JaK$a1b@chGGYZ_m#frG~RripUi*J|5Zdd5gW(kli!-i*umz z=HMao_ZwGKw_l4jo$U;}Vs-2D6u(H7x{e8Paat+*Xy;|DRRo6Y>nsUv4J`dM!e&;d zz{1fGC)yb<=<y_+FTi zPXz`3!f3Y$23{;x4Ze`gh~FX;GL?j(X@No{`3uPLo}%A@p?_GtWKFSrO76bV|Hi(3 zA)9n5{Ruq7)WUh^Q!oBla(!ce0kdc{P%c}`k;viEC3V6_rSG{|(>Ch5WQ1(y{XOsV zdM+a4{v3Ac-J>6RF!HSWMHe?eIeVd;kb5*)nTs3OS8$s8dHXpG$*#*bHtA7N%;9Du z$H)edIqz=3+wALV%}7kdc5!noILLtRq#fojM#aa`yPA>5Q04f7iq_ql?UsuOV*szw zq3c%!6!)V!UzdADgq@oU)iY$J7<4|m82D1LZBy=Us7{sKVCWdfdaa<2`}wjHw?KHI zq@hxIVW>=rcattV8)*A{0*3IkF~vvn#<2o!ZMc_^fk4#drw`I@idX^Wj6+51j1=uH zGh*Vk`R0mKw-e`|XZr`V=+y1|J{pxtWvD1mKML%=zADVo;@Oo>qoF1&UEbj7Y!m8K z_2OXgFa&V=)nYX^19S*GDUvb*s|v9P63c1q*1`<5{FbkpIAJy3%j8s?jEXhGwk2jc~#kF4CFS2$1TnR9+p)`t=f zSSpn=m)?K?F=a0JYzXm*Z>5^T_rJI@H;W8_1^Cmgct*g?*lcDz+i^knGXALSg|QFZ z9`?uVyTqF`CAk$YGgFD9{XHo(bsr4CWLmBAthZ&~4n1ZT&{<{zxhF9Bu*sTuhEZU5Mhwp!=rpt5a`vQ~Hf-*f9>Qj)C-i7MD{Ox~ zkkJHL5VFc7ca=kZ$xK%fTu^a7m}yjA<9qgV&jG)0;P!o{#?Qy!Qt#g9HWJfFI#cg@ zfFGc9qN#zUak&g`e728Unow%<*@Dx1>}rQDwam%;`{Bo+uh0|5Y-|VcnXQ80Zp@;uLyYB)q$)%oJfT> zrdiku<+l_k!*$-VI=k0yeAjpxoQ0(KkrDsj>>z>ku2{>wNQ09sbKF-R+`qz-OT`$b zX*0p&oU?644#J!u3;@&drY-u6*Ld#uJ#dYvKXeU4EMd#52cHP=^!yeR-v0BReX*JQ zgqO^F(gHQ*>EZ9&nz~7EsvM^~tU@+?l*ssmFu!3D;_>2@yNq$W5ia!}v$e%L;__$Eke??~Rmpv!LyH&;=3op+F2X?2G2Af6NHE6zINd{!7Q(=Ion+%4$Y>&puX zIjdGy^-9ydssmO{8&ikDM@XfnQ=rntdXKPd$aqJetxueCkdQfXjQw%d6z4ITS1E8? zAL$Re5_7lA#Cs1pyT6|>>s29B+`g$u8pm`n|LVLwH!LM3`4V92{`wj^uohn2|Ee&< zYBh6Vhml7SjymG`66WElAkYB)^ntSR!yKIK5S;qFK6%sa*toHGSrkKE%2%a7v zbbfFFV@cY&oCw?NGaq9WjY-XLRjrouZUFJ@hyTSKO`2hBa1aW??7uz7J}knfbP>%S zc2a5;vObi1wpdYVNrt;H3*EDl;dyqP_Hs+n%S@Y2RqajWn<8a`!li?Wa}rU30JyQT zqa~za=rPmevqf8=3T}?r2sJ8Fag$ux|1&1nv_5b!3;7gunYMdC@uGy{T0$6}Iqu9o zU-rSAZ{~*=m`Jw*mztP!XN_?~eiH!t3JYXjkkupu)bC*3xRn5yyXYGZJ>KDJ_UJp? zDSWQoXMUdg6|=@6XTLPtQd++~HN`-ROAqXmR63ow2;NguYNf=#8P6*vWGM#PZ1}Q( z3HXRTtotX&*ia6KC;PrQaBE#dDyA#-nOy7qQ<(EF)A77I6%zXTV{M$9{(I#1iOaIzm;C)(}MRIBDaT~ z_4FtmMd1`liS#YoW&Q3xdvn6a^9s3S%t1?$;hJ(U>a|deDWW`30ogitvY5*m0H=8P z$RB@5m_BKxzrX;EW_`836U!kdP1-UpjKHU*_c+R}YKg1c=VZ8lxjXT(S;NsZ;hdn) z)w)%{)$D9J;@jfa37^Q6%@c3bN7dBLf3GeYJ~;++hU{{AxJKhsazMnAgt=gp%np|O zEnvOwUi4K*RUm%N%Ba46yiPnjBeCM7q@DuOCl%hO5BGY$)B31iuHbewA_|eSk_q11 zYKuQ)l)G5S%M z6~1t+MkYH)hvmH~c-v}k_*CSi6NW)v-z%~@dVhG)!>dHz!Br|(ieF62n4P zyUv(9xpi{UHcYKSr!*A%r+PO4IyG6O`RrtPHWYVdZa+g~w}(ZGp7L1nC&?+HZn^Hv zsj)%lvms$EzzKbvRZJWoAOKgs9dc2mxU+zp1@CW_ddDCMmTimMi3dNw=g+SHb4+4= zYuUX0|ASsUkRIi}bq$s#IwzRupSQ)AoUEM7;*>bi2q{`M4pO~K=(-=6z?s9?CtM2u z;p!-bOY$4-#LojyboOd~y3g+Ysk61<_sJ_4nXFQs6!q-5_cjGu5WL2CMN;_mnW0)u zRoyEUH_*6<5r%m=AUfDwN`7X^Ay-m3EXcCvyp97bWjGF5ULBUVo&BD_6CS~{1dz{& z-JG;%W+J?l>DypN5Iu;+dxRWcS1aqqvTL@(*@n<R3Um36SvX{;*T98=T`vQ46CyHtmseB&bTHV1_1oq(393CwbbS z*~??=KnT$E@pdxUUae#%SuS*=q5oy_?%qKBL3dMI8#d*YSs-U1^`e2i-EqQjrF@8ZK zat|h$C2iyVGF*q&vD#4$1!49#z(`=yAlp#sL&~#dc<-Jp*EQ@~Xwk}#ttGPUGFtnmhL@G~#ag3O{Jzd^xKvAxf0*sVJEM{) zx`dpkfd*Zs_`dj(lR<)u8JQCm`-s#$wOCv~B#>*ux!b>_m!w5oiaZ$?!sV7s$rSf` zc($pEjJOx~Wz^Vpl!Y&;UIv}?)7q>%04!XbHA+2p9?rPCU{9wHS~y#HnQU{~*%>HR zi88jVhKfA+rHx}A*8Lz3a6k<5_TT^f>;rHm{_?weK8OUb!QG)uSu>0za_;JFttE)P z2i6o>nJ2!+J|;E&f1}UdQwb^^7o{6L_O85jUfl6m4}>UD8u}Bi?gujJ*C7f_qyKOuqbeQS@s_=|SE&I^{ct=nkcAOY{z6{Q3faOhK7Q9tr7}7P zH92jYz_OvhJm6+PjV4)j0Bo zr0V=$e~vZm2Z`TV-<+;3jJe~#ErYMF>EILJrQLd^qu+zD@OtV+`W_8Uv;<(#3Klb2 zRvy-ZKPDZYmU?U7N9|lCRBem5d~pO2i1j5513mm|X|X~q+iIS5WXViEY*(3G}qBNk;Huv^P!jN`c60 z;Vi4CbAP$r6Aqi zAl)5HH@oz*!0vw6=Xu}b{rn5x-*)fgzK=U*u9@?iIcJ8S8dO;UGy+)c;918_67b2G z=qp2fbw^7&JhBR=Rq#e1BO*7nCvHA^7Zsb&N&>R=cuE-$o5E=`982}u-TN9VKWKc& zC8g`{`$%Y@DcEqBzhmbsIbV*7 zeZJr4NUL1gkBpm;RPVR{OyBOV{!!T`4xP5O8;d?)QfWUi!E2Zvto!Cdhj}m9x?FogId_G#G=Mx!JhR|78#$jXfd>OQmd5lWRVb?PTLQTf z>(BN}sBOlUrV>a@P%ky6;*BiW0=Ea%aY?9H&h>{*`Q_{(uB_bH!{w9y|5 zaiNW?8S5+H>6xm8&zfq8k<-XJ!H4C~_59NVva(*7qnWAyzNP6`B-u1$RIJy9dk1yU zopRD#9Pvfmjf#jDl)i{=zVt7`?Iz|+iIhfGtF-e|q7f*}&CY8#S;t%I85+CaI7YOS5(sc1no^-qTIJe(zvr64hJGOb*u5`JtA=`=am#9K7xC3ik zpl(gb@W}@GU#U`d5(jUc>x^YwY~P-Ndb?IHk7iAl8pn}yXM>wC(`){Q*YHp0lV8A+ zk`F9Eoe!XF=T2x@dFA~d1<7q4)Etz&`;_(vm0R@9!+*zNHcQyBoawQ1dJwbpWUZO^z*0ELy*;od_>dyh->dtg?s zU!{TM5ATi`*pY_Q^2HWWT^rbIlr?I-Z8?R_37WfF8$O zlcAUW2pABN%VXB75p+M>S7hP_?tpNabUr5MJr=czk3nIli%9YW6#)7be=zLg@hV^z z{8MYFw(1!Q7WO}M>&*<3Sk8B_K~~4fxyiuWIwJo~bUHdZQ0?)dBxKDUDWiQz2RLBS z$a}p%ifsMah(_RLvT6|6#T(Re+5z?)jg#kg(#7wpVg3Vspah8K$&)?@OxO|ibdt|0}x&OlsLr6N-0*21fHsKzsuP~gE^=U{A@2;`nH^WUFZBP;KG4aLgtQZvu%q5vdY*4Bm z3DFXY?X|ccNM8P7G9Qd}CC3){e7QSB?{~@_1Rceex|3B5fJD}d_)(5Aw)|`6A=vbHo7hsq zwlhW24AP0K$R2112SArT0?3A6)#`S&zJUR_<={JwbGz%~-9=zmS99~y$qhL zDSsYx47A?1?uGvOdRl?I>+v#`9l1+00=tz{`kgf_N?s<$$I^-GQJCd3_}o7i1%=}tu91%h0#f+ z=&LrbVcreIjftDo^rAotmPkUDYKg6jAgrC}{CK{+>$ah)|)ozk9pt>`g(4)L3szooRz~=)$SZ<94HuuNrLy=dZ1L6?$VI|RG!a^@Vc8mW(bBLisz(h0X~xk*9{Z=sWQ zsqE`n@Rtv;#{;Kj*NiTn0Ju}oHd%m%r*yo;;QizAu5(Z_nJ*n~hjDb_GFFgs)5Zw= zPNC`a@G8(({4yOA2uFIX$qdJ~R4RV!5#k4scUw%PHv)E9cA9SNMp5^TiV1idA2?_9 zrGV(4cJwGibOFbuiiX_{>=HeQtGys?h-m8W*_YG8dfV9&)qBoYuY6gLyc6gHuBWdi zrKH4QX(=fmbaYzrMv^rol^hqUOu$@#(=qJZ&vn zm%P9bdvNfYRU0a9x@FGMJpPIfp0yP;Lwh*Vz*g+CIMKQN4*An`axP@2UcBqECbY)m za?kSm^=ad(MRt>fDZM)1zjZ3CPXg3Shiu005`@5P$k@N#C6na9<_;{x!BOY8ezQw~ zfv8hiS(#Jw7S?EO&VYSo%l^0!(81BMqN)mfc<6Ifoc?l6v>aJOw1I#_R$*vkfdg#s z&2cNM+Ao#;{Mu}@kd69bCng9{-)kFdPUwhk=XM(5w^|4ucl&0F6aqRab-QGaDS9N);~GQ5a5-&Tms9iCr#wtcDhlXcPWh z+J6lrj$BKEWXSk@hsnjB)ZwtvKtqUVbzCvBs;iA)m#YZiW6$%VYp(fWpL3 zhUDiW3<3nFVI7^AATg8m!=R8wK2k@{R?{Dl&KT*l-2hKhPmb5z8k3Sb-#dyJ`zm=k z&`*>2Y1Ywc?>G#B?MC3G9vOO7A&c4~%}7CZOT%wGOmdL%skQediY(x;__f({`wm7AOE6jh_@B(DC~j{S9; z>d+DPs>jCzDR9bz&n^P&r$QvJGAEnyVkK_o-aFYQyv*MSXfp7UW#pR*1i6EL{KY*|h@G^D zyV<;5qm){$^9ML&84hzJe>rmI+{xDG4tRP8ZW-bPj3k_(f|8xFXVFz9@3o*O=p!{6 z;?Mmyv$ORO1*cMv&sXb)IIX9EGm>EklVb5_Yi!)RNc6T`qIP;QvDm&d#kaEL|8%|z+uTi6vye8*1Ef)~fCSy|ddwI_6 zD>btCOSlPHJ2fnu6LlEn+n=GxllYEIj~2Y8{MTXH6-ASU@dkBnJ11f7Xo4!Ymff73oK8o?pyr*pzV`F- z%GME1-i5Wb(=@F3OUJy*UI$%cwo*;%DGA7*qpDh@@w=Sah97nu^Dke1mpFwUtk>>* zmG~Ly%D48uX%dIX>dEz5i&H^75?cMzy2ciV78$s-U&sUXsyc5tn-acty2MblSq`yR zHDglNMmV691hESYdJcBPK2Q?n{ERfAn=TA=7qbA0Bi~B6=fkxna>9IOR8>*yhV|eA zj?gWAll@DgKS;o(a{2w2S(69t+`@ttXk5&!7o*hWB~zU!2)RJlXY!$SFH-m(RE0cK zY9qs~D~%;_Qv$mX0ZnTPG9k1=elHE0S~0O-gZRsJ8YR8yUj)2aCqdthT4b%Im$ZV2 zAmHDyY0)I|b7<2%udJis`U?xKmY3TxPS1Bj@z&k|$XJnAqn%F)Vesb+oC*$-j=g^# zIw}kI^qN*UO`2S0F%c(;-_}?S2UK5G)}xo=6iR>PscV~h_P6O$Prm38xcVO_{~O2jkCq8}Lr3+Go`Bg43lf za$1$NKluJHul8?@9{S0gdZt;W>9vW@UEMyEdi0ag`=h+jW7;)ZPDh2Pk+i<~!bRL8*DLk*jujX9 zaSOoYKLnMDJdY=XD>3q@U`!Gh#K;};ZRIlUx*T4+#`RniaDO4kYg&9=u{u*L;UNF} zEgXL{%Q3U2B!J+gtX0rEv(a=V>QU(LC~@CuR?e^s@>Mvpj>EI|A+j+?W(aBxl@0vr zwXfmzVVd=B=Y@OIR^i?ibZw?55b3A5_3LeVzu@Sa1l&+`-34)0FV`tUP0S_4l^qP4nIRU80!S`dr>j&!~G6o_by8j2WOGmM?_oAOr zB>l1700A59NfPRvlV8zStyY`r99MVEPjsM5NY2d$2LKlI+Fg7|vm1w}-#7S%bSs

@EoPKY1K75W7r`&e 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

$qHxyUtfsZV zF7Anv1c!8mo^@2{FVxyiCwX_~%f6aDguekg8mz+Urz8;Iy7S8OL?4k;tmcD4F}Zw@M_JHcL%(HVVx=#skza4<{FLTREr~a+DTYpGDIL|J^cO=v7io= z)*D;jvWJF-o;W^zcY{NRaA4Y)ZPHpi8LMe7WL)i%nWnw z1M&$Sl}Hw+W_hOQVcAJenP~pyN4VEoA3oqeGg)0-1^vM2;|H3Wnvh43eQ7f+07kA~ zad9}9DZ?B|Mw-+LF3ZVJC`KONU!zK`tc zS0b&}LVCRhJ{z)aK0ov$FMo(xg_%rEwDZ-}YAL=~t*ELS*3$n{%*;o$k!T;4;BfXW zXKqJ;Ir9xOCpTPG_&dzPU^~;7-Lp5FVVqbT#DoN7D5~S1v_5D!ZhUoOkF1kbF|6}F z`$fY>XI`5%_F3Ki;*G)w%r9p@f4{Vgtr}BPccv3zI2MjM|yX@OftrbUso zM?n*@>DGf`AGKM7ri0mqLsk-Fg_9P1XYf^*mvi+&LH&(?>zE?% zHH>rY6lcrIu;K?4$~v=D$f}HQy6UoeSYIY#?$IO|{43~^;wF|e5#*bk`W(A`IDftU z@*TgenTAY3^@sWNq5_*y0X6ks#FRsWVwx6Js~9hRwK0?h#%m*K(Nrs%>+*`9qvV%x zu(FB$st|114H&>Pv{_mVadThqDeSiQ_4iip z>*vy=5{^c?=3kah|3KJRJDKxBDr44cwPTu^FFG?|2w_dHY5fx8@dhR;Ut1TlNod-Z z7ne!Xs_pKvi-6|q_{M@<^=b)&fFl~5yG{H<=n+MATV2T^J^SV@oe;fgF}sA_nPYUu z1kGyBZ(^yJL;aIDp1N+IAM%p@h}lS`3DVj8&48 zIt5h(g;LO#TtdTKcH-HeGgS{{5vpod@n$P&J}UeYt{_w; zRSKI8Dmpebg~IP}N93PDS-&%w2IicC0Fs0+yuFIo zlR46F8;dJzad$+_Y?MZWtV-iSivU55m9zAuPXURi~xVgCx zS&u|gib0tf5N3XlX=iCAh!A3CwRsY(;Eq#J=$D~ofsP;(S6_9(?bTml+NESwR#y7E z`+jh=mcK`Z-8uP87iqifO}uP#K&d6fSP5HN@K&_2V1bmOJr`6^P#{r}9f;?=#+r~E z*qbc)k7wY43bYo89NYP=9AXMI%!^~NL$}pH5~O$vW;M=Itx1s5&MAN70uFd<91Wji zIjG^cWn1^#i`_s>lGI~MDoCZMqBW{M=)nZKMdY8ok$+~of9CkX8%94v2R=?nqDF5`kZV}U<%pcz90P+-(`VQI{avK z%mMdT;7-y+0RzPZUV$x{YVI%HNLy#i-K73x0y=Vb%v$Lh zc@6V*3^$T}SqE(2am&NLIIGp91uf^QjH5@C|!uUkw{KM=s9qE!&(5k|J zgw8O|331ZM(o?!S^#yDRHj3X6S4Pmk`N>1>i0l^6)73j)B_mJ5uMkplj78Z>CihA8 zSA5CH%a5*%wa9r{A6Z`%zkH`WNo;QX)#f;oC6uu165eW*y#MWp-nfG<{kmXwbcv*W z++SAVHwTe)iw$>g7#KoHo_qJje~mZETp!6iyu)ds@O|dR{7<+|roD+t@K)cIdq}O| zY6BjUxaKQz<7{VaYhA7@`+d6AaLSZ{=u^V$H>>z_9g|^PiL9(YN7Sb|LL)@?wnz%- z>h9KN)O1RQMjDcx?hO$kTI-S0O@=UI4txC9<8-P{A3l7R3kpg?_u_2~jbmQmtxTyv z?Fbdo`Q0xbV-978qJw-%IKk!`GU(rq40 zb}1@JwQUx3p{OFM81YE;JM46n!_kF2`qs{9@H z{lGyW$UT23sE1Nu>v?LICFd)#>We{5R09V3cq$Fm5xS1A=6pLZTTzvLwm;n$p`u{X z5QUQd#XW|9aGAYY=Eob^a`~kQTb68QkxdJ0IjO9VCZaetYtUv2j?{0)pkA;B{P=?; zLPALWoA$|_C;F6T?8KN7Y2En+1*iI6e{NSYPiIZjlv2fhb55hCh0LdsOck}6^>#;4 z92S_`Y1BLJ66oi4JV>;XzL$zz7U=Hl>yv1@*qag6Z!eUUl|g*{uXWes|B9mJ zNKua6ATZI>|IL`wqV73DYy?INsr^|$KLq)D<(8LXX+USx+-km;*KqIYV+AUd4fX1| z0u4YCIbUy8(?*>Z+NC zK6X0KC~3W6r@`rQvh*j{L=qbZEmeA;oDgK8V>i|0MQuPKCO7&%lNLN4zcl-kq_t0j zBnN;+9BoE-jA`~g)^L%5>ptl#B2|EqP8!Hf`Zr;XHP_j)8t|&KbF4gswazL;@r7ot zBK>)rG^0tl;1GjP*3tUP~CG`*W-KN259lI1!g}h(H zZM3h&_uh96j|!-`tOZRBXAY~a&8D`@o|P#(P^XI=AB^S;aeY{<`DWk?pWE{YfotY> z*c#NVv(HLTo2)-k$n;DF-2-xIPz8`swc3o!fLs>4DTM|uP1NQ64?S{x5|a3zKif(0 z+H)rSSbtG)yBz72uG^t)oc)lb}j{ZiC)uOxJz^wD#Y1YK;LW? zF8n;_eyhvoYlCR?x@~)BFq!_!zlM8b#w#TFT7~1!Iy!8%uMk@>y*Qf*GZ!^c2Z8?a>yw|1d^#nU+l>5`Gkb2(a5Ou|PyT@7tQGLebDkJga(L zf9Ku=b0tfC;=cYALyY2`ssYJ+zEB}3Hqw+n%=*o!WSuyGx)EP;YH5h1F1oKahpSoR zm}25w`T^Yo#w+HPNd-P!N`9fxe1t&>2God~6Dj6f*^q0a5n!qUPCd4@V}eOk+J)XY z3$+xdBQxu1H`ABgFr>&8{jt{K63}AmSNy;kUf0ra?VAC(v7m(3ixQmK0!w<-LTh4m(y>Wm1 zo*PYFM4w|77H4V@%+-4?2(98h=_<_DpYE3jRh`Kmd|gFSlO|%N@%12+NNlM2=?*nS`=!mK5&#pedl`6A<=L!vB+ac=&CNOntbmU{7GmX=G6i-T5VUYib-0V8Ly{4etl2xDBqXZ5|Uq)xys!323@+l%LqJ+ z6>E@}Cr(UEY!1W=zO0)SWbZzC$u?{vG&P50iy$nOyrM-*dH24Q>rO5EKhLE$MfEXg zX}bBCHAx$-HDTp*gw8W|v-1U4{ZX)knIt>w9v|**GDL>cBu8-Vme!9_wOniruS6%R z1@{F|t6Jy>QWzyA)2P=Lye>-QC?@0N4*XQ5>o{yQpdQ z<5|7R#*+4kEnIr9_8|4^Uiw#&MTGnfdHEV=xw~MVq=JS$x~v_QgpB_?@Z?+=@+0f7 z7l{_GC#C!dZ|QJ6I1%2%qcUN$Ma5`irX3ji-LVTl$JL_i6#0`et@im;@NH#V&RoQD zbQZ1O+fQxZ4u?`i*sT9;hXOAP1xhYueBFEd|j_t!J3Q_1PB=Af@y*kHfjD5y?l0jt=E;H>-N_hJLsC4q*T; zS6fY6k*6Q|m<7DXNg1}aq5k+Zda$N9}Nmw($=H--0hUAha{Kk$bG`s zrX94F%!MMu!P(}tn|dKY2S3|}4TCEY19=;y?aNS-trin!m8>gqa?;XSiVf1?YYNHD zs+K`0$X!5Fnl((pTc9$8(!O7>L206J*(t(DGU&Pc)R33v{ZJSE;B}e`bjl@wJzrZ} z;{g^B?E;Yw>Mve9YKvz%D`h>;!y+P_N)K6wyRT}_+sJQ`(7nX%POLkW?C&Usq#pZf z+MK|C!$C3lHkvL462vV`r=81NU}I+YqlFJvk>NakT_UaJEMZ8`A z-dD0gmHqT^(MutYQUQJ=t6;UXE+VJ3W86N%jv9`UNWzvroikFlrFdz-VMSVTZ?JX_ zSP8^-dSk@v{Q&U_QMF+;^KUa)ewgj)$%*EOtoQyoKH_q7bMsrqJSfR) z_5}C@^?}a`C>1#cR{-og0B<`}AtteY)<$xG|EB}Fufv_y5-dC8nn(u@*7D59=4SrY zk7R9TI92Bw+m^hszw$YmnPO+X^pHAuAi+o!w0Zt;opmHWbIj~w1&8u<;p}#Hc6r(n z=Rol+u)8Jhmz^N)enIL)4`~mGSPkC{Uk~3_Tv1FG!Z(FuOW*a(TJqBty{s|c+4yMd zq@!x%hmlOQ(<587mw6HVprX`{ECA$a&2 z*7EVX$1nS8*;zG8;&unDVvr7dE_+@FPPpj*-WRZ05_8-cWxT&VPvi5|EB~sn80l?S zp9FZrv&{kTyF)?P0XW;sK))~4=dK3e&G|_zSy4ikx9(}XvnLU3F+C|JnviPrz^hfd zmk19HeNvW;|N942>v5o-DrnD4OhU4*+{Tm!X^%e^!}Ea$5ktVVGXx(bwgUPq;H;eR zKsJ&=a(V{rHMfxzR@>j!ziob7g$=dkJj`S(C7tB)PO;T+Hs@&zUA7cw#Jm<16!Z#l z7)X&s*JDnw(!Kf&y0E)aoCRw69hD%d<6tt!y_MS7y8e?Q=e%>-1IEB(LEqzo!e%y1W zEOp%d2Wmkhz!3yW+R2~`4p1i26d5Oy5BQt#^=rwb;F@D>JREdm-a}^^zR#QQRQWlmhIRS*!|R)2w8i}p z6yMYZ(j&=E{7(oZ#Kdc*{Uo*4PU2!>P-#RY(aPwC>ZK--$zV#EPDeO~E$T?i$WXiQ zWH{|l#l^>apAQM9h`Ma0gpgFPf>yxX6em)!|JBN^L^}E~U^9PFr}5zhfuJ0iaIL=@qj6hRM{AN~^|b zyFu5)Bs;z1oI|%B%?r`O+*N+1=DG7eZA}X zUf=s=KR7J#<|;o3$xb$rLP4Ii9!&mXM|8Tm`E+;;1AYd~FH^~33Mr559Udl5zL*|* z<1}02*BxfMyyXU5Auzo7bVlXWK@xJt+Aq66oB+*uM8CPYdD2<%m3V?yZ_o@ikXL=W z7WvwCZ$vS6%io%pmj}bk0m3zy3L*bRGnDWdAz=rJ(2&=mSpl*Etc(aIZHFlt>;h`%AS^K>4BKP?lmF z`E~!p#y=PpJtv9KR@Kt_K5p~&Er$M<;%^?~f0+u945ypBJ79nVh!4~YBprGEFjm!m zq@@9D11PW#+{JKz5_|(cBi!KbEvpazK*(ex#%#vkJ4`RO^LuNgtUOXbw6#AuktU!e zJ(4O8z)mFfd=WYV7r24Z>?TkN00q!3%w$l321)Z@NCy1dEPHThL441FZSh>jCEVoO z`gCvKX6cs>C@qe}>U^a+p}y@P0FYpHf!v$oSR5*H_jU!uqggM1Jcg6*hL-wbYqT4% zHE!A$3rkC%j5U53&fpM|a@bKLrlK0cwNqpyl>8J-)5yP0dq`8KGmLB3KQM5Uk%T`H zC_vzYiu-&J*X|_NsbR66%Fk-%&-D(uuswrh=WLBlnmt?f^DkORA&Z=D9pt^S}fvprg0H_|VeuRU69m>10M8oNFK zeO!lA)(4yj?AP_YZj8M`Vt_NtY420TEU*bZ@9OHpB;n}nJ3Opeu0Ez1Gy(lCix#fq z;2sLmMP{w1i>bg{{h0Smj1^j!ndP+m58Tp|%?qaTw;4P+K)*zC+LAvav1?U^Q0HF) z1TCoUGD;=lxDqThwAA-Y+{MKOpg#~QK#5JJc{Eq@5vFP@Qws$abJ?cgB7lRiC{!Y7xmEqqdXw1e(bz+P0Pq?9%^GLi%WEdU~d_HYOK z`=7LG$+c*Hwx#cPiTRA+ns@s)0e)%2oz$u@QF3&=0KD8yc}j9}@-`6TgB*#2oqbc@ z4#aBTn_wgD~Gd1+BKkCUE6@G7Y4S+#Nh%nJw2lL6(SlMM3>jz15IWD2sYIML4!E$fW1ZaXJ$^9@aD5RqFYZ#fC(Y)(U1GT`4wtjrL-!Ezc z_zwos#r^E%I9ByFsv#1}QE7Nmn|TmYAt0tiR5mRGWgysJ%ifQk%{m1{M-`ryA!?SK zdKx;lkFC+aM*xpCn0%qN`L0RcOg?vQp1BX1dU%4c?ttC&vA&oJ)t8-e&{6|IxR8YMVlC`s@fIpC!338${&$0ja?;mtq2&~GgmKQUi9qIMqd=Ck^iVb^i zL`)3fgGGBo$KoQD%}0v6#yO~qZc`e*nBcrXXNN0ds*oLmH|L}%wN%s;lXB{_3H51X z?>93Y+E_hWFsoNTzbYwVKd9whcblJYk30e|*Av{lLoRtECx@bM>tm30;^Mj}k<5M9 zce46@7UvtxynUXUdIq??E+6==rnGI)wTKpl|8wk_HPFCK2PzXH6SX{Edp}OQDz`%m z_kWwF<_S&+|Jg*~8b$=P#ww-~R%;sMEcCuJ63O5IoB|2lMkoLSQx;g)F;bS$>!~)Y zV5Vg***i@IVN;|63Prp4eWL>c*Lxve)8Wn!nWrpMazdm&r=bt*j;vIqq#=S%QP0Jp z_8sK6Rjmh}->6@r z3kO&A-7WjJ5+&NWIwe~et)vg_<{xo2rrCAtC!&)+)p)@h#TzYrNJr;;I>R0U z|HiJ6x5z(t%d|d>X(}z{g0KXQL{XIVT6hl4Ak9e$`5r8{ET4+T8$5shTkh4Bvhpm&qphan-8h^E7otw2V&a=QI%~FFl05neo@EuzYLi%Eu(nOs0h_yKQ ziorS&id;kV=d8hK>^hO!S>dP-jf{Ni=}D>3QY1H;cd4}Mjq{{k5f#2S{0~Bbv-JnA zWpwxE-T4|$$%)dN^X>TmrWKKCCm?EW7L+u%EBJ5<)=c5H&VYlj#%kWgGHMQ5X9Q>m zVs@?AloYGwsoSZEhz1bcx#Qkmf`FWzmBp@8JKEC|Og+!sSRTWuGzX5>L-j`yX^!}Y zh6Yq*34Bd6^ z2K*z)F24Ei=%QEt7M~9AeS1pWKqLWQPvo4Ix9wS(55{c=_^eQ`Nz1lmy}sV%II?Cw z>s`FbNa|2jJ?~0MIq*k{oN3E}lpn{vf1jx_fwdOk$v+k#ZUMq_DDJWQLx1Cj2Uj?353;|$>Xt^qU4NPB0 zrh8YoM!ub$oj}B{(+nY_{)gh<<}9|32-m~#l%mr`rUyIR5syWR+OD*MS9cOrrRxw` z!=#6-J)#JFnjMLA;}m-K;mdyN#Vei`^FD|3H9h#nOQTB@9qD?YlmVTmdGVs_%F3Wh z>$C=*7$4ua1^Z;RO?moR(aojn#m$_lX()?RjVF>p!i3QTWSBNR4o1Qe;L`! zQ6%!GZ3q5dCBgj{M*M%DZR1f5vah6S*4A&65dQOBIJjDmg(~<2sc<506j^opdZaPr zkYUR>dD=e%c)I?i^oGnKZU6hG?Q|`shi^7skyIvDD1_9Gi@<~aUm$H9TGiX0yKpjY z5!ufKQ*>X4UgUmsX2|fX-T?HRx}Vzr54~gI1%Io~w5rhOmnhu*df_v_ zX^BF9l-I?VSbQ78kk_uKuX|-7T?wx_fOe?Y4v9=xkX_+-pn1S&P$0veTPPe5CfL|p zY7Q&l{g1AI&cjXn1ZbWb6k*>MQUjMlg;@()Y@u;RaFzOS&xI3knSIhAb4gIkZ zM9qDIRT!vw=pJ<>vD&s2?O6TL?;9nUnc6E@>G10$h7VhhOpD=P+%vUoUAEQl)suhm z&SaOK>x$$Se%@?bBnVo#Q;`%b%G{W^lcZk!sWm$*Gpqy%KNr4S_$S_PF18^PCBd-3 zjYx*n*hP-Gz1mIAuo#zxgS1BH*4Sgtu+Uvg|F!zBu@_m63dp*}S$rmQirVI|qX4W> z@o2X250^$?n@HPN1G)Dr`+b}jsXbRKY|>yBc8^|k?Xzaw=gMnXmTmZT>C*wA@7L*g zO-$;}&SBc;x1m|g%sgz296T%nj1%I$b%p)knOEmmdE#PrGo3N9qO7S2sh&>`>%M#u z=2WAGuZUOaD?l1`6tO1^Yl~|sf^J?bd)?jtb%LJuKA#>@ad|HIEShuyPu_y z86(hN8O=1;+VZrJ=~`F6dlSrIWHOj6e)-UMU;pm)QI;J0BZD*w6+tLZ1Lz-b-tS)_ zhZBX4G0a)Y#rMzBDUp2clkQ($ib8uby=M1zYFa72*P4Tjb7nkAY|pf_?7-l&vC0sd zlC*xp(@24wwz7$rTiD+K4Fh?EF^sF34 z>H6v8H)WJ)InUruNdd_H%{(>a{_>ZlM}>c*@te7yRcQekX91?vm$~v&hvdA?1${p+ zj`B->ak}q!xGX(dobEG4roGHl>tp{pzcbp9XGT65n|8o0ahVXAr3cE|i zndc91Kt27vT0c5~8+V( zK4+bJE=ys>yZF%57!%ip>356TZ+kB)pSJ{LME4^1(M2=-XkZ#w`ae{iWmuM5w5~x~ zPz0nAq`MJmq`SKnq`Nx=>5}e}l9ul7?(XjH-jlV~KG#0qU-66ij#*>e&og{DTD9E= zN036TA>)fIw$chZxkG23icg?zyvu3`9&InrNF|n?^g5r$1YFpqn@PleMUSd0MA|Vh zQ=Z~ni&lMf_l?l{iE9u*{F!g3ub)1xE-^YjH9EfQaZs9yF;;!1JzYB5Amr00_ck9_ z$FPty2HBWt2Mg_o!R@q$YP-(;;Hk#ztE1*?yvOaE&EGZ+caRU%GtMKiiSp6*$w|B( z-^sHTF&IJ;K&MSI_%;(hbRn_a(^vDcko30F^72AWqb7v4c{2_}!ub^pl%)*2^48zf zzKs!bsd?v(%j?~Gd?cE<0`wHi<;b7qM@g# zWQjO}l}#mgQIT+Qsu;8OU8c?ow}+5x(|pZpc1pKDYyy{0-3;p*b2iCHx=GV6Eb@rii8GIk3sB7Tk)IeSBv&ZkM^p4y{VC-2k-4TgJmAP8i1 z*asJ}5y-7 zQ%p@$Z4eV!??*+=Jho0QmBQq?3LpO3c{Bo3MTc@aF|+ZznTAoD*`MM*-Xsm(>`EJy zd6R|jEEHN4Y3Uvw(%RxEoNtH_x&*Nc%IGk+Fm^+Rm{5e|hJZfoxL7-6vL{+OkpDr+ zCa~9JOvRM6?goY1)gfUX!FZUAK&NuMFqne8x#mIF_-*FdA=bN8g zx1_$L>>Q;rd`>W6uY}-eeK{e_MRRgMFdJOCC{KPA9`%i=T7PBLPhXh8SRbIJo3dtb zyFgF~ztug}{RNvf#_S>2L?$p#Q1I`wo@9?*%t#s;l0O3fsOn>#J47rd>9fr_#6$Zi zqrk9?v&;BOx*U%ZIq#GHG48zw?nY7Z5Ig$i33t1H6E7)Oj}Tc`t|f_aU!9_ob|UU9 zud3sun>97AmqMkruDia$(t=Vm@-bT4igd8`9*I#`ey^ma?f3PE&qGpONmDWg)jw(> z77lOq+q=W+KZ|E_yE{o-`+8O)FKy=TiLLqgaa)~0rG3EA7C+=M$9db*t`(#>S8?3O zfo!oo);V28^J#N7?k&&VZYp=@yr0YM>gNW#wTqqZk(&g{$5*-y=r;qXC|Lo;tSVZw zPn|mZ%L~qCR#|m4yv`ST<9=`M8!*jjGNrYm-xBN`|1M;he4nc#Qo}+0uxO4L@T>~| zdu?t=D=>4~Bg}7Tk=t7E`6>cco&OyRAF+CztKE1YZGSTxT7sous{EA_1jJY5|B}87 zvr_4`ciN@vnD;g3aramOC+$m@aSr!j}U?~KH!uG;aVzdTA0u3mt6pSJpQB^m3 zFGDtGh|mHuipUPb`Y{!*HKin_%ebYFB<5^kb_-#P;|zItxwMiYXD}KAFB-Okz!G)}+F? z7eZELEQ^z|y5YZWOUs?P0mEdqPq#d`~Y`)gxu?uRu>}(^&mHV#6n|GTx z*6eMQY$%DYd~qbT&m2tMHF61;v)%JusB6_Bhs)RFtD;;w(k&wz(aheu_=a!$VdjCH z$Z0)w zuQ1B#b*@ZrMRf8jh)#16 z*1IK>z@-U_S86Fc85L?PDWE|I!KTaVNrOn z>3P$#`N8IB-#t4;P{=T!0#RcyI9Gq#HzGomMtK9j?(b8hYYsQB{hnn()aw##MSN}! z5l1BaU)0|!++D8r=BpJ%MT`x;o%t;|RsdH>{Nd_9olvV1MW&2f0zXxKD3rS?lYD#6WcF8XvmmaF{Wp)z1* z2;m!{32{oD-a)*-!2+lGfT5}K2T>mTN`{iTD1%@5==Xd7U2ql>z^-nF7$bf~)>0(w zLp7OIUOgegFM1>Q=Ht6nDx33nuJPDtjsheW(cT*BA{G-JpI7Z8?z`U9d2S7eY;m2n z6#AQm`{O$q4Y|u)n@%t4v@#$mZCf9Kt1cR1cerl-Z{`MYU!@i7m<;lOb2r=Ee?%yr=obsr_&DjDjk z-}oi$l%*zbvMDt@xNLXeIO=pn`G?Vta}6G&lms}P{r{xo{#A_Xd-m7QQ2x__T(MO_pdxw(H`5hI#x+6(>_eUT0uz8ytjV;D?bqpGEeR;-t z+SuA58(Uk2pFh9jEmogzm+;(L-G;jk;TN62<3BwlZ}Vth+nN0-p(zpc8K+j0|W@F5CXvxp3NB5`=?-bA|RTRCd`^L6_jh*S2AMp{v zSVNhsZ-CZ3Q|rrgo5DL1rUVukOznrQg19ty=hnV$^Ki^m_tn|sSZz9)Y1LD~X-mTI zaN8Oxkyc%`lO~fU1saQN(`DC@LsuM!1sdzna zY~||kI6h5`u8RyA7{1>{hqT`l!%jBu99q&A{N{3&2#jbRH>an~pYKl+GSTIuWbS8D z8~xZhuLal-NQc>O72fMH#swl2F;lkbH=tX&RMWx_%0i-cDNvy&Aw)IVWRAs?Aj(?x z_lv&Ir^#FUp1owoBta@KQ#zA(MGix4o;`5CSrK8BzRcoqUgKg)6-58!c5>26oJ*G- zquk$4?7wura#U3B*!0}FannoA;#42MZ^8fXIDWykHH7<`>11l+4U(lur&BAVE{Ou6o>katBqI0-#ZOu8{#Wgspf$%| zZWkmmEd0P|T^LLPb2VA7uO+{7u>4ShH*F?Wy`v``E`CDQU@;OgY7@9F0i>thl0}HjYPn1V)q=z{TSQ6QZYj}X(R29 zbT8Zb`D5%Hj2!bK`eBUiUAY+qnPAPpNRPU(>?ZUNpDfzeN-Wm*WsDKl_LrxKDSV>b zBl_IEtSwz~!!hZa$>={7y~*`TVuhS>Y(HhIKs)*0Ub(-r2R@ib*b|kWvTn`kC!#WG zqWbC8id2Nqju5S@QLIUq=#!l;;_VLEAqo`4XBRf0tEhHmso!Xn$+l|gJ<0dRjPt^~ z0MY0SQb#4_{fUrZm79sz!}vJ1JoTZX@(RC}W@SH-Er=ZM6^<$%GVc|CEL$bpF&n7z zHNy)+@FNt2*4Hl-axwn0z;N7mfyPVcYH?JD&a2aJps6HRjDlD}#5lI}-SEFX=IMG7 z26846IA2=_nVyOo6BB>moI3k1byk~biymv^VfKM+F8X(^RWTX+VmuiiDr=PW{Fr<| zAq;$_69k6XXbkFO8LX%QyIBkB(;~0&8oIK!kGOXlDU()9C{l_E$LMSe@nY$el@?`j3M;#msBr1 zIV{B=SHuk?*A{IHM}q^EmeeB@oUI~7^?Y$e+FQe47hByC@q&44YsA~O1wphP8Bn}< zpNv)t_;62Y+tFo&q|C4@l5#jQ*aWauFHh)b%go`%hAjx z@%H%BDRKaQquHjyu*}iaw_`u3X7_SOjlEH7STw#KMJ94gsG)wcqgeHS!^x}aAna|6 znTR5ESr$sHt~cY<{6pn!1hla}O>NG>qtd;!QW_O=9JUdZemyCp%ArwKD30l%{@|u3 z)m6?8{SGDfyfo&vhfkYUao(c1*mw-TuCs9p7_^$gJ=kxjKaBPX2V`m?|A@W5y0#T z0$R;`8f04v({LL=W}TSx_%K?Nlj|+MO)b_!-VD{RejcO`JM&NXFj@_Kz%F zP1jx#<7B*dw?Xtej}HYZDuoYg_qpUlLH6<*{Y-SJyskN9>~NGFPFiL&;zkxyHI=Iv z@rQ~b(E+3ErTbT&(rMgj+6wDq%w_jkyXPt%r@oEK8up&ZZv7QyHEl}5D3mki zIcCq;hbPlf`dm}#n0Sf8kQiaf%F4S$9(#q|E}bAx>B0s7@sh-j)d(#Hb)UE>hHX?u zU#NbuNTl|W_fm2!h}%M}Y)kOrxmFil&)p1W)#^?}7V2EE$m#edp~d@qp9vNkwnNJ& zr&`3gg@-*)6GYP7xAHQYD!BCfvrY0l1{S%o0%f}k43Q6A^oINvdq3$PeSqaT8}S+D zDgC;ncb@8&)hu2xFniBVR3-Mk>A>|NIC>PeD5k8Bd#&3c>FlChX3+hvw|1C^`8Z-$ z!IeFG8}EkLt*e^XAX@u848@k(r?fvvr?(iPn)Tq-`c2?-`+B=rsm@wA{qt@2adYx? z!mImk8E1nfG+P}vk0)*)UENAJ&*$bz?&IfkqXt3TB3;)(-RaaM(rVNN8Zi>vx9kl$ z2OC>iH04XQ94-S5a0IE38x=kA;^mOeRr|A!3$`-6ryY9q+`LX>A7gelet+1{Qv0WEv9?a@;IC}l zTj{O_y|^)Es?W2GzylzLRJd=Cfdl ziOVY-#WK)w5KZ)p^!??8*cS84=wm*!WqNA*O-><9N^}qo+wg1XkONw%BK$lyPrvd} zc2z|V<2Tv;*yKSBT(F)SI_lio+A2E!GBdyNdt;mHSjD)?Fu#~ymi_>f> zdc&-go*}D9ll(sPr*9sNTCR5mTuKXE2q@o*8RHBOxFZ_brKTrkD68V%@MPd0&V{}v zloPX_Ym(U2EmIeqqp~h?2^|~c&eCXxr#B=Z6$-lO#C#o8obVoM?!Klc`823B4knnU z?kvc(ekf<$Ut;o`v{~9jkzG0z#1Ym15nIi9w3drRLJN&js@O8Wrix*D!mYFJzBXU+ ze_8#kwrdezG2m(r1lZ|KpkX`12_FoF>g`L`8fu{W7%`iVGOE8(C=&X_@*7<=n@n@! zr@C;@tSij=2{k`b=hZ|uuYk!j*$wVT>&djxk1t}wid*)$a+03$BKN{zX0gAQe;&r6 zrLETz$CB~1Eb_*#2yZaX-{k}2>m;UoC;C}_Epa@uPXTp2?f zUPaX7X$=bZKnXe9T}Oxtl4xW84Cz$MPQcb*Fi)(ZL<#JGq?luGRd|sa)?sLi7F6X> zk$*1wbzG9*qeCjxBe67FTacT~teAf>M|UMBvYqNQBpr#KlIB^N$@QdJpM^O}4U ze5Z5uwOp-y1-y*ei0PS4@x}~J3pYvM zB%)>L9NF4I4s%lf7!wm>0gC*`jh|}^uNHdRd}>*kPBFvQiD8|8|M^9MJf_tpOY8Xu z0^&&iKL~RZWaY7jG@()Rur?XG@{rqgzPXnFn#DQsUWLfzOI*x4g>GGHf-9L#`TG?- zA-sR9XhsT02c}*?brUuA?yg;M5_ZhVH~kX6`zx#YTCO^~)mk+%3gOn=D;45L?B9Fz zV@_e|QolU@yZ5XN*~dYD4MB{Zde!C>Ir4$rPAuyQ@7s{D9VtHst8Af(NoN;KSPFlh&otHQPuNs9#QmOPqxqxE+EF3X@Y-8xi8)hP8L5|X0 z#lK{1p>tiD1T{k#inwaF^AZQoWyIJW@hD0@f8?uFOl)yn!*%_1F}LXMNWph%vH!PB z2!2!>gxiO=IcyG*W<@ldAp}Jbmb7?2#uhDCnBdQ}Kx{%lu=RXp0PcY&Fw#y=Y`oAd zi|fTjH64bO${kqm6nu7G3&s)E)wIG<5x-%dTIVbaKd!NJ6KTr!63+hl6-R{NCX@;# zQy-WAJcaJxBEd=X5fD{}{5=P3{h16X4%V7NF|;ln`~4!~{{c@f$VS|j-711U=4*HH za8cgf{JeXK%$vH7^JgL;)Y}-(edV(}A^%WSji15rzas--g=vh2eFO}eta5$?#@Sie_9bd z8G|=8N7sZx`m){?_Mu=4pf&UH0D~T2wYpFBxHERAEuRhPK3J$7znWOI0BUEz(z|7l z7O7VT5tumtV|)67lkx)#uzO%ibNdRyF}w=JYj|VG)#%1{m}_@)Hz6sm+HO|F^MkY) z{6Do@^ACUo#Hn^VU2|M^kE6E&U5rlwS#st({}-qs;&eO`=&fGVlF7KYZCVz<(E=zv z)(~lhNl?{_l$%D*K0^3BzcJruQg$;L7q=#O8IqNwYO`6U81YU_HlXL!6%vBcsZj## zpZCT7=H?}D6o^Ylrk!qte}<1mR5l8f*R5dz#JJ~+slDQFV!qszLhuU0D;D~{3Nnik zC|~~zngWM+V?a!~W$XgWvd8_BW&mIUDyrV`cnE|{I%#E*sTX&xsn@dR)u@iYd^#Ep z_!O%*3=m=I6yh{ZtHdLfrqe(`a_&nO6dWueCbo*0tjzhr{1dQ%%rH)*XX*ROAo-## zwZfp&WV2fN(qzR9>g^l;>iFQfJbkX1gg{F93ZAJK1d><#-j$lYY2&xalwtbj2PW4m zv!;m}FQwiM`B3^&UoRf%8F7XA%EmRiqrXLAPwQNi=ShoOZ9!0dM+TT=v?m{_XX-#4KSpg};W<4pVuE_x;HFE!r3 zXpmmLh-t(nB{vX1D^wpBkV?e<193t?7@^BT{d;Y~^F}KaBw9tp>!$tzGudoXc?Xz} zEs#1KQD0#d{pV4%$bpt4q`Vz~U>N{>;w^vsOZVlSTkJcTR}c^6>6k{~&&)9|UcFIQ z1g>s?M>}JOfq^lphcSaBF1*(o8^B4Gs-;X`li*pVQ&V z)xkvG_{nPfZQv3AGjrn?;NgETSNQ@_>g($Rasf~lHy!iy^R6I1Gcq#3XVFqp8UxD2 z=_y{j-_o0A*#SLI5^mv1!#TFJppLt)Cg>&+T-?HAZ>tC7EqV20HEqd?yW4v z`>XlAi97{hX1I>{nHdW>eU9w?elvd2M_mF9 z2X~$cVFd9Y|Ifv7#LQ|eI54nv`z|y~r?8>HZ7}hZ4;*qTyKPRo`Cp$G2pF00V$QT= z^?SX`<(}UdeU;^M6A(-QTId)3vR^}i-6(g zL_$JhUF1_IPzs=3pJ{X z!Pl#II9%(0TaV8MJR)9N8qD}v?zz9!sd)onHZfV*cRDL96S%SI#|1StHUHp5EPIQN z%PCyWXMoMRErWUjI4;ms!r`hQdaoUBbj>3S4;D{i_#Y?6Q4GqB{S%a{8_@mAyw~ohSwtZayif{)o``Zj*?&pW|U`+ZgLYlFhjs2S5;1~6|<(PE)X9?(@)?q8w>!@ zn_jcVOJEuZgMovn&vavc{%gz0fB<-p-|B!)t2gek?3%daMf0*etOPwp0L;w`gx&@Q zTR`seqH1x2UeiM+*rQf1Y{`pH3)AawQ7?+6|BU2mvd3!P!rW2b$$1T|HM_f8zzPTO z&{Mb|&$=mZ7(@W~bzwr(00rO6QtCBt1Lk?0wo4%WgbM(IPuN}lp&n_IF|4qf07wfy zcsP6w3(3zg%{`W$jf|YUoAn(groYTJkbqSa3i!=*X?}J(`HF`FQ`yRf5AeQo-}w`; zVxI}%1^qt23ks-tvaD58*sO_ogMgnP5!=mvUr&z{ zaEH2ml?%jcpyyH-_~n4w24MCnT>eqUW=|{Z9N9neDF}$_Yzyi^!2Et*no`M@F9Imu zJE$s)#X5&W^`@1-pf$ofI4C^i8=DVosgsRVHbC?7Fk*gka`LX?u4xHZd9kU)N?n;M z#x3I;2;kzpJg`MIWB`O8FtaDX=mCN01jzhwE#c-vAZxGKe=2O;Z1<|5GH-iNhJzZjJTD7C+G{7{O7i9(C%pA7KA2ntpLz_ zJF>O7gv4#eJlP*;9@{M>4|=|3mA6$Q=w<_;ftAZWx@iv-GFJ<-HJwgVgU6#wlWg}P zv`{N;bRwg~vbOBip(V}z3Y)j1mEaF>(FY0;1P*CVmkSDB zXs?tibT90qf6lohH2L}Y0N4dX4ZIf#csJsKg;;lcyAQq9!F{F4!a}X>{uSloJHBcS zuycbzz-2M|l^$5OA}kA->Nd3$dKMF~1wOpn259J}KOX25J`7ZFK#u~1i8mP>7UUGH zdRqXs1V;31Ac{o>gT}H z0MtuTZ(8C%ZcU~b3Si|R@E!p3%X0y|dqf(`WpI`Nt%YveLcxJ0mR6$+69?#08Tqzb zs{b;=us279&W1qVgqgf@=Tv8b7*1gB9vlp%w}KvoHUrS;LCNCf$;r-029!=s0xgx#SG1q;N*>LU3?w=w#D9@8lwGE%gYcL342#Hg)MAU71x!RP?RGq zNC%k9J2`YDv)k@DJlccPmt+!aDE-0!P}1KLN=sM{%=dGLV%0g zk8C|QK7LEc2@rem$zT#(o}Zs@Lr=WkfVTE#C#(d*tY>j)F);*Q=r2VeELL&8zI-@K zW_~`EM*tcQP9O3o7#{aH@ocvr#PQ|=M}HtfCL6;~!RfCXjKkk4Kozh1C-P^=!c(o{ z&c#=cTiiAmouStRn|Q%UrSCVs(|V^C%;uZyt$v%#B~3@38#`&TsnZLX$~_YeNGubt zmoOX&fnMz!ACDq1A)=>$Q7V3gXi9lEj|!=3g@%J<=<3k}S=7L2N&fk182T$;fcfsF z4GF|&z2^-HNA1-!*C>&gw>*1w$ENe~mTM<)IQot^~2*!L#`fs8TqPb+N zS&3=a!p*Wt7rOB-*$B{f0%_M0K?rm|Lw?w3GGlUSvUT!lGD0%29hF`K@}U#vSLqng zD>>zp#Lwi&FYmt~2CYTCY~w1?iU?C~-jkvOwLs#1Ra&iyw)4;Tt2_&We`VDe^WYs( z(s(uZf2F>&1G5#zf`bhxCHq3fn37^V+=A3fOtw zvGY!^>skA>|K-5w^_={%d~;!pTO}wc2niNSX9eD1{?~IU1dV9E_uq|=LBC(lL9cQ% zLJ=Ub?k%CL8b7soLuek`w?Qm~fsn8)#fjkyK^avFct>o^mWkK*=h#p)HCqdFytt%t zW8MDfn1625Se@HP?!u7d2h!UXJ5pVm>MF9AUu+}|)=IEAfP?<ipu5lBy~e@5G;Z zgi^<^5EjLulsj-W8KHTy6gPxn(z)yYcpse*U*v(0m==aY&~ZIg7cV2CsQ8}uyU05) zpnba`gh&*df8A0o4>jOx0GPY=Uk#X3D#Ds!H<(wPyp*Zbh(LsbvY4Es2{;v#ZHjy zd(xWI<8(fs8$wR+$4d8m2M>5JgI7RAyT(sO_-!KvJI=bIUsZiFF2awI4Vjoxx6n+= zESQ(#CyD4rVAcn$T)vQg=sA5P+Bb&qk>AugpwOUyQ+{WSRoM-;$AI!RYWQ@s4UOfU zUPPuK724GCCEY&! zNQf0_(jK!J;6{E!=>Ou44r2a@OQY?>3<8F>HDB-oi1ibJxA*_rA`s(_FD|AKtg+(q2C;(m>}a{WS}<&62XQy#=R6;6VaHZ3%+wALVShUiaJ9;WrQqIUvrGptm&y z2}?28nWE&7bF*8Kb~~!PyGE-kKjTWXliW{1OScV~F`I3RRg9AeXMH8+Nc#2RM>#5A zJhgZ+eq(a9YP_O8Q;>zE476C{8_91D^12pdlZiNZ9;Q@GdUvkems>iXZdHbz?Gkq; z?I|?AWF9u01_eTLatr2r51l$iw`SY(nFP2SDT)TbKuUR4sC2~6S)NFHLP0FBcVXR5 zURPXRcX!qXt#u@^tc-`5zEW#D zJD~t_uA5WLavt~JA`J=h(b4ZgmVK_<{_s8KG9^==$}v^BLDFsS;ffHN%6lgmKM}_R z)M-*Gh6$C<=ymF<+XP2J{bZw@YLhz=}D@G*a3FTPD6#5Be`H<|q%VHMS1X=4Z%TML0 z4;F*>yw7(}d!LS<9{T5bpK30iJ)HKRJv=NY>75Q^OP)51Dwm~QY$cs4M@{k^^)GPB z<+V`92&w4EiWR=sh;Lad9gmn3f!(Yk3pisW6RhEJIvjv}*B0Vi)e0jN-VUG=O69Pp z(lHVPYhM>M?m2MW23Ck~b*x&bOB&jctzRU^%oQ)U2#)|TGr~XqYzri-eV~xOT3XDxGV4;_ovsFaR2wox@1KNWBT+Sa$aoK(Pckq&eO;{2J~q(7lj0P8GyXDlg^;A{R>I-6^B80a8xD8V18 zMD*liVv+#}tRbbBV@}Q;OFhOA#D`v@Fpi8ngKKG%W)(OWgzh4tiH!TBaNSZnlRRsR z>~C$Jw`R|NBN8%}t&VRk@H!85@Mzg%#Bm`qB~dgg>#^*yxTL6k&qfe)_eV+%R~1*I zA&WwJ9yTc*6CJDgW#peuLR3Ietg$_+a9qFrbbpkhFB?Ov$nUQEC|NQ#MhORW%Qop0w+&a0Ez5NE?XBK<1`xrDiFR3NE!Eh{5IdptSoY1H-`(b_L{F zUUbm(R@$zIpWsTMU)oUsF9u*6#`eg1R$vcup@)_z0}KNimW`d5IF}%AaW0Sy7FZ6a z`TSU7`19&2BGsr@3`_K&jV^4^-w{6>Y>5u_i_5#wXz0tyB|AK7czJo$RSYb^^_Ybp`)#*87YkT&(d(8B1H(Pu3sqV#%mi*%SLQx*b5k04E zomq#R6|39mpzOR#PC&0wbrdx`q?2c0B6$nb&8vO>NG`Gbtb0qY<8gM`Rmn+jcNJNX z73$8QVI&0R-a;7=lYx~lbCk_&<}bKipKijgT-?7TCt#$3;uDibwFOgsCI#E8wC?kZ z7W4s3!dreQtGkz;V!-QH&)9Z}+-oY^LN3rTr1ikw+b_^8ch*wggP%y9VZ;Kl#R3z=0=I|psp+Vy)c4FNyh$j7YiXD{cSSiqlU~b&hkY$D*6O26p09nX#B6fg^u>&$VLxlz7Se|;Xw}T@bw6#%!Ccb3 z>FlR>KW~H6PTUb3%fICs2naci{r>G-@y0El$dY`}$Z@2v#ZCvK>aZ;*X!$-OHnBt4>2K(+;#WlGl z=W_4u0d&6saQy%^g;zR%K>n`~SO~3vi>=%2OJ)IN*l0zYXF!hN7$_MralD9itgIM7 z#u~K0dGXx@S?`;&6rjFb)xUpn-(WI)$-bqX`#ui=4JpWRYJ<$iH+=eekj1<$`+&D{ z8bN797nXTkM0zXW{}x=APr<|}nZLz&djFzX2Y$f7@r%HDBSLtNcYdW47kF^!tYC$9 z<)*sig9JZFvVjJ(mb>80IAjB&`hWqB=2*U*h&Kz>oM90&&)At@3FX488Tx;G{ ztfOeohIv==sKMWl_j(`-2DZK`4;aR!cQ~|KG6uqn2{r*0c_|Zz5SoKx{N#6 zeTgRzXOxYZey#>&kCp4!aMJ_?2L&Pl&FdO+4rB2mu;KA18Zw9p?iQ2n%O5IK>45^< z$;si2L{>^l&cvEhEFLT9qaaSLqoSATuU!5RtjP32vOKzJ*A{Qa#dUY@vZ|vwTcf?8 z0`56ViYU3QgSADvg=Mh=lGasRdPegp<+$zdTgCxY;xx^tUq<3$YJUE_);T$H|FFS0 zwN6mH&}7x=TkONtc|$7})v3#s63m~xsZICY*7W0Z1J`&VZ0s6{5kHA6aBPv0%QgS7uLex;l)+7v?H8rD};%D3yMkx zN#Z|6;M;hjE2)Z8Y%tL~GM1UV!HHV>GJ0>hs z{p+g9iJ9VrJaF(&#cX;}-!Nri1{Dp7N6DR{f%ZP;wD}I_^5q+q@5aE<2B8i-jj+uPp^q+-&Eih3$tV zlr9~;ms+c=z>-uF!WNnGG6l=X$vIZp*M9@D+@pyA!ag@kVn`0x2QKosrhbN%XYV>4^!@vZ;FMtv^VIy8^qe zQ(st62XqFdR5!>B&@9yu*l)P48dzbJ$-K9zUHHmy;%g9@lCoH=#R;Z`DbD-%9hix_ zZ9ftIkPB%4vPnsNR=<0zwB3hQ3253*_<+kL_~n4Lriq^O0LyYM>p5AW)YaX zXz255{n1*qyy;MZ|FTtpNxxn8Tf)=AxsM(Z)C;!ouD9V zV8wK?bC*K6{7`B+7P`;OTM_{9L69)ac8x&XC@h8}R>}rtN>@aCODdI?lUaevFCOqK z8y=hf-JAePOgKC`ubP(B+ZJSZ*Awxn*xa-vCcB$$_s))(jYei=vrEO~?|mtgheP)6 zUk@*a*6Z$jjMW8$D14OTY$`_TGkX`Ai7e-j<{;c0p1Z8ims2k~&INp8eo*y^6PCv3 z_cc1LR&PIXncZ=9^R|W-88>;r&%Ls0He5;=ZO;uRIv<%|HdnjaK5OFU5W^zv#m|4= zId!v!PC49L{~UEJd~rC}?Y81n>&S$1_oYITl9aNmW2BR^*?ivd88Zn^I3`d?dJjp3Gn`v9;RPu#Fx99G&kZzVj9VhzAk*Dt2_&(fC=vyXIe7>b6 z{KfU;U#sfhDs5{?83vFkvky?m-U|d>%$;4VOEf*~<4Qa+ucvu9e{ZPnOX>*rJBb~6 zpRKiYb2Qand#ruFBlmnfbP3EfzdJgHEBO0)mS!B!^rAGe(CWeCs3DYH%oV#ohj=*Z zl>|`VF~vzk(U(Eakj54-uyag0JDc6KIPkpp9j{kXP_(^0o=ghke)g~!ZXF`g$R2Da zfJjGq=f%hT+xQMRv&{a@=S??l;ACf2T>JT)eMYZ(G~5u`y>20 znca0t^|-Ihl>GB^qu%rpcM@G}PT;(K%IT{6xNyTHBU*FJ(h)gqg1T73KyQ6yi8eKT zjF1DUGQxePy)Ao$J#WqIzE;v=`Gq7FaEd#VlT#ETD(LJGdZ}_jOoz|)*Rs89T|_!Y zG02DLjtuFx`5sBUH=8;)MR)z4R=svTwTZb+aIXJe`e3=zdA@kj^;)aYMy?~&>Ey!n zysJw}vX6QFE3JxX%+hQ9lNHs#HYfA`u*Ui8nV44S1Rhh;?#u-`|Yp~_2K$TTWTqq(OCs!5fTMv)9SWmNUuNNqVaZD zpO-RiJA7EIb{voW@QeraxlT2XySy&l{q60G>qBw7Gw$80wBmtDo@w?e54~#*Me|oj zbLFc>1~v(Oq!tSkdF#_2So)|a&Mx_@dO*AUCHSM54e*p;i{{|uJkP{q(C>Ti=CS;` zng{ivf1`(2QEIZ`{DlE`|hq8hmvvbfz#loYkrb}-PA$Da8w69x|BA^L|`8&3~^{MZ90NArz7k4d##T|*nr z>`>bn!sogB553VVkP`~&8T?#)-4O$N20liXH0zwbxxTq7DB(>SxxD|FEzU1n<=Fy{ zaxarGshdNCL9I`UC83sTsCkgC%?&F=m3)yW@{DsowmzOKjn8@6s8f}t(HAO8r)z3A z>q=2yKW&#hQQ{eX^S0@%!d=8eoz-~k##&EAM%&s*A`t=RI^bw5+tH9Wkq@W8SwoE` zPQjpmC>$;PfYY6+QF0#_WyY~1{=P};ZXMT>cK6mxhS8h_W6%2aR!&!eceqY=L7QS< z^8IEu`LZuAyf3gqo%TcfI0V>r%&L6_gG(zv9WrP zXoBgl94fu#snhk7K1o;i$MEj*@?V}-_cKq8x*Wmq9N(+KAA*<@5)?eiJR;GmvjfiSFZV&1>fGW2a6AA}Vs31_3w+mZ zX0l&@~LDms)Xq3OHG_EAhfBS8Qd~|5^;g7I!(cCbT@>Bk8sZadlA__gZ zQfQyY`vhd5J4k!DAsazlN*bx2@A+D00jF4rC5X9^Dt-5O`pg-hT(ub^q#zRVVBz(% z#?ECrz;XJ0w(vul#n=cRRL?kh_`z}IR~5~_@|2$vLQ|bpTpP+g#?n)HAk{P+4`*2I z%ae553LncK=lg?ze(W?=&v~Dd4esOG25(B*v)e`moQue0@&J47dMmo&dBxN_!*8k+ z=$Lgv4hN4Lrq>ss*>aNKdW(` z#_2(E_4l2>LC`Dj=C!g2kjP@+Pb24fuy?n7rWfIP`W~&&m8Npd^E`IUeP&PbMPE=f zBAV@K-5x4;Xu1JD70jeLN2%1a zi44Lf_Z0EBv`;S6L5(^WdsO|0r$=*QQ1!0&hUT-S_b1#sSyxDr^K&1{RXFCAj;7>} zKeb3B@GO*|-Pn^*w$Yc+unIYFbMN-H3%K9?2|}j3bGhytUP^gnO1$XF<7-`fpN;wC z=Blw)>l^pr%8`+18b^HW-tc_kPY}S=7d%w#eC6-Ht3(MY{d~%e4N-&p11J(H4>T!EV- z@H})wQUot$WnlSMqQ11W)Y{q#ikaXbyrKi~l=2HFS6@7s@2-hrXLuJmp3}YtZbCfPm@c`7Ys_xNKF2*0coj$;#$9ewC-w zSd21P#vr!fJKOsCAOwwYluYz*fjBi3j`qq8oh=VnZU|4_FWz)1bD!KgWjarxJ`ZCv z*SLSVbL_shO#3VU9#iyB7Fp&HH+$Z`%6-mTu@l6BxiZuF*gSu?(L#|SB!qx#)ct;w z0jGAGgrp2XRNtsRF%mjX+fT;Zg`4E%pQfzha9=U-jR=QMd1q-a-gVuw3BkC+TqM0a zEKvF-p8aoPq5pDK0qddE0U0Dr}d(l;m(wZOn^p zW7v3e9WZkG^vSUKp?NXQ{DF`HH4RhL`kg-1NrQlZn+eoOY1%!klQO3>os-*Eiv_YT z1GGY_$L&L_+VPY1X^->-_T`&H3SzBzKM&qoe6M?7YUcdwRS25flb>1jwwrnFB5kQp zHbWZ-*CNzh=s$hQj04An%!LvU^dy>=&S$s#!2^Oi*(KE05`=-%akacZqV9M1c8Nra za+l+LfP5B1c3ak2Rf(xvAC+;`rd`HZb8FY4goL>KU#FZAXm$8)v9304nR$-MW~|=J z?ZONbnjYZ2hZVYGVp^HN*eho)Gpc;Fr_)gJHYKUl@eNU-QfFLbRpSLXt-7BKC=jeP zAFR*b(woV6Pz|S7GyKM-4yX<7`Y7D-5jjDXjI4-5Do49qX@d+k%IvxuTI}X-4Rcjx zHb?)L;!j0gMm=G_y|J>h-)m!$s8@2za`9~S+Q$zPE)&OSh)(db3)mX z%6JP8w@HXww709zRYx)n%CTgx;SVM%4b8f1<1Slq`b-MGSE|xPe;StPy9yo*Ac4+n zW7bz?2`z+_FU2{QPsx~2cV>{K6&7#s#J;+YgP0U<%r2A> zh#x~g(7ttKo*`hmJVC-cibTX!LV`ni@N7F1g*!=nNq#o5-sF zhBnnd1&#A;D7gJN85wx|bkl7Z{x%h7n`nGe5#v32Tnwh^AnZ|?qSNnv39svq0vZF^ z@_RvC5XWd$qgA%BzE6ztG|+tFSyZojjdBuPub{zh`NI27SH1cxuwllls`v@l2iLf3 zE~MipwBd@Gf^tM&0Kp_fs8W=1&z}s_3Fzro*dIn{)fEOmYb=63c=@EL{mtFTskG$uJ!d!X%wwREOvzx&cspBHCI2+7O{km|ALQY%AS5VQt*8d0UqdF#Jx zryVVBJ=&P)q_!0e|N1!^l`DzG#3GKvXKI6I$$g0TJTAco|*>(wL~ zVC}`#z+&NeH7g&b+EKLLJX0hYaH?!rxPYoQxaFX0lg>}oIzOa4#n2;)DrKPp_s{6J zJlBD0=j=iYGOOf|9ndy{Y({jJDoMnfgpDJ0Dz$IS@GKKY**s4=pIuu#h66=2{Fd!* zw6>*EJ@9Ms30XQvrw>TP?>1K1wK{YfLQBPBGXTJrKGG| zod2QhtfJy*)^JUL;O-I#4DKF+2Y0vN?(XjHu0etf8gy_C5Zo=eyE}sg&iu0X+Uu-! zE>2z1(@b@BS9MLv_dc({PV8z3UxJ4Fx6K5=AKw0_UxSb09=Df{No8wP_6oYWjefRf z24k7@l_Lxdt<=z^eD3Cyj)SAAVzV`H~?>?Qm%Mp*{*&{P*uVmCtuuYw(5>5R()*)9epPigD z9@t^oHIJD3i*=NGrwaWl1H9fq?g zz)-=Zsc`218u2HCenzBMl)p873nJU7{b~#3v#Xkd_$$$YQ$&{3f5rR(ji9Z-C1 z=c$L+)87e=HiwifjVSO3lTZKTTy;j%-vkpwwjX+c;w0oqn@?h&}9PCs@eOx_5I+udnxIO)X=w zi}q}%OS}?Wy4art5=YBzy4wKG)9rXzQ^fPF-`<17jX#718Tmm+9>3UVvgqy=M2Ly1qT*GoP}!VDz(D z6is$_B5A+>z;C;KgUqBB6guhJHf&HnVPwl-72be~EijSkp7`XF9mY+8%^l;d*fG-3-?8Gj-zE9mNHux0H$QdF^iB#?sFXQd`G#VM9i4{QP*(p8q_oseAR<#nf6w zlc?i0_eOJud7;b~>zqW;rbqT>VBC^L<ITdeL zv##51(ZBlV8=I7zhW0qs+XsqNOqdcT@2#wZeHIc-u9>2W&Bb0J?jPUk+!M1z@*LYe z|EcL?!#-%C#oqJuXDAa0)($Bxl)WM-wgMiFw#rqAGP~f%Pz45^->fpO zkuy_VRKJt?WvjzyHvdqOFUpE8{jR4jUQ#58$4=)D?u2Sl$ZH&&vgOmBTnt6)$vaC+ zDBSJy*URlg+ILlA-X1rv3^WML}Xh%f4u!YtQ9A;yz zoTeoyg;Pr5!@suP9FqXuO+yE$lJMJ`=TM&z9-8l~E|rp@@Z?qfWn3iV9k#Yk0O#-9*k@8a%L@8|8rE2>bkr&>kN zzOCka)h>Rxppc|?`P!_%MgDr0`O*-ZV`m|&yKCHQUElJgw8fUvyPNmBqCs!?NZaL; z5$=)O@wq5(1pJ^^6cwOj=%Kb$90G2Py#=ngh_0IIvr}S?(o?j>qPWCq5W6H47wa(% zD}nx~?!d3mWi+vW*Ll0VCjsb6(S$91)ywK)8k`~j$uu&l8BM8s#+X<6=|XN|zE7w6 z{U*$i{Q8u|s5N_AWlr#O0*ZTv8UY7d{sfsSG79sA^ML|P8=Q|sOAMk|q?mV+w9gUN z*%sBc(zp8iT-i~^;Y)C7?+$fi%7auD{_Id9nT3$Ud--Wf;cPA{pw)_^p2>a2XAh+t z5=j^+dnEgizdHH`I*dT#67g%{*x4@<$AcK`%rMO(CC0@39B`t6M^ z9Q9)C_%2%?tK{*62DB_^gmL#?-ypIa`(%GDT`7(Xd<#9M8qT&tPw)h(Gmlxb3?$&| zR?X`wih&ZzG3tEtR4frIv_+#{W=Q8z#xivRD~?FUiA-l!dC8qZv%*K z2x4aHWgSG1uiFN{%0Y(c`}%J;l#rxJ{g5p zCep91vU`o+R`B*Nbv(%&z!PV=YV7ywoA*wNhUKLZ9EOdXihYf3n9EE3-kj&<^#Oy2D4_ z%F?2haWM`M6gj8;^gV^xIhnjNj2-VFzuVZxEzsb{FNfWAQgu_6A%N=bO_Z9HIyJVk zmhWvap@ZB7ty*${q&ZA8Gqt^&NFl$p2cb!~<~yjkza@wNRNb$y7<8gDjsso*3dEmu z(a1y|(C6NoJL)2!tlHFCeEN;k*jm8b>N3&-a9=+Drjv#q>l{3f$`$F5I(Yk_d)BoYu?t4rl5c#r{6-u<0^ zj(>r&$LZNqq^dW?SVj#shbdT5Bw)rUk?T!PVC=U=HkG9VH|N1y8_KO+q4L|hFjJ2` z4y7s(BqN^Li`?LsuZSq&!WQhNqt3AWo8{*cJ3W}wem$6uxgLeuo z`vQ<%1#ix`z5S#eyb4k4jYC)e%QtOOhly3Rvu8NpL9iBaMg5DE8+q8F;k8TAhA_Ps z31Q%d-$K6dcWOq+{=)r!xQUl~H_}lg6dACpy|)#OU?En9L0;Lph4$~i1(w)ALZ2ff zhZ6q%VCs`F_FtmEzmpyGzq&)nktOzbID&sahmd~%Rz&`NXoaU7}V+T@bJ%t98LE*@?GsNs4#cb7QB-u{vV>;o2~pVy6~DP+-GuW0t!S4 zV~228;o^=wskr76yBs^vw$U?N6M))t?XI*s;SH?LX?z=5A@bX}H#v$i3syZGQmIlW zW03gsFW5)_vm-v+^JH>4q3)x@8-|>fP`IBMYqX^Vp<*Q* zM}!Mz5CCDux}=gJc~&MFsgcS&*q8`u4Mq5?>wKCPA(b?6z#3b= z3FxSxLJcapzMW4V-5Zc$FnSXmc!LTivy7gBgrdr_$kNZ*5QYyFJ7?0+P&XIN7M;cN*Y@0hno(e)<V%~t1{>B4qa$2?8d=fbE$|t!ucnl~ES< z78kz1lXQDWXHpE{V$X}t_Pp3FkI5tAV3pg|Y<%{Ol1++IYO>~dqb8G@`7w*9J1o~} zOqUq7mIK5Rxs)XkO-|3Asdu4?L82cHp8F9x9YQnivo~$^huRe^W>KxKUp?fJHvAA} zlZ6sVsTl9S8>W?lH*rjAHG2t=6gry0m=>R58<=t%-Z!X1C5He1Z45IAA-Y^vIJZW zzpg3zaZ>YA8^qj{rv;Fb+qr3d?QlIWl-JRJd2UP!iPJa;b}n{K@_u~p?eqNT^Z5B2 zj&WP?HchkWY=e|$m0G*E_v3@7PlcYEN^w!v%9;v_(KHR;;7G*yv)^R%vqxvcR(Y9{ z!;w{7a+%hpo0lfRUtS3sL1%&2L7O-#*9N-bbun<^{`2(FBl-42h}YB?SZc=fsi zTRhzjanqrs9zA`cqFtshZ^MH?t`9UW{_GDqpax$r#dTHb#_w`&L@2eH4n~na$V9{twl96w9C9`H-Fps!Gz? z63Y|jROnVwA)-V*t~%tFcAI3p3z?k zg8H6NPViTz^~@$X=TmxgU`@D=d?Eg{S)ZMbYX$$bd7NX-cbTX~9G2a)v5~ajo-TlF zT)~^ZG;|_(40d&ygdF-F$o(3X&13U5D1DKP)E5dN;gbgJXYE@JRZrkILE~3r&ot@0LAEDdznzkAGf5K7DR!U{t7ab?Z>W^n$dUIZK zRy$^#Q|1qu%1e$b_ zW~S)oM2PUu6a_lJfd9xTO@{yV_|nTLmAT3Nr@hjJXyCAxaLMCK#`%mp-k;upRG?mPv4b!z2uVwMUlq$x--AdJ?8ZK%E6{m zs*mFnG6v7YCByV=v2w+ z8ux9{u4N?>-k0>l4iB>k?h&<9O0r6t6fQ0L@!7IR{A5UqK&cpAp=(2W?-jn}7tG`b zwiyfwtjNU00;R>piq*vJ7Q}vIFZn31ljEv@*IV!agAWQoKr~Vsnyq2zYo6buw#xQV z@h^~c6yGH2C>?!M=2b~M8xj_!6<5}^LY|@w|FC@2$6@KH_tHegrBMSF(umliqs|O@ z=vPSA2lDFqle8nHZh0izaHCKBX<9#MX#LFygE`ap%xS3fW!eg5+cE>luVBHz30Iu<9sr<4 zL^|ZD4(@>;)*H4A2l69Sz!$@dez#+J^2E*O^2>hxHOpeJE5w9GK&Fg|Q|SqwXnZK4 z2}-JT>NM?3js?wh94*&*;Hqj*8rz->Cn|qQ9e{<@0Lt1ycIEOJzz@8VbDa-D>ERgi}prWd_b!=ZU#aP zvtBW%Y_c7ruUCo9q-@<#wT?z=4LkVsa3vrOKbsWRgoF-#FJj*Yrx*o}v`f1>Hl?Im zI2>O9zXwQ1*Z^iU=lO}{)B_cg{q#Z}+r)6yCL zKP~HczUdt1^ynzd1N02VAwhXBe*JmC3W4c<-#SExAVl?pf~?yUKk-@@95OB)1Xh#7kU7n)6xp0f*N2*PG#AQM|+JsrkEoWiHCL^0K4@ z&K~~s+zrA%A7gHxxW?3{4Dhpi{tDgj)*d=_sU&?p|E?cU?BaV6IYhSwP)iNiyWr3) z-j>l;#HgRO*ULL5oZ(tkk0-#4`XM2cQ356w;^bd0)tmUO=YuA%=hP_4Cob=w=MxcM z2P5fvpYAham7^_Qtge%u;pMtg&VR%MQjP3*?MtZD&<6UKu9E6L``(u2CCeI|&Ng4{ zapL0KK&(2BZd5J} zo1aIbssVg+CXPa3?t{^50S=zm7lDh8Ss*!6wk$WE_e;*2GF7oD1PbmxyK!utc_e#4 z0jJID*S?HkzDlXO>@$lcV`ll$k(Q?YSdCx;Zo-w)Yv4|`U#Z9Gbd6tGv|4hcvEwJ| zTQjS$jJIW{p0fst^(A%lDenRFa}2`sE$y5VRWEIR=wP#0E!FDzY3GH*MgLqtaIWqs zv#uP2f&v3ILrtDS*R6Op_VMaXu4Rp*2cbNNZMP+LTsh;jqw{_j1MWI~J4N)=!9`3g z;k3v4!VdNeN(E%%-u36;gk^T^xe`%Kv-m4-EFtT8E6redCjY3SFZg~SPRQVUiQD-c z$e}?-QO(?*H(BeeNz$~rotM{O-K;TRXro8Tl9=3yRmuM6rFH|`soSqR{T~-D@}5Vt zd&pDk>P3FXBgA{v*8~JYHV;l&K8AMb>bRbP{~Y;%P&;4tV2x;pR9YV*(6W~4W>oi> z&3#^|rDqB&Y1`Y5c7Y>qS$P8d;#d+o6!$}yk$O{nv@?^^BkKu>Y&h%F{hA8ElAH+^ zr}XK|N>WQe3;JL4$*GctD*f+iXt&VgmPwSc%C6>)PgFo#emg5p4}*CGvt6j>piW(% zm`Jz)5=YE-TJdOhSu0?pisaF+&`dpkhLsP?Ig+fnaqkV6t%XrY7JbBA6D?Zm+22%_ z`{gs7S9r8qMoiL6*oEqK+9T1xuv21gPS+)>OLSQW)N&Vs#xFK0+ifkfj0R_;Nl6EY zl`)!>#~hDg(l8|`=gT~wc$ulGKhg95-YC1gu9w=g=USNIaDM%)v427Td*RSKo|Nyk z3tr+b{%DDg_fv_9t*x$FSw_ucaCOPPTKO+^l{Y) zC$?o3FF@AW=7n4Ql6a!U)`WzT`Ucyx^_ed$bjB6+F?{dE(0shN7K7G0MC6IT9I>r6@J9WtcmvrpX(Wd9j>(*H{nE(QtE{BDnGZ-In z+Bh#9x|rB}_F@lRIbYksMFpp;0)=%Xc@<~>f`P)+&D{ezWxdh~61K;6BbaSI_b9Vw zXG!fr6)L8U8 zHJ%tTAW15W6$H$$lo7^rQLa7yYdRwk#t;!#y zc*lLBCe1XCm>E_- z9Z0Z42%-$7l*~^t8CFS_afgjhKw;OXD2EoSr8u_04;1Ld-P0{fHxEG@4)z#I8QbFP0y(-`KX99J}k=yubuq z`}Hcg+fMNAVBaqTgv@vb|M=|Hfc-6V#3p0b`Rz$yEl!#kyuXkliB7VeJYH* z3*k7~@#2pxbt^XOztYP}%};>#)_IYJVIyFS=oOK#krg~m-19xrD?fvGn~H`Hua`9W)fT>l z99d=R9~`MWNVx&3h2vlw)flm0p6LqW0Z^W^D+xwn9XyxS=$+%4pF(`avnbS zO(@^KBytIJnF_)0@q{0?NsmkG({tvf6+bY7)4w$?>3Mq`&6+s}M|7}rJzug!RIAWw zHn4T>6#3jnDG^0x|EP*kRgJej=Gf{Qo@B~h?4Q^4IQxknaJpJ&GuoeQVz!|x)RIc0cE|6^Wx+?Ac zFopiJcP|XO#}V~-yZiO!fsnnR|LJA5jcd@nz$gDNgSGK6e=6hk8F)In-~7NR0ao^< zWTQtf*bptz)!2p(@<=0fT6g`Sv-#F-Pgo0O%bf4h{!k&_2(uiOH=t*fZsrIE4ij81e=`4S1{%y{(0Za-_f@}Er z>1^p2MEO+1>*Rcins3sS|H%mi`qb($vP)3OgF5is)YDqWTQb@q_BQndAksPn*G{ z)o|I5zRvqF`B?Al7HMEQ*zy3&U)Q7{G!VL!NJ=6%;1+qK-o~Ci)1WHuEg-{8*P*K< z#xpGNveS02T5jgWd+#r`xw2yn0*2x8dnDT>6pa?FJ&9vWP~QVPb8NJ;m^{ zzpjq0)U0%?7S<=X7YNVT)J(-Gjzw_FTJ4bpGE|I6uf1hZf@D72JIESg3M(O9%!v+1 z{J!96JNTlNwZz@>7TPTIy7@C5{HbGRR=b?XySg4JpUp)T`&7IOAcku*njG)n_0;aM z;e9bGP-EBaS*303gc=`rfq7UZu>%7yxKgF#W1(4byDZcW{-Fi#sb9eFY&h<`X#OC@ zG*Rf=DOzN_EV-^~=Vbm2GpIuvWohSSv>&vA*ZKG|f}UQb)%Ehr$3cIXmcx=RduDex zXXDR0UrqPbRhS=X(5umFl7hLc#PwB{tbw1`wB*I#E)lp4shg?s%JhY2NTW$nDOs<#nem+t z5WIo^??!{A7)09}zpFJc7A~C=w3I$ng%wD5-Xv>p%+2F;Lz><%bxMBqQ}sCM{E1ej zM_mKdTI2-r2MNYxGuFJAy01foX#Hc}zz`hMWag#4KYdoH>4k}D#0m;Zp;SnTNj~ew zgpswfmGf~cC?S9|8X@+A!&WYK`uZs6th8qT;Hx;NXrv_!5(?uvZ*6Y#Y7C>ikclH2 zVYA`Yj3yq7A8&T#lm6-(kfFngdIg+LCg!AO2`}?sg&)2-U(xQlYxr~&)td@t- zOysROX%(q^e)fT-v}7W=oG|6vD^VVv&-rnx`6=%5Vgb0Y8Ohwa3LUJ5gt$V7L!LaE z+mUn=2;o#DEm{}IQ=1Ccvu->e2!Mxf$%`g`@ZFAfg8wug7%J2z_&r6e{jxE|KHnDjJTfAKcNe&I!uWQw@g4Tk0=0yP+uvjZcs!!h0fu5bsV7F!6BD z)l}2Gk9SL`Xm&)PpA^qXbTb|AA*N<#=VMdbh|*Xe6G)AdCcj(ef6+{8BvniUGDY5DDSn3*R!@N531K%n_~ za(9~_q;`yp#gvR1!7_8N_UKqo4csP&=LNC;3T$>nx@QizV+)1AF!0pV@F= zctaJ`DTWSL-5O88iQ@|@p}Y2e__FPwfn226kQl-2gspC)@5oNVq>t5kM+PZKfHad2 z;;wfSkCS0lHM*`_zr8Y;mrb}K9hC}!^|$j@fKE|n)NxU452h)4 zN2_>?XzzN9!QufQ8UPK{joY3o=5Aa-HFyd4F!eLjU*cZx;>rmT`TCPu8W3NX7l#hBT--LZ z^PPX=oDL=+>f&3A+g-gTsgKJ*!`ccn)_$TevcA9R5(R~1?yzfpeN5m&7FjGDNfDj( zgR6tge$w6%Gss(iK_p%_WWIN(R*0`fnNu}tMZ<+%KYKXsl*JoxgzIAm!=JY#% z$%Qr^cKApPmQZA&q5PypONsedW(EkU<^_+KVK#Ej$xCp+_R+qGjB?&S zAwN>VfwYcJ$<@VPnrP2lw}%0(jMj^Rk{jL!OHs2=p@%9lNp*9U5 z0Y?aQ#*C4l9J!Y}$<3M|E+r>7BTQ!AZA~i8MvxdIYi2f9II4oCxH={#V(t&te}?bB z$+DV@no0kjn6GTk(QUrlWoa7xXwz)2X*;V^g+fgCIP4H8IpR3f?=@>n&q16bW}N&D z<84sN(b|aPo1ILk<8{imRIw3#P3~fy$H4|)^Z8<@-Qf8dpZja4*-7{v@!P}mX1qzO zr+ybwd#!vXp@c8jP1J;-Q77-`VZRm0`>unT`KofdZi9Arqk{|iNX5 z{(!<_#s=ZTch>tVtLRQZhO9yC8Teg?R%-Oo2NK=Ki$z4Jkg{Z*^M>LMrikRQ-CT1&CjM5oW-lSllOVy!@7JHSFqvX1Hc zl3XIN%6Gsj0;fE;4|f8)oV_y5Tnc)Sv%Xd;-hjS`FnP@qmVH*r!i*qBSkv>U^8ILO z>^IKWqo|$yY*zo*VnlSg+)ri$CIMX?ofxJ3X>;df4cSRjB5@~ps}tNJX47hiu0#WC z>SsUPRruOJ)1?(2Bju+59_?7}7i*3oiISnq1-i3r%}wYx*fJnUEB|U;9l4maNT;CM zBApQ!U~TTskBEpIl5NY;zZ?~I=s>^Rkw6j7ypu4oO6#{yYi)T?iJ}4~b$7ml7Yca0 z>j8yPZk-d)6czPK4^%TE*Pyl|oHDf53v@VoGgLLRLZqBCOD?8KJ%g6OmQoE&71I2Bap1~-RwbM7Wn_EvAnGOaVq;ym_k{; z-n}IZ5pPy^(1&TRA#E{MYC($z&KydqVE%HxqypIkfV>I)*xsN`e7Z7_KKW!RQmlbg z3)uXcNf(ca0gx;yqu!%{SM=}=#HgyPf}%Gn(@96M?;=VmA&O`r%$OAUF*Q*2A=#Z=%rsjW)eR@b-B6C+}l+JP1= zGyT~&+`|&yaHbW1O?|OvZd|3qs>D{l7j`ld9aEYaI>L2k}%0Y#4 z#ihHh3Ui7yESizXdtJ(YIVBQpKGMqi`xoKIoO8-i7Ah8kuzf@GGQjQ(-LbVl2;`XZ zUT{w(KAs0QP93E{tSk=YmGgGyXCRrhlSE^|cNN8!M^9LHf+Lz3vMg)+5~9uygHVsj z`!4Is>58f`vw!~7Ut=RGiUN@3m#Xg+AS#$u9w3h+lb0nPd~6A3XOxS}8rc+l#?| z+`UNtQv6Mv+tYOxo}7QOM8BNr>dWM14pad$GEH-iaRj=k()N6v_5x#IA}fIv z_Gd|B?$Q1U#o_ADyjLU$Q2EoTl=%t=9OqBNvb+!FnY!SzQNm*nE>6%pxnY< zKH1px7w1N0TFs}%cxMkndqpctjp|Cb(9-tVOZWA2tYkIKbft6vpLixnb26x}9lW5K z_v|+uOIW4(@r_9|=2Sp?kta@+_p{6-6;?=(Au9n2T!>Yqq%0J7p{jjwBA_Ce)f}_o zQLw5E<`{oYu0(LhR=#&Bn?quG=%Nh%7mvChy>v=(ksE;0Ts#p_H<@@PH}b=CX9k& z>xe!=@igzoh3i(n#7l-QT+0Ye!b-R4&yWyIGMH zA>nUv^*YnHO6gSHAy{&N+-M6hGCjt*-|*C5cY++y{&w6H~iKY6eH?+K$8)Rh@4SE zvgExlC2XDHrN`^$*O8XW%$t?cb`%)%0??_wOTrLq6m!)DE*#1mhxG>KzRPW9*^)ZS z3R1kwzU#G6)Q!1X_dfDn1%~=9X_s}2P^LwSLzD9fc5T&rq(Xo|eGZRi{i(m`zMFtC zfKmpjq}`nrg;-v{_4u;ihqg+^YEY-;k4~`5p7pi665Y!*gS3uSb+9XgvD+pI=htgM z@XzgV;%tfUkwuv%Ylc3_AikX!J%4_^+)a8|MBeP<5Q~_}#250infq4b+MTQovJ;n) zcxUHo!+qL17~VC{yf>5{y2zy2N%L7O;lszhU6DOJh)}DDd4tt*`8y&=FrabeCv7T5 zz@=~RJ2kW4wR+o$@&!X}NV*|Qzy4`wJ%*o2ncl79Kn4$$Np#rCX|OH^Z7DxE)RVHB zC{L1&8PM}<1T{?==af!870_TzXt^^=%T(jlKk!xYYMGRq6NIaeqZBp{>Bh^E1;#~M zIwGB*{(v!;4pO3pK4ZkGzcB9dQe%|wv4?htsm&LLH3`R1p~XU8#2^=q($OF7BIrIb z?JeL3Et7X#EW&KObXYB{hXi!+a1B&RNKElcKx2xFAXZen%E-nFdGoLVRZi9m&LS-Y zS6wzYdkpSR`EIv%2cNyL*t1$6h$=N+mAxhGq@^6Rn(1J4JRgQ{kApc{!;jg!f0E(z z8Q}A=;KP6P@bX*;9<`{^Yf;i-y1cYpa-JF_=~#)f`V?iX-Dn#XZ-bG?STV`fEBD>=u1>mi9_(1sI_5?2IE4ED1E8RgQuj^9f^mA=?w zk-f)Y#$r%XkeK&+0 zPH)!FiyyvWb2pv4iBzB&W-7LJ%Fd}T?c!qS0rm^O$N4mGzhUn0VBoA9{ltezEi4z- zMd8s%U(4EyKB{Lr9jnNAD;q@$tRA3RyB37>ntq{C#7Qp?ZE%q)3(+cMYV|#gZ0p@D z-8{jzt52jvB&;_e554ad9MUTDFOq8-?r%)RH zafxO~3%ENS{_Lm@T&)^EtOMO&@LjHS{ecIwkUoxmnMR7c6GT!x0$uuEhcmj{xGz^j!5o@ zQ_<^kpjy2Td~6Loa1cO&{AXsXnX+oq( zD=j7OKBA-omSV6KcZQKx9AzsD_-0XBa{nEM2F?k&KFw_ndt${B2dbGult3V3^`r*nr` zHYNjEj-)myQZA397PzLglzmpe@U8cHE;CtrPy37Fhr!0Wz!L<1FSOhpQ$zo@33R#0 zL3iSi1aE*`*Uwo51wEQn05=W-wE-7hem>~2_c4yuW2;xw;bx=ef4Ejname*}=9n6% zxNFTK-u-$0;)G%iyj=heqW!r|=pXDxY;WZ?`g@1~87bV6Egpq}!wQoNDV%6Z#{N`@ zW`2`eyiA<-5qo)j!7oMkbvwVQuC9h4o1QOISY8G5=BO4!HuOGb&xb)vO0Y%NoeV29 z+ghfctwq$`&mbWd#3nLG15*=`5}`z5W0eOF8yW_FWs>0;skhlGHjvKlvv9c_)F%TNi&Y5y>^<^~FF=2(jjXy=Jgv_Byn<0scd!?Og$7zYNlWFg| zyXU=Qj>l3l)*Fo?lNzvPtsK3kN1-B;@%DQ(#0xJGLrR)qn-gU&;94H(EhJL01B7xT z`h>H~0-gEt4SlF)bkw*A`=z$d507b+gpueQ-_yrLQW8XC4dKdYqC322VzoxPshGnt zDY@NTei$O$NI1DwQrbWq`|kyT2<20sv53jNA^TSfoG*o z%IysC``#``jg^d7B(9TGnvp4Xtt5%~5G_k7ebPv;?yu1pF2=dCvO%EKEfu4+b-uH? zPoAdi?e<>EFi!u=)anqdyD1b^`fzSXhn~23uTqLe8QWJzN-QP3^7ihS7|?3GX~wY# zgdKK>WFr-h=5Zdhpm8OQFLn(tF5oJ1b16`rqkeUfnb~P!kA`BuiE`?ptlLF^`5eDV65hkwxJY*U|*%k>dRuN&Q z`o6?sx*!1ko>63<-Lyr-atFZ$Pq?-cjq6<^$+2}J6_0h6X5!4K0%OJ6a)|1;xQ4cU zImD)mSUsD3S&90%2s#F)eJL?zaMDitIb z4jD*tMRTd_+24)F&%%|Lu}oCc|0vYjLyI1f>l;q`X3`R~s35mGw;T$qM7{jIHMQtd zqC1kq0V@>+?rMh&-b#uc`?p&yO&fZ|_tzQ{eB^#<^v~JKC)=yNTHEv#Q~FOnYe8>Sx{3`21e7*k$=E5a%BrVIC`Hsa z{oQMgzYNLm6KrnN;L|Qq1pyI4GV;FES&_3|*!l-4oOki(7S-We`# zUnHGWU3Ex2dX=OPNL`?nk!d0!5l(V~;!j;XWI#B9S9m9h^STIUl%l3rE-gJr5hjOe zjepFT_Jy|!3EMEH-&O-RqxksO(0X-BgqT<|Cv=c)HFMSQ*mO1>#u5rvbfO69sW3Tm zTAC zP(tmaxzIU&W;yworn;rS^~a_tNctu{7h;rZ0hB-2lgPxtXIkNp4ngl(|88yxI4$rk z$^^)j6k=VmYX}mjlNf+|+#X+{%|8y7F1b#Z^5g@dmK5y87}+GSz;G;E&wffdyD@Kd zVR~Wjut~j77j+1wO(iMqnk2foaLHkXd{ore1^hbdy^MhRJJW>|dEd3=H!s{4(K znqGU$i*wIXTvg5{+|OhD|4bdd#5@~dFVCbjqx~3?U-^|?0+l`j?ko^pNS_N0#XviW zh*zC|5-(Ao#)1#&O-BH(rHJ$IRNNw2^~o)9xl7X(sY}>Uh~oN9i9UG@AH&4lJDjbk zCe^fh?k$FcJq>VbJyOEdgznH zCr!?;Np6jPOI!E-_acxdcM*61#SOpQ_Msu{jdeBqE4Z3Coq^Ck5tR70>fC4{7jkH0 zO<&2m5DRT;ad1L*r(8R#X!01-V|e)i^57vwC8Z;+68y!d9{*ijI9LXQTr!jda8~s( z;)K}a4~#`qUXBt##GC{tZvNs7piH~kp-TasL!k?_KWz`Ld+PtsT#1zDl5BY&Y8zW{ zlcQQz!?jz`k*Nisi(k315{84+j}@g$pC0r6)W?GDzYnMg9`EOW4j?7*qWlR>@SmE3 zJi!FmuTUoc`8g***-zS>#`@{GM)BWU5AibX5%~Yg0Sft_TmC0kek{XxvHw)nU^0~~ z#3f{a_>CR{GK8$B2|8{8L1JmvaI~^|9MMDd3boDqM|ySCTqVkLRd`@o3V~Hgp-9DZlbu3pq`gX zh)GjnZEYg=IV!};gqYiYHx3@klL*3T4B~!`fv|1#J3QG~SQKj(ZiF)>ze$Qft-!C8 zt7YHb#-^su#f~v{_H3Rp9)SNI?c6wEV_;lDJo|3K<;nIT$X2hN39@0Ic{o}+x-32q z`>$U!r6`fm(ZQFOj;^k!i*-Aph}aMVssYJ1!pLC<0rt@FaEMg^(dta4W=+=uA&>Je z#FXfD#d`OhBrVQ*yUq?=oL+DtZHvKrz?8suK_4PxQ&a~m!2IN8zVphkr>A7+W7-HZQNWBk1%tD;2V9I5rrFq;> z35K3CGczI3afta9gq3xrY;(0?6R?qde0&V?RQdVy=lAbqO1-bIuQCvc2gHtVu|O0a zqi>T}kbYkffED#B{*Dm?K}1w^;fGe=N;7n^gRpQwRu+RU-|b&f5SA{)ugQIHBn?upzG`C>!w_%faA6emkAZ(TrGOBKe+;*W z7*&JEg?Ng`XgU+bNhx42P4jydBD5!jj1O^KJYE7FK>W3Y2}0=C+uRsF-u1v}4?{Vu z;{W728p2 zrI8eo?v`%p=3YMU@BKT+<6j)*>~nYKnwj0}q0p%N0xHDE!vk6f{I}6@k*!7#KSaBr z2Ah_amH=jK#f~(p4~Bngcf7!3aX9Fl=SG{6kD8?8ClsgMB`(q^x~6q?sL0;@<_&5?X(JWOob}0jz#(qEVy^wFXwZ8 z&5z7>7ZVmv_gZAvj|Z#;KQI7au_C_CPsXfD=Q1CTCgK*mKjaoGB?r92;IEAKBF1f( zGkPy9JNpMO#$?4Y4nSE1hEndp%kfriRRuQy zF17w9cF~=9DM#hxzISuzi>ayUGceTyl*EbY>152lB@)2Lf{nY_*f3e~b$6$Q`!6-2 z_j1rGNO+~tB8e5^V-22o)`VfA6Z4b;>*BU?o@1FW*BgCN2tgl!$#GjuD=Y*80ow_{ z(1=7RZp54@rq)>5IqjBOilYM!f4H(*?SZ8_Z%SVDB3}CV+t1G(cyh;)310!v^Jp^R zub4f?#4!H_6Or%lt#n!N7w6}re&!3ccNs%|jIFE~QsYbUh+TB{v|DX~jYHG{ra!;Z zQiTfvI_=cwa$jro=Mu$n5EMR2NE7@H_*eBcH0r&s?N;o<0U8Bx&1UzW+C`85l%9Ag ztE*1{)E5HrO@L<~?sj)@>G}23%3Do!XWHYRNv%dMNKQD&�Z;FVSH814H#2(Q^B# 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 +
+ +
+
{{ t('averageTimeByDays.message') }}

{{ convertSummaryTimeToString(tabsByDays!.averageTime) }}

+
+
+ + + + -
@@ -77,6 +91,7 @@ import NoDataByDays from './NoDataByDays.vue'; import ByDaysChart from '../components/ByDaysChart.vue'; import Expander from '../components/Expander.vue'; import { TabListByDays } from '../dto/tabListSummary'; +import { CurrentTabItem } from '../dto/currentTabItem'; import { useTabListByDays } from '../functions/useTabListByDays'; import { convertSummaryTimeToString } from '../utils/converter'; import { ranges, ThisWeekRange } from '../utils/date'; @@ -131,6 +146,27 @@ async function exportToCsv() { `websites_${dateFrom.toLocaleDateString()}-${dateTo.toLocaleDateString()}.csv`, ); } + +function mergeAllDays(days: TabListByDays['days'] | undefined): CurrentTabItem[] { + if (!days) return []; + + const urlMap = new Map(); + + for (const day of days) { + for (const tab of day.tabs) { + if (!urlMap.has(tab.url)) { + urlMap.set(tab.url, { ...tab }); + continue; + } + + const existingTab = urlMap.get(tab.url)!; + existingTab.summaryTime += tab.summaryTime; + existingTab.sessions += tab.sessions; + } + } + + return Array.from(urlMap.values()).sort((a, b) => b.summaryTime - a.summaryTime); +} From 715a6237987a904265172ff2a96ca78efd8b364e Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 21 Sep 2024 20:58:49 +0300 Subject: [PATCH 311/329] Bump version to 2.1.5 --- src/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index 4d3a45a..40eb249 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "__MSG_extName__", "short_name": "Web Tracker", - "version": "2.1.4", + "version": "2.1.5", "description": "__MSG_extDescription__", "options_page": "src/dashboard.html", "default_locale": "en", From b01cb63f667d76dfa724df2e5280ea1a630a84bd Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 7 Oct 2024 13:07:07 +0300 Subject: [PATCH 312/329] Review link for edge --- src/components/Review.vue | 28 +++++++++++++--------------- src/manifest.json | 2 +- src/utils/chrome-url.ts | 2 ++ vite.config.ts | 7 +++++-- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/components/Review.vue b/src/components/Review.vue index 8b8b74b..45cfebe 100644 --- a/src/components/Review.vue +++ b/src/components/Review.vue @@ -19,7 +19,7 @@ import { injectStorage } from '../storage/inject-storage'; import { StorageParams } from '../storage/storage-params'; import { addDays, startOfToday } from 'date-fns'; import { addHours } from 'date-fns/esm'; -import { CHROME_STORE_REVIEW_URL } from '../utils/chrome-url'; +import { CHROME_STORE_REVIEW_URL, EDGE_STORE_REVIEW_URL } from '../utils/chrome-url'; const { t } = useI18n(); @@ -32,20 +32,18 @@ const showReview = ref(); onMounted(async () => { showReview.value = false; - if (__BROWSER__ == 'chrome') { - const reviewDate = await settingsStorage.getValue(StorageParams.REVIEW_DATE); + const reviewDate = await settingsStorage.getValue(StorageParams.REVIEW_DATE); - if (reviewDate == undefined) { - let nextTime = await settingsStorage.getValue(StorageParams.REVIEW_PROMPT_AT); - if (nextTime == undefined) { - await settingsStorage.saveValue( - StorageParams.REVIEW_PROMPT_AT, - addDays(addHours(startOfToday(), PROMPT_AT_TIME_OF_DAY), ADD_DAYS_FIRST).toString(), - ); - } else { - nextTime = new Date(nextTime); - if (nextTime < new Date()) showReview.value = true; - } + if (reviewDate == undefined) { + let nextTime = await settingsStorage.getValue(StorageParams.REVIEW_PROMPT_AT); + if (nextTime == undefined) { + await settingsStorage.saveValue( + StorageParams.REVIEW_PROMPT_AT, + addDays(addHours(startOfToday(), PROMPT_AT_TIME_OF_DAY), ADD_DAYS_FIRST).toString(), + ); + } else { + nextTime = new Date(nextTime); + if (nextTime < new Date()) showReview.value = true; } } }); @@ -59,7 +57,7 @@ async function closeBlock() { } async function openStore() { - window.open(CHROME_STORE_REVIEW_URL, '_blank'); + window.open(__BROWSER__ == 'edge' ? EDGE_STORE_REVIEW_URL : CHROME_STORE_REVIEW_URL, '_blank'); await settingsStorage.saveValue(StorageParams.REVIEW_DATE, new Date().toString()); } diff --git a/src/manifest.json b/src/manifest.json index 40eb249..491af50 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "__MSG_extName__", "short_name": "Web Tracker", - "version": "2.1.5", + "version": "2.1.6", "description": "__MSG_extDescription__", "options_page": "src/dashboard.html", "default_locale": "en", diff --git a/src/utils/chrome-url.ts b/src/utils/chrome-url.ts index cd97950..abdaae7 100644 --- a/src/utils/chrome-url.ts +++ b/src/utils/chrome-url.ts @@ -2,3 +2,5 @@ export const CHROME_STORE_REVIEW_URL = `https://chromewebstore.google.com/detail export const CHROME_STORE_SUPPORT_URL = `https://chromewebstore.google.com/detail/web-activity-time-tracker/${__APP_ID__}/support`; export const CHROME_STORE_CLEAR_YOUTUBE_URL = 'https://chromewebstore.google.com/detail/clean-youtube-update-yout/kalhfjomailhflienkfajocjodgjipie?utm_source=watt'; + +export const EDGE_STORE_REVIEW_URL = `https://microsoftedge.microsoft.com/addons/detail/web-activity-time-tracker/${__APP_ID__}#review-section`; diff --git a/vite.config.ts b/vite.config.ts index b8ef92a..cf14fdb 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -5,7 +5,10 @@ import webExtension, { readJsonFile } from 'vite-plugin-web-extension'; import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'; import copy from 'rollup-plugin-copy'; -const APPID_CHROME = 'hhfnghjdeddcfegfekjeihfmbjenlomm'; +const APP_ID = { + chrome: 'hhfnghjdeddcfegfekjeihfmbjenlomm', + edge: 'eepmlmdenlkkjieghjmedjahpofieogf', +}; const browser = process.env.TARGET || 'chrome'; function generateManifest() { @@ -44,7 +47,7 @@ export default defineConfig(({ mode }) => ({ __EXTENSION_MODE__: JSON.stringify(mode), __DEV__: mode === 'development', __PROD__: mode === 'production', - __APP_ID__: JSON.stringify(APPID_CHROME), + __APP_ID__: JSON.stringify(APP_ID[browser]), __BROWSER__: JSON.stringify(browser), }, plugins: [ From 7f3f5f600df7e8ef0c450fcdae72b2b08351a894 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 7 Oct 2024 13:10:20 +0300 Subject: [PATCH 313/329] Fix DE description length --- src/_locales/de/messages.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index 547886f..4d99e0c 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -3,7 +3,7 @@ "message": "Web Activity Time Tracker - Websites sperren, Pomodoro & Webanalyse" }, "extDescription": { - "message": "Verfolgen und begrenzen Sie die Zeit Ihrer Webaktivitäten und blockieren Sie den Zugang zu den Websites. Überwachen Sie Ihre Internetnutzung." + "message": "Verfolgen und begrenzen Sie die Zeit Ihrer Webaktivitäten und blockieren Sie den Zugang zu den Websites." }, "settings": { "message": "Einstellungen" From 611e9cc7e30bf61adb477c64154dc124c88455b8 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 15 Oct 2024 14:06:07 +0300 Subject: [PATCH 314/329] Update icon colors for dark mode --- src/assets/css/dark.css | 4 +++- src/manifest.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/assets/css/dark.css b/src/assets/css/dark.css index f04f5a4..c6306f0 100644 --- a/src/assets/css/dark.css +++ b/src/assets/css/dark.css @@ -50,7 +50,9 @@ color: rgb(255 255 255); } .dark .settings-tab label[name="tabName"] img{ - filter: brightness(0) saturate(100%) invert(70%) sepia(5%) saturate(3889%) hue-rotate(191deg) brightness(95%) contrast(81%) + background-color: grey; + border-radius: 10px; + padding: 5px; } .dark .settings-tab label[name="tabName"]{ background-color: #303030 !important; diff --git a/src/manifest.json b/src/manifest.json index 491af50..ab16f3e 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "__MSG_extName__", "short_name": "Web Tracker", - "version": "2.1.6", + "version": "2.1.7", "description": "__MSG_extDescription__", "options_page": "src/dashboard.html", "default_locale": "en", From 21503529e58b983781738bc58ff6185fca87b615 Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 22 Oct 2024 18:18:24 +0300 Subject: [PATCH 315/329] Change color for dark mode --- src/assets/css/dark.css | 11 ++++++++++- src/assets/css/general.css | 4 ++-- src/components/Dashboad.vue | 2 +- src/components/MyApps.vue | 1 + src/components/TimeIntervalChart.vue | 18 ++++++++++++++---- src/manifest.json | 2 +- 6 files changed, 29 insertions(+), 9 deletions(-) diff --git a/src/assets/css/dark.css b/src/assets/css/dark.css index c6306f0..b976124 100644 --- a/src/assets/css/dark.css +++ b/src/assets/css/dark.css @@ -46,6 +46,9 @@ .dark .expander.total { background-color: #6f6f6f !important; } +.dark .url-list{ + border: 1px solid #494949 !important; +} .dark .header span{ color: rgb(255 255 255); } @@ -62,8 +65,14 @@ background-color: #303030 !important; border-left: 1px solid #494949 !important; } +.dark .app-block{ + background-color: #919191 !important; +} .dark .app-block .title{ - color: black; + color: rgb(255, 255, 255); +} +.dark .app-block .description{ + color: white !important; } .dark .settings-tab label[name="tabName"]:hover, .dark [type='radio']:checked ~ label{ background-color: #666666 !important; diff --git a/src/assets/css/general.css b/src/assets/css/general.css index 3ba9144..4f086a7 100644 --- a/src/assets/css/general.css +++ b/src/assets/css/general.css @@ -75,7 +75,7 @@ select { width: 100%; } input[type='button'] { - background: #428bff; + background: #5377af; color: #fff; border-radius: 7px; height: 36px; @@ -91,7 +91,7 @@ input[type='button'] { } input[type='button']:hover { - background: #5c9dfe; + background: #314158; text-decoration: none; } diff --git a/src/components/Dashboad.vue b/src/components/Dashboad.vue index cf6503c..b386e74 100644 --- a/src/components/Dashboad.vue +++ b/src/components/Dashboad.vue @@ -87,7 +87,7 @@ function openChart(type: TypeOfChart) { } .chart-btn.active { - background-color: #428bff !important; + background-color: #5377af !important; color: white; } diff --git a/src/components/MyApps.vue b/src/components/MyApps.vue index 3472da6..28da6ea 100644 --- a/src/components/MyApps.vue +++ b/src/components/MyApps.vue @@ -70,6 +70,7 @@ function openAppLink(app: App) { .description { margin-top: 10px; font-size: 14px; + color: black; } img { margin: auto; diff --git a/src/components/TimeIntervalChart.vue b/src/components/TimeIntervalChart.vue index 1286b71..f10c3ed 100644 --- a/src/components/TimeIntervalChart.vue +++ b/src/components/TimeIntervalChart.vue @@ -23,7 +23,11 @@ export default { + + + + diff --git a/src/pages/Dashboard.vue b/src/pages/Dashboard.vue index 6a53569..27362cb 100644 --- a/src/pages/Dashboard.vue +++ b/src/pages/Dashboard.vue @@ -153,6 +153,25 @@
+
+ + + +
+
+ +
+
+
+ @@ -174,6 +193,7 @@ import { getEnumValueTab } from '../utils/extension-tabs'; import { applyDarkMode } from '../utils/dark-mode'; import { injectStorage } from '../storage/inject-storage'; import { StorageParams, DARK_MODE_DEFAULT } from '../storage/storage-params'; +import Donation from '../components/Donation.vue'; const { t } = useI18n(); const extensionPage = useExtensionPage(); @@ -233,7 +253,6 @@ function selectTab(value: SettingsTab) { font-weight: 600; font-size: 15px; } - .header-block .logo { margin: 10px 10px 10px 15px; } @@ -246,4 +265,8 @@ function selectTab(value: SettingsTab) { position: fixed; bottom: 20px; } +.donate { + position: fixed; + bottom: 75px; +} diff --git a/src/utils/extension-tabs.ts b/src/utils/extension-tabs.ts index 29177e1..005b335 100644 --- a/src/utils/extension-tabs.ts +++ b/src/utils/extension-tabs.ts @@ -41,5 +41,7 @@ export function getEnumValueTab(tab: string) { return SettingsTab.Notifications; case 'pomodoro': return SettingsTab.Pomodoro; + case 'donation': + return SettingsTab.Donate; } } From 4def7ee15e34edd6dee67c34be8a84c802ce0b5a Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 18 Jan 2025 20:35:43 +0300 Subject: [PATCH 324/329] Locales --- src/_locales/de/messages.json | 21 +++++++++++++++++++++ src/_locales/en/messages.json | 18 ++++++++++++++++++ src/_locales/es/messages.json | 21 +++++++++++++++++++++ src/_locales/ja/messages.json | 21 +++++++++++++++++++++ src/_locales/ru/messages.json | 21 +++++++++++++++++++++ src/_locales/zh_CN/messages.json | 21 +++++++++++++++++++++ 6 files changed, 123 insertions(+) diff --git a/src/_locales/de/messages.json b/src/_locales/de/messages.json index 4d99e0c..c9f366d 100644 --- a/src/_locales/de/messages.json +++ b/src/_locales/de/messages.json @@ -406,5 +406,26 @@ }, "try": { "message": "Testen Sie" + }, + "donate":{ + "message": "Spende" + }, + "enjoy":{ + "message": "Haben Sie Spaß an Web Activity Time Tracker?" + }, + "canDonate":{ + "message": "Web Activity Time Tracker ist eine kostenlose Erweiterung. Sie können mich für die weitere Entwicklung mit Kryptowährung unterstützen." + }, + "thanks":{ + "message": "Vielen Dank dafür! 🙏" + }, + "coin":{ + "message": "Münze" + }, + "chain":{ + "message": "Kette" + }, + "address":{ + "message": "Adresse" } } \ No newline at end of file diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 976957d..216b4c1 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -409,5 +409,23 @@ }, "donate": { "message": "Donate" + }, + "enjoy":{ + "message": "Do you enjoy Web Activity Time Tracker?" + }, + "canDonate":{ + "message": "Web Activity Time Tracker is free extension. You can support me for the further development with cryptocurrency." + }, + "thanks":{ + "message": "Thank you! 🙏" + }, + "coin":{ + "message": "Coin" + }, + "chain":{ + "message": "Chain" + }, + "address":{ + "message": "Address" } } diff --git a/src/_locales/es/messages.json b/src/_locales/es/messages.json index e7fe7c5..c607eb2 100644 --- a/src/_locales/es/messages.json +++ b/src/_locales/es/messages.json @@ -406,5 +406,26 @@ }, "try": { "message": "Pruebe" + }, + "donate":{ + "message": "Donación" + }, + "enjoy":{ + "message": "¿Te gusta Web Activity Time Tracker?" + }, + "canDonate":{ + "message": "Web Activity Time Tracker es una extensión gratuita. Usted me puede apoyar para el desarrollo futuro con cryptocurrency." + }, + "thanks":{ + "message": "Muchas gracias! 🙏" + }, + "coin":{ + "message": "Moneda" + }, + "chain":{ + "message": "Cadena" + }, + "address":{ + "message": "Dirección" } } diff --git a/src/_locales/ja/messages.json b/src/_locales/ja/messages.json index 813a064..86f408f 100644 --- a/src/_locales/ja/messages.json +++ b/src/_locales/ja/messages.json @@ -406,5 +406,26 @@ }, "try": { "message": "トライ" + }, + "donate": { + "message": "寄付する" + }, + "enjoy":{ + "message": "Web Activity Time Trackerを楽しんでいますか?" + }, + "canDonate":{ + "message": "Web Activity Time Trackerは無料の拡張機能です。さらなる開発のために、暗号通貨でご支援ください。" + }, + "thanks":{ + "message": "ありがとうございます! 🙏" + }, + "coin":{ + "message": "コイン" + }, + "chain":{ + "message": "チェーン" + }, + "address":{ + "message": "アドレス" } } diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index 432def6..29768c3 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -407,5 +407,26 @@ }, "try": { "message": "Попробовать" + }, + "donate":{ + "message": "Donate" + }, + "enjoy":{ + "message": "Нравится ли вам Web Activity Time Tracker?" + }, + "canDonate":{ + "message": "Web Activity Time Tracker - это бесплатное расширение. Вы можете поддержать меня для дальнейшего развития с помощью криптовалюты." + }, + "thanks":{ + "message": "Спасибо! 🙏" + }, + "coin":{ + "message": "Монета" + }, + "chain":{ + "message": "Цепочка" + }, + "address":{ + "message": "Адрес" } } diff --git a/src/_locales/zh_CN/messages.json b/src/_locales/zh_CN/messages.json index f8135f2..673e348 100644 --- a/src/_locales/zh_CN/messages.json +++ b/src/_locales/zh_CN/messages.json @@ -406,5 +406,26 @@ }, "try": { "message": "试用" + }, + "donate":{ + "message": "捐赠" + }, + "enjoy":{ + "message": "您喜欢 Web Activity Time Tracker 吗" + }, + "canDonate":{ + "message": "Web Activity Time Tracker 是永久免费的扩展。您可以使用加密货币支持我进一步开发。" + }, + "thanks":{ + "message": "谢谢! 🙏" + }, + "coin":{ + "message": "币" + }, + "chain":{ + "message": "链" + }, + "address":{ + "message": "币链地址" } } From 20793845555665249698bfc44c9ffe19afe9d43a Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 18 Jan 2025 20:39:35 +0300 Subject: [PATCH 325/329] Bump version to 2.2.1 --- src/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/manifest.json b/src/manifest.json index 59c5bd5..f60fa0a 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "__MSG_extName__", "short_name": "Web Tracker", - "version": "2.2.0", + "version": "2.2.1", "description": "__MSG_extDescription__", "options_page": "src/dashboard.html", "default_locale": "en", From 78d1b303980c0432a3cb1f6f83d6d55e20e5dc5a Mon Sep 17 00:00:00 2001 From: Piyush Duggal <63952890+PiyushDuggal-source@users.noreply.github.com> Date: Thu, 6 Feb 2025 13:17:48 -0800 Subject: [PATCH 326/329] change block page url open from new tab to current (#151) --- src/pages/Block.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Block.vue b/src/pages/Block.vue index e0d3779..4355405 100644 --- a/src/pages/Block.vue +++ b/src/pages/Block.vue @@ -81,7 +81,7 @@ async function deferring() { haveToShowDeffering.value ) { await defering(webSite.value, 5); - if (sourceUrl.value != '') window.open(sourceUrl.value); + if (sourceUrl.value != '') window.location.replace(sourceUrl.value); } } From e0e62465e9274d4dd34169e62d1acfba30f02114 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Feb 2025 00:21:54 +0300 Subject: [PATCH 327/329] Remove donate button from popup --- src/manifest.json | 2 +- src/pages/Popup.vue | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/manifest.json b/src/manifest.json index f60fa0a..64b8888 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "__MSG_extName__", "short_name": "Web Tracker", - "version": "2.2.1", + "version": "2.2.2", "description": "__MSG_extDescription__", "options_page": "src/dashboard.html", "default_locale": "en", diff --git a/src/pages/Popup.vue b/src/pages/Popup.vue index d5eef5c..51d8460 100644 --- a/src/pages/Popup.vue +++ b/src/pages/Popup.vue @@ -33,10 +33,6 @@ >{{ t('settings.message') }}
- {{ t('donate.message') - }}
From 5b534dbc09674b9d0387e290bfaf3d0f20b36a95 Mon Sep 17 00:00:00 2001 From: Alex Khrisanfov Date: Tue, 25 Mar 2025 22:26:18 +0300 Subject: [PATCH 328/329] Update README.md (#157) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index acf1470..8e3500a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Web Activity Time Tracker Add to Chrome +⚠️⚠️⚠️ **Important notice! The Chrome extension has been sold. So I am not responsible for any changes to the functionality of the extension.** ⚠️⚠️⚠️ + [![Chrome Web Store](https://img.shields.io/chrome-web-store/d/hhfnghjdeddcfegfekjeihfmbjenlomm.svg?&label=Chrome%20users&ogo=google-chrome&logoColor=white)](https://chrome.google.com/webstore/detail/web-activity-time-tracker/hhfnghjdeddcfegfekjeihfmbjenlomm) [![Chrome Web Store](https://img.shields.io/chrome-web-store/rating/hhfnghjdeddcfegfekjeihfmbjenlomm?&logoColor=white;label=Rating)](https://chrome.google.com/webstore/detail/web-activity-time-tracker/hhfnghjdeddcfegfekjeihfmbjenlomm) [![Chrome Web Store](https://img.shields.io/chrome-web-store/v/hhfnghjdeddcfegfekjeihfmbjenlomm.svg?&logo=google-chrome&logoColor=white)](https://chrome.google.com/webstore/detail/web-activity-time-tracker/hhfnghjdeddcfegfekjeihfmbjenlomm) From 5154b83f4143885270072d73abd50a3758396400 Mon Sep 17 00:00:00 2001 From: Alex Khrisanfov Date: Thu, 29 May 2025 14:34:30 +0300 Subject: [PATCH 329/329] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 8e3500a..2304c08 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ ⚠️⚠️⚠️ **Important notice! The Chrome extension has been sold. So I am not responsible for any changes to the functionality of the extension.** ⚠️⚠️⚠️ +**The new version is available on the Chrome Store https://chromewebstore.google.com/detail/timespy-block-websites-po/ggomgkmpcnmfhgmpfaphkbmnokllflom** + [![Chrome Web Store](https://img.shields.io/chrome-web-store/d/hhfnghjdeddcfegfekjeihfmbjenlomm.svg?&label=Chrome%20users&ogo=google-chrome&logoColor=white)](https://chrome.google.com/webstore/detail/web-activity-time-tracker/hhfnghjdeddcfegfekjeihfmbjenlomm) [![Chrome Web Store](https://img.shields.io/chrome-web-store/rating/hhfnghjdeddcfegfekjeihfmbjenlomm?&logoColor=white;label=Rating)](https://chrome.google.com/webstore/detail/web-activity-time-tracker/hhfnghjdeddcfegfekjeihfmbjenlomm) [![Chrome Web Store](https://img.shields.io/chrome-web-store/v/hhfnghjdeddcfegfekjeihfmbjenlomm.svg?&logo=google-chrome&logoColor=white)](https://chrome.google.com/webstore/detail/web-activity-time-tracker/hhfnghjdeddcfegfekjeihfmbjenlomm)

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 literal 0 HcmV?d00001 diff --git a/src/assets/trackerjam-promo.jpg b/src/assets/trackerjam-promo.jpg deleted file mode 100644 index dd5f409d4b16635b6d67884f2d2f8f363b322db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58602 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 -