From 6912d751441f9ccda79aad23ae0cbf3057ecf30f Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Fri, 31 Mar 2023 14:52:10 -0400 Subject: [PATCH 01/41] initial 33across Analytics Adapter commit --- modules/33acrossAnalyticsAdapter.js | 316 + modules/33acrossAnalyticsAdapter.md | 22 + .../modules/33acrossAnalyticsAdapter_spec.js | 6459 +++++++++++++++++ 3 files changed, 6797 insertions(+) create mode 100644 modules/33acrossAnalyticsAdapter.js create mode 100644 modules/33acrossAnalyticsAdapter.md create mode 100644 test/spec/modules/33acrossAnalyticsAdapter_spec.js diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js new file mode 100644 index 00000000000..1372f641dd4 --- /dev/null +++ b/modules/33acrossAnalyticsAdapter.js @@ -0,0 +1,316 @@ +/* eslint-disable no-console */ +import { logError, logWarn, logInfo } from '../src/utils.js'; +import { getGlobal } from '../src/prebidGlobal.js'; +import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'; +import adapterManager from '../src/adapterManager.js'; +import CONSTANTS from '../src/constants.json'; +const { EVENTS } = CONSTANTS; + +const ANALYTICS_VERSION = '1.0.0'; +const PROVIDER_NAME = '33across'; + +const log = getLogger(); + +/** + * @typedef {Object} AnalyticsReport Sent when all bids are complete (as determined by `bidWon` and `slotRenderEnded` events) + * @property {string} siteId + * @property {string} pid Partner ID + * @property {string} src Source of the report (pbjs) + * @property {string} analyticsVersion + * @property {string} pbjsVersion + * @property {Auction[]} auctions + * @property {Bid[]} bidsWon + * @typedef {Object} Auction + * @property {AdUnit[]} adUnits + * @property {string} auctionId + * @property {Object} userIds + * @typedef {Object} BidResponse + * @property {number} cpm + * @property {string} cur + * @property {number} cpmOrig + * @property {number} cpmFloor + * @property {string} mediaType + * @property {string} size + * @typedef {Object} Bid + * @property {string} bidder + * @property {string} source + * @property {string} status + * @property {BidResponse} bidResponse + * @property {string} [auctionId] // do not include in report + * @property {string} [transactionId] // do not include in report + * @typedef {Object} AdUnit + * @property {string} transactionId + * @property {string} adUnitCode + * @property {string} slotId + * @property {Array} mediaTypes + * @property {Array} sizes + * @property {Array} bids + */ + +/** + * After the first bid is initiated, we wait until every bid is completed before sending the report. + * We will listen for the `bidWon` event and for `slotRenderEnded` event from GAM to determine when + * all bids are complete. + */ +class TransactionManager { + timeoutId = null; + + #unsent = 0; + get unsent() { + return this.#unsent; + } + set unsent(value) { + this.#unsent = value; + if (this.#unsent <= 0) { + sendReport(locals.analyticsCache); + this.#transactions = {}; + } + } + + #transactions = {}; + + constructor({timeout}) { + this.timeout = timeout; + } + + add(transactionId) { + if (this.#transactions[transactionId]) { + log.warn(`transactionId "${transactionId}" already exists`); + } + this.#transactions[transactionId] = { + status: 'waiting' + }; + ++this.unsent; + + this.restartSendTimeout(); + } + + que(transactionId) { + if (!this.#transactions[transactionId]) { + log.warn(`transactionId "${transactionId}" was not found. Nothing to enqueue.`); + return; + } + this.#transactions[transactionId].status = 'queued'; + --this.unsent; + log.info(`Queued transaction "${transactionId}". ${this.#unsent} unsent.`, this.#transactions); + } + + restartSendTimeout() { + if (this.timeoutId) { + clearTimeout(this.timeoutId); + } + this.timeoutId = setTimeout(() => { + if (this.timeout !== 0) log.warn(`Timed out waiting for ad transactions to complete. Sending report.`); + this.unsent = 0; + }, this.timeout); + } + + get() { + return this.#transactions; + } +} + +/** + * initialized during `enableAnalytics` + */ +export const locals = { + /** @type {TransactionManager} */ + transactionManager: undefined, + /** @type {string} */ + endpoint: undefined, + /** @type {AnalyticsReport} */ + analyticsCache: undefined, + /** sets all locals to undefined */ + reset: function () { + this.transactionManager = undefined; + this.endpoint = undefined; + this.analyticsCache = undefined; + } +} + +let analyticsAdapter = Object.assign( + adapter({ analyticsType: 'endpoint' }), + { track: analyticEventHandler } +); + +analyticsAdapter.originEnableAnalytics = analyticsAdapter.enableAnalytics; +analyticsAdapter.enableAnalytics = enableAnalyticsWrapper; + +function enableAnalyticsWrapper(config) { + locals.endpoint = config?.options?.endpoint; + if (!locals.endpoint) { + log.error(`No endpoint provided for "options.endpoint". No analytics will be sent.`); + return; + } + + const pid = config?.options?.pid; + if (!pid) { + log.error(`No partnerId provided for "options.pid". No analytics will be sent.`); + return; + } + locals.analyticsCache = newAnalyticsReport(pid); + + let timeout = 3000; // default timeout + if (typeof config?.options?.timeout === 'number' && config?.options?.timeout >= 0) { + timeout = config.options.timeout; + } else { + log.info(`Invalid timeout provided for "options.timeout". Using default timeout of 3000ms.`); + } + locals.transactionManager = new TransactionManager({timeout}); + + window.googletag = window.googletag || {}; + window.googletag.cmd = window.googletag.cmd || []; + window.googletag.cmd.push(() => { + window.googletag.pubads().addEventListener('slotRenderEnded', event => { + log.info('slotRenderEnded', event); + const slot = `${event.slot.getAdUnitPath()}:${event.slot.getSlotElementId()}`; + locals.transactionManager.que(slot); + }); + }); + + analyticsAdapter.originEnableAnalytics(config); +} + +/** necessary for testing */ +analyticsAdapter.originDisableAnalytics = analyticsAdapter.disableAnalytics; +analyticsAdapter.disableAnalytics = function () { + analyticsAdapter._oldEnable = enableAnalyticsWrapper; + locals.reset(); + analyticsAdapter.originDisableAnalytics(); +}; + +adapterManager.registerAnalyticsAdapter({ + adapter: analyticsAdapter, + code: PROVIDER_NAME, + gvlid: 58, +}); + +export default analyticsAdapter; + +/** + * @param {string} pid Partner ID + * @returns {AnalyticsReport} + */ +function newAnalyticsReport(pid) { + return { + siteId: '', // possibly remove, awaiting more information222222 + pid, + src: 'pbjs', + analyticsVersion: ANALYTICS_VERSION, + pbjsVersion: '$prebid.version$', // replaced by build script + auctions: [], + bidsWon: [], + }; +} + +/** + * @returns {Auction} + */ +function parseAuction({adUnits, auctionId, bidderRequests}) { + if (typeof auctionId !== 'string' || !Array.isArray(bidderRequests)) { + log.error(`Analytics adapter failed to parse auction.`); + } + + return { + adUnits: adUnits.map(unit => parseAdUnit(unit)), + auctionId, + userIds: getGlobal().getUserIds() + } +} + +/** + * @returns {AdUnit} + */ +function parseAdUnit({transactionId, code, slotId, mediaTypes, sizes, bids}) { + log.warn(`parsing adUnit, slotId not yet implemented`); + return { + transactionId, + adUnitCode: code, + slotId: '', + mediaTypes: Object.keys(mediaTypes), + sizes: sizes.map(size => size.join('x')), + bids: bids.map(bid => parseBid(bid)), + } +} + +/** + * @returns {Bid} + */ +function parseBid({auctionId, bidder, source, status, transactionId}) { + log.warn(`parsing bid: source and status may need to be populated by downstream event. bidResponse not yet implemented`); + return { + bidder, + source, + status, + bidResponse: parseBidResponse(), + } +} + +/** + * @returns {BidResponse} + * @todo implement + */ +function parseBidResponse(args) { + return { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '', + } +} + +/** + * @param {Object} args + * @param {EVENTS[keyof EVENTS]} args.eventType + */ +function analyticEventHandler({eventType, args}) { + log.info(eventType, args); + switch (eventType) { + case EVENTS.AUCTION_INIT: + for (let adUnit of args.adUnits) { + locals.transactionManager.add(adUnit.transactionId); + } + break; + case EVENTS.BID_REQUESTED: + break; + case EVENTS.AUCTION_END: + const auction = parseAuction(args); + locals.analyticsCache.auctions.push(auction); + break; + // see also `slotRenderEnded` GAM-event listener + case EVENTS.BID_WON: + const bidWon = parseBid(args); + locals.analyticsCache.bidsWon.push(bidWon); + locals.transactionManager.que(bidWon.transactionId); + break; + case EVENTS.AD_RENDER_SUCCEEDED: + break; + case EVENTS.AD_RENDER_FAILED: + break; + default: + break; + } +} + +/** + * Guarantees sending of data without waiting for response, even after page is left/closed + * @param {AnalyticsReport} report + */ +function sendReport(report) { + if (navigator.sendBeacon(locals.endpoint, JSON.stringify(report))) { + log.info(`Analytics report sent to ${locals.endpoint}`, report); + } else { + log.error(`Analytics report exceeded User-Agent data limits and was not sent.`, report); + } +} + +function getLogger() { + const LPREFIX = `${PROVIDER_NAME} Analytics: `; + return { + info: (msg, ...args) => logInfo(`${LPREFIX}${msg}`, ...args), + warn: (msg, ...args) => logWarn(`${LPREFIX}${msg}`, ...args), + error: (msg, ...args) => logError(`${LPREFIX}${msg}`, ...args), + } +} diff --git a/modules/33acrossAnalyticsAdapter.md b/modules/33acrossAnalyticsAdapter.md new file mode 100644 index 00000000000..6375e29ee26 --- /dev/null +++ b/modules/33acrossAnalyticsAdapter.md @@ -0,0 +1,22 @@ +# 33Across Analytics Adapter + +```txt +Module Name: 33Across Analytics Adapter +Module Type: Analytics Adapter +``` + +## How to configure? + +```js +pbjs.enableAnalytics({ + provider: '33across', + options: { + /** The partner id assigned to you by the 33Across Team */ + pid: 12345, + /** Given by the 33Across Team */ + endpoint: 'https://localhost:9999/event', + /** [optional] timeout in milliseconds after which an auction report will sent regardless of auction state */ + timeout: 3000 + } +}); +``` diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js new file mode 100644 index 00000000000..c48a8a58033 --- /dev/null +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -0,0 +1,6459 @@ +/* eslint-disable indent */ +import { expect } from 'chai'; + +import analyticsAdapter, { locals } from 'modules/33acrossAnalyticsAdapter.js'; + +import * as mockGpt from 'test/spec/integration/faker/googletag.js'; + +import * as utils from 'src/utils.js'; +import * as events from 'src/events.js'; +import CONSTANTS from 'src/constants.json'; +const { EVENTS } = CONSTANTS; + +describe.only('33acrossAnalyticsAdapter:', function () { + let sandbox, clock; + + beforeEach(function () { + mockGpt.enable(); + sandbox = sinon.sandbox.create(); + clock = sandbox.useFakeTimers(1680287706002); + }); + + afterEach(function () { + sandbox.restore(); + analyticsAdapter.disableAnalytics(); + locals.reset(); + }); + + describe('enableAnalytics', function () { + it('should log an error if no endpoint is passed', function () { + sandbox.stub(utils, 'logError'); + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + pid: 'test-pid', + }, + }); + expect(utils.logError.calledOnce).to.be.true; + }); + + it('should log an error if no pid is passed', function () { + sandbox.stub(utils, 'logError'); + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + endpoint: 'test-endpoint', + }, + }); + expect(utils.logError.calledOnce).to.be.true; + }); + + it('should set the endpoint and pid if both are passed', function () { + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + endpoint: 'test-endpoint', + pid: 'test-pid', + }, + }); + expect(locals.endpoint).to.equal('test-endpoint'); + expect(locals.analyticsCache.pid).to.equal('test-pid'); + }); + + it('should set the timeout if passed', function () { + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + endpoint: 'test-endpoint', + pid: 'test-pid', + timeout: 1000, + }, + }); + expect(locals.transactionManager.timeout).to.equal(1000); + }); + + it('should set the timeout to 3000 if not passed', function () { + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + endpoint: 'test-endpoint', + pid: 'test-pid', + }, + }); + expect(locals.transactionManager.timeout).to.equal(3000); + }); + + it('should set the timeout to 3000 if passed a non-number', function () { + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + endpoint: 'test-endpoint', + pid: 'test-pid', + timeout: 'test', + }, + }); + expect(locals.transactionManager.timeout).to.equal(3000); + }); + + it('should set the timeout to 3000 if passed a negative number', function () { + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + endpoint: 'test-endpoint', + pid: 'test-pid', + timeout: -1, + }, + }); + expect(locals.transactionManager.timeout).to.equal(3000); + }); + + it('should allow the timeout to be set to 0 to allow immediate reporting', function () { + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + endpoint: 'test-endpoint', + pid: 'test-pid', + timeout: 0, + }, + }); + expect(locals.transactionManager.timeout).to.equal(0); + }); + }); + + describe('when handling events', function () { + const defaultTimeout = 3000; + beforeEach(function () { + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + endpoint: 'test-endpoint', + pid: 'test-pid', + timeout: defaultTimeout, + }, + }); + }); + + it('should send data to the endpoint when an auction is complete', function () { + sandbox.stub(navigator, 'sendBeacon').returns(true); + performStandardAuction(); + clock.tick(defaultTimeout + 1); + expect(navigator.sendBeacon.called).to.be.true; + }); + + xit('should send a correctly formed AnalyticsReport to the endpoint when an auction is complete', function () { + + }); + + function performStandardAuction() { + const mockEvents = getMockEvents(); + let { prebid, gam } = mockEvents; + + for (let auction of prebid) { + // Events in one possible order of execution + + // ADD_AD_UNITS + // REQUEST_BIDS + // BEFORE_REQUEST_BIDS + events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + // BID_REQUESTED + // BEFORE_BIDDER_HTTP + // NO_BID + // BIDDER_DONE + // BID_ADJUSTMENT + // BID_RESPONSE + // BIDDER_DONE + // NO_BID + // TCF2_ENFORCEMENT + events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); + // SET_TARGETING + // BIDDER_DONE + for (let gEvent of gam.slotRenderEnded) { + mockGpt.emitEvent(gEvent); + } + events.emit(EVENTS.BID_WON, auction.BID_WON); + // AD_RENDER_SUCCEEDED + // AD_RENDER_FAILED + // BID_TIMEOUT + + clock.tick(); + } + } + }); +}); + +function getMockEvents() { + const ad = '
ad
'; + + return { + gam: { + slotRenderEnded: [ + { + serviceName: 'publisher_ads', + slot: mockGpt.makeSlot({ code: 'box' }), + isEmpty: true, + slotContentChanged: true, + size: null, + advertiserId: null, + campaignId: null, + creativeId: null, + creativeTemplateId: null, + labelIds: null, + lineItemId: null, + isBackfill: false, + }, + { + serviceName: 'publisher_ads', + slot: mockGpt.makeSlot({ code: 'box' }), + isEmpty: false, + slotContentChanged: true, + size: [1, 1], + advertiserId: 12345, + campaignId: 400000001, + creativeId: 6789, + creativeTemplateId: null, + labelIds: null, + lineItemId: 1011, + isBackfill: false, + yieldGroupIds: null, + companyIds: null, + }, + { + serviceName: 'publisher_ads', + slot: mockGpt.makeSlot({ code: 'box' }), + isEmpty: false, + slotContentChanged: true, + size: [728, 90], + advertiserId: 12346, + campaignId: 299999000, + creativeId: 6790, + creativeTemplateId: null, + labelIds: null, + lineItemId: 1012, + isBackfill: false, + yieldGroupIds: null, + companyIds: null, + }, + ], + }, + prebid: [{ + AUCTION_INIT: { + auctionId: 'auction-000', + timestamp: 1680279732944, + auctionStatus: 'inProgress', + adUnits: [ + { + code: '/19968336/header-bid-tag-0', + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600], + ], + }, + }, + bids: [ + { + bidder: 'bidder0', + params: { + placementId: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + ], + sizes: [ + [300, 250], + [300, 600], + ], + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + ortb2Imp: { + ext: { + tid: 'ef947609-7b55-4420-8407-599760d0e373', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-0', + }, + pbadslot: '/19968336/header-bid-tag-0', + }, + gpid: '/19968336/header-bid-tag-0', + }, + }, + }, + { + code: '/19968336/header-bid-tag-1', + mediaTypes: { + banner: { + sizes: [ + [728, 90], + [970, 250], + ], + }, + }, + bids: [ + { + bidder: 'bidder0', + params: { + placementId: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + ], + sizes: [ + [728, 90], + [970, 250], + ], + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + ortb2Imp: { + ext: { + tid: 'abab4423-d962-41aa-adc7-0681f686c330', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-1', + }, + pbadslot: '/19968336/header-bid-tag-1', + }, + gpid: '/19968336/header-bid-tag-1', + }, + }, + }, + { + code: '/17118521/header-bid-tag-2', + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + floors: { + currency: 'USD', + schema: { + delimiter: '|', + fields: ['mediaType', 'size'], + }, + values: { + 'banner|300x250': 0.01, + }, + }, + bids: [ + { + bidder: '33across', + params: { + siteId: 'dukr5O4SWr6iygaKkGJozW', + productId: 'siab', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder0', + params: { + placementId: 20216405, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + ], + sizes: [[300, 250]], + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + }, + ], + adUnitCodes: [ + '/19968336/header-bid-tag-0', + '/19968336/header-bid-tag-1', + '/17118521/header-bid-tag-2', + ], + bidderRequests: [ + { + bidderCode: '33across', + auctionId: 'auction-000', + bidderRequestId: '15bef0b1fd2b2e', + bids: [ + { + bidder: '33across', + params: { + siteId: 'dukr5O4SWr6iygaKkGJozW', + productId: 'siab', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '278a991ca57141', + bidderRequestId: '15bef0b1fd2b2e', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732948, + }, + { + bidderCode: 'bidder0', + auctionId: 'auction-000', + bidderRequestId: '196b58215c10dc9', + bids: [ + { + bidder: 'bidder0', + params: { + placement_id: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'ef947609-7b55-4420-8407-599760d0e373', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-0', + }, + pbadslot: '/19968336/header-bid-tag-0', + }, + gpid: '/19968336/header-bid-tag-0', + }, + }, + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-0', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + sizes: [ + [300, 250], + [300, 600], + ], + bidId: '20661fc5fbb5d9b', + bidderRequestId: '196b58215c10dc9', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'abab4423-d962-41aa-adc7-0681f686c330', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-1', + }, + pbadslot: '/19968336/header-bid-tag-1', + }, + gpid: '/19968336/header-bid-tag-1', + }, + }, + mediaTypes: { + banner: { + sizes: [ + [728, 90], + [970, 250], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-1', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + sizes: [ + [728, 90], + [970, 250], + ], + bidId: '21ad295f40dd7ab', + bidderRequestId: '196b58215c10dc9', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 20216405, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '22108ac7b778717', + bidderRequestId: '196b58215c10dc9', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732963, + }, + ], + noBids: [], + bidsReceived: [], + bidsRejected: [], + winningBids: [], + timeout: 3000, + seatNonBids: [], + config: { + publisherId: '1001', + }, + }, + BID_WON: [{ + bidderCode: 'bidder0', + width: 300, + height: 250, + statusMessage: 'Bid available', + adId: '123456789abcdef', + requestId: '20661fc5fbb5d9b', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + auctionId: 'auction-000', + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 96846035, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/19968336/header-bid-tag-0', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + responseTimestamp: 1680279733304, + requestTimestamp: 1680279732963, + bidder: 'bidder0', + timeToRespond: 341, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '300x250', + adserverTargeting: { + bidder: 'bidder0', + hb_adid: '123456789abcdef', + hb_pb: '1.50', + hb_size: '300x250', + hb_source: 'client', + hb_format: 'banner', + hb_adomain: '', + hb_acat: '', + }, + status: 'rendered', + params: [ + { + placementId: 12345678, + }, + ], + }], + AUCTION_END: { + auctionId: 'auction-000', + timestamp: 1680279732944, + auctionEnd: 1680279733675, + auctionStatus: 'completed', + adUnits: [ + { + code: '/19968336/header-bid-tag-0', + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600], + ], + }, + }, + bids: [ + { + bidder: 'bidder0', + params: { + placementId: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + ], + sizes: [ + [300, 250], + [300, 600], + ], + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + ortb2Imp: { + ext: { + tid: 'ef947609-7b55-4420-8407-599760d0e373', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-0', + }, + pbadslot: '/19968336/header-bid-tag-0', + }, + gpid: '/19968336/header-bid-tag-0', + }, + }, + }, + { + code: '/19968336/header-bid-tag-1', + mediaTypes: { + banner: { + sizes: [ + [728, 90], + [970, 250], + ], + }, + }, + bids: [ + { + bidder: 'bidder0', + params: { + placementId: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + ], + sizes: [ + [728, 90], + [970, 250], + ], + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + ortb2Imp: { + ext: { + tid: 'abab4423-d962-41aa-adc7-0681f686c330', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-1', + }, + pbadslot: '/19968336/header-bid-tag-1', + }, + gpid: '/19968336/header-bid-tag-1', + }, + }, + }, + { + code: '/17118521/header-bid-tag-2', + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + floors: { + currency: 'USD', + schema: { + delimiter: '|', + fields: ['mediaType', 'size'], + }, + values: { + 'banner|300x250': 0.01, + }, + }, + bids: [ + { + bidder: '33across', + params: { + siteId: 'dukr5O4SWr6iygaKkGJozW', + productId: 'siab', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder1', + params: { + placement_id: '2b370ff1b325695fdfea', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder2', + params: { + networkId: '7314', + publisherSubId: 'NotTheBee.com', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder3', + params: { + tagid: '776781', + }, + size: [300, 250], + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder4', + params: { + pkey: 'APPvQEaPRAB8WaJrrW74hYib', + }, + size: [300, 250], + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder6', + params: { + unit: '542293636', + delDomain: 'adnimation-d.bidder6.net', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder0', + params: { + placementId: 20216405, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder0Ast', + params: { + placementId: '23118001', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder8', + params: { + siteId: '584353', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder5', + params: { + publisherId: '160685', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder9', + params: { + tagId: 'YWRuaW1hdGlvbi5jb20', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder10', + params: { + bidfloor: '0.01', + appId: '923b830f-b48b-4ec2-8586-f190599c29d0', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder7', + params: { + unitName: 'cnsmbl-audio-320x50-slider', + unitId: '10116', + siteId: '2000033', + networkId: '9969', + zoneIds: [2005074], + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder11', + params: { + cid: '8CUWWG7OK', + crid: '458063742', + size: '300x250', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder12', + params: { + placementId: '2889932524039905404', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'rubicon', + params: { + accountId: '12556', + pchain: 'playwire.com:fcddfba7adc2d929', + secure: true, + siteId: 143146, + video: { + language: 'en', + playerWidth: '640', + playerHeight: '480', + size_id: '201', + }, + zoneId: 1493791, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'pulsepoint', + params: { + cf: '300x250', + cp: 12345, + ct: 12345, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + ], + sizes: [[300, 250]], + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + }, + ], + adUnitCodes: [ + '/19968336/header-bid-tag-0', + '/19968336/header-bid-tag-1', + '/17118521/header-bid-tag-2', + ], + bidderRequests: [ + { + bidderCode: '33across', + auctionId: 'auction-000', + bidderRequestId: '15bef0b1fd2b2e', + bids: [ + { + bidder: '33across', + params: { + siteId: 'dukr5O4SWr6iygaKkGJozW', + productId: 'siab', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '278a991ca57141', + bidderRequestId: '15bef0b1fd2b2e', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732948, + }, + { + bidderCode: 'bidder5', + auctionId: 'auction-000', + bidderRequestId: '3291cb014b476f', + bids: [ + { + bidder: 'bidder5', + params: { + publisherId: '160685', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '4aa9cadf65349f', + bidderRequestId: '3291cb014b476f', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732951, + }, + { + bidderCode: 'bidder6', + auctionId: 'auction-000', + bidderRequestId: '5970694290d904', + bids: [ + { + bidder: 'bidder6', + params: { + unit: '542293636', + delDomain: 'adnimation-d.bidder6.net', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '679d8548884e77', + bidderRequestId: '5970694290d904', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732952, + }, + { + bidderCode: 'bidder7', + auctionId: 'auction-000', + bidderRequestId: '795a032f6fd0a4', + bids: [ + { + bidder: 'bidder7', + params: { + unitName: 'cnsmbl-audio-320x50-slider', + unitId: '10116', + siteId: '2000033', + networkId: '9969', + zoneIds: [2005074], + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '85f09b966e352', + bidderRequestId: '795a032f6fd0a4', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732954, + }, + { + bidderCode: 'bidder0Ast', + auctionId: 'auction-000', + bidderRequestId: '943e8011283df8', + bids: [ + { + bidder: 'bidder0Ast', + params: { + placement_id: '23118001', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '10eff0b5e62207e', + bidderRequestId: '943e8011283df8', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732955, + }, + { + bidderCode: 'bidder1', + auctionId: 'auction-000', + bidderRequestId: '11ef9ba88706948', + bids: [ + { + bidder: 'bidder1', + params: { + placement_id: '2b370ff1b325695fdfea', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '120d003a1ad64ee', + bidderRequestId: '11ef9ba88706948', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732957, + }, + { + bidderCode: 'bidder3', + auctionId: 'auction-000', + bidderRequestId: '135e79fd79c43d5', + bids: [ + { + bidder: 'bidder3', + params: { + tagid: '776781', + }, + size: [300, 250], + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '14002adaa6a668d', + bidderRequestId: '135e79fd79c43d5', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732959, + }, + { + bidderCode: 'bidder8', + auctionId: 'auction-000', + bidderRequestId: '1530e004dd66185', + bids: [ + { + bidder: 'bidder8', + params: { + siteId: '584353', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '160595fa6abe78f', + bidderRequestId: '1530e004dd66185', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732960, + }, + { + bidderCode: 'bidder10', + auctionId: 'auction-000', + bidderRequestId: '1735cd680171181', + bids: [ + { + bidder: 'bidder10', + params: { + bidfloor: '0.01', + appId: '923b830f-b48b-4ec2-8586-f190599c29d0', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '18f09d45818b9f9', + bidderRequestId: '1735cd680171181', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732962, + }, + { + bidderCode: 'bidder0', + auctionId: 'auction-000', + bidderRequestId: '196b58215c10dc9', + bids: [ + { + bidder: 'bidder0', + params: { + placement_id: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'ef947609-7b55-4420-8407-599760d0e373', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-0', + }, + pbadslot: '/19968336/header-bid-tag-0', + }, + gpid: '/19968336/header-bid-tag-0', + }, + }, + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-0', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + sizes: [ + [300, 250], + [300, 600], + ], + bidId: '20661fc5fbb5d9b', + bidderRequestId: '196b58215c10dc9', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'abab4423-d962-41aa-adc7-0681f686c330', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-1', + }, + pbadslot: '/19968336/header-bid-tag-1', + }, + gpid: '/19968336/header-bid-tag-1', + }, + }, + mediaTypes: { + banner: { + sizes: [ + [728, 90], + [970, 250], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-1', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + sizes: [ + [728, 90], + [970, 250], + ], + bidId: '21ad295f40dd7ab', + bidderRequestId: '196b58215c10dc9', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 20216405, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '22108ac7b778717', + bidderRequestId: '196b58215c10dc9', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732963, + }, + { + bidderCode: 'bidder4', + auctionId: 'auction-000', + bidderRequestId: '236be693ac8aab1', + bids: [ + { + bidder: 'bidder4', + params: { + pkey: 'APPvQEaPRAB8WaJrrW74hYib', + }, + size: [300, 250], + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '24e4aa3b3f8ca51', + bidderRequestId: '236be693ac8aab1', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732965, + }, + { + bidderCode: 'bidder12', + auctionId: 'auction-000', + bidderRequestId: '25f69703c7839e2', + bids: [ + { + bidder: 'bidder12', + params: { + placementId: '2889932524039905404', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '265f29671f2228c', + bidderRequestId: '25f69703c7839e2', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732966, + }, + { + bidderCode: 'pulsepoint', + auctionId: 'auction-000', + bidderRequestId: '27676b839dab671', + bids: [ + { + bidder: 'pulsepoint', + params: { + cf: '300x250', + cp: 12345, + ct: 12345, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '28ee1841acb5722', + bidderRequestId: '27676b839dab671', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732967, + }, + { + bidderCode: 'bidder2', + auctionId: 'auction-000', + bidderRequestId: '29ecdfe8cb58dcf', + bids: [ + { + bidder: 'bidder2', + params: { + networkId: '7314', + publisherSubId: 'NotTheBee.com', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '30c770cd8b6ecb6', + bidderRequestId: '29ecdfe8cb58dcf', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732969, + }, + { + bidderCode: 'bidder9', + auctionId: 'auction-000', + bidderRequestId: '31885f8b47e177c', + bids: [ + { + bidder: 'bidder9', + params: { + tagId: 'YWRuaW1hdGlvbi5jb20', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '324820900e1fe2e', + bidderRequestId: '31885f8b47e177c', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732982, + }, + { + bidderCode: 'rubicon', + auctionId: 'auction-000', + bidderRequestId: '33b0897ae1ec03', + bids: [ + { + bidder: 'rubicon', + params: { + accountId: 12556, + pchain: 'playwire.com:fcddfba7adc2d929', + secure: true, + siteId: 143146, + video: { + language: 'en', + playerWidth: '640', + playerHeight: '480', + size_id: '201', + }, + zoneId: 1493791, + floor: null, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '34872cacff0a74d', + bidderRequestId: '33b0897ae1ec03', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + startTime: 1680279732984, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732983, + }, + { + bidderCode: 'bidder11', + auctionId: 'auction-000', + bidderRequestId: '35411e18ed77aa', + bids: [ + { + bidder: 'bidder11', + params: { + cid: '8CUWWG7OK', + crid: '458063742', + size: '300x250', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '361b21bdba26d54', + bidderRequestId: '35411e18ed77aa', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732985, + }, + ], + noBids: [ + { + bidder: 'bidder5', + params: { + publisherId: '160685', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '4aa9cadf65349f', + bidderRequestId: '3291cb014b476f', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder4', + params: { + pkey: 'APPvQEaPRAB8WaJrrW74hYib', + }, + size: [300, 250], + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '24e4aa3b3f8ca51', + bidderRequestId: '236be693ac8aab1', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder11', + params: { + cid: '8CUWWG7OK', + crid: '458063742', + size: '300x250', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '361b21bdba26d54', + bidderRequestId: '35411e18ed77aa', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder6', + params: { + unit: '542293636', + delDomain: 'adnimation-d.bidder6.net', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '679d8548884e77', + bidderRequestId: '5970694290d904', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder2', + params: { + networkId: '7314', + publisherSubId: 'NotTheBee.com', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '30c770cd8b6ecb6', + bidderRequestId: '29ecdfe8cb58dcf', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder8', + params: { + siteId: '584353', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '160595fa6abe78f', + bidderRequestId: '1530e004dd66185', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'pulsepoint', + params: { + cf: '300x250', + cp: 12345, + ct: 12345, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '28ee1841acb5722', + bidderRequestId: '27676b839dab671', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'rubicon', + params: { + accountId: 12556, + pchain: 'playwire.com:fcddfba7adc2d929', + secure: true, + siteId: 143146, + video: { + language: 'en', + playerWidth: '640', + playerHeight: '480', + size_id: '201', + }, + zoneId: 1493791, + floor: null, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '34872cacff0a74d', + bidderRequestId: '33b0897ae1ec03', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + startTime: 1680279732984, + }, + { + bidder: 'bidder3', + params: { + tagid: '776781', + }, + size: [300, 250], + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '14002adaa6a668d', + bidderRequestId: '135e79fd79c43d5', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0Ast', + params: { + placement_id: '23118001', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '10eff0b5e62207e', + bidderRequestId: '943e8011283df8', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 20216405, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '22108ac7b778717', + bidderRequestId: '196b58215c10dc9', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder7', + params: { + unitName: 'cnsmbl-audio-320x50-slider', + unitId: '10116', + siteId: '2000033', + networkId: '9969', + zoneIds: [2005074], + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '85f09b966e352', + bidderRequestId: '795a032f6fd0a4', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder1', + params: { + placement_id: '2b370ff1b325695fdfea', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '120d003a1ad64ee', + bidderRequestId: '11ef9ba88706948', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: '33across', + params: { + siteId: 'dukr5O4SWr6iygaKkGJozW', + productId: 'siab', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '278a991ca57141', + bidderRequestId: '15bef0b1fd2b2e', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder9', + params: { + tagId: 'YWRuaW1hdGlvbi5jb20', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '324820900e1fe2e', + bidderRequestId: '31885f8b47e177c', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder10', + params: { + bidfloor: '0.01', + appId: '923b830f-b48b-4ec2-8586-f190599c29d0', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '18f09d45818b9f9', + bidderRequestId: '1735cd680171181', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder12', + params: { + placementId: '2889932524039905404', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '265f29671f2228c', + bidderRequestId: '25f69703c7839e2', + auctionId: 'auction-000', + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + bidsReceived: [ + { + bidderCode: 'bidder0', + width: 300, + height: 250, + statusMessage: 'Bid available', + adId: '123456789abcdef', + requestId: '20661fc5fbb5d9b', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + auctionId: 'auction-000', + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 96846035, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/19968336/header-bid-tag-0', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + bidder: 'bidder0', + timeToRespond: 341, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '300x250', + status: 'rendered', + params: [ + { + placementId: 12345678, + }, + ], + }, + { + bidderCode: 'bidder0', + width: 728, + height: 90, + statusMessage: 'Bid available', + adId: '3969aa0dc284f9e', + requestId: '21ad295f40dd7ab', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + auctionId: 'auction-000', + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 98476543, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/19968336/header-bid-tag-1', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + responseTimestamp: 1680279733305, + requestTimestamp: 1680279732963, + bidder: 'bidder0', + timeToRespond: 342, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '728x90', + status: 'targetingSet', + }, + ], + bidsRejected: [], + winningBids: [], + timeout: 3000, + seatNonBids: [], + }, + }] + }; +} From 14ee90a7077659e56b28a0f21d112174349f1eb7 Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Thu, 6 Apr 2023 10:19:13 -0500 Subject: [PATCH 02/41] refactoring + additional unit test coverage --- modules/33acrossAnalyticsAdapter.js | 167 +++-- .../modules/33acrossAnalyticsAdapter_spec.js | 694 ++++++++++++++---- 2 files changed, 683 insertions(+), 178 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 1372f641dd4..727d8d029ad 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -1,13 +1,14 @@ /* eslint-disable no-console */ import { logError, logWarn, logInfo } from '../src/utils.js'; import { getGlobal } from '../src/prebidGlobal.js'; -import adapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'; +import buildAdapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'; import adapterManager from '../src/adapterManager.js'; import CONSTANTS from '../src/constants.json'; const { EVENTS } = CONSTANTS; const ANALYTICS_VERSION = '1.0.0'; const PROVIDER_NAME = '33across'; +const DEFAULT_TRANSACTION_TIMEOUT = 3000; const log = getLogger(); @@ -20,10 +21,16 @@ const log = getLogger(); * @property {string} pbjsVersion * @property {Auction[]} auctions * @property {Bid[]} bidsWon + */ + +/** * @typedef {Object} Auction * @property {AdUnit[]} adUnits * @property {string} auctionId * @property {Object} userIds + */ + +/** * @typedef {Object} BidResponse * @property {number} cpm * @property {string} cur @@ -31,6 +38,9 @@ const log = getLogger(); * @property {number} cpmFloor * @property {string} mediaType * @property {string} size + */ + +/** * @typedef {Object} Bid * @property {string} bidder * @property {string} source @@ -38,6 +48,9 @@ const log = getLogger(); * @property {BidResponse} bidResponse * @property {string} [auctionId] // do not include in report * @property {string} [transactionId] // do not include in report + */ + +/** * @typedef {Object} AdUnit * @property {string} transactionId * @property {string} adUnitCode @@ -53,24 +66,33 @@ const log = getLogger(); * all bids are complete. */ class TransactionManager { - timeoutId = null; - + #timeoutId = null; #unsent = 0; + #timeout; + #transactions = {}; + #analyticsCache; + #endpoint; + get unsent() { return this.#unsent; } + set unsent(value) { this.#unsent = value; + if (this.#unsent <= 0) { - sendReport(locals.analyticsCache); + this.clearTimeout(); + + sendReport(this.#analyticsCache, this.#endpoint); + this.#transactions = {}; } } - #transactions = {}; - - constructor({timeout}) { - this.timeout = timeout; + constructor({ timeout, analyticsCache, endpoint }) { + this.#timeout = timeout; + this.#analyticsCache = analyticsCache; + this.#endpoint = endpoint; } add(transactionId) { @@ -82,7 +104,7 @@ class TransactionManager { }; ++this.unsent; - this.restartSendTimeout(); + this.#restartSendTimeout(); // NOTE: This could be a private method } que(transactionId) { @@ -92,17 +114,24 @@ class TransactionManager { } this.#transactions[transactionId].status = 'queued'; --this.unsent; + log.info(`Queued transaction "${transactionId}". ${this.#unsent} unsent.`, this.#transactions); } - restartSendTimeout() { - if (this.timeoutId) { - clearTimeout(this.timeoutId); - } - this.timeoutId = setTimeout(() => { - if (this.timeout !== 0) log.warn(`Timed out waiting for ad transactions to complete. Sending report.`); + #restartSendTimeout() { + this.clearTimeout(); + + this.#timeoutId = setTimeout(() => { + if (this.#timeout !== 0) { + log.warn(`Timed out waiting for ad transactions to complete. Sending report.`); + } + this.unsent = 0; - }, this.timeout); + }, this.#timeout); + } + + clearTimeout() { + return clearTimeout(this.#timeoutId); } get() { @@ -121,54 +150,80 @@ export const locals = { /** @type {AnalyticsReport} */ analyticsCache: undefined, /** sets all locals to undefined */ - reset: function () { + reset() { this.transactionManager = undefined; this.endpoint = undefined; this.analyticsCache = undefined; } } -let analyticsAdapter = Object.assign( - adapter({ analyticsType: 'endpoint' }), +const analyticsAdapter = Object.assign( + buildAdapter({ analyticsType: 'endpoint' }), { track: analyticEventHandler } ); analyticsAdapter.originEnableAnalytics = analyticsAdapter.enableAnalytics; analyticsAdapter.enableAnalytics = enableAnalyticsWrapper; -function enableAnalyticsWrapper(config) { - locals.endpoint = config?.options?.endpoint; - if (!locals.endpoint) { - log.error(`No endpoint provided for "options.endpoint". No analytics will be sent.`); +function enableAnalyticsWrapper(config = {}) { + const { options = {} } = config; + const endpoint = options.endpoint; + + if (!endpoint) { + log.error('No endpoint provided for "options.endpoint". No analytics will be sent.'); + return; } - const pid = config?.options?.pid; + const pid = options.pid; if (!pid) { - log.error(`No partnerId provided for "options.pid". No analytics will be sent.`); + log.error('No partnerId provided for "options.pid". No analytics will be sent.'); + return; } - locals.analyticsCache = newAnalyticsReport(pid); - let timeout = 3000; // default timeout - if (typeof config?.options?.timeout === 'number' && config?.options?.timeout >= 0) { - timeout = config.options.timeout; - } else { - log.info(`Invalid timeout provided for "options.timeout". Using default timeout of 3000ms.`); + const analyticsCache = locals.analyticsCache = newAnalyticsReport(pid); + const transactionManager = locals.transactionManager = createTransactionManager(options.timeout, analyticsCache, endpoint); + + subscribeToGamSlotRenderEvent(transactionManager); + + analyticsAdapter.originEnableAnalytics(config); +} + +function calculateTransactionTimeout(configTimeout) { + if (typeof configTimeout === 'undefined') { + return DEFAULT_TRANSACTION_TIMEOUT; + } + + if (typeof configTimeout === 'number' && configTimeout >= 0) { + return configTimeout; } - locals.transactionManager = new TransactionManager({timeout}); + log.info(`Invalid timeout provided for "options.timeout". Using default timeout of 3000ms.`); + + return DEFAULT_TRANSACTION_TIMEOUT; +} + +function createTransactionManager(configTimeout, analyticsCache, endpoint) { + return new TransactionManager({ + timeout: calculateTransactionTimeout(configTimeout), + analyticsCache, + endpoint + }); +} + +function subscribeToGamSlotRenderEvent(transactionManager) { window.googletag = window.googletag || {}; window.googletag.cmd = window.googletag.cmd || []; window.googletag.cmd.push(() => { window.googletag.pubads().addEventListener('slotRenderEnded', event => { log.info('slotRenderEnded', event); + const slot = `${event.slot.getAdUnitPath()}:${event.slot.getSlotElementId()}`; - locals.transactionManager.que(slot); + + transactionManager.que(slot); }); }); - - analyticsAdapter.originEnableAnalytics(config); } /** necessary for testing */ @@ -206,23 +261,24 @@ function newAnalyticsReport(pid) { /** * @returns {Auction} */ -function parseAuction({adUnits, auctionId, bidderRequests}) { +function parseAuction({ adUnits, auctionId, bidderRequests }) { if (typeof auctionId !== 'string' || !Array.isArray(bidderRequests)) { - log.error(`Analytics adapter failed to parse auction.`); + log.error('Analytics adapter failed to parse auction.'); } return { adUnits: adUnits.map(unit => parseAdUnit(unit)), auctionId, - userIds: getGlobal().getUserIds() + userIds: getGlobal().getUserIds?.() || {} } } /** * @returns {AdUnit} */ -function parseAdUnit({transactionId, code, slotId, mediaTypes, sizes, bids}) { +function parseAdUnit({ transactionId, code, slotId, mediaTypes, sizes, bids }) { log.warn(`parsing adUnit, slotId not yet implemented`); + return { transactionId, adUnitCode: code, @@ -236,13 +292,15 @@ function parseAdUnit({transactionId, code, slotId, mediaTypes, sizes, bids}) { /** * @returns {Bid} */ -function parseBid({auctionId, bidder, source, status, transactionId}) { - log.warn(`parsing bid: source and status may need to be populated by downstream event. bidResponse not yet implemented`); +function parseBid({ auctionId, bidder, source, status, transactionId }) { + log.warn('parsing bid: source and status may need to be populated by downstream event. bidResponse not yet implemented'); + return { bidder, source, status, - bidResponse: parseBidResponse(), + transactionId, + bidResponse: parseBidResponse(), // Not sending any params } } @@ -265,25 +323,31 @@ function parseBidResponse(args) { * @param {Object} args * @param {EVENTS[keyof EVENTS]} args.eventType */ -function analyticEventHandler({eventType, args}) { +function analyticEventHandler({ eventType, args }) { log.info(eventType, args); switch (eventType) { - case EVENTS.AUCTION_INIT: + case EVENTS.AUCTION_INIT: // Move these events to top of fn. for (let adUnit of args.adUnits) { locals.transactionManager.add(adUnit.transactionId); } + break; case EVENTS.BID_REQUESTED: + // It's probably a better idea to do the add at trasaction manager. break; case EVENTS.AUCTION_END: const auction = parseAuction(args); + locals.analyticsCache.auctions.push(auction); + break; // see also `slotRenderEnded` GAM-event listener case EVENTS.BID_WON: const bidWon = parseBid(args); + locals.analyticsCache.bidsWon.push(bidWon); locals.transactionManager.que(bidWon.transactionId); + break; case EVENTS.AD_RENDER_SUCCEEDED: break; @@ -296,18 +360,23 @@ function analyticEventHandler({eventType, args}) { /** * Guarantees sending of data without waiting for response, even after page is left/closed + * * @param {AnalyticsReport} report + * @param {string} endpoint */ -function sendReport(report) { - if (navigator.sendBeacon(locals.endpoint, JSON.stringify(report))) { - log.info(`Analytics report sent to ${locals.endpoint}`, report); - } else { - log.error(`Analytics report exceeded User-Agent data limits and was not sent.`, report); +function sendReport(report, endpoint) { + if (navigator.sendBeacon(endpoint, JSON.stringify(report))) { + log.info(`Analytics report sent to ${endpoint}`, report); + + return; } + + log.error('Analytics report exceeded User-Agent data limits and was not sent.', report); } function getLogger() { const LPREFIX = `${PROVIDER_NAME} Analytics: `; + return { info: (msg, ...args) => logInfo(`${LPREFIX}${msg}`, ...args), warn: (msg, ...args) => logWarn(`${LPREFIX}${msg}`, ...args), diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index c48a8a58033..21d04816c26 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -1,7 +1,7 @@ /* eslint-disable indent */ import { expect } from 'chai'; -import analyticsAdapter, { locals } from 'modules/33acrossAnalyticsAdapter.js'; +import analyticsAdapter from 'modules/33acrossAnalyticsAdapter.js'; import * as mockGpt from 'test/spec/integration/faker/googletag.js'; @@ -10,177 +10,524 @@ import * as events from 'src/events.js'; import CONSTANTS from 'src/constants.json'; const { EVENTS } = CONSTANTS; -describe.only('33acrossAnalyticsAdapter:', function () { +describe.only('33acrossAnalyticsAdapter:', function() { let sandbox, clock; - beforeEach(function () { + beforeEach(function() { mockGpt.enable(); sandbox = sinon.sandbox.create(); clock = sandbox.useFakeTimers(1680287706002); }); - afterEach(function () { + afterEach(function() { sandbox.restore(); analyticsAdapter.disableAnalytics(); - locals.reset(); }); - describe('enableAnalytics', function () { - it('should log an error if no endpoint is passed', function () { - sandbox.stub(utils, 'logError'); - analyticsAdapter.enableAnalytics({ - provider: '33across', - options: { - pid: 'test-pid', - }, - }); - expect(utils.logError.calledOnce).to.be.true; - }); + describe('enableAnalytics', function() { + context('when endpoint hasn\'t been given', function() { + it('logs an error', function() { + sandbox.spy(utils, 'logError'); - it('should log an error if no pid is passed', function () { - sandbox.stub(utils, 'logError'); - analyticsAdapter.enableAnalytics({ - provider: '33across', - options: { - endpoint: 'test-endpoint', - }, - }); - expect(utils.logError.calledOnce).to.be.true; - }); + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + pid: 'test-pid', + }, + }); - it('should set the endpoint and pid if both are passed', function () { - analyticsAdapter.enableAnalytics({ - provider: '33across', - options: { - endpoint: 'test-endpoint', - pid: 'test-pid', - }, + sinon.assert.calledOnce(utils.logError); + sinon.assert.calledWithExactly(utils.logError, '33across Analytics: No endpoint provided for "options.endpoint". No analytics will be sent.'); }); - expect(locals.endpoint).to.equal('test-endpoint'); - expect(locals.analyticsCache.pid).to.equal('test-pid'); }); - it('should set the timeout if passed', function () { - analyticsAdapter.enableAnalytics({ - provider: '33across', - options: { - endpoint: 'test-endpoint', - pid: 'test-pid', - timeout: 1000, - }, - }); - expect(locals.transactionManager.timeout).to.equal(1000); - }); + context('when pid hasn\'t been given', function() { + it('logs an error', function() { + sandbox.spy(utils, 'logError'); + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + endpoint: 'test-endpoint', + }, + }); - it('should set the timeout to 3000 if not passed', function () { - analyticsAdapter.enableAnalytics({ - provider: '33across', - options: { - endpoint: 'test-endpoint', - pid: 'test-pid', - }, + sinon.assert.calledOnce(utils.logError); + sinon.assert.calledWithExactly(utils.logError, '33across Analytics: No partnerId provided for "options.pid". No analytics will be sent.'); }); - expect(locals.transactionManager.timeout).to.equal(3000); }); - it('should set the timeout to 3000 if passed a non-number', function () { - analyticsAdapter.enableAnalytics({ - provider: '33across', - options: { - endpoint: 'test-endpoint', - pid: 'test-pid', - timeout: 'test', - }, + context('when pid and endpoint have been given', function() { + context('and an invalid timeout config value has been given', function() { + it('logs an info message', function() { + sandbox.spy(utils, 'logInfo'); + + [ null, 'foo', -1 ].forEach((value, index) => { + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + pid: 'test-pid', + endpoint: 'test-endpoint', + timeout: value + }, + }); + analyticsAdapter.disableAnalytics(); + + sinon.assert.calledWithExactly(utils.logInfo.getCall(index), '33across Analytics: Invalid timeout provided for "options.timeout". Using default timeout of 3000ms.'); + }); + }); }); - expect(locals.transactionManager.timeout).to.equal(3000); - }); - it('should set the timeout to 3000 if passed a negative number', function () { - analyticsAdapter.enableAnalytics({ - provider: '33across', - options: { - endpoint: 'test-endpoint', - pid: 'test-pid', - timeout: -1, - }, + it('logs any received GAM slotRenderEnded event', function() { + sandbox.spy(utils, 'logInfo'); + + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + pid: 'test-pid', + endpoint: 'test-endpoint' + }, + }); + + window.googletag.cmd.forEach(fn => fn()); + + const { gam } = getMockEvents(); + const [ gEvent ] = gam.slotRenderEnded; + + mockGpt.emitEvent('slotRenderEnded', gEvent); + + sinon.assert.calledOnce(utils.logInfo); + sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: slotRenderEnded', Object.assign({ eventName: 'slotRenderEnded'}, gEvent)); }); - expect(locals.transactionManager.timeout).to.equal(3000); }); + }); + + describe('disableAnalytics()', function() { + xit('removes the GAM slotRenderEnded event listeners', ()=> { - it('should allow the timeout to be set to 0 to allow immediate reporting', function () { - analyticsAdapter.enableAnalytics({ - provider: '33across', - options: { - endpoint: 'test-endpoint', - pid: 'test-pid', - timeout: 0, - }, - }); - expect(locals.transactionManager.timeout).to.equal(0); }); }); - describe('when handling events', function () { - const defaultTimeout = 3000; - beforeEach(function () { - analyticsAdapter.enableAnalytics({ - provider: '33across', - options: { - endpoint: 'test-endpoint', - pid: 'test-pid', - timeout: defaultTimeout, - }, - }); + describe('when handling events', function() { + beforeEach(function() { + this.defaultTimeout = 3000; + this.enableAnalytics = (options) => { + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + endpoint: 'test-endpoint', + pid: 'test-pid', + timeout: this.defaultTimeout, + ...options + }, + }); + } }); - it('should send data to the endpoint when an auction is complete', function () { + it('sends a correctly formed AnalyticsReport to the given endpoint when an auction is complete', function() { + this.enableAnalytics({ endpoint: 'foo-endpoint' }); + sandbox.stub(navigator, 'sendBeacon').returns(true); performStandardAuction(); - clock.tick(defaultTimeout + 1); - expect(navigator.sendBeacon.called).to.be.true; + clock.tick(this.defaultTimeout + 1); + + sinon.assert.calledOnce(navigator.sendBeacon); + sinon.assert.calledWithExactly(navigator.sendBeacon, 'foo-endpoint', + JSON.stringify(getStandardAnalyticsReport())); }); - xit('should send a correctly formed AnalyticsReport to the endpoint when an auction is complete', function () { + context('when an error occurs while sending the AnalyticsReport', function() { + it('logs an error', function() { + sandbox.spy(utils, 'logError'); + this.enableAnalytics({ endpoint: 'foo-endpoint' }); + + sandbox.stub(navigator, 'sendBeacon').returns(false); + performStandardAuction(); + clock.tick(this.defaultTimeout + 1); + sinon.assert.calledOnce(utils.logError); + + // FIXME: The args match doesn't work + // sinon.assert.calledWith(utils.logError, 'Analytics report exceeded User-Agent data limits and was not sent.', sinon.match.object); + }); }); - function performStandardAuction() { - const mockEvents = getMockEvents(); - let { prebid, gam } = mockEvents; + context('when a transaction doesn\'t reach its complete state', function() { + context('and a timeout config value has been given', function() { + context('and the timeout value has elapsed', function() { + it('logs an error', function() { + this.enableAnalytics({ timeout: 2000 }); - for (let auction of prebid) { - // Events in one possible order of execution + sandbox.spy(utils, 'logWarn'); - // ADD_AD_UNITS - // REQUEST_BIDS - // BEFORE_REQUEST_BIDS - events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); - // BID_REQUESTED - // BEFORE_BIDDER_HTTP - // NO_BID - // BIDDER_DONE - // BID_ADJUSTMENT - // BID_RESPONSE - // BIDDER_DONE - // NO_BID - // TCF2_ENFORCEMENT - events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); - // SET_TARGETING - // BIDDER_DONE - for (let gEvent of gam.slotRenderEnded) { - mockGpt.emitEvent(gEvent); - } - events.emit(EVENTS.BID_WON, auction.BID_WON); - // AD_RENDER_SUCCEEDED - // AD_RENDER_FAILED - // BID_TIMEOUT + performAuctionWithMissingBidWon(); - clock.tick(); - } - } + clock.tick(2001); + + sinon.assert.calledWithExactly(utils.logWarn, '33across Analytics: Timed out waiting for ad transactions to complete. Sending report.'); + }); + }) + }); + + context('and a timeout config value hasn\'t been given', function() { + context('and the default timeout has elapsed', function() { + it('logs an error', function() { + this.enableAnalytics(); + + sandbox.spy(utils, 'logWarn'); + + performAuctionWithMissingBidWon(); + + clock.tick(this.defaultTimeout + 1); + + sinon.assert.calledWithExactly(utils.logWarn, '33across Analytics: Timed out waiting for ad transactions to complete. Sending report.'); + }); + }) + }); + + xit('sends the report in its current state', function() { + sandbox.stub(navigator, 'sendBeacon').returns(true); + + // As soon as the analyticsAdapter is enabled, its event handler + // will start getting events from another unit test. + // Every enablement of the adapter has its own instance + // of the transaction manager but the mocked transaction IDs + // are the same. + // + // We need to start generation different transaction IDs for the mocked + // events and evaluate having a structure like + // this.#transactions[auctionId][transactionId] + this.enableAnalytics(); + + performAuctionWithMissingBidWon(); + + clock.tick(this.defaultTimeout + 1); + + sinon.assert.calledOnce(navigator.sendBeacon); + // sinon.assert.calledWith(navigator.sendBeacon, 'test-endpoint'); + }); + }); }); }); +/** + * Events in possible order of execution + * ADD_AD_UNITS + * REQUEST_BIDS + * BEFORE_REQUEST_BIDS + * AUCTION_INIT + * BID_REQUESTED + * BEFORE_BIDDER_HTTP + * NO_BID + * BIDDER_DONE + * BID_ADJUSTMENT + * BID_RESPONSE + * BIDDER_DONE + * NO_BID + * TCF2_ENFORCEMENT + * AUCTION_END + * SET_TARGETING + * BIDDER_DONE + * - GAM SLOT RENDER EVENT + * BID_WON + * AD_RENDER_SUCCEEDED + * AD_RENDER_FAILED + * BID_TIMEOUT + */ + +function performStandardAuction() { + const mockEvents = getMockEvents(); + const { prebid, gam } = mockEvents; + + for (let auction of prebid) { + events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); + + for (let gEvent of gam.slotRenderEnded) { + mockGpt.emitEvent(gEvent); + } + + auction.BID_WON.forEach((bidWonEvent) => { + events.emit(EVENTS.BID_WON, bidWonEvent); + }); + } +} + +function performAuctionWithMissingBidWon() { + const mockEvents = getMockEvents(); + let { prebid, gam } = mockEvents; + + const [ auction ] = prebid; + + events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); +} + +function getStandardAnalyticsReport() { + return { + siteId: '', + pid: 'test-pid', + src: 'pbjs', + analyticsVersion: '1.0.0', + pbjsVersion: '$prebid.version$', + auctions: [{ + adUnits: [{ + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + adUnitCode: '/19968336/header-bid-tag-0', + slotId: '', + mediaTypes: ['banner'], + sizes: ['300x250', '300x600'], + bids: [{ + bidder: 'bidder0', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }] + }, { + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + adUnitCode: '/19968336/header-bid-tag-1', + slotId: '', + mediaTypes: ['banner'], + sizes: ['728x90', '970x250'], + bids: [{ + bidder: 'bidder0', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }] + }, { + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + adUnitCode: '/17118521/header-bid-tag-2', + slotId: '', + mediaTypes: ['banner'], + sizes: ['300x250'], + bids: [{ + bidder: '33across', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder1', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder2', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder3', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder4', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder6', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder0', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder0Ast', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder8', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder5', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder9', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder10', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder7', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder11', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder12', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'rubicon', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'pulsepoint', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }] + }], + auctionId: 'auction-000', + userIds: {} + }], + bidsWon: [{ + bidder: 'bidder0', + source: 'client', + status: 'rendered', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder0', + source: 'client', + status: 'rendered', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }, { + bidder: 'bidder0', + source: 'client', + status: 'targetingSet', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + bidResponse: { + cpm: 0, + cur: '', + cpmOrig: 0, + cpmFloor: 0, + mediaType: '', + size: '' + } + }] + }; +} + function getMockEvents() { const ad = '
ad
'; @@ -1047,6 +1394,95 @@ function getMockEvents() { placementId: 12345678, }, ], + }, + { + bidderCode: 'bidder0', + width: 728, + height: 90, + statusMessage: 'Bid available', + adId: '3969aa0dc284f9e', + requestId: '21ad295f40dd7ab', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + auctionId: 'auction-000', + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 98476543, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/19968336/header-bid-tag-1', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + responseTimestamp: 1680279733304, + requestTimestamp: 1680279732963, + bidder: 'bidder0', + timeToRespond: 342, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '728x90', + adserverTargeting: { + bidder: 'bidder0', + hb_adid: '3969aa0dc284f9e', + hb_pb: '1.50', + hb_size: '728x90', + hb_source: 'client', + hb_format: 'banner', + hb_adomain: '', + hb_acat: '', + }, + status: 'rendered', + params: [ + { + placementId: 12345678, + }, + ], + }, + { + bidderCode: 'bidder0', + width: 300, + height: 250, + statusMessage: 'Bid available', + adId: '3969aa0dc284f9e', + requestId: '15bef0b1fd2b2e', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + auctionId: 'auction-000', + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 98476543, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/17118521/header-bid-tag-2', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + responseTimestamp: 1680279733305, + requestTimestamp: 1680279732963, + bidder: 'bidder0', + timeToRespond: 342, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '728x90', + status: 'targetingSet', }], AUCTION_END: { auctionId: 'auction-000', From fb6487675ae90cb6133f2bef2234986802fb01fe Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Fri, 7 Apr 2023 10:36:53 -0500 Subject: [PATCH 03/41] Additional refactoring of 33x analytics unit tests --- .../modules/33acrossAnalyticsAdapter_spec.js | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 21d04816c26..2aeaa6275b3 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -102,7 +102,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { }); describe('disableAnalytics()', function() { - xit('removes the GAM slotRenderEnded event listeners', ()=> { + xit('removes the GAM slotRenderEnded event listeners', function() { }); }); @@ -123,16 +123,23 @@ describe.only('33acrossAnalyticsAdapter:', function() { } }); - it('sends a correctly formed AnalyticsReport to the given endpoint when an auction is complete', function() { - this.enableAnalytics({ endpoint: 'foo-endpoint' }); + context('when the AnalyticsReport is sent successfully to the given endpoint when an auction is complete', function() { + it('logs an info message', function() { + sandbox.spy(utils, 'logInfo'); + + this.enableAnalytics({ endpoint: 'foo-endpoint' }); + + sandbox.stub(navigator, 'sendBeacon') + .withArgs('foo-endpoint', JSON.stringify(getStandardAnalyticsReport())) + .returns(true); + + performStandardAuction(); - sandbox.stub(navigator, 'sendBeacon').returns(true); - performStandardAuction(); - clock.tick(this.defaultTimeout + 1); + clock.tick(this.defaultTimeout + 1); - sinon.assert.calledOnce(navigator.sendBeacon); - sinon.assert.calledWithExactly(navigator.sendBeacon, 'foo-endpoint', - JSON.stringify(getStandardAnalyticsReport())); + sinon.assert.calledOnce(navigator.sendBeacon); + sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: Analytics report sent to foo-endpoint', sinon.match.object); + }); }); context('when an error occurs while sending the AnalyticsReport', function() { @@ -145,9 +152,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { clock.tick(this.defaultTimeout + 1); sinon.assert.calledOnce(utils.logError); - - // FIXME: The args match doesn't work - // sinon.assert.calledWith(utils.logError, 'Analytics report exceeded User-Agent data limits and was not sent.', sinon.match.object); + sinon.assert.calledWith(utils.logError, '33across Analytics: Analytics report exceeded User-Agent data limits and was not sent.', sinon.match.object); }); }); From 4215e3ecf52cee5f1891fa30634e92953d74d4b0 Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Wed, 12 Apr 2023 16:33:23 -0500 Subject: [PATCH 04/41] Apply CR feedback - Single responsibility for transaction manager - Send one report per auction - Clear pending events that were causing conflicts in specs --- modules/33acrossAnalyticsAdapter.js | 62 ++++--- .../modules/33acrossAnalyticsAdapter_spec.js | 170 +++++++++--------- 2 files changed, 118 insertions(+), 114 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 727d8d029ad..2b018300d90 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -62,6 +62,7 @@ const log = getLogger(); /** * After the first bid is initiated, we wait until every bid is completed before sending the report. + * * We will listen for the `bidWon` event and for `slotRenderEnded` event from GAM to determine when * all bids are complete. */ @@ -70,8 +71,7 @@ class TransactionManager { #unsent = 0; #timeout; #transactions = {}; - #analyticsCache; - #endpoint; + #onComplete; get unsent() { return this.#unsent; @@ -81,18 +81,17 @@ class TransactionManager { this.#unsent = value; if (this.#unsent <= 0) { - this.clearTimeout(); + this.#clearTimeout(); - sendReport(this.#analyticsCache, this.#endpoint); + this.#onComplete(); this.#transactions = {}; } } - constructor({ timeout, analyticsCache, endpoint }) { + constructor({ timeout, onComplete }) { this.#timeout = timeout; - this.#analyticsCache = analyticsCache; - this.#endpoint = endpoint; + this.#onComplete = onComplete; } add(transactionId) { @@ -119,7 +118,7 @@ class TransactionManager { } #restartSendTimeout() { - this.clearTimeout(); + this.#clearTimeout(); this.#timeoutId = setTimeout(() => { if (this.#timeout !== 0) { @@ -130,13 +129,9 @@ class TransactionManager { }, this.#timeout); } - clearTimeout() { + #clearTimeout() { return clearTimeout(this.#timeoutId); } - - get() { - return this.#transactions; - } } /** @@ -144,14 +139,14 @@ class TransactionManager { */ export const locals = { /** @type {TransactionManager} */ - transactionManager: undefined, + transactionManagers: {}, /** @type {string} */ endpoint: undefined, /** @type {AnalyticsReport} */ analyticsCache: undefined, /** sets all locals to undefined */ reset() { - this.transactionManager = undefined; + this.transactionManagers = {}; this.endpoint = undefined; this.analyticsCache = undefined; } @@ -182,10 +177,16 @@ function enableAnalyticsWrapper(config = {}) { return; } - const analyticsCache = locals.analyticsCache = newAnalyticsReport(pid); - const transactionManager = locals.transactionManager = createTransactionManager(options.timeout, analyticsCache, endpoint); + this.getUrl = () => endpoint; - subscribeToGamSlotRenderEvent(transactionManager); + const timeout = calculateTransactionTimeout(options.timeout); + this.getTimeout = () => timeout; + + locals.analyticsCache = newAnalyticsReport(pid); + + // const transactionManager = locals.transactionManager = + // createTransactionManager({ options.timeout, analyticsCache }); + // subscribeToGamSlotRenderEvent(transactionManager); analyticsAdapter.originEnableAnalytics(config); } @@ -204,14 +205,6 @@ function calculateTransactionTimeout(configTimeout) { return DEFAULT_TRANSACTION_TIMEOUT; } -function createTransactionManager(configTimeout, analyticsCache, endpoint) { - return new TransactionManager({ - timeout: calculateTransactionTimeout(configTimeout), - analyticsCache, - endpoint - }); -} - function subscribeToGamSlotRenderEvent(transactionManager) { window.googletag = window.googletag || {}; window.googletag.cmd = window.googletag.cmd || []; @@ -252,7 +245,7 @@ function newAnalyticsReport(pid) { pid, src: 'pbjs', analyticsVersion: ANALYTICS_VERSION, - pbjsVersion: '$prebid.version$', // replaced by build script + pbjsVersion: '$prebid.version$', // Replaced by build script auctions: [], bidsWon: [], }; @@ -327,8 +320,18 @@ function analyticEventHandler({ eventType, args }) { log.info(eventType, args); switch (eventType) { case EVENTS.AUCTION_INIT: // Move these events to top of fn. + const transactionManager = locals.transactionManagers[args.auctionId] = + new TransactionManager({ + timeout: analyticsAdapter.getTimeout(), + onComplete() { + sendReport(locals.analyticsCache, analyticsAdapter.getUrl()); + } + }); + + subscribeToGamSlotRenderEvent(transactionManager); + for (let adUnit of args.adUnits) { - locals.transactionManager.add(adUnit.transactionId); + transactionManager.add(adUnit.transactionId); } break; @@ -346,7 +349,8 @@ function analyticEventHandler({ eventType, args }) { const bidWon = parseBid(args); locals.analyticsCache.bidsWon.push(bidWon); - locals.transactionManager.que(bidWon.transactionId); + + locals.transactionManagers[args.auctionId].que(bidWon.transactionId); break; case EVENTS.AD_RENDER_SUCCEEDED: diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 2aeaa6275b3..fe1458b2c88 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -22,6 +22,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { afterEach(function() { sandbox.restore(); analyticsAdapter.disableAnalytics(); + events.clearEvents(); }); describe('enableAnalytics', function() { @@ -88,6 +89,8 @@ describe.only('33acrossAnalyticsAdapter:', function() { }, }); + performAuctionWithMissingBidWon(); + window.googletag.cmd.forEach(fn => fn()); const { gam } = getMockEvents(); @@ -95,8 +98,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { mockGpt.emitEvent('slotRenderEnded', gEvent); - sinon.assert.calledOnce(utils.logInfo); - sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: slotRenderEnded', Object.assign({ eventName: 'slotRenderEnded'}, gEvent)); + sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: slotRenderEnded', Object.assign({ eventName: 'slotRenderEnded' }, gEvent)); }); }); }); @@ -189,18 +191,9 @@ describe.only('33acrossAnalyticsAdapter:', function() { }) }); - xit('sends the report in its current state', function() { + it('sends the report in its current state', function() { sandbox.stub(navigator, 'sendBeacon').returns(true); - // As soon as the analyticsAdapter is enabled, its event handler - // will start getting events from another unit test. - // Every enablement of the adapter has its own instance - // of the transaction manager but the mocked transaction IDs - // are the same. - // - // We need to start generation different transaction IDs for the mocked - // events and evaluate having a structure like - // this.#transactions[auctionId][transactionId] this.enableAnalytics(); performAuctionWithMissingBidWon(); @@ -208,7 +201,13 @@ describe.only('33acrossAnalyticsAdapter:', function() { clock.tick(this.defaultTimeout + 1); sinon.assert.calledOnce(navigator.sendBeacon); - // sinon.assert.calledWith(navigator.sendBeacon, 'test-endpoint'); + + const incompleteAnalyticsReport = Object.assign( + getStandardAnalyticsReport(), + { bidsWon: [] } + ); + + sinon.assert.calledWithExactly(navigator.sendBeacon, 'test-endpoint', JSON.stringify(incompleteAnalyticsReport)); }); }); }); @@ -239,8 +238,8 @@ describe.only('33acrossAnalyticsAdapter:', function() { * BID_TIMEOUT */ -function performStandardAuction() { - const mockEvents = getMockEvents(); +function performStandardAuction(options) { + const mockEvents = getMockEvents(options); const { prebid, gam } = mockEvents; for (let auction of prebid) { @@ -257,9 +256,9 @@ function performStandardAuction() { } } -function performAuctionWithMissingBidWon() { - const mockEvents = getMockEvents(); - let { prebid, gam } = mockEvents; +function performAuctionWithMissingBidWon(options) { + const mockEvents = getMockEvents(options); + let { prebid } = mockEvents; const [ auction ] = prebid; @@ -533,8 +532,9 @@ function getStandardAnalyticsReport() { }; } -function getMockEvents() { +function getMockEvents(options = {}) { const ad = '
ad
'; + const auctionId = 'auction-000'; return { gam: { @@ -589,7 +589,7 @@ function getMockEvents() { }, prebid: [{ AUCTION_INIT: { - auctionId: 'auction-000', + auctionId, timestamp: 1680279732944, auctionStatus: 'inProgress', adUnits: [ @@ -804,7 +804,7 @@ function getMockEvents() { bidderRequests: [ { bidderCode: '33across', - auctionId: 'auction-000', + auctionId, bidderRequestId: '15bef0b1fd2b2e', bids: [ { @@ -856,7 +856,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '278a991ca57141', bidderRequestId: '15bef0b1fd2b2e', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -971,7 +971,7 @@ function getMockEvents() { }, { bidderCode: 'bidder0', - auctionId: 'auction-000', + auctionId, bidderRequestId: '196b58215c10dc9', bids: [ { @@ -1028,7 +1028,7 @@ function getMockEvents() { ], bidId: '20661fc5fbb5d9b', bidderRequestId: '196b58215c10dc9', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -1129,7 +1129,7 @@ function getMockEvents() { ], bidId: '21ad295f40dd7ab', bidderRequestId: '196b58215c10dc9', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -1224,7 +1224,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '22108ac7b778717', bidderRequestId: '196b58215c10dc9', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -1356,7 +1356,7 @@ function getMockEvents() { adId: '123456789abcdef', requestId: '20661fc5fbb5d9b', transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - auctionId: 'auction-000', + auctionId, mediaType: 'banner', source: 'client', cpm: 1.5, @@ -1408,7 +1408,7 @@ function getMockEvents() { adId: '3969aa0dc284f9e', requestId: '21ad295f40dd7ab', transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - auctionId: 'auction-000', + auctionId, mediaType: 'banner', source: 'client', cpm: 1.5, @@ -1460,7 +1460,7 @@ function getMockEvents() { adId: '3969aa0dc284f9e', requestId: '15bef0b1fd2b2e', transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - auctionId: 'auction-000', + auctionId, mediaType: 'banner', source: 'client', cpm: 1.5, @@ -1490,7 +1490,7 @@ function getMockEvents() { status: 'targetingSet', }], AUCTION_END: { - auctionId: 'auction-000', + auctionId, timestamp: 1680279732944, auctionEnd: 1680279733675, auctionStatus: 'completed', @@ -2119,7 +2119,7 @@ function getMockEvents() { bidderRequests: [ { bidderCode: '33across', - auctionId: 'auction-000', + auctionId, bidderRequestId: '15bef0b1fd2b2e', bids: [ { @@ -2171,7 +2171,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '278a991ca57141', bidderRequestId: '15bef0b1fd2b2e', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -2286,7 +2286,7 @@ function getMockEvents() { }, { bidderCode: 'bidder5', - auctionId: 'auction-000', + auctionId, bidderRequestId: '3291cb014b476f', bids: [ { @@ -2337,7 +2337,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '4aa9cadf65349f', bidderRequestId: '3291cb014b476f', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -2452,7 +2452,7 @@ function getMockEvents() { }, { bidderCode: 'bidder6', - auctionId: 'auction-000', + auctionId, bidderRequestId: '5970694290d904', bids: [ { @@ -2504,7 +2504,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '679d8548884e77', bidderRequestId: '5970694290d904', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -2619,7 +2619,7 @@ function getMockEvents() { }, { bidderCode: 'bidder7', - auctionId: 'auction-000', + auctionId, bidderRequestId: '795a032f6fd0a4', bids: [ { @@ -2674,7 +2674,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '85f09b966e352', bidderRequestId: '795a032f6fd0a4', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -2789,7 +2789,7 @@ function getMockEvents() { }, { bidderCode: 'bidder0Ast', - auctionId: 'auction-000', + auctionId, bidderRequestId: '943e8011283df8', bids: [ { @@ -2840,7 +2840,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '10eff0b5e62207e', bidderRequestId: '943e8011283df8', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -2955,7 +2955,7 @@ function getMockEvents() { }, { bidderCode: 'bidder1', - auctionId: 'auction-000', + auctionId, bidderRequestId: '11ef9ba88706948', bids: [ { @@ -3006,7 +3006,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '120d003a1ad64ee', bidderRequestId: '11ef9ba88706948', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -3121,7 +3121,7 @@ function getMockEvents() { }, { bidderCode: 'bidder3', - auctionId: 'auction-000', + auctionId, bidderRequestId: '135e79fd79c43d5', bids: [ { @@ -3173,7 +3173,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '14002adaa6a668d', bidderRequestId: '135e79fd79c43d5', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -3288,7 +3288,7 @@ function getMockEvents() { }, { bidderCode: 'bidder8', - auctionId: 'auction-000', + auctionId, bidderRequestId: '1530e004dd66185', bids: [ { @@ -3339,7 +3339,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '160595fa6abe78f', bidderRequestId: '1530e004dd66185', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -3454,7 +3454,7 @@ function getMockEvents() { }, { bidderCode: 'bidder10', - auctionId: 'auction-000', + auctionId, bidderRequestId: '1735cd680171181', bids: [ { @@ -3506,7 +3506,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '18f09d45818b9f9', bidderRequestId: '1735cd680171181', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -3621,7 +3621,7 @@ function getMockEvents() { }, { bidderCode: 'bidder0', - auctionId: 'auction-000', + auctionId, bidderRequestId: '196b58215c10dc9', bids: [ { @@ -3678,7 +3678,7 @@ function getMockEvents() { ], bidId: '20661fc5fbb5d9b', bidderRequestId: '196b58215c10dc9', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -3779,7 +3779,7 @@ function getMockEvents() { ], bidId: '21ad295f40dd7ab', bidderRequestId: '196b58215c10dc9', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -3874,7 +3874,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '22108ac7b778717', bidderRequestId: '196b58215c10dc9', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -3989,7 +3989,7 @@ function getMockEvents() { }, { bidderCode: 'bidder4', - auctionId: 'auction-000', + auctionId, bidderRequestId: '236be693ac8aab1', bids: [ { @@ -4041,7 +4041,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '24e4aa3b3f8ca51', bidderRequestId: '236be693ac8aab1', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -4156,7 +4156,7 @@ function getMockEvents() { }, { bidderCode: 'bidder12', - auctionId: 'auction-000', + auctionId, bidderRequestId: '25f69703c7839e2', bids: [ { @@ -4207,7 +4207,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '265f29671f2228c', bidderRequestId: '25f69703c7839e2', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -4322,7 +4322,7 @@ function getMockEvents() { }, { bidderCode: 'pulsepoint', - auctionId: 'auction-000', + auctionId, bidderRequestId: '27676b839dab671', bids: [ { @@ -4375,7 +4375,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '28ee1841acb5722', bidderRequestId: '27676b839dab671', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -4490,7 +4490,7 @@ function getMockEvents() { }, { bidderCode: 'bidder2', - auctionId: 'auction-000', + auctionId, bidderRequestId: '29ecdfe8cb58dcf', bids: [ { @@ -4542,7 +4542,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '30c770cd8b6ecb6', bidderRequestId: '29ecdfe8cb58dcf', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -4657,7 +4657,7 @@ function getMockEvents() { }, { bidderCode: 'bidder9', - auctionId: 'auction-000', + auctionId, bidderRequestId: '31885f8b47e177c', bids: [ { @@ -4708,7 +4708,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '324820900e1fe2e', bidderRequestId: '31885f8b47e177c', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -4823,7 +4823,7 @@ function getMockEvents() { }, { bidderCode: 'rubicon', - auctionId: 'auction-000', + auctionId, bidderRequestId: '33b0897ae1ec03', bids: [ { @@ -4885,7 +4885,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '34872cacff0a74d', bidderRequestId: '33b0897ae1ec03', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -5001,7 +5001,7 @@ function getMockEvents() { }, { bidderCode: 'bidder11', - auctionId: 'auction-000', + auctionId, bidderRequestId: '35411e18ed77aa', bids: [ { @@ -5054,7 +5054,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '361b21bdba26d54', bidderRequestId: '35411e18ed77aa', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -5217,7 +5217,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '4aa9cadf65349f', bidderRequestId: '3291cb014b476f', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -5313,7 +5313,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '24e4aa3b3f8ca51', bidderRequestId: '236be693ac8aab1', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -5410,7 +5410,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '361b21bdba26d54', bidderRequestId: '35411e18ed77aa', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -5506,7 +5506,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '679d8548884e77', bidderRequestId: '5970694290d904', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -5602,7 +5602,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '30c770cd8b6ecb6', bidderRequestId: '29ecdfe8cb58dcf', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -5697,7 +5697,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '160595fa6abe78f', bidderRequestId: '1530e004dd66185', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -5794,7 +5794,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '28ee1841acb5722', bidderRequestId: '27676b839dab671', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -5900,7 +5900,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '34872cacff0a74d', bidderRequestId: '33b0897ae1ec03', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -5997,7 +5997,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '14002adaa6a668d', bidderRequestId: '135e79fd79c43d5', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -6092,7 +6092,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '10eff0b5e62207e', bidderRequestId: '943e8011283df8', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -6187,7 +6187,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '22108ac7b778717', bidderRequestId: '196b58215c10dc9', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -6286,7 +6286,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '85f09b966e352', bidderRequestId: '795a032f6fd0a4', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -6381,7 +6381,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '120d003a1ad64ee', bidderRequestId: '11ef9ba88706948', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -6477,7 +6477,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '278a991ca57141', bidderRequestId: '15bef0b1fd2b2e', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -6572,7 +6572,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '324820900e1fe2e', bidderRequestId: '31885f8b47e177c', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -6668,7 +6668,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '18f09d45818b9f9', bidderRequestId: '1735cd680171181', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -6763,7 +6763,7 @@ function getMockEvents() { sizes: [[300, 250]], bidId: '265f29671f2228c', bidderRequestId: '25f69703c7839e2', - auctionId: 'auction-000', + auctionId, src: 'client', bidRequestsCount: 1, bidderRequestsCount: 1, @@ -6820,7 +6820,7 @@ function getMockEvents() { adId: '123456789abcdef', requestId: '20661fc5fbb5d9b', transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - auctionId: 'auction-000', + auctionId, mediaType: 'banner', source: 'client', cpm: 1.5, @@ -6860,7 +6860,7 @@ function getMockEvents() { adId: '3969aa0dc284f9e', requestId: '21ad295f40dd7ab', transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - auctionId: 'auction-000', + auctionId, mediaType: 'banner', source: 'client', cpm: 1.5, From b43ce62f2062ca1a7fb358df9c0216cc26003b02 Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Wed, 12 Apr 2023 16:39:39 -0500 Subject: [PATCH 05/41] refactoring of "incomplete state" unit test --- .../modules/33acrossAnalyticsAdapter_spec.js | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index fe1458b2c88..974cb60441e 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -191,23 +191,25 @@ describe.only('33acrossAnalyticsAdapter:', function() { }) }); - it('sends the report in its current state', function() { - sandbox.stub(navigator, 'sendBeacon').returns(true); + it('logs an info message after successfully submitting the incomplete report', function() { + sandbox.spy(utils, 'logInfo'); + const incompleteAnalyticsReport = Object.assign( + getStandardAnalyticsReport(), + { bidsWon: [] } + ); + + sandbox.stub(navigator, 'sendBeacon') + .withArgs('foo-endpoint', JSON.stringify(incompleteAnalyticsReport)) + .returns(true); - this.enableAnalytics(); + this.enableAnalytics({ endpoint: 'foo-endpoint' }); performAuctionWithMissingBidWon(); clock.tick(this.defaultTimeout + 1); sinon.assert.calledOnce(navigator.sendBeacon); - - const incompleteAnalyticsReport = Object.assign( - getStandardAnalyticsReport(), - { bidsWon: [] } - ); - - sinon.assert.calledWithExactly(navigator.sendBeacon, 'test-endpoint', JSON.stringify(incompleteAnalyticsReport)); + sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: Analytics report sent to foo-endpoint', sinon.match.object); }); }); }); From 0e8cdc95c83cf8bef75f7cdc85a4c4263149eb5c Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Wed, 12 Apr 2023 19:08:22 -0500 Subject: [PATCH 06/41] unit test coverage for duplicate transaction id --- modules/33acrossAnalyticsAdapter.js | 7 +- .../modules/33acrossAnalyticsAdapter_spec.js | 85 ++++++++++++------- 2 files changed, 58 insertions(+), 34 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 2b018300d90..9f33b96e31c 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -97,13 +97,16 @@ class TransactionManager { add(transactionId) { if (this.#transactions[transactionId]) { log.warn(`transactionId "${transactionId}" already exists`); + + return; } + this.#transactions[transactionId] = { status: 'waiting' }; ++this.unsent; - this.#restartSendTimeout(); // NOTE: This could be a private method + this.#restartSendTimeout(); } que(transactionId) { @@ -320,7 +323,7 @@ function analyticEventHandler({ eventType, args }) { log.info(eventType, args); switch (eventType) { case EVENTS.AUCTION_INIT: // Move these events to top of fn. - const transactionManager = locals.transactionManagers[args.auctionId] = + const transactionManager = locals.transactionManagers[args.auctionId] ||= new TransactionManager({ timeout: analyticsAdapter.getTimeout(), onComplete() { diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 974cb60441e..d16db128b04 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -125,29 +125,31 @@ describe.only('33acrossAnalyticsAdapter:', function() { } }); - context('when the AnalyticsReport is sent successfully to the given endpoint when an auction is complete', function() { - it('logs an info message', function() { - sandbox.spy(utils, 'logInfo'); + context('when an auction is complete', function() { + context('and the AnalyticsReport is sent successfully to the given endpoint', function() { + it('logs an info message', function() { + sandbox.spy(utils, 'logInfo'); - this.enableAnalytics({ endpoint: 'foo-endpoint' }); + this.enableAnalytics({ endpoint: 'foo-endpoint' }); - sandbox.stub(navigator, 'sendBeacon') - .withArgs('foo-endpoint', JSON.stringify(getStandardAnalyticsReport())) - .returns(true); + sandbox.stub(navigator, 'sendBeacon') + .withArgs('foo-endpoint', JSON.stringify(getStandardAnalyticsReport())) + .returns(true); - performStandardAuction(); + performStandardAuction(); - clock.tick(this.defaultTimeout + 1); + clock.tick(this.defaultTimeout + 1); - sinon.assert.calledOnce(navigator.sendBeacon); - sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: Analytics report sent to foo-endpoint', sinon.match.object); + sinon.assert.calledOnce(navigator.sendBeacon); + sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: Analytics report sent to foo-endpoint', sinon.match.object); + }); }); }); context('when an error occurs while sending the AnalyticsReport', function() { it('logs an error', function() { sandbox.spy(utils, 'logError'); - this.enableAnalytics({ endpoint: 'foo-endpoint' }); + this.enableAnalytics(); sandbox.stub(navigator, 'sendBeacon').returns(false); performStandardAuction(); @@ -158,6 +160,23 @@ describe.only('33acrossAnalyticsAdapter:', function() { }); }); + context('when the same bid-won event is received more than once', function() { + it('logs a warning message', function() { + sandbox.spy(utils, 'logWarn'); + + this.enableAnalytics(); + + const mockEvents = getMockEvents(); + const { prebid } = mockEvents; + const [ auction ] = prebid; + + events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + + sinon.assert.calledWithExactly(utils.logWarn, '33across Analytics: transactionId "ef947609-7b55-4420-8407-599760d0e373" already exists') + }); + }); + context('when a transaction doesn\'t reach its complete state', function() { context('and a timeout config value has been given', function() { context('and the timeout value has elapsed', function() { @@ -175,7 +194,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { }) }); - context('and a timeout config value hasn\'t been given', function() { + context('when a timeout config value hasn\'t been given', function() { context('and the default timeout has elapsed', function() { it('logs an error', function() { this.enableAnalytics(); @@ -191,25 +210,27 @@ describe.only('33acrossAnalyticsAdapter:', function() { }) }); - it('logs an info message after successfully submitting the incomplete report', function() { - sandbox.spy(utils, 'logInfo'); - const incompleteAnalyticsReport = Object.assign( - getStandardAnalyticsReport(), - { bidsWon: [] } - ); + context('and the incomplete report has been sent successfully', function() { + it('logs an info message', function() { + sandbox.spy(utils, 'logInfo'); + const incompleteAnalyticsReport = Object.assign( + getStandardAnalyticsReport(), + { bidsWon: [] } + ); - sandbox.stub(navigator, 'sendBeacon') - .withArgs('foo-endpoint', JSON.stringify(incompleteAnalyticsReport)) - .returns(true); + sandbox.stub(navigator, 'sendBeacon') + .withArgs('foo-endpoint', JSON.stringify(incompleteAnalyticsReport)) + .returns(true); - this.enableAnalytics({ endpoint: 'foo-endpoint' }); + this.enableAnalytics({ endpoint: 'foo-endpoint' }); - performAuctionWithMissingBidWon(); + performAuctionWithMissingBidWon(); - clock.tick(this.defaultTimeout + 1); + clock.tick(this.defaultTimeout + 1); - sinon.assert.calledOnce(navigator.sendBeacon); - sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: Analytics report sent to foo-endpoint', sinon.match.object); + sinon.assert.calledOnce(navigator.sendBeacon); + sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: Analytics report sent to foo-endpoint', sinon.match.object); + }); }); }); }); @@ -240,8 +261,8 @@ describe.only('33acrossAnalyticsAdapter:', function() { * BID_TIMEOUT */ -function performStandardAuction(options) { - const mockEvents = getMockEvents(options); +function performStandardAuction() { + const mockEvents = getMockEvents(); const { prebid, gam } = mockEvents; for (let auction of prebid) { @@ -258,8 +279,8 @@ function performStandardAuction(options) { } } -function performAuctionWithMissingBidWon(options) { - const mockEvents = getMockEvents(options); +function performAuctionWithMissingBidWon() { + const mockEvents = getMockEvents(); let { prebid } = mockEvents; const [ auction ] = prebid; @@ -534,7 +555,7 @@ function getStandardAnalyticsReport() { }; } -function getMockEvents(options = {}) { +function getMockEvents() { const ad = '
ad
'; const auctionId = 'auction-000'; From 4c65e9f67005b6fe0e50b8863dc3d654aa0df60e Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Thu, 13 Apr 2023 11:43:45 -0500 Subject: [PATCH 07/41] Add additional spec about non found transaction --- modules/33acrossAnalyticsAdapter.js | 2 +- .../modules/33acrossAnalyticsAdapter_spec.js | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 9f33b96e31c..ce9ba420bfa 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -353,7 +353,7 @@ function analyticEventHandler({ eventType, args }) { locals.analyticsCache.bidsWon.push(bidWon); - locals.transactionManagers[args.auctionId].que(bidWon.transactionId); + locals.transactionManagers[args.auctionId]?.que(bidWon.transactionId); break; case EVENTS.AD_RENDER_SUCCEEDED: diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index d16db128b04..7702c9f55f4 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -160,6 +160,30 @@ describe.only('33acrossAnalyticsAdapter:', function() { }); }); + context('when a bid-won event is received', function() { + context('and there\'s no record of that bid being requested', function() { + it('logs a warning message', function() { + sandbox.spy(utils, 'logWarn'); + + this.enableAnalytics(); + + const mockEvents = getMockEvents(); + const { prebid } = mockEvents; + const [ auction ] = prebid; + + events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + + const fakeBidWonEvent = Object.assign(auction.BID_WON[0], { + transactionId: 'foo' + }) + + events.emit(EVENTS.BID_WON, fakeBidWonEvent); + + sinon.assert.calledWithExactly(utils.logWarn, '33across Analytics: transactionId "foo" was not found. Nothing to enqueue.'); + }); + }); + }); + context('when the same bid-won event is received more than once', function() { it('logs a warning message', function() { sandbox.spy(utils, 'logWarn'); From bb9b3c93b1b05bb947a26731058fcf0c1bc8b04d Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Thu, 13 Apr 2023 16:50:56 -0500 Subject: [PATCH 08/41] obtain user ids via bid request, not via global fn. --- modules/33acrossAnalyticsAdapter.js | 5 ++--- test/spec/modules/33acrossAnalyticsAdapter_spec.js | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index ce9ba420bfa..4fece838ed9 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -1,6 +1,5 @@ /* eslint-disable no-console */ -import { logError, logWarn, logInfo } from '../src/utils.js'; -import { getGlobal } from '../src/prebidGlobal.js'; +import { logError, logWarn, logInfo, deepAccess } from '../src/utils.js'; import buildAdapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'; import adapterManager from '../src/adapterManager.js'; import CONSTANTS from '../src/constants.json'; @@ -265,7 +264,7 @@ function parseAuction({ adUnits, auctionId, bidderRequests }) { return { adUnits: adUnits.map(unit => parseAdUnit(unit)), auctionId, - userIds: getGlobal().getUserIds?.() || {} + userIds: Object.keys(deepAccess(bidderRequests, '0.bids.0.userId', {})) } } diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 7702c9f55f4..1c14dda8d1c 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -534,7 +534,7 @@ function getStandardAnalyticsReport() { }] }], auctionId: 'auction-000', - userIds: {} + userIds: [ '33acrossId' ] }], bidsWon: [{ bidder: 'bidder0', From 7e60d958c4cf1f5ec047e42fd0cdc3d3dd0890fd Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Fri, 14 Apr 2023 12:42:51 -0500 Subject: [PATCH 09/41] Populate bid response fields for BID WON events --- modules/33acrossAnalyticsAdapter.js | 20 ++++++++----- .../modules/33acrossAnalyticsAdapter_spec.js | 30 +++++++++---------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 4fece838ed9..48b4300a2b5 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -287,7 +287,9 @@ function parseAdUnit({ transactionId, code, slotId, mediaTypes, sizes, bids }) { /** * @returns {Bid} */ -function parseBid({ auctionId, bidder, source, status, transactionId }) { +function parseBid(bid) { + const { auctionId, bidder, source, status, transactionId, ...args } = bid; + log.warn('parsing bid: source and status may need to be populated by downstream event. bidResponse not yet implemented'); return { @@ -295,7 +297,7 @@ function parseBid({ auctionId, bidder, source, status, transactionId }) { source, status, transactionId, - bidResponse: parseBidResponse(), // Not sending any params + bidResponse: parseBidResponse(args) } } @@ -303,14 +305,16 @@ function parseBid({ auctionId, bidder, source, status, transactionId }) { * @returns {BidResponse} * @todo implement */ -function parseBidResponse(args) { +function parseBidResponse(params) { + const { cpm = 0, currency = '', originalCpm = 0, mediaType = '', size = '' } = params; + return { - cpm: 0, - cur: '', - cpmOrig: 0, + cpm, + cur: currency, + cpmOrig: originalCpm, cpmFloor: 0, - mediaType: '', - size: '', + mediaType, + size: typeof size === 'string' ? size : '' } } diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 1c14dda8d1c..c45ac508584 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -542,12 +542,12 @@ function getStandardAnalyticsReport() { status: 'rendered', transactionId: 'ef947609-7b55-4420-8407-599760d0e373', bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, + cpm: 1.5, + cur: 'USD', + cpmOrig: 1.5, cpmFloor: 0, - mediaType: '', - size: '' + mediaType: 'banner', + size: '300x250' } }, { bidder: 'bidder0', @@ -555,12 +555,12 @@ function getStandardAnalyticsReport() { status: 'rendered', transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, + cpm: 1.5, + cur: 'USD', + cpmOrig: 1.5, cpmFloor: 0, - mediaType: '', - size: '' + mediaType: 'banner', + size: '728x90' } }, { bidder: 'bidder0', @@ -568,12 +568,12 @@ function getStandardAnalyticsReport() { status: 'targetingSet', transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, + cpm: 1.5, + cur: 'USD', + cpmOrig: 1.5, cpmFloor: 0, - mediaType: '', - size: '' + mediaType: 'banner', + size: '728x90' } }] }; From cfeb535a26413853823aa3faea7fe44ba6dcd00d Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Fri, 14 Apr 2023 14:34:24 -0500 Subject: [PATCH 10/41] Prepare the cache for the bidresponse field population --- modules/33acrossAnalyticsAdapter.js | 34 ++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 48b4300a2b5..090a3c049e9 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -22,6 +22,13 @@ const log = getLogger(); * @property {Bid[]} bidsWon */ +/** + * @typedef {Object} AnalyticsCache + * @property {string} pid Partner ID + * @property {Object} auctions + * @property {Bid[]} bidsWon + */ + /** * @typedef {Object} Auction * @property {AdUnit[]} adUnits @@ -184,7 +191,7 @@ function enableAnalyticsWrapper(config = {}) { const timeout = calculateTransactionTimeout(options.timeout); this.getTimeout = () => timeout; - locals.analyticsCache = newAnalyticsReport(pid); + locals.analyticsCache = newAnalyticsCache(pid); // const transactionManager = locals.transactionManager = // createTransactionManager({ options.timeout, analyticsCache }); @@ -239,18 +246,28 @@ export default analyticsAdapter; /** * @param {string} pid Partner ID - * @returns {AnalyticsReport} + * @returns {AnalyticsCache} */ -function newAnalyticsReport(pid) { +function newAnalyticsCache(pid) { + return { + pid, + auctions: {}, + bidsWon: [], + }; +} + +function createReportFromCache(analyticsCache) { + const { pid, bidsWon, auctions } = analyticsCache; + return { siteId: '', // possibly remove, awaiting more information222222 pid, src: 'pbjs', analyticsVersion: ANALYTICS_VERSION, pbjsVersion: '$prebid.version$', // Replaced by build script - auctions: [], - bidsWon: [], - }; + auctions: Object.values(auctions), + bidsWon + } } /** @@ -330,7 +347,8 @@ function analyticEventHandler({ eventType, args }) { new TransactionManager({ timeout: analyticsAdapter.getTimeout(), onComplete() { - sendReport(locals.analyticsCache, analyticsAdapter.getUrl()); + sendReport(createReportFromCache(locals.analyticsCache), + analyticsAdapter.getUrl()); } }); @@ -347,7 +365,7 @@ function analyticEventHandler({ eventType, args }) { case EVENTS.AUCTION_END: const auction = parseAuction(args); - locals.analyticsCache.auctions.push(auction); + locals.analyticsCache.auctions[auction.auctionId] = auction; break; // see also `slotRenderEnded` GAM-event listener From 41a9de926246322fdf8788b41e896470a81a9054 Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Fri, 14 Apr 2023 16:16:44 -0500 Subject: [PATCH 11/41] populate bidResponse field --- modules/33acrossAnalyticsAdapter.js | 31 ++- .../modules/33acrossAnalyticsAdapter_spec.js | 236 +++++------------- 2 files changed, 76 insertions(+), 191 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 090a3c049e9..118ffa5fe0e 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -26,7 +26,7 @@ const log = getLogger(); * @typedef {Object} AnalyticsCache * @property {string} pid Partner ID * @property {Object} auctions - * @property {Bid[]} bidsWon + * @property {Object} bidsWon */ /** @@ -252,7 +252,7 @@ function newAnalyticsCache(pid) { return { pid, auctions: {}, - bidsWon: [], + bidsWon: {}, }; } @@ -266,20 +266,20 @@ function createReportFromCache(analyticsCache) { analyticsVersion: ANALYTICS_VERSION, pbjsVersion: '$prebid.version$', // Replaced by build script auctions: Object.values(auctions), - bidsWon + bidsWon: Object.values(bidsWon).flat() } } /** * @returns {Auction} */ -function parseAuction({ adUnits, auctionId, bidderRequests }) { +function parseAuction({ adUnits, auctionId, bidderRequests, bidsReceived }) { if (typeof auctionId !== 'string' || !Array.isArray(bidderRequests)) { log.error('Analytics adapter failed to parse auction.'); } return { - adUnits: adUnits.map(unit => parseAdUnit(unit)), + adUnits: adUnits.map(unit => parseAdUnit(unit, bidsReceived)), auctionId, userIds: Object.keys(deepAccess(bidderRequests, '0.bids.0.userId', {})) } @@ -288,7 +288,9 @@ function parseAuction({ adUnits, auctionId, bidderRequests }) { /** * @returns {AdUnit} */ -function parseAdUnit({ transactionId, code, slotId, mediaTypes, sizes, bids }) { +function parseAdUnit(adUnit, bidsReceived = []) { + const { transactionId, code, slotId, mediaTypes, sizes, bids } = adUnit; + log.warn(`parsing adUnit, slotId not yet implemented`); return { @@ -297,18 +299,14 @@ function parseAdUnit({ transactionId, code, slotId, mediaTypes, sizes, bids }) { slotId: '', mediaTypes: Object.keys(mediaTypes), sizes: sizes.map(size => size.join('x')), - bids: bids.map(bid => parseBid(bid)), + bids: bidsReceived.map(bid => parseBid(bid)), } } /** * @returns {Bid} */ -function parseBid(bid) { - const { auctionId, bidder, source, status, transactionId, ...args } = bid; - - log.warn('parsing bid: source and status may need to be populated by downstream event. bidResponse not yet implemented'); - +function parseBid({ auctionId, bidder, source, status, transactionId, ...args }) { return { bidder, source, @@ -322,16 +320,14 @@ function parseBid(bid) { * @returns {BidResponse} * @todo implement */ -function parseBidResponse(params) { - const { cpm = 0, currency = '', originalCpm = 0, mediaType = '', size = '' } = params; - +function parseBidResponse({ cpm, currency, originalCpm, mediaType, size }) { return { cpm, cur: currency, cpmOrig: originalCpm, cpmFloor: 0, mediaType, - size: typeof size === 'string' ? size : '' + size } } @@ -371,8 +367,9 @@ function analyticEventHandler({ eventType, args }) { // see also `slotRenderEnded` GAM-event listener case EVENTS.BID_WON: const bidWon = parseBid(args); + const auctionBids = locals.analyticsCache.bidsWon[args.auctionId] ||= []; - locals.analyticsCache.bidsWon.push(bidWon); + auctionBids.push(bidWon); locals.transactionManagers[args.auctionId]?.que(bidWon.transactionId); diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index c45ac508584..9de6df5a642 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -319,7 +319,7 @@ function getStandardAnalyticsReport() { pid: 'test-pid', src: 'pbjs', analyticsVersion: '1.0.0', - pbjsVersion: '$prebid.version$', + pbjsVersion: '7.44.0-pre', auctions: [{ adUnits: [{ transactionId: 'ef947609-7b55-4420-8407-599760d0e373', @@ -329,13 +329,29 @@ function getStandardAnalyticsReport() { sizes: ['300x250', '300x600'], bids: [{ bidder: 'bidder0', + source: 'client', + status: 'rendered', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, + cpm: 1.5, + cur: 'USD', + cpmOrig: 1.5, cpmFloor: 0, - mediaType: '', - size: '' + mediaType: 'banner', + size: '300x250' + } + }, { + bidder: 'bidder0', + source: 'client', + status: 'targetingSet', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + bidResponse: { + cpm: 1.5, + cur: 'USD', + cpmOrig: 1.5, + cpmFloor: 0, + mediaType: 'banner', + size: '728x90' } }] }, { @@ -346,13 +362,29 @@ function getStandardAnalyticsReport() { sizes: ['728x90', '970x250'], bids: [{ bidder: 'bidder0', + source: 'client', + status: 'rendered', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + bidResponse: { + cpm: 1.5, + cur: 'USD', + cpmOrig: 1.5, + cpmFloor: 0, + mediaType: 'banner', + size: '300x250' + } + }, { + bidder: 'bidder0', + source: 'client', + status: 'targetingSet', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, + cpm: 1.5, + cur: 'USD', + cpmOrig: 1.5, cpmFloor: 0, - mediaType: '', - size: '' + mediaType: 'banner', + size: '728x90' } }] }, { @@ -362,179 +394,35 @@ function getStandardAnalyticsReport() { mediaTypes: ['banner'], sizes: ['300x250'], bids: [{ - bidder: '33across', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder1', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder2', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder3', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder4', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder6', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { bidder: 'bidder0', + source: 'client', + status: 'rendered', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder0Ast', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder8', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder5', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder9', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder10', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder7', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder11', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'bidder12', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, - cpmFloor: 0, - mediaType: '', - size: '' - } - }, { - bidder: 'rubicon', - bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, + cpm: 1.5, + cur: 'USD', + cpmOrig: 1.5, cpmFloor: 0, - mediaType: '', - size: '' + mediaType: 'banner', + size: '300x250' } }, { - bidder: 'pulsepoint', + bidder: 'bidder0', + source: 'client', + status: 'targetingSet', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', bidResponse: { - cpm: 0, - cur: '', - cpmOrig: 0, + cpm: 1.5, + cur: 'USD', + cpmOrig: 1.5, cpmFloor: 0, - mediaType: '', - size: '' + mediaType: 'banner', + size: '728x90' } }] }], auctionId: 'auction-000', - userIds: [ '33acrossId' ] + userIds: ['33acrossId'] }], bidsWon: [{ bidder: 'bidder0', @@ -576,7 +464,7 @@ function getStandardAnalyticsReport() { size: '728x90' } }] - }; + } } function getMockEvents() { From e10320cbdd9dfbb72596b8379a11606720569829 Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Fri, 14 Apr 2023 18:46:45 -0500 Subject: [PATCH 12/41] fix some typedef + remove unnecessary switch event cases --- modules/33acrossAnalyticsAdapter.js | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 118ffa5fe0e..2ad8f53f5d8 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -25,8 +25,8 @@ const log = getLogger(); /** * @typedef {Object} AnalyticsCache * @property {string} pid Partner ID - * @property {Object} auctions - * @property {Object} bidsWon + * @property {Object} auctions + * @property {Object} bidsWon */ /** @@ -147,7 +147,7 @@ class TransactionManager { * initialized during `enableAnalytics` */ export const locals = { - /** @type {TransactionManager} */ + /** @type {Object} */ transactionManagers: {}, /** @type {string} */ endpoint: undefined, @@ -193,10 +193,6 @@ function enableAnalyticsWrapper(config = {}) { locals.analyticsCache = newAnalyticsCache(pid); - // const transactionManager = locals.transactionManager = - // createTransactionManager({ options.timeout, analyticsCache }); - // subscribeToGamSlotRenderEvent(transactionManager); - analyticsAdapter.originEnableAnalytics(config); } @@ -260,7 +256,7 @@ function createReportFromCache(analyticsCache) { const { pid, bidsWon, auctions } = analyticsCache; return { - siteId: '', // possibly remove, awaiting more information222222 + siteId: '', // FIXME: possibly remove, awaiting more information222222 pid, src: 'pbjs', analyticsVersion: ANALYTICS_VERSION, @@ -296,7 +292,7 @@ function parseAdUnit(adUnit, bidsReceived = []) { return { transactionId, adUnitCode: code, - slotId: '', + slotId: '', // FIXME: slot ID has to be populated from the slotRenderEnded event mediaTypes: Object.keys(mediaTypes), sizes: sizes.map(size => size.join('x')), bids: bidsReceived.map(bid => parseBid(bid)), @@ -356,7 +352,7 @@ function analyticEventHandler({ eventType, args }) { break; case EVENTS.BID_REQUESTED: - // It's probably a better idea to do the add at trasaction manager. + // FIXME: It's probably a better idea to do the add at trasaction manager. break; case EVENTS.AUCTION_END: const auction = parseAuction(args); @@ -373,10 +369,6 @@ function analyticEventHandler({ eventType, args }) { locals.transactionManagers[args.auctionId]?.que(bidWon.transactionId); - break; - case EVENTS.AD_RENDER_SUCCEEDED: - break; - case EVENTS.AD_RENDER_FAILED: break; default: break; From 54838d2ae2069596094672f136b4a4ad48ee26a6 Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Mon, 17 Apr 2023 13:57:45 -0500 Subject: [PATCH 13/41] Populate bids based on BID_RESPONSE and not on the bidsReceived field of AUCTION_END --- modules/33acrossAnalyticsAdapter.js | 39 +- .../modules/33acrossAnalyticsAdapter_spec.js | 5619 ++--------------- 2 files changed, 394 insertions(+), 5264 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 2ad8f53f5d8..b57b47bcdad 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -252,7 +252,7 @@ function newAnalyticsCache(pid) { }; } -function createReportFromCache(analyticsCache) { +function createReportFromCache(analyticsCache, completedAuction) { const { pid, bidsWon, auctions } = analyticsCache; return { @@ -261,21 +261,21 @@ function createReportFromCache(analyticsCache) { src: 'pbjs', analyticsVersion: ANALYTICS_VERSION, pbjsVersion: '$prebid.version$', // Replaced by build script - auctions: Object.values(auctions), - bidsWon: Object.values(bidsWon).flat() + auctions: [ auctions[completedAuction] ], + bidsWon: bidsWon[completedAuction] } } /** * @returns {Auction} */ -function parseAuction({ adUnits, auctionId, bidderRequests, bidsReceived }) { +function parseAuction({ adUnits, auctionId, bidderRequests }) { if (typeof auctionId !== 'string' || !Array.isArray(bidderRequests)) { log.error('Analytics adapter failed to parse auction.'); } return { - adUnits: adUnits.map(unit => parseAdUnit(unit, bidsReceived)), + adUnits: adUnits.map(unit => parseAdUnit(unit)), auctionId, userIds: Object.keys(deepAccess(bidderRequests, '0.bids.0.userId', {})) } @@ -284,9 +284,7 @@ function parseAuction({ adUnits, auctionId, bidderRequests, bidsReceived }) { /** * @returns {AdUnit} */ -function parseAdUnit(adUnit, bidsReceived = []) { - const { transactionId, code, slotId, mediaTypes, sizes, bids } = adUnit; - +function parseAdUnit({ transactionId, code, slotId, mediaTypes, sizes, bids }) { log.warn(`parsing adUnit, slotId not yet implemented`); return { @@ -295,7 +293,7 @@ function parseAdUnit(adUnit, bidsReceived = []) { slotId: '', // FIXME: slot ID has to be populated from the slotRenderEnded event mediaTypes: Object.keys(mediaTypes), sizes: sizes.map(size => size.join('x')), - bids: bidsReceived.map(bid => parseBid(bid)), + bids: [] } } @@ -335,11 +333,16 @@ function analyticEventHandler({ eventType, args }) { log.info(eventType, args); switch (eventType) { case EVENTS.AUCTION_INIT: // Move these events to top of fn. + const auction = parseAuction(args); + + locals.analyticsCache.auctions[auction.auctionId] = auction; + locals.analyticsCache.bidsWon[args.auctionId] = []; + const transactionManager = locals.transactionManagers[args.auctionId] ||= new TransactionManager({ timeout: analyticsAdapter.getTimeout(), onComplete() { - sendReport(createReportFromCache(locals.analyticsCache), + sendReport(createReportFromCache(locals.analyticsCache, auction.auctionId), analyticsAdapter.getUrl()); } }); @@ -351,19 +354,21 @@ function analyticEventHandler({ eventType, args }) { } break; - case EVENTS.BID_REQUESTED: - // FIXME: It's probably a better idea to do the add at trasaction manager. - break; - case EVENTS.AUCTION_END: - const auction = parseAuction(args); + case EVENTS.BID_RESPONSE: + const bidResponse = parseBid(args); + const cachedAuction = locals.analyticsCache.auctions[args.auctionId]; + const cachedAdUnit = cachedAuction.adUnits.find(adUnit => adUnit.transactionId === bidResponse.transactionId); - locals.analyticsCache.auctions[auction.auctionId] = auction; + cachedAdUnit.bids.push(bidResponse); + break; + case EVENTS.BID_REQUESTED: + // FIXME: It's probably a better idea to do the add at trasaction manager. break; // see also `slotRenderEnded` GAM-event listener case EVENTS.BID_WON: const bidWon = parseBid(args); - const auctionBids = locals.analyticsCache.bidsWon[args.auctionId] ||= []; + const auctionBids = locals.analyticsCache.bidsWon[args.auctionId]; auctionBids.push(bidWon); diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 9de6df5a642..43edd070e4e 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -103,12 +103,6 @@ describe.only('33acrossAnalyticsAdapter:', function() { }); }); - describe('disableAnalytics()', function() { - xit('removes the GAM slotRenderEnded event listeners', function() { - - }); - }); - describe('when handling events', function() { beforeEach(function() { this.defaultTimeout = 3000; @@ -291,6 +285,11 @@ function performStandardAuction() { for (let auction of prebid) { events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + + auction.BID_RESPONSE.forEach((bidResponseEvent) => { + events.emit(EVENTS.BID_RESPONSE, bidResponseEvent); + }); + events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); for (let gEvent of gam.slotRenderEnded) { @@ -310,6 +309,11 @@ function performAuctionWithMissingBidWon() { const [ auction ] = prebid; events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + + auction.BID_RESPONSE.forEach((bidResponseEvent) => { + events.emit(EVENTS.BID_RESPONSE, bidResponseEvent); + }); + events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); } @@ -340,19 +344,6 @@ function getStandardAnalyticsReport() { mediaType: 'banner', size: '300x250' } - }, { - bidder: 'bidder0', - source: 'client', - status: 'targetingSet', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - bidResponse: { - cpm: 1.5, - cur: 'USD', - cpmOrig: 1.5, - cpmFloor: 0, - mediaType: 'banner', - size: '728x90' - } }] }, { transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', @@ -361,19 +352,6 @@ function getStandardAnalyticsReport() { mediaTypes: ['banner'], sizes: ['728x90', '970x250'], bids: [{ - bidder: 'bidder0', - source: 'client', - status: 'rendered', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - bidResponse: { - cpm: 1.5, - cur: 'USD', - cpmOrig: 1.5, - cpmFloor: 0, - mediaType: 'banner', - size: '300x250' - } - }, { bidder: 'bidder0', source: 'client', status: 'targetingSet', @@ -393,33 +371,7 @@ function getStandardAnalyticsReport() { slotId: '', mediaTypes: ['banner'], sizes: ['300x250'], - bids: [{ - bidder: 'bidder0', - source: 'client', - status: 'rendered', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - bidResponse: { - cpm: 1.5, - cur: 'USD', - cpmOrig: 1.5, - cpmFloor: 0, - mediaType: 'banner', - size: '300x250' - } - }, { - bidder: 'bidder0', - source: 'client', - status: 'targetingSet', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - bidResponse: { - cpm: 1.5, - cur: 'USD', - cpmOrig: 1.5, - cpmFloor: 0, - mediaType: 'banner', - size: '728x90' - } - }] + bids: [] }], auctionId: 'auction-000', userIds: ['33acrossId'] @@ -464,7 +416,7 @@ function getStandardAnalyticsReport() { size: '728x90' } }] - } + }; } function getMockEvents() { @@ -737,173 +689,6 @@ function getMockEvents() { '/17118521/header-bid-tag-2', ], bidderRequests: [ - { - bidderCode: '33across', - auctionId, - bidderRequestId: '15bef0b1fd2b2e', - bids: [ - { - bidder: '33across', - params: { - siteId: 'dukr5O4SWr6iygaKkGJozW', - productId: 'siab', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '278a991ca57141', - bidderRequestId: '15bef0b1fd2b2e', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732948, - }, { bidderCode: 'bidder0', auctionId, @@ -1271,7 +1056,7 @@ function getMockEvents() { }, }, start: 1680279732963, - }, + } ], noBids: [], bidsReceived: [], @@ -1283,7 +1068,7 @@ function getMockEvents() { publisherId: '1001', }, }, - BID_WON: [{ + BID_RESPONSE: [{ bidderCode: 'bidder0', width: 300, height: 250, @@ -1307,8 +1092,6 @@ function getMockEvents() { adapterCode: 'bidder0', originalCpm: 1.5, originalCurrency: 'USD', - responseTimestamp: 1680279733304, - requestTimestamp: 1680279732963, bidder: 'bidder0', timeToRespond: 341, pbLg: '1.50', @@ -1318,16 +1101,6 @@ function getMockEvents() { pbDg: '1.50', pbCg: '', size: '300x250', - adserverTargeting: { - bidder: 'bidder0', - hb_adid: '123456789abcdef', - hb_pb: '1.50', - hb_size: '300x250', - hb_source: 'client', - hb_format: 'banner', - hb_adomain: '', - hb_acat: '', - }, status: 'rendered', params: [ { @@ -1359,7 +1132,7 @@ function getMockEvents() { adapterCode: 'bidder0', originalCpm: 1.5, originalCurrency: 'USD', - responseTimestamp: 1680279733304, + responseTimestamp: 1680279733305, requestTimestamp: 1680279732963, bidder: 'bidder0', timeToRespond: 342, @@ -1370,21 +1143,110 @@ function getMockEvents() { pbDg: '1.50', pbCg: '', size: '728x90', - adserverTargeting: { - bidder: 'bidder0', - hb_adid: '3969aa0dc284f9e', - hb_pb: '1.50', - hb_size: '728x90', - hb_source: 'client', - hb_format: 'banner', - hb_adomain: '', - hb_acat: '', - }, - status: 'rendered', - params: [ - { - placementId: 12345678, - }, + status: 'targetingSet', + }], + BID_WON: [{ + bidderCode: 'bidder0', + width: 300, + height: 250, + statusMessage: 'Bid available', + adId: '123456789abcdef', + requestId: '20661fc5fbb5d9b', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + auctionId, + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 96846035, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/19968336/header-bid-tag-0', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + responseTimestamp: 1680279733304, + requestTimestamp: 1680279732963, + bidder: 'bidder0', + timeToRespond: 341, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '300x250', + adserverTargeting: { + bidder: 'bidder0', + hb_adid: '123456789abcdef', + hb_pb: '1.50', + hb_size: '300x250', + hb_source: 'client', + hb_format: 'banner', + hb_adomain: '', + hb_acat: '', + }, + status: 'rendered', + params: [ + { + placementId: 12345678, + }, + ], + }, + { + bidderCode: 'bidder0', + width: 728, + height: 90, + statusMessage: 'Bid available', + adId: '3969aa0dc284f9e', + requestId: '21ad295f40dd7ab', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + auctionId, + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 98476543, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/19968336/header-bid-tag-1', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + responseTimestamp: 1680279733304, + requestTimestamp: 1680279732963, + bidder: 'bidder0', + timeToRespond: 342, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '728x90', + adserverTargeting: { + bidder: 'bidder0', + hb_adid: '3969aa0dc284f9e', + hb_pb: '1.50', + hb_size: '728x90', + hb_source: 'client', + hb_format: 'banner', + hb_adomain: '', + hb_acat: '', + }, + status: 'rendered', + params: [ + { + placementId: 12345678, + }, ], }, { @@ -1590,9 +1452,9 @@ function getMockEvents() { }, }, { - bidder: 'bidder1', + bidder: 'bidder0', params: { - placement_id: '2b370ff1b325695fdfea', + placementId: 20216405, }, userId: { '33acrossId': { @@ -1615,39 +1477,40 @@ function getMockEvents() { pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', }, }, - { - bidder: 'bidder2', - params: { - networkId: '7314', - publisherSubId: 'NotTheBee.com', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], + ], + sizes: [[300, 250]], + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + pbadslot: '/17118521/header-bid-tag-2', }, + gpid: '/17118521/header-bid-tag-2', }, + }, + }, + ], + adUnitCodes: [ + '/19968336/header-bid-tag-0', + '/19968336/header-bid-tag-1', + '/17118521/header-bid-tag-2', + ], + bidderRequests: [ + { + bidderCode: 'bidder0', + auctionId, + bidderRequestId: '196b58215c10dc9', + bids: [ { - bidder: 'bidder3', + bidder: 'bidder0', params: { - tagid: '776781', + placement_id: 12345678, }, - size: [300, 250], userId: { '33acrossId': { envelope: @@ -1668,39 +1531,86 @@ function getMockEvents() { crumbs: { pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', }, - }, - { - bidder: 'bidder4', - params: { - pkey: 'APPvQEaPRAB8WaJrrW74hYib', - }, - size: [300, 250], - userId: { - '33acrossId': { - envelope: - 'v1.0014', + ortb2Imp: { + ext: { + tid: 'ef947609-7b55-4420-8407-599760d0e373', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-0', + }, + pbadslot: '/19968336/header-bid-tag-0', + }, + gpid: '/19968336/header-bid-tag-0', }, }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600], ], }, + }, + adUnitCode: '/19968336/header-bid-tag-0', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + sizes: [ + [300, 250], + [300, 600], ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + bidId: '20661fc5fbb5d9b', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, }, }, { - bidder: 'bidder6', + bidder: 'bidder0', params: { - unit: '542293636', - delDomain: 'adnimation-d.bidder6.net', + placement_id: 12345678, }, userId: { '33acrossId': { @@ -1722,408 +1632,53 @@ function getMockEvents() { crumbs: { pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', }, - }, - { - bidder: 'bidder0', - params: { - placementId: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'bidder0Ast', - params: { - placementId: '23118001', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'bidder8', - params: { - siteId: '584353', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'bidder5', - params: { - publisherId: '160685', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'bidder9', - params: { - tagId: 'YWRuaW1hdGlvbi5jb20', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'bidder10', - params: { - bidfloor: '0.01', - appId: '923b830f-b48b-4ec2-8586-f190599c29d0', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, + ortb2Imp: { + ext: { + tid: 'abab4423-d962-41aa-adc7-0681f686c330', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-1', }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'bidder7', - params: { - unitName: 'cnsmbl-audio-320x50-slider', - unitId: '10116', - siteId: '2000033', - networkId: '9969', - zoneIds: [2005074], - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', + pbadslot: '/19968336/header-bid-tag-1', + }, + gpid: '/19968336/header-bid-tag-1', }, }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, + mediaTypes: { + banner: { + sizes: [ + [728, 90], + [970, 250], ], }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'bidder11', - params: { - cid: '8CUWWG7OK', - crid: '458063742', - size: '300x250', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, + adUnitCode: '/19968336/header-bid-tag-1', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + sizes: [ + [728, 90], + [970, 250], ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'bidder12', - params: { - placementId: '2889932524039905404', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], + bidId: '21ad295f40dd7ab', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'rubicon', - params: { - accountId: '12556', - pchain: 'playwire.com:fcddfba7adc2d929', - secure: true, - siteId: 143146, - video: { - language: 'en', - playerWidth: '640', - playerHeight: '480', - size_id: '201', - }, - zoneId: 1493791, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'pulsepoint', - params: { - cf: '300x250', - cp: 12345, - ct: 12345, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - ], - sizes: [[300, 250]], - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - }, - ], - adUnitCodes: [ - '/19968336/header-bid-tag-0', - '/19968336/header-bid-tag-1', - '/17118521/header-bid-tag-2', - ], - bidderRequests: [ - { - bidderCode: '33across', - auctionId, - bidderRequestId: '15bef0b1fd2b2e', - bids: [ - { - bidder: '33across', - params: { - siteId: 'dukr5O4SWr6iygaKkGJozW', - productId: 'siab', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '278a991ca57141', - bidderRequestId: '15bef0b1fd2b2e', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', language: 'en', sua: { source: 2, @@ -2142,4567 +1697,135 @@ function getMockEvents() { }, { brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732948, - }, - { - bidderCode: 'bidder5', - auctionId, - bidderRequestId: '3291cb014b476f', - bids: [ - { - bidder: 'bidder5', - params: { - publisherId: '160685', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '4aa9cadf65349f', - bidderRequestId: '3291cb014b476f', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732951, - }, - { - bidderCode: 'bidder6', - auctionId, - bidderRequestId: '5970694290d904', - bids: [ - { - bidder: 'bidder6', - params: { - unit: '542293636', - delDomain: 'adnimation-d.bidder6.net', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '679d8548884e77', - bidderRequestId: '5970694290d904', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732952, - }, - { - bidderCode: 'bidder7', - auctionId, - bidderRequestId: '795a032f6fd0a4', - bids: [ - { - bidder: 'bidder7', - params: { - unitName: 'cnsmbl-audio-320x50-slider', - unitId: '10116', - siteId: '2000033', - networkId: '9969', - zoneIds: [2005074], - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '85f09b966e352', - bidderRequestId: '795a032f6fd0a4', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732954, - }, - { - bidderCode: 'bidder0Ast', - auctionId, - bidderRequestId: '943e8011283df8', - bids: [ - { - bidder: 'bidder0Ast', - params: { - placement_id: '23118001', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '10eff0b5e62207e', - bidderRequestId: '943e8011283df8', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732955, - }, - { - bidderCode: 'bidder1', - auctionId, - bidderRequestId: '11ef9ba88706948', - bids: [ - { - bidder: 'bidder1', - params: { - placement_id: '2b370ff1b325695fdfea', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '120d003a1ad64ee', - bidderRequestId: '11ef9ba88706948', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732957, - }, - { - bidderCode: 'bidder3', - auctionId, - bidderRequestId: '135e79fd79c43d5', - bids: [ - { - bidder: 'bidder3', - params: { - tagid: '776781', - }, - size: [300, 250], - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '14002adaa6a668d', - bidderRequestId: '135e79fd79c43d5', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732959, - }, - { - bidderCode: 'bidder8', - auctionId, - bidderRequestId: '1530e004dd66185', - bids: [ - { - bidder: 'bidder8', - params: { - siteId: '584353', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '160595fa6abe78f', - bidderRequestId: '1530e004dd66185', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732960, - }, - { - bidderCode: 'bidder10', - auctionId, - bidderRequestId: '1735cd680171181', - bids: [ - { - bidder: 'bidder10', - params: { - bidfloor: '0.01', - appId: '923b830f-b48b-4ec2-8586-f190599c29d0', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '18f09d45818b9f9', - bidderRequestId: '1735cd680171181', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732962, - }, - { - bidderCode: 'bidder0', - auctionId, - bidderRequestId: '196b58215c10dc9', - bids: [ - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'ef947609-7b55-4420-8407-599760d0e373', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-0', - }, - pbadslot: '/19968336/header-bid-tag-0', - }, - gpid: '/19968336/header-bid-tag-0', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [300, 250], - [300, 600], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-0', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - sizes: [ - [300, 250], - [300, 600], - ], - bidId: '20661fc5fbb5d9b', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'abab4423-d962-41aa-adc7-0681f686c330', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-1', - }, - pbadslot: '/19968336/header-bid-tag-1', - }, - gpid: '/19968336/header-bid-tag-1', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [728, 90], - [970, 250], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-1', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - sizes: [ - [728, 90], - [970, 250], - ], - bidId: '21ad295f40dd7ab', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '22108ac7b778717', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732963, - }, - { - bidderCode: 'bidder4', - auctionId, - bidderRequestId: '236be693ac8aab1', - bids: [ - { - bidder: 'bidder4', - params: { - pkey: 'APPvQEaPRAB8WaJrrW74hYib', - }, - size: [300, 250], - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '24e4aa3b3f8ca51', - bidderRequestId: '236be693ac8aab1', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732965, - }, - { - bidderCode: 'bidder12', - auctionId, - bidderRequestId: '25f69703c7839e2', - bids: [ - { - bidder: 'bidder12', - params: { - placementId: '2889932524039905404', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '265f29671f2228c', - bidderRequestId: '25f69703c7839e2', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732966, - }, - { - bidderCode: 'pulsepoint', - auctionId, - bidderRequestId: '27676b839dab671', - bids: [ - { - bidder: 'pulsepoint', - params: { - cf: '300x250', - cp: 12345, - ct: 12345, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '28ee1841acb5722', - bidderRequestId: '27676b839dab671', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732967, - }, - { - bidderCode: 'bidder2', - auctionId, - bidderRequestId: '29ecdfe8cb58dcf', - bids: [ - { - bidder: 'bidder2', - params: { - networkId: '7314', - publisherSubId: 'NotTheBee.com', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '30c770cd8b6ecb6', - bidderRequestId: '29ecdfe8cb58dcf', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732969, - }, - { - bidderCode: 'bidder9', - auctionId, - bidderRequestId: '31885f8b47e177c', - bids: [ - { - bidder: 'bidder9', - params: { - tagId: 'YWRuaW1hdGlvbi5jb20', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '324820900e1fe2e', - bidderRequestId: '31885f8b47e177c', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732982, - }, - { - bidderCode: 'rubicon', - auctionId, - bidderRequestId: '33b0897ae1ec03', - bids: [ - { - bidder: 'rubicon', - params: { - accountId: 12556, - pchain: 'playwire.com:fcddfba7adc2d929', - secure: true, - siteId: 143146, - video: { - language: 'en', - playerWidth: '640', - playerHeight: '480', - size_id: '201', - }, - zoneId: 1493791, - floor: null, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '34872cacff0a74d', - bidderRequestId: '33b0897ae1ec03', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - startTime: 1680279732984, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732983, - }, - { - bidderCode: 'bidder11', - auctionId, - bidderRequestId: '35411e18ed77aa', - bids: [ - { - bidder: 'bidder11', - params: { - cid: '8CUWWG7OK', - crid: '458063742', - size: '300x250', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '361b21bdba26d54', - bidderRequestId: '35411e18ed77aa', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732985, - }, - ], - noBids: [ - { - bidder: 'bidder5', - params: { - publisherId: '160685', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '4aa9cadf65349f', - bidderRequestId: '3291cb014b476f', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder4', - params: { - pkey: 'APPvQEaPRAB8WaJrrW74hYib', - }, - size: [300, 250], - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '24e4aa3b3f8ca51', - bidderRequestId: '236be693ac8aab1', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder11', - params: { - cid: '8CUWWG7OK', - crid: '458063742', - size: '300x250', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '361b21bdba26d54', - bidderRequestId: '35411e18ed77aa', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder6', - params: { - unit: '542293636', - delDomain: 'adnimation-d.bidder6.net', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '679d8548884e77', - bidderRequestId: '5970694290d904', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder2', - params: { - networkId: '7314', - publisherSubId: 'NotTheBee.com', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '30c770cd8b6ecb6', - bidderRequestId: '29ecdfe8cb58dcf', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder8', - params: { - siteId: '584353', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '160595fa6abe78f', - bidderRequestId: '1530e004dd66185', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'pulsepoint', - params: { - cf: '300x250', - cp: 12345, - ct: 12345, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '28ee1841acb5722', - bidderRequestId: '27676b839dab671', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'rubicon', - params: { - accountId: 12556, - pchain: 'playwire.com:fcddfba7adc2d929', - secure: true, - siteId: 143146, - video: { - language: 'en', - playerWidth: '640', - playerHeight: '480', - size_id: '201', - }, - zoneId: 1493791, - floor: null, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '34872cacff0a74d', - bidderRequestId: '33b0897ae1ec03', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - startTime: 1680279732984, - }, - { - bidder: 'bidder3', - params: { - tagid: '776781', - }, - size: [300, 250], - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '14002adaa6a668d', - bidderRequestId: '135e79fd79c43d5', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0Ast', - params: { - placement_id: '23118001', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '10eff0b5e62207e', - bidderRequestId: '943e8011283df8', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '22108ac7b778717', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder7', - params: { - unitName: 'cnsmbl-audio-320x50-slider', - unitId: '10116', - siteId: '2000033', - networkId: '9969', - zoneIds: [2005074], - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '85f09b966e352', - bidderRequestId: '795a032f6fd0a4', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder1', - params: { - placement_id: '2b370ff1b325695fdfea', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '120d003a1ad64ee', - bidderRequestId: '11ef9ba88706948', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: '33across', - params: { - siteId: 'dukr5O4SWr6iygaKkGJozW', - productId: 'siab', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '278a991ca57141', - bidderRequestId: '15bef0b1fd2b2e', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder9', - params: { - tagId: 'YWRuaW1hdGlvbi5jb20', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, }, - pbadslot: '/17118521/header-bid-tag-2', }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '324820900e1fe2e', - bidderRequestId: '31885f8b47e177c', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', + { + bidder: 'bidder0', + params: { + placement_id: 20216405, }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], + userId: { + '33acrossId': { + envelope: + 'v1.0014', }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', }, - }, - }, - }, - { - bidder: 'bidder10', - params: { - bidfloor: '0.01', - appId: '923b830f-b48b-4ec2-8586-f190599c29d0', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ + userIdAsEids: [ { - id: 'v1.0014', - atype: 1, + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], }, ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '18f09d45818b9f9', - bidderRequestId: '1735cd680171181', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], + mediaTypes: { + banner: { + sizes: [[300, 250]], }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', }, - }, - }, - }, - { - bidder: 'bidder12', - params: { - placementId: '2889932524039905404', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '22108ac7b778717', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, }, - pbadslot: '/17118521/header-bid-tag-2', }, - gpid: '/17118521/header-bid-tag-2', }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, }, }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '265f29671f2228c', - bidderRequestId: '25f69703c7839e2', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, ortb2: { site: { page: 'https://site.example.com/pb.html', @@ -6744,8 +1867,10 @@ function getMockEvents() { }, }, }, - }, + start: 1680279732963, + } ], + noBids: [ /* no need to populate */ ], bidsReceived: [ { bidderCode: 'bidder0', From e5f199d619e6808481fdb3ac236df8fdf64c12d7 Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Mon, 17 Apr 2023 15:54:03 -0500 Subject: [PATCH 14/41] Populate floor CMP field --- modules/33acrossAnalyticsAdapter.js | 31 +++++++++--------- .../modules/33acrossAnalyticsAdapter_spec.js | 32 +++++++++++++++---- 2 files changed, 42 insertions(+), 21 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index b57b47bcdad..9bc8462bfca 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -74,19 +74,19 @@ const log = getLogger(); */ class TransactionManager { #timeoutId = null; - #unsent = 0; + #pending = 0; #timeout; #transactions = {}; #onComplete; - get unsent() { - return this.#unsent; + get #unsent() { + return this.#pending; } - set unsent(value) { - this.#unsent = value; + set #unsent(value) { + this.#pending = value; - if (this.#unsent <= 0) { + if (this.#pending <= 0) { this.#clearTimeout(); this.#onComplete(); @@ -110,7 +110,7 @@ class TransactionManager { this.#transactions[transactionId] = { status: 'waiting' }; - ++this.unsent; + ++this.#unsent; this.#restartSendTimeout(); } @@ -121,11 +121,15 @@ class TransactionManager { return; } this.#transactions[transactionId].status = 'queued'; - --this.unsent; + --this.#unsent; log.info(`Queued transaction "${transactionId}". ${this.#unsent} unsent.`, this.#transactions); } + #clearTimeout() { + return window.clearTimeout(this.#timeoutId); + } + #restartSendTimeout() { this.#clearTimeout(); @@ -134,13 +138,9 @@ class TransactionManager { log.warn(`Timed out waiting for ad transactions to complete. Sending report.`); } - this.unsent = 0; + this.#unsent = 0; }, this.#timeout); } - - #clearTimeout() { - return clearTimeout(this.#timeoutId); - } } /** @@ -314,12 +314,12 @@ function parseBid({ auctionId, bidder, source, status, transactionId, ...args }) * @returns {BidResponse} * @todo implement */ -function parseBidResponse({ cpm, currency, originalCpm, mediaType, size }) { +function parseBidResponse({ cpm, currency, originalCpm, floorData, mediaType, size }) { return { cpm, cur: currency, cpmOrig: originalCpm, - cpmFloor: 0, + cpmFloor: floorData?.cpmAfterAdjustments, mediaType, size } @@ -372,6 +372,7 @@ function analyticEventHandler({ eventType, args }) { auctionBids.push(bidWon); + // eslint-disable-next-line no-unused-expressions locals.transactionManagers[args.auctionId]?.que(bidWon.transactionId); break; diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 43edd070e4e..ceaf58dda04 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -1,4 +1,3 @@ -/* eslint-disable indent */ import { expect } from 'chai'; import analyticsAdapter from 'modules/33acrossAnalyticsAdapter.js'; @@ -340,7 +339,7 @@ function getStandardAnalyticsReport() { cpm: 1.5, cur: 'USD', cpmOrig: 1.5, - cpmFloor: 0, + cpmFloor: 1, mediaType: 'banner', size: '300x250' } @@ -360,7 +359,7 @@ function getStandardAnalyticsReport() { cpm: 1.5, cur: 'USD', cpmOrig: 1.5, - cpmFloor: 0, + cpmFloor: 1, mediaType: 'banner', size: '728x90' } @@ -385,7 +384,7 @@ function getStandardAnalyticsReport() { cpm: 1.5, cur: 'USD', cpmOrig: 1.5, - cpmFloor: 0, + cpmFloor: 1, mediaType: 'banner', size: '300x250' } @@ -398,7 +397,7 @@ function getStandardAnalyticsReport() { cpm: 1.5, cur: 'USD', cpmOrig: 1.5, - cpmFloor: 0, + cpmFloor: 1, mediaType: 'banner', size: '728x90' } @@ -411,7 +410,7 @@ function getStandardAnalyticsReport() { cpm: 1.5, cur: 'USD', cpmOrig: 1.5, - cpmFloor: 0, + cpmFloor: 1, mediaType: 'banner', size: '728x90' } @@ -1092,6 +1091,9 @@ function getMockEvents() { adapterCode: 'bidder0', originalCpm: 1.5, originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, bidder: 'bidder0', timeToRespond: 341, pbLg: '1.50', @@ -1132,6 +1134,9 @@ function getMockEvents() { adapterCode: 'bidder0', originalCpm: 1.5, originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, responseTimestamp: 1680279733305, requestTimestamp: 1680279732963, bidder: 'bidder0', @@ -1169,6 +1174,9 @@ function getMockEvents() { adapterCode: 'bidder0', originalCpm: 1.5, originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, responseTimestamp: 1680279733304, requestTimestamp: 1680279732963, bidder: 'bidder0', @@ -1221,6 +1229,9 @@ function getMockEvents() { adapterCode: 'bidder0', originalCpm: 1.5, originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, responseTimestamp: 1680279733304, requestTimestamp: 1680279732963, bidder: 'bidder0', @@ -1273,6 +1284,9 @@ function getMockEvents() { adapterCode: 'bidder0', originalCpm: 1.5, originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, responseTimestamp: 1680279733305, requestTimestamp: 1680279732963, bidder: 'bidder0', @@ -1896,6 +1910,9 @@ function getMockEvents() { adapterCode: 'bidder0', originalCpm: 1.5, originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, bidder: 'bidder0', timeToRespond: 341, pbLg: '1.50', @@ -1936,6 +1953,9 @@ function getMockEvents() { adapterCode: 'bidder0', originalCpm: 1.5, originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, responseTimestamp: 1680279733305, requestTimestamp: 1680279732963, bidder: 'bidder0', From dd600c8b531f4e0caf2103bf877d3b64236b6630 Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Mon, 17 Apr 2023 20:03:25 -0500 Subject: [PATCH 15/41] fix eslint errors --- modules/33acrossAnalyticsAdapter.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 9bc8462bfca..ba1d29e5709 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -126,10 +126,12 @@ class TransactionManager { log.info(`Queued transaction "${transactionId}". ${this.#unsent} unsent.`, this.#transactions); } + // eslint-disable-next-line no-dupe-class-members #clearTimeout() { return window.clearTimeout(this.#timeoutId); } + // eslint-disable-next-line no-dupe-class-members #restartSendTimeout() { this.#clearTimeout(); From 57e5c9ee6ccf501ffd95dbd88a2eaf461e8dfb78 Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Tue, 18 Apr 2023 14:42:07 -0500 Subject: [PATCH 16/41] keep track of bids when bid_response event is received --- modules/33acrossAnalyticsAdapter.js | 50 ++- .../modules/33acrossAnalyticsAdapter_spec.js | 405 +++++++++++++++++- 2 files changed, 421 insertions(+), 34 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index ba1d29e5709..e449de46550 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -52,8 +52,7 @@ const log = getLogger(); * @property {string} source * @property {string} status * @property {BidResponse} bidResponse - * @property {string} [auctionId] // do not include in report - * @property {string} [transactionId] // do not include in report + * @property {string} [transactionId] // Only included for winning bids */ /** @@ -153,7 +152,7 @@ export const locals = { transactionManagers: {}, /** @type {string} */ endpoint: undefined, - /** @type {AnalyticsReport} */ + /** @type {AnalyticsCache} */ analyticsCache: undefined, /** sets all locals to undefined */ reset() { @@ -198,6 +197,10 @@ function enableAnalyticsWrapper(config = {}) { analyticsAdapter.originEnableAnalytics(config); } +/** + * @param {Number} configTimeout + * @return {Number} Transaction Timeout + */ function calculateTransactionTimeout(configTimeout) { if (typeof configTimeout === 'undefined') { return DEFAULT_TRANSACTION_TIMEOUT; @@ -212,6 +215,9 @@ function calculateTransactionTimeout(configTimeout) { return DEFAULT_TRANSACTION_TIMEOUT; } +/** + * @param {TransacionManager} transactionManager + */ function subscribeToGamSlotRenderEvent(transactionManager) { window.googletag = window.googletag || {}; window.googletag.cmd = window.googletag.cmd || []; @@ -254,7 +260,12 @@ function newAnalyticsCache(pid) { }; } -function createReportFromCache(analyticsCache, completedAuction) { +/** + * @param {AnalyticsCache} analyticsCache + * @param {string} completedAuctionId + * @return {AnalyticsReport} Analytics report + */ +function createReportFromCache(analyticsCache, completedAuctionId) { const { pid, bidsWon, auctions } = analyticsCache; return { @@ -263,12 +274,16 @@ function createReportFromCache(analyticsCache, completedAuction) { src: 'pbjs', analyticsVersion: ANALYTICS_VERSION, pbjsVersion: '$prebid.version$', // Replaced by build script - auctions: [ auctions[completedAuction] ], - bidsWon: bidsWon[completedAuction] + auctions: [ auctions[completedAuctionId] ], + bidsWon: bidsWon[completedAuctionId] } } /** + * @param {Object} params + * @param {Array} params.adUnits + * @param {String} params.auctionId + * @param {Array} params.bidderRequests * @returns {Auction} */ function parseAuction({ adUnits, auctionId, bidderRequests }) { @@ -307,7 +322,6 @@ function parseBid({ auctionId, bidder, source, status, transactionId, ...args }) bidder, source, status, - transactionId, bidResponse: parseBidResponse(args) } } @@ -332,9 +346,8 @@ function parseBidResponse({ cpm, currency, originalCpm, floorData, mediaType, si * @param {EVENTS[keyof EVENTS]} args.eventType */ function analyticEventHandler({ eventType, args }) { - log.info(eventType, args); switch (eventType) { - case EVENTS.AUCTION_INIT: // Move these events to top of fn. + case EVENTS.AUCTION_INIT: const auction = parseAuction(args); locals.analyticsCache.auctions[auction.auctionId] = auction; @@ -351,25 +364,26 @@ function analyticEventHandler({ eventType, args }) { subscribeToGamSlotRenderEvent(transactionManager); - for (let adUnit of args.adUnits) { - transactionManager.add(adUnit.transactionId); - } + break; + case EVENTS.BID_REQUESTED: + args.bids.forEach((bid) => { + locals.transactionManagers[args.auctionId].add(bid.transactionId); + }); break; case EVENTS.BID_RESPONSE: const bidResponse = parseBid(args); const cachedAuction = locals.analyticsCache.auctions[args.auctionId]; - const cachedAdUnit = cachedAuction.adUnits.find(adUnit => adUnit.transactionId === bidResponse.transactionId); + const cachedAdUnit = cachedAuction.adUnits.find(adUnit => adUnit.transactionId === args.transactionId); cachedAdUnit.bids.push(bidResponse); break; - case EVENTS.BID_REQUESTED: - // FIXME: It's probably a better idea to do the add at trasaction manager. - break; - // see also `slotRenderEnded` GAM-event listener case EVENTS.BID_WON: - const bidWon = parseBid(args); + const bidWon = Object.assign(parseBid(args), { + transactionId: args.transactionId + }); + const auctionBids = locals.analyticsCache.bidsWon[args.auctionId]; auctionBids.push(bidWon); diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index ceaf58dda04..efcbdf11e47 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -102,7 +102,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { }); }); - describe('when handling events', function() { + describe('Event Handling', function() { beforeEach(function() { this.defaultTimeout = 3000; this.enableAnalytics = (options) => { @@ -128,9 +128,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { sandbox.stub(navigator, 'sendBeacon') .withArgs('foo-endpoint', JSON.stringify(getStandardAnalyticsReport())) .returns(true); - performStandardAuction(); - clock.tick(this.defaultTimeout + 1); sinon.assert.calledOnce(navigator.sendBeacon); @@ -153,7 +151,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { }); }); - context('when a bid-won event is received', function() { + context('when a BID_WON event is received', function() { context('and there\'s no record of that bid being requested', function() { it('logs a warning message', function() { sandbox.spy(utils, 'logWarn'); @@ -177,7 +175,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { }); }); - context('when the same bid-won event is received more than once', function() { + context('when the same BID_REQUESTED event is received more than once', function() { it('logs a warning message', function() { sandbox.spy(utils, 'logWarn'); @@ -187,9 +185,11 @@ describe.only('33acrossAnalyticsAdapter:', function() { const { prebid } = mockEvents; const [ auction ] = prebid; - events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + events.emit(EVENTS.BID_REQUESTED, auction.BID_REQUESTED[0]); + events.emit(EVENTS.BID_REQUESTED, auction.BID_REQUESTED[0]); + sinon.assert.calledWithExactly(utils.logWarn, '33across Analytics: transactionId "ef947609-7b55-4420-8407-599760d0e373" already exists') }); }); @@ -255,6 +255,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { /** * Events in possible order of execution + * * ADD_AD_UNITS * REQUEST_BIDS * BEFORE_REQUEST_BIDS @@ -285,6 +286,10 @@ function performStandardAuction() { for (let auction of prebid) { events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + auction.BID_REQUESTED.forEach((bidRequestedEvent) => { + events.emit(EVENTS.BID_REQUESTED, bidRequestedEvent); + }); + auction.BID_RESPONSE.forEach((bidResponseEvent) => { events.emit(EVENTS.BID_RESPONSE, bidResponseEvent); }); @@ -303,12 +308,14 @@ function performStandardAuction() { function performAuctionWithMissingBidWon() { const mockEvents = getMockEvents(); - let { prebid } = mockEvents; - + const { prebid } = mockEvents; const [ auction ] = prebid; events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + auction.BID_REQUESTED.forEach((bidRequestedEvent) => { + events.emit(EVENTS.BID_REQUESTED, bidRequestedEvent); + }); auction.BID_RESPONSE.forEach((bidResponseEvent) => { events.emit(EVENTS.BID_RESPONSE, bidResponseEvent); }); @@ -334,7 +341,6 @@ function getStandardAnalyticsReport() { bidder: 'bidder0', source: 'client', status: 'rendered', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', bidResponse: { cpm: 1.5, cur: 'USD', @@ -354,7 +360,6 @@ function getStandardAnalyticsReport() { bidder: 'bidder0', source: 'client', status: 'targetingSet', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', bidResponse: { cpm: 1.5, cur: 'USD', @@ -379,7 +384,6 @@ function getStandardAnalyticsReport() { bidder: 'bidder0', source: 'client', status: 'rendered', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', bidResponse: { cpm: 1.5, cur: 'USD', @@ -387,12 +391,12 @@ function getStandardAnalyticsReport() { cpmFloor: 1, mediaType: 'banner', size: '300x250' - } + }, + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', }, { bidder: 'bidder0', source: 'client', status: 'rendered', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', bidResponse: { cpm: 1.5, cur: 'USD', @@ -400,12 +404,12 @@ function getStandardAnalyticsReport() { cpmFloor: 1, mediaType: 'banner', size: '728x90' - } + }, + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', }, { bidder: 'bidder0', source: 'client', status: 'targetingSet', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', bidResponse: { cpm: 1.5, cur: 'USD', @@ -413,7 +417,8 @@ function getStandardAnalyticsReport() { cpmFloor: 1, mediaType: 'banner', size: '728x90' - } + }, + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', }] }; } @@ -1067,6 +1072,374 @@ function getMockEvents() { publisherId: '1001', }, }, + BID_REQUESTED: [{ + bidderCode: 'bidder0', + auctionId, + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + bids: [ + { + bidder: 'bidder0', + params: { + placement_id: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'ef947609-7b55-4420-8407-599760d0e373', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-0', + }, + pbadslot: '/19968336/header-bid-tag-0', + }, + gpid: '/19968336/header-bid-tag-0', + }, + }, + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-0', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + sizes: [ + [300, 250], + [300, 600], + ], + bidId: '20661fc5fbb5d9b', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'abab4423-d962-41aa-adc7-0681f686c330', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-1', + }, + pbadslot: '/19968336/header-bid-tag-1', + }, + gpid: '/19968336/header-bid-tag-1', + }, + }, + mediaTypes: { + banner: { + sizes: [ + [728, 90], + [970, 250], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-1', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + sizes: [ + [728, 90], + [970, 250], + ], + bidId: '21ad295f40dd7ab', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 20216405, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '22108ac7b778717', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732963, + }], BID_RESPONSE: [{ bidderCode: 'bidder0', width: 300, From 7bcae159348a64acf7ab2d170ee5610397ac947c Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Tue, 18 Apr 2023 15:08:13 -0500 Subject: [PATCH 17/41] Additional fn documentation --- modules/33acrossAnalyticsAdapter.js | 47 ++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index e449de46550..dbc9e213e9c 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -125,6 +125,7 @@ class TransactionManager { log.info(`Queued transaction "${transactionId}". ${this.#unsent} unsent.`, this.#transactions); } + // gulp-eslint is using eslint 6, a version that doesn't support private method syntax // eslint-disable-next-line no-dupe-class-members #clearTimeout() { return window.clearTimeout(this.#timeoutId); @@ -198,8 +199,8 @@ function enableAnalyticsWrapper(config = {}) { } /** - * @param {Number} configTimeout - * @return {Number} Transaction Timeout + * @param {number|undefined} configTimeout + * @return {number} Transaction Timeout */ function calculateTransactionTimeout(configTimeout) { if (typeof configTimeout === 'undefined') { @@ -261,9 +262,9 @@ function newAnalyticsCache(pid) { } /** - * @param {AnalyticsCache} analyticsCache - * @param {string} completedAuctionId - * @return {AnalyticsReport} Analytics report + * @param {AnalyticsCache} analyticsCache + * @param {string} completedAuctionId + * @return {AnalyticsReport} Analytics report */ function createReportFromCache(analyticsCache, completedAuctionId) { const { pid, bidsWon, auctions } = analyticsCache; @@ -280,10 +281,10 @@ function createReportFromCache(analyticsCache, completedAuctionId) { } /** - * @param {Object} params - * @param {Array} params.adUnits - * @param {String} params.auctionId - * @param {Array} params.bidderRequests + * @param {Object} params + * @param {Array} params.adUnits + * @param {string} params.auctionId + * @param {Array} params.bidderRequests * @returns {Auction} */ function parseAuction({ adUnits, auctionId, bidderRequests }) { @@ -299,9 +300,15 @@ function parseAuction({ adUnits, auctionId, bidderRequests }) { } /** + * @param {Object} params + * @param {string} params.transactionId + * @param {string} params.code + * @param {string} params.slotId + * @param {Array} params.mediaTypes + * @param {Array} params.sizes * @returns {AdUnit} */ -function parseAdUnit({ transactionId, code, slotId, mediaTypes, sizes, bids }) { +function parseAdUnit({ transactionId, code, slotId, mediaTypes, sizes }) { log.warn(`parsing adUnit, slotId not yet implemented`); return { @@ -315,9 +322,15 @@ function parseAdUnit({ transactionId, code, slotId, mediaTypes, sizes, bids }) { } /** + * @param {Object} params + * @param {string} params.auctionId + * @param {string} params.bidder + * @param {string} params.source + * @param {string} params.status + * @param {Object} params.args * @returns {Bid} */ -function parseBid({ auctionId, bidder, source, status, transactionId, ...args }) { +function parseBid({ auctionId, bidder, source, status, ...args }) { return { bidder, source, @@ -327,8 +340,14 @@ function parseBid({ auctionId, bidder, source, status, transactionId, ...args }) } /** + * @param {Object} params + * @param {number} params.cpm + * @param {string} params.currency + * @param {number} params.originalCpm + * @param {Object} params.floorData + * @param {string} params.mediaType + * @param {string} params.size * @returns {BidResponse} - * @todo implement */ function parseBidResponse({ cpm, currency, originalCpm, floorData, mediaType, size }) { return { @@ -400,8 +419,8 @@ function analyticEventHandler({ eventType, args }) { /** * Guarantees sending of data without waiting for response, even after page is left/closed * - * @param {AnalyticsReport} report - * @param {string} endpoint + * @param {AnalyticsReport} report Request payload + * @param {string} endpoint URL */ function sendReport(report, endpoint) { if (navigator.sendBeacon(endpoint, JSON.stringify(report))) { From 96f6610e74231fb731322524045cc4f15e2ee730 Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Tue, 18 Apr 2023 19:23:11 -0500 Subject: [PATCH 18/41] change jsdoc naming + spec refactoring --- modules/33acrossAnalyticsAdapter.js | 55 +++++++++++-------- .../modules/33acrossAnalyticsAdapter_spec.js | 2 +- 2 files changed, 33 insertions(+), 24 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index dbc9e213e9c..1a519b82e6d 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -171,6 +171,9 @@ const analyticsAdapter = Object.assign( analyticsAdapter.originEnableAnalytics = analyticsAdapter.enableAnalytics; analyticsAdapter.enableAnalytics = enableAnalyticsWrapper; +/** + * @param {Object} [config] Analytics module configuration + */ function enableAnalyticsWrapper(config = {}) { const { options = {} } = config; const endpoint = options.endpoint; @@ -281,10 +284,10 @@ function createReportFromCache(analyticsCache, completedAuctionId) { } /** - * @param {Object} params - * @param {Array} params.adUnits - * @param {string} params.auctionId - * @param {Array} params.bidderRequests + * @param {Object} args + * @param {Array} args.adUnits + * @param {string} args.auctionId + * @param {Array} args.bidderRequests * @returns {Auction} */ function parseAuction({ adUnits, auctionId, bidderRequests }) { @@ -300,12 +303,12 @@ function parseAuction({ adUnits, auctionId, bidderRequests }) { } /** - * @param {Object} params - * @param {string} params.transactionId - * @param {string} params.code - * @param {string} params.slotId - * @param {Array} params.mediaTypes - * @param {Array} params.sizes + * @param {Object} args + * @param {string} args.transactionId + * @param {string} args.code + * @param {string} args.slotId + * @param {Array} args.mediaTypes + * @param {Array} args.sizes * @returns {AdUnit} */ function parseAdUnit({ transactionId, code, slotId, mediaTypes, sizes }) { @@ -322,12 +325,12 @@ function parseAdUnit({ transactionId, code, slotId, mediaTypes, sizes }) { } /** - * @param {Object} params - * @param {string} params.auctionId - * @param {string} params.bidder - * @param {string} params.source - * @param {string} params.status - * @param {Object} params.args + * @param {Object} args + * @param {string} args.auctionId + * @param {string} args.bidder + * @param {string} args.source + * @param {string} args.status + * @param {Object} args.args * @returns {Bid} */ function parseBid({ auctionId, bidder, source, status, ...args }) { @@ -340,13 +343,13 @@ function parseBid({ auctionId, bidder, source, status, ...args }) { } /** - * @param {Object} params - * @param {number} params.cpm - * @param {string} params.currency - * @param {number} params.originalCpm - * @param {Object} params.floorData - * @param {string} params.mediaType - * @param {string} params.size + * @param {Object} args + * @param {number} args.cpm + * @param {string} args.currency + * @param {number} args.originalCpm + * @param {Object} args.floorData + * @param {string} args.mediaType + * @param {string} args.size * @returns {BidResponse} */ function parseBidResponse({ cpm, currency, originalCpm, floorData, mediaType, size }) { @@ -362,6 +365,7 @@ function parseBidResponse({ cpm, currency, originalCpm, floorData, mediaType, si /** * @param {Object} args + * @param {Object} args.args Event data * @param {EVENTS[keyof EVENTS]} args.eventType */ function analyticEventHandler({ eventType, args }) { @@ -432,6 +436,11 @@ function sendReport(report, endpoint) { log.error('Analytics report exceeded User-Agent data limits and was not sent.', report); } +/** + * Encapsute certain logger functions and add a prefix to the final messages. + * + * @return {Object} New logger functions + */ function getLogger() { const LPREFIX = `${PROVIDER_NAME} Analytics: `; diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index efcbdf11e47..0f983de038b 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -132,7 +132,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { clock.tick(this.defaultTimeout + 1); sinon.assert.calledOnce(navigator.sendBeacon); - sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: Analytics report sent to foo-endpoint', sinon.match.object); + sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: Analytics report sent to foo-endpoint', getStandardAnalyticsReport()); }); }); }); From 08946c91165d216e8c54f25f42069429132bc41b Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Wed, 19 Apr 2023 09:09:50 -0400 Subject: [PATCH 19/41] remote siteId, make endpoint specification optional (provide default), refactoring, fix tests --- modules/33acrossAnalyticsAdapter.js | 105 +- modules/33acrossAnalyticsAdapter.md | 17 +- package-lock.json | 25377 +--------------- .../modules/33acrossAnalyticsAdapter_spec.js | 187 +- 4 files changed, 218 insertions(+), 25468 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 1a519b82e6d..90610eef448 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -1,23 +1,26 @@ -/* eslint-disable no-console */ -import { logError, logWarn, logInfo, deepAccess } from '../src/utils.js'; +import * as utils from '../src/utils.js'; import buildAdapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'; import adapterManager from '../src/adapterManager.js'; import CONSTANTS from '../src/constants.json'; + +/** + * @typedef {typeof import('../src/constants.json').EVENTS} EVENTS + */ const { EVENTS } = CONSTANTS; const ANALYTICS_VERSION = '1.0.0'; const PROVIDER_NAME = '33across'; const DEFAULT_TRANSACTION_TIMEOUT = 3000; +const DEFAULT_ENDPOINT = `${window.origin}/api`; // TODO: Update to production endpoint -const log = getLogger(); +export const log = getLogger(); /** - * @typedef {Object} AnalyticsReport Sent when all bids are complete (as determined by `bidWon` and `slotRenderEnded` events) - * @property {string} siteId - * @property {string} pid Partner ID - * @property {string} src Source of the report (pbjs) - * @property {string} analyticsVersion - * @property {string} pbjsVersion + * @typedef {Object} AnalyticsReport - Sent when all bids are complete (as determined by `bidWon` and `slotRenderEnded` events) + * @property {string} pid - Partner ID + * @property {'pbjs'} src - Source of the report + * @property {string} analyticsVersion - Version of the Prebid.js 33Across Analytics Adapter + * @property {string} pbjsVersion - Version of Prebid.js * @property {Auction[]} auctions * @property {Bid[]} bidsWon */ @@ -30,7 +33,7 @@ const log = getLogger(); */ /** - * @typedef {Object} Auction + * @typedef {Object} Auction - Parsed auction data * @property {AdUnit[]} adUnits * @property {string} auctionId * @property {Object} userIds @@ -47,21 +50,24 @@ const log = getLogger(); */ /** - * @typedef {Object} Bid + * @typedef {Object} Bid - Parsed bid data * @property {string} bidder * @property {string} source * @property {string} status * @property {BidResponse} bidResponse - * @property {string} [transactionId] // Only included for winning bids + * @property {string} [transactionId] - Only included for winning bids */ /** - * @typedef {Object} AdUnit - * @property {string} transactionId + * @typedef {Object} AdUnit - Parsed adUnit data + * @property {string} transactionId - Primary key for *this* auction/adUnit/bid combination * @property {string} adUnitCode - * @property {string} slotId - * @property {Array} mediaTypes - * @property {Array} sizes + * @property {string} slotId - Equivalent to GPID. (Note that + * GPID supports adUnits where multiple units have the same `code` values + * by appending a `#UNIQUIFIER`. The value of the UNIQUIFIER is likely to be the div-id, + * but, if div-id is randomized / unavailable, may be something else like the media size) + * @property {Array<('banner'|'native'|'video')>} mediaTypes + * @property {Array<`${number}x${number}`>} sizes * @property {Array} bids */ @@ -128,14 +134,17 @@ class TransactionManager { // gulp-eslint is using eslint 6, a version that doesn't support private method syntax // eslint-disable-next-line no-dupe-class-members #clearTimeout() { + log.info(`clear timeout. #timeoutId: ${this.#timeoutId}`); return window.clearTimeout(this.#timeoutId); } // eslint-disable-next-line no-dupe-class-members #restartSendTimeout() { + log.info(`Restarting send timeout. ${this.#unsent} unsent.`); this.#clearTimeout(); this.#timeoutId = setTimeout(() => { + log.info(`timeout triggered. #timeout: ${this.#timeout}. #unsent: ${this.#unsent}`); if (this.#timeout !== 0) { log.warn(`Timed out waiting for ad transactions to complete. Sending report.`); } @@ -148,17 +157,17 @@ class TransactionManager { /** * initialized during `enableAnalytics` */ -export const locals = { +const locals = { /** @type {Object} */ transactionManagers: {}, /** @type {string} */ - endpoint: undefined, - /** @type {AnalyticsCache} */ + endpoint: DEFAULT_ENDPOINT, + /** @type {AnalyticsReport} */ analyticsCache: undefined, /** sets all locals to undefined */ reset() { this.transactionManagers = {}; - this.endpoint = undefined; + this.endpoint = DEFAULT_ENDPOINT; this.analyticsCache = undefined; } } @@ -176,13 +185,6 @@ analyticsAdapter.enableAnalytics = enableAnalyticsWrapper; */ function enableAnalyticsWrapper(config = {}) { const { options = {} } = config; - const endpoint = options.endpoint; - - if (!endpoint) { - log.error('No endpoint provided for "options.endpoint". No analytics will be sent.'); - - return; - } const pid = options.pid; if (!pid) { @@ -191,6 +193,7 @@ function enableAnalyticsWrapper(config = {}) { return; } + const endpoint = calculateEndpoint(options.endpoint); this.getUrl = () => endpoint; const timeout = calculateTransactionTimeout(options.timeout); @@ -201,9 +204,22 @@ function enableAnalyticsWrapper(config = {}) { analyticsAdapter.originEnableAnalytics(config); } +/** + * @param {string} endpoint + * @returns {string} + */ +function calculateEndpoint(endpoint) { + if (typeof endpoint === 'string' && endpoint.length > 0 && endpoint.startsWith('http')) { + return endpoint; + } + + log.info(`Invalid endpoint provided for "options.endpoint". Using default endpoint.`); + + return DEFAULT_ENDPOINT; +} /** * @param {number|undefined} configTimeout - * @return {number} Transaction Timeout + * @returns {number} Transaction Timeout */ function calculateTransactionTimeout(configTimeout) { if (typeof configTimeout === 'undefined') { @@ -230,8 +246,7 @@ function subscribeToGamSlotRenderEvent(transactionManager) { log.info('slotRenderEnded', event); const slot = `${event.slot.getAdUnitPath()}:${event.slot.getSlotElementId()}`; - - transactionManager.que(slot); + log.info(slot); }); }); } @@ -266,14 +281,13 @@ function newAnalyticsCache(pid) { /** * @param {AnalyticsCache} analyticsCache - * @param {string} completedAuctionId + * @param {string} completedAuctionId value of auctionId * @return {AnalyticsReport} Analytics report */ function createReportFromCache(analyticsCache, completedAuctionId) { const { pid, bidsWon, auctions } = analyticsCache; return { - siteId: '', // FIXME: possibly remove, awaiting more information222222 pid, src: 'pbjs', analyticsVersion: ANALYTICS_VERSION, @@ -298,7 +312,7 @@ function parseAuction({ adUnits, auctionId, bidderRequests }) { return { adUnits: adUnits.map(unit => parseAdUnit(unit)), auctionId, - userIds: Object.keys(deepAccess(bidderRequests, '0.bids.0.userId', {})) + userIds: Object.keys(utils.deepAccess(bidderRequests, '0.bids.0.userId', {})) } } @@ -306,18 +320,19 @@ function parseAuction({ adUnits, auctionId, bidderRequests }) { * @param {Object} args * @param {string} args.transactionId * @param {string} args.code - * @param {string} args.slotId + * @param {string} args.ortb2Imp * @param {Array} args.mediaTypes * @param {Array} args.sizes * @returns {AdUnit} */ -function parseAdUnit({ transactionId, code, slotId, mediaTypes, sizes }) { - log.warn(`parsing adUnit, slotId not yet implemented`); - +function parseAdUnit({ transactionId, code, ortb2Imp, mediaTypes, sizes }) { return { transactionId, adUnitCode: code, - slotId: '', // FIXME: slot ID has to be populated from the slotRenderEnded event + // Note: GPID supports adUnits that have matching `code` values by appending a `#UNIQUIFIER`. + // The value of the UNIQUIFIER is likely to be the div-id, + // but, if div-id is randomized / unavailable, may be something else like the media size) + slotId: utils.deepAccess(ortb2Imp, 'ext.gpid', code), mediaTypes: Object.keys(mediaTypes), sizes: sizes.map(size => size.join('x')), bids: [] @@ -380,8 +395,10 @@ function analyticEventHandler({ eventType, args }) { new TransactionManager({ timeout: analyticsAdapter.getTimeout(), onComplete() { - sendReport(createReportFromCache(locals.analyticsCache, auction.auctionId), - analyticsAdapter.getUrl()); + sendReport( + createReportFromCache(locals.analyticsCache, auction.auctionId), + analyticsAdapter.getUrl() + ); } }); @@ -445,8 +462,8 @@ function getLogger() { const LPREFIX = `${PROVIDER_NAME} Analytics: `; return { - info: (msg, ...args) => logInfo(`${LPREFIX}${msg}`, ...args), - warn: (msg, ...args) => logWarn(`${LPREFIX}${msg}`, ...args), - error: (msg, ...args) => logError(`${LPREFIX}${msg}`, ...args), + info: (msg, ...args) => utils.logInfo(`${LPREFIX}${msg}`, ...args), + warn: (msg, ...args) => utils.logWarn(`${LPREFIX}${msg}`, ...args), + error: (msg, ...args) => utils.logError(`${LPREFIX}${msg}`, ...args), } } diff --git a/modules/33acrossAnalyticsAdapter.md b/modules/33acrossAnalyticsAdapter.md index 6375e29ee26..88ab6d55f0e 100644 --- a/modules/33acrossAnalyticsAdapter.md +++ b/modules/33acrossAnalyticsAdapter.md @@ -11,12 +11,21 @@ Module Type: Analytics Adapter pbjs.enableAnalytics({ provider: '33across', options: { - /** The partner id assigned to you by the 33Across Team */ + /** + * The partner id assigned by the 33Across Team + */ pid: 12345, - /** Given by the 33Across Team */ + /** + * Defaults to 33Across endpoint if not provided + * [optional] + */ endpoint: 'https://localhost:9999/event', - /** [optional] timeout in milliseconds after which an auction report will sent regardless of auction state */ - timeout: 3000 + /** + * Timeout in milliseconds after which an auction report + * will be sent regardless of auction state + * [optional] + */ + timeout: 3000 } }); ``` diff --git a/package-lock.json b/package-lock.json index a6e6020a443..c3558d2041d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,25281 +3,6 @@ "version": "7.50.0-pre", "lockfileVersion": 2, "requires": true, - "packages": { - "": { - "name": "prebid.js", - "version": "7.48.0-pre", - "license": "Apache-2.0", - "dependencies": { - "@babel/core": "^7.16.7", - "@babel/plugin-transform-runtime": "^7.18.9", - "@babel/preset-env": "^7.16.8", - "@babel/runtime": "^7.18.9", - "core-js": "^3.13.0", - "core-js-pure": "^3.13.0", - "criteo-direct-rsa-validate": "^1.1.0", - "crypto-js": "^3.3.0", - "dlv": "1.1.3", - "dset": "3.1.2", - "express": "^4.15.4", - "fun-hooks": "^0.9.9", - "just-clone": "^1.0.2", - "live-connect-js": "^5.0.0" - }, - "devDependencies": { - "@babel/eslint-parser": "^7.16.5", - "@wdio/browserstack-service": "~7.16.0", - "@wdio/cli": "~7.5.2", - "@wdio/concise-reporter": "~7.5.2", - "@wdio/local-runner": "~7.5.2", - "@wdio/mocha-framework": "~7.5.2", - "@wdio/spec-reporter": "~7.19.0", - "@wdio/sync": "~7.5.2", - "ajv": "6.12.3", - "assert": "^2.0.0", - "babel-loader": "^8.0.5", - "babel-plugin-istanbul": "^6.1.1", - "babel-register": "^6.26.0", - "body-parser": "^1.19.0", - "chai": "^4.2.0", - "coveralls": "^3.1.0", - "deep-equal": "^2.0.3", - "documentation": "^14.0.0", - "es5-shim": "^4.5.14", - "eslint": "^7.27.0", - "eslint-config-standard": "^10.2.1", - "eslint-plugin-import": "^2.20.2", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prebid": "file:./plugins/eslint", - "eslint-plugin-promise": "^5.1.0", - "eslint-plugin-standard": "^3.0.1", - "execa": "^1.0.0", - "faker": "^5.5.3", - "fs.extra": "^1.3.2", - "gulp": "^4.0.0", - "gulp-clean": "^0.4.0", - "gulp-concat": "^2.6.0", - "gulp-connect": "^5.7.0", - "gulp-eslint": "^6.0.0", - "gulp-if": "^3.0.0", - "gulp-js-escape": "^1.0.1", - "gulp-replace": "^1.0.0", - "gulp-shell": "^0.8.0", - "gulp-sourcemaps": "^3.0.0", - "gulp-terser": "^2.0.1", - "gulp-util": "^3.0.0", - "is-docker": "^2.2.1", - "istanbul": "^0.4.5", - "karma": "^6.3.2", - "karma-babel-preprocessor": "^8.0.1", - "karma-browserstack-launcher": "1.4.0", - "karma-chai": "^0.1.0", - "karma-chrome-launcher": "^3.1.0", - "karma-coverage": "^2.0.1", - "karma-coverage-istanbul-reporter": "^3.0.3", - "karma-es5-shim": "^0.0.4", - "karma-firefox-launcher": "^2.1.0", - "karma-ie-launcher": "^1.0.0", - "karma-mocha": "^2.0.1", - "karma-mocha-reporter": "^2.2.5", - "karma-opera-launcher": "^1.0.0", - "karma-safari-launcher": "^1.0.0", - "karma-script-launcher": "^1.0.0", - "karma-sinon": "^1.0.5", - "karma-sourcemap-loader": "^0.3.7", - "karma-spec-reporter": "^0.0.32", - "karma-webpack": "^5.0.0", - "lodash": "^4.17.21", - "mocha": "^10.0.0", - "morgan": "^1.10.0", - "opn": "^5.4.0", - "resolve-from": "^5.0.0", - "sinon": "^4.1.3", - "through2": "^4.0.2", - "url": "^0.11.0", - "url-parse": "^1.0.5", - "video.js": "^7.17.0", - "videojs-contrib-ads": "^6.9.0", - "videojs-ima": "^1.11.0", - "videojs-playlist": "^5.0.0", - "webdriverio": "^7.6.1", - "webpack": "^5.70.0", - "webpack-bundle-analyzer": "^4.5.0", - "webpack-manifest-plugin": "^5.0.0", - "webpack-stream": "^7.0.0", - "yargs": "^1.3.1" - }, - "engines": { - "node": ">=8.9.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.19.6.tgz", - "integrity": "sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==", - "dependencies": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.19.6", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helpers": "^7.19.4", - "@babel/parser": "^7.19.6", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.6", - "@babel/types": "^7.19.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/eslint-parser": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", - "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", - "dev": true, - "dependencies": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.11.0", - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.1.tgz", - "integrity": "sha512-u1dMdBUmA7Z0rBB97xh8pIhviK7oItYOkjbsCxTWMknyvbQRBwX7/gn4JXurRdirWMFh+ZtYARqkA6ydogVZpg==", - "dependencies": { - "@babel/types": "^7.20.0", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/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==", - "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/@babel/helper-annotate-as-pure": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", - "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", - "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "dependencies": { - "@babel/compat-data": "^7.20.0", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz", - "integrity": "sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", - "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", - "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", - "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", - "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", - "dependencies": { - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz", - "integrity": "sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.19.4", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.6", - "@babel/types": "^7.19.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", - "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz", - "integrity": "sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", - "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", - "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/traverse": "^7.19.1", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz", - "integrity": "sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==", - "dependencies": { - "@babel/types": "^7.19.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", - "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", - "dependencies": { - "@babel/types": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "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==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" - }, - "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==", - "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/parser": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.1.tgz", - "integrity": "sha512-hp0AYxaZJhxULfM1zyp7Wgr+pSUKBcP3M+PHnSzWGdXOzg/kHWIgiUWARvubhUKGOEw3xqY4x+lyZ9ytBVcELw==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", - "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", - "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-proposal-optional-chaining": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz", - "integrity": "sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==", - "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", - "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", - "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", - "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", - "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", - "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", - "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz", - "integrity": "sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==", - "dependencies": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", - "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", - "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", - "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", - "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", - "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", - "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", - "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.0.tgz", - "integrity": "sha512-sXOohbpHZSk7GjxK9b3dKB7CfqUD5DwOH+DggKzOQ7TXYP+RCSbRykfjQmn/zq+rBjycVRtLf9pYhAaEJA786w==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz", - "integrity": "sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.19.0", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", - "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.0.tgz", - "integrity": "sha512-1dIhvZfkDVx/zn2S1aFwlruspTt4189j7fEkH0Y0VyuDM6bQt7bD6kLcz3l4IlLG+e5OReaBz9ROAbttRtUHqA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", - "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", - "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", - "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", - "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", - "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", - "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", - "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", - "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", - "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", - "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", - "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", - "dependencies": { - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-simple-access": "^7.19.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", - "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", - "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.19.6", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-identifier": "^7.19.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", - "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", - "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", - "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", - "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.1.tgz", - "integrity": "sha512-nDvKLrAvl+kf6BOy1UJ3MGwzzfTMgppxwiD2Jb4LO3xjYyZq30oQzDNJbCQpMdG9+j2IXHoiMrw5Cm/L6ZoxXQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", - "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", - "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.19.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz", - "integrity": "sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==", - "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", - "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", - "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", - "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", - "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", - "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", - "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", - "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.19.4.tgz", - "integrity": "sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==", - "dependencies": { - "@babel/compat-data": "^7.19.4", - "@babel/helper-compilation-targets": "^7.19.3", - "@babel/helper-plugin-utils": "^7.19.0", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.19.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.19.4", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.19.4", - "@babel/plugin-transform-classes": "^7.19.0", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.19.4", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.18.6", - "@babel/plugin-transform-modules-commonjs": "^7.18.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.0", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.18.8", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.19.4", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.1.tgz", - "integrity": "sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==", - "dependencies": { - "regenerator-runtime": "^0.13.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.20.1.tgz", - "integrity": "sha512-CGulbEDcg/ND1Im7fUNRZdGXmX2MTWVVZacQi/6DiKE5HNwZ3aVTm5PV4lO8HHz0B2h8WQyvKKjbX5XgTtydsg==", - "dev": true, - "dependencies": { - "core-js-pure": "^3.25.1", - "regenerator-runtime": "^0.13.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", - "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.10", - "@babel/types": "^7.18.10" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.20.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.0.tgz", - "integrity": "sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==", - "dependencies": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "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/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/@eslint/eslintrc/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/@gulp-sourcemaps/identity-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-2.0.1.tgz", - "integrity": "sha512-Tb+nSISZku+eQ4X1lAkevcQa+jknn/OVUgZ3XCxEKIsLsqYuPoJwJOPQeaOk75X3WPftb29GWY1eqE7GLsXb1Q==", - "dev": true, - "dependencies": { - "acorn": "^6.4.1", - "normalize-path": "^3.0.0", - "postcss": "^7.0.16", - "source-map": "^0.6.0", - "through2": "^3.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/@gulp-sourcemaps/identity-map/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - } - }, - "node_modules/@gulp-sourcemaps/identity-map/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/@gulp-sourcemaps/identity-map/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/@gulp-sourcemaps/map-sources": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", - "integrity": "sha512-o/EatdaGt8+x2qpb0vFLC/2Gug/xYPRXb6a+ET1wGYKozKN3krDWC/zZFZAtrzxJHuDL12mwdfEFKcKMNvc55A==", - "dev": true, - "dependencies": { - "normalize-path": "^2.0.1", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/@gulp-sourcemaps/map-sources/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@gulp-sourcemaps/map-sources/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/@hapi/boom": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", - "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", - "dev": true, - "dependencies": { - "@hapi/hoek": "9.x.x" - } - }, - "node_modules/@hapi/cryptiles": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-5.1.0.tgz", - "integrity": "sha512-fo9+d1Ba5/FIoMySfMqPBR/7Pa29J2RsiPrl7bkwo5W5o+AN1dAYQRi4SPrPwwVxVGKjgLOEWrsvt1BonJSfLA==", - "dev": true, - "dependencies": { - "@hapi/boom": "9.x.x" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@hapi/hoek": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", - "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", - "dev": true - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "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/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/@jest/types/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/@jest/types/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/@jest/types/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/@jest/types/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/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types/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/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "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==", - "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/source-map/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/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==" - }, - "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==", - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "dev": true, - "dependencies": { - "eslint-scope": "5.1.1" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", - "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", - "dev": true - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/formatio": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz", - "integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==", - "dev": true, - "dependencies": { - "samsam": "1.3.0" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" - } - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true - }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@types/aria-query": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", - "integrity": "sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==", - "dev": true - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz", - "integrity": "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==", - "dev": true, - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "*", - "@types/node": "*", - "@types/responselike": "*" - } - }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", - "dev": true, - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/diff": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@types/diff/-/diff-5.0.2.tgz", - "integrity": "sha512-uw8eYMIReOwstQ0QKF0sICefSy8cNO/v7gOTiIy9SbwuHyEecJUm7qlgueOO5S1udZ5I/irVydHVwMchgzbKTg==", - "dev": true - }, - "node_modules/@types/easy-table": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/easy-table/-/easy-table-0.0.33.tgz", - "integrity": "sha512-/vvqcJPmZUfQwCgemL0/34G7bIQnCuvgls379ygRlcC1FqNqk3n+VZ15dAO51yl6JNDoWd8vsk+kT8zfZ1VZSw==", - "dev": true - }, - "node_modules/@types/ejs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.1.tgz", - "integrity": "sha512-RQul5wEfY7BjWm0sYY86cmUN/pcXWGyVxWX93DFFJvcrxax5zKlieLwA3T77xJGwNcZW0YW6CYG70p1m8xPFmA==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "8.4.9", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.9.tgz", - "integrity": "sha512-jFCSo4wJzlHQLCpceUhUnXdrPuCNOjGFMQ8Eg6JXxlz3QaCKOb7eGi2cephQdM4XTYsNej69P9JDJ1zqNIbncQ==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "node_modules/@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", - "dev": true - }, - "node_modules/@types/extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.1.tgz", - "integrity": "sha512-R1g/VyKFFI2HLC1QGAeTtCBWCo6n75l41OnsVYNbmKG+kempOESaodf6BeJyUM3Q0rKa/NQcTHbB2+66lNnxLw==", - "dev": true - }, - "node_modules/@types/fibers": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/fibers/-/fibers-3.1.1.tgz", - "integrity": "sha512-yHoUi46uika0snoTpNcVqUSvgbRndaIps4TUCotrXjtc0DHDoPQckmyXEZ2bX3e4mpJmyEW3hRhCwQa/ISCPaA==", - "dev": true - }, - "node_modules/@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/github-slugger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@types/github-slugger/-/github-slugger-1.3.0.tgz", - "integrity": "sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g==", - "dev": true - }, - "node_modules/@types/hast": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz", - "integrity": "sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, - "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/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-HhxyLejTHMfohAuhRun4csWigAMjXTmRyiJTU1Y/I1xmggikFMkOUoMQRlFm+zQcPEGHSs3io/0FAmNZf8EymQ==", - "dev": true, - "dependencies": { - "@types/through": "*", - "rxjs": "^6.4.0" - } - }, - "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/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/keyv": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-4.2.0.tgz", - "integrity": "sha512-xoBtGl5R9jeKUhc8ZqeYaRDx04qqJ10yhhXYGmJ4Jr8qKpvMsDQQrNUvF/wUJ4klOtmJeJM+p2Xo3zp9uaC3tw==", - "deprecated": "This is a stub types definition. keyv provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "keyv": "*" - } - }, - "node_modules/@types/lodash": { - "version": "4.14.187", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.187.tgz", - "integrity": "sha512-MrO/xLXCaUgZy3y96C/iOsaIqZSeupyTImKClHunL5GrmaiII2VwvWmLBu2hwa0Kp0sV19CsyjtrTc/Fx8rg/A==", - "dev": true - }, - "node_modules/@types/lodash.flattendeep": { - "version": "4.4.7", - "resolved": "https://registry.npmjs.org/@types/lodash.flattendeep/-/lodash.flattendeep-4.4.7.tgz", - "integrity": "sha512-1h6GW/AeZw/Wej6uxrqgmdTDZX1yFS39lRsXYkg+3kWvOWWrlGCI6H7lXxlUHOzxDT4QeYGmgPpQ3BX9XevzOg==", - "dev": true, - "dependencies": { - "@types/lodash": "*" - } - }, - "node_modules/@types/lodash.pickby": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/@types/lodash.pickby/-/lodash.pickby-4.6.7.tgz", - "integrity": "sha512-4ebXRusuLflfscbD0PUX4eVknDHD9Yf+uMtBIvA/hrnTqeAzbuHuDjvnYriLjUrI9YrhCPVKUf4wkRSXJQ6gig==", - "dev": true, - "dependencies": { - "@types/lodash": "*" - } - }, - "node_modules/@types/lodash.union": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/@types/lodash.union/-/lodash.union-4.6.7.tgz", - "integrity": "sha512-6HXM6tsnHJzKgJE0gA/LhTGf/7AbjUk759WZ1MziVm+OBNAATHhdgj+a3KVE8g76GCLAnN4ZEQQG1EGgtBIABA==", - "dev": true, - "dependencies": { - "@types/lodash": "*" - } - }, - "node_modules/@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mocha": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-8.2.3.tgz", - "integrity": "sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==", - "dev": true - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true - }, - "node_modules/@types/object-inspect": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@types/object-inspect/-/object-inspect-1.8.1.tgz", - "integrity": "sha512-0JTdf3CGV0oWzE6Wa40Ayv2e2GhpP3pEJMcrlM74vBSJPuuNkVwfDnl0SZxyFCXETcB4oKA/MpTVfuYSMOelBg==", - "dev": true - }, - "node_modules/@types/puppeteer": { - "version": "5.4.7", - "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-5.4.7.tgz", - "integrity": "sha512-JdGWZZYL0vKapXF4oQTC5hLVNfOgdPrqeZ1BiQnGk5cB7HeE91EWUiTdVSdQPobRN8rIcdffjiOgCYJ/S8QrnQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/recursive-readdir": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/recursive-readdir/-/recursive-readdir-2.2.1.tgz", - "integrity": "sha512-Xd+Ptc4/F2ueInqy5yK2FI5FxtwwbX2+VZpcg+9oYsFJVen8qQKGapCr+Bi5wQtHU1cTXT8s+07lo/nKPgu8Gg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/stream-buffers": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.4.tgz", - "integrity": "sha512-qU/K1tb2yUdhXkLIATzsIPwbtX6BpZk0l3dPW6xqWyhfzzM1ECaQ/8faEnu3CNraLiQ9LHyQQPBGp7N9Fbs25w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", - "dev": true - }, - "node_modules/@types/through": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz", - "integrity": "sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-dDZH/tXzwjutnuk4UacGgFRwV+JSLaXL1ikvidfJprkb7L9Nx1njcRHHmi3Dsvt7pgqqTEeucQuOrWHPFgzVHA==", - "dev": true - }, - "node_modules/@types/ua-parser-js": { - "version": "0.7.36", - "resolved": "https://registry.npmjs.org/@types/ua-parser-js/-/ua-parser-js-0.7.36.tgz", - "integrity": "sha512-N1rW+njavs70y2cApeIw1vLMYXRwfBy+7trgavGuuTfOd7j1Yh7QTRc/yqsPl6ncokt72ZXuxEU0PiCp9bSwNQ==", - "dev": true - }, - "node_modules/@types/unist": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", - "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", - "dev": true - }, - "node_modules/@types/vinyl": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.6.tgz", - "integrity": "sha512-ayJ0iOCDNHnKpKTgBG6Q6JOnHTj9zFta+3j2b8Ejza0e4cvRyMn0ZoLEmbPrTHe5YYRlDYPvPWVdV4cTaRyH7g==", - "dev": true, - "dependencies": { - "@types/expect": "^1.20.4", - "@types/node": "*" - } - }, - "node_modules/@types/which": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.2.tgz", - "integrity": "sha512-8oDqyLC7eD4HM307boe2QWKyuzdzWBj56xI/imSl2cpL+U3tCMaTAkMJ4ee5JBZ/FsOJlvRGeIShiZDAl1qERA==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "15.0.14", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", - "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", - "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, - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "dev": true - }, - "node_modules/@videojs/http-streaming": { - "version": "2.14.3", - "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-2.14.3.tgz", - "integrity": "sha512-2tFwxCaNbcEZzQugWf8EERwNMyNtspfHnvxRGRABQs09W/5SqmkWFuGWfUAm4wQKlXGfdPyAJ1338ASl459xAA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "3.0.5", - "aes-decrypter": "3.1.3", - "global": "^4.4.0", - "m3u8-parser": "4.7.1", - "mpd-parser": "0.21.1", - "mux.js": "6.0.1", - "video.js": "^6 || ^7" - }, - "engines": { - "node": ">=8", - "npm": ">=5" - }, - "peerDependencies": { - "video.js": "^6 || ^7" - } - }, - "node_modules/@videojs/vhs-utils": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz", - "integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "global": "^4.4.0", - "url-toolkit": "^2.2.1" - }, - "engines": { - "node": ">=8", - "npm": ">=5" - } - }, - "node_modules/@videojs/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@videojs/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-7J361GiN1tXpm+gd0xz2QWr3xNWBE+rytvo8J3KuggFaLg+U37gZQ2BuPLcnkfGffy2e+ozY70RHC8jt7zjA6Q==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.5.5", - "global": "~4.4.0", - "is-function": "^1.0.1" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.2.41", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.41.tgz", - "integrity": "sha512-oA4mH6SA78DT+96/nsi4p9DX97PHcNROxs51lYk7gb9Z4BPKQ3Mh+BLn6CQZBw857Iuhu28BfMSRHAlPvD4vlw==", - "dev": true, - "optional": true, - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.41", - "estree-walker": "^2.0.2", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-core/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, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.2.41", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.41.tgz", - "integrity": "sha512-xe5TbbIsonjENxJsYRbDJvthzqxLNk+tb3d/c47zgREDa/PCp6/Y4gC/skM4H6PIuX5DAxm7fFJdbjjUH2QTMw==", - "dev": true, - "optional": true, - "dependencies": { - "@vue/compiler-core": "3.2.41", - "@vue/shared": "3.2.41" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.2.41", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.41.tgz", - "integrity": "sha512-+1P2m5kxOeaxVmJNXnBskAn3BenbTmbxBxWOtBq3mQTCokIreuMULFantBUclP0+KnzNCMOvcnKinqQZmiOF8w==", - "dev": true, - "optional": true, - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.41", - "@vue/compiler-dom": "3.2.41", - "@vue/compiler-ssr": "3.2.41", - "@vue/reactivity-transform": "3.2.41", - "@vue/shared": "3.2.41", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" - } - }, - "node_modules/@vue/compiler-sfc/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, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.2.41", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.41.tgz", - "integrity": "sha512-Y5wPiNIiaMz/sps8+DmhaKfDm1xgj6GrH99z4gq2LQenfVQcYXmHIOBcs5qPwl7jaW3SUQWjkAPKMfQemEQZwQ==", - "dev": true, - "optional": true, - "dependencies": { - "@vue/compiler-dom": "3.2.41", - "@vue/shared": "3.2.41" - } - }, - "node_modules/@vue/reactivity-transform": { - "version": "3.2.41", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.41.tgz", - "integrity": "sha512-mK5+BNMsL4hHi+IR3Ft/ho6Za+L3FA5j8WvreJ7XzHrqkPq8jtF/SMo7tuc9gHjLDwKZX1nP1JQOKo9IEAn54A==", - "dev": true, - "optional": true, - "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.41", - "@vue/shared": "3.2.41", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" - } - }, - "node_modules/@vue/shared": { - "version": "3.2.41", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.41.tgz", - "integrity": "sha512-W9mfWLHmJhkfAmV+7gDjcHeAWALQtgGT3JErxULl0oz6R6+3ug91I7IErs93eCFhPCZPHBs4QJS7YWEV7A3sxw==", - "dev": true, - "optional": true - }, - "node_modules/@wdio/browserstack-service": { - "version": "7.16.16", - "resolved": "https://registry.npmjs.org/@wdio/browserstack-service/-/browserstack-service-7.16.16.tgz", - "integrity": "sha512-q4wUh/j0MR2SwhTkmIFif2DaXgH5yzdgOer6G/fac2n81zLCSpQHWO5aQ9T0An9CAd4L2A+t3dmChpBJPkHWSw==", - "dev": true, - "dependencies": { - "@types/node": "^17.0.4", - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.14", - "browserstack-local": "^1.4.5", - "got": "^11.0.2", - "webdriverio": "7.16.16" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@wdio/cli": "^7.0.0" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/@wdio/config": { - "version": "7.16.16", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.16.16.tgz", - "integrity": "sha512-K/ObPuo6Da2liz++OKOIfbdpFwI7UWiFcBylfJkCYbweuXCoW1aUqlKI6rmKPwCH9Uqr/RHWu6p8eo0zWe6xVA==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.14", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/@wdio/protocols": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.16.7.tgz", - "integrity": "sha512-Wv40pNQcLiPzQ3o98Mv4A8T1EBQ6k4khglz/e2r16CTm+F3DDYh8eLMAsU5cgnmuwwDKX1EyOiFwieykBn5MCg==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/@wdio/repl": { - "version": "7.16.14", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.16.14.tgz", - "integrity": "sha512-Ezih0Y+lsGkKv3H3U56hdWgZiQGA3VaAYguSLd9+g1xbQq+zMKqSmfqECD9bAy+OgCCiVTRstES6lHZxJVPhAg==", - "dev": true, - "dependencies": { - "@wdio/utils": "7.16.14" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/@wdio/utils": { - "version": "7.16.14", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.16.14.tgz", - "integrity": "sha512-wwin8nVpIlhmXJkq6GJw9aDDzgLOJKgXTcEua0T2sdXjoW78u5Ly/GZrFXTjMGhacFvoZfitTrjyfyy4CxMVvw==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.16.0", - "@wdio/types": "7.16.14", - "p-iteration": "^1.1.8" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/browserstack-service/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/@wdio/browserstack-service/node_modules/devtools": { - "version": "7.16.16", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.16.16.tgz", - "integrity": "sha512-M0kzkuSgfEhpqIis3gdtWsNjn/HQ+vRAmEzDnbYx/7FfjFxhSv1d+rOOT20pvd60soItMYpsOova1igACEGkGQ==", - "dev": true, - "dependencies": { - "@types/node": "^17.0.4", - "@types/ua-parser-js": "^0.7.33", - "@wdio/config": "7.16.16", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/types": "7.16.14", - "@wdio/utils": "7.16.14", - "chrome-launcher": "^0.15.0", - "edge-paths": "^2.1.0", - "puppeteer-core": "^13.1.3", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^1.0.1", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/devtools-protocol": { - "version": "0.0.973690", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.973690.tgz", - "integrity": "sha512-myh3hSFp0YWa2GED11PmbLhV4dv9RdO7YUz27XJrbQLnP5bMbZL6dfOOILTHO57yH0kX5GfuOZBsg/4NamfPvQ==", - "dev": true - }, - "node_modules/@wdio/browserstack-service/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/ua-parser-js": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.33.tgz", - "integrity": "sha512-RqshF7TPTE0XLYAqmjlu5cLLuGdKrNu9O1KLA/qp39QtbZwuzwv1dT46DZSopoUMsYgXpB3Cv8a03FI8b74oFQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "node_modules/@wdio/browserstack-service/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/@wdio/browserstack-service/node_modules/webdriver": { - "version": "7.16.16", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.16.16.tgz", - "integrity": "sha512-x8UoG9k/P8KDrfSh1pOyNevt9tns3zexoMxp9cKnyA/7HYSErhZYTLGlgxscAXLtQG41cMH/Ba/oBmOx7Hgd8w==", - "dev": true, - "dependencies": { - "@types/node": "^17.0.4", - "@wdio/config": "7.16.16", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/types": "7.16.14", - "@wdio/utils": "7.16.14", - "got": "^11.0.2", - "ky": "^0.29.0", - "lodash.merge": "^4.6.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/browserstack-service/node_modules/webdriverio": { - "version": "7.16.16", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.16.16.tgz", - "integrity": "sha512-caPaEWyuD3Qoa7YkW4xCCQA4v9Pa9wmhFGPvNZh3ERtjMCNi8L/XXOdkekWNZmFh3tY0kFguBj7+fAwSY7HAGw==", - "dev": true, - "dependencies": { - "@types/aria-query": "^5.0.0", - "@types/node": "^17.0.4", - "@wdio/config": "7.16.16", - "@wdio/logger": "7.16.0", - "@wdio/protocols": "7.16.7", - "@wdio/repl": "7.16.14", - "@wdio/types": "7.16.14", - "@wdio/utils": "7.16.14", - "archiver": "^5.0.0", - "aria-query": "^5.0.0", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools": "7.16.16", - "devtools-protocol": "^0.0.973690", - "fs-extra": "^10.0.0", - "get-port": "^5.1.1", - "grapheme-splitter": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", - "lodash.zip": "^4.2.0", - "minimatch": "^5.0.0", - "puppeteer-core": "^13.1.3", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "7.16.16" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/cli": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-7.5.7.tgz", - "integrity": "sha512-nOQJLskrY+UECDd3NxE7oBzb6cDA7e7x02YWQugOlOgnZ4a+PJmkFoSsO8C2uNCpdFngy5rJKGUo5vbtAHEF9Q==", - "dev": true, - "dependencies": { - "@types/ejs": "^3.0.5", - "@types/fs-extra": "^9.0.4", - "@types/inquirer": "^7.3.1", - "@types/lodash.flattendeep": "^4.4.6", - "@types/lodash.pickby": "^4.6.6", - "@types/lodash.union": "^4.6.6", - "@types/recursive-readdir": "^2.2.0", - "@wdio/config": "7.5.3", - "@wdio/logger": "7.5.3", - "@wdio/types": "7.5.3", - "@wdio/utils": "7.5.3", - "async-exit-hook": "^2.0.1", - "chalk": "^4.0.0", - "chokidar": "^3.0.0", - "cli-spinners": "^2.1.0", - "ejs": "^3.0.1", - "fs-extra": "^10.0.0", - "inquirer": "^8.0.0", - "lodash.flattendeep": "^4.4.0", - "lodash.pickby": "^4.6.0", - "lodash.union": "^4.6.0", - "mkdirp": "^1.0.4", - "recursive-readdir": "^2.2.2", - "webdriverio": "7.5.7", - "yargs": "^17.0.0", - "yarn-install": "^1.0.0" - }, - "bin": { - "wdio": "bin/wdio.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/@types/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", - "dev": true - }, - "node_modules/@wdio/cli/node_modules/@wdio/logger": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.5.3.tgz", - "integrity": "sha512-r9EADpm0ncS1bDQSWi/nhF9C59/WNLbdAAFlo782E9ItFCpDhNit3aQP9vETv1vFxJRjUIM8Fw/HW8zwPadkbw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/@wdio/types": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.5.3.tgz", - "integrity": "sha512-jmumhKBhNDABnpmrshYLEcdE9WoP5tmynsDNbDABlb/W8FFiLySQOejukhYIL9CLys4zXerV3/edks0SCzHOiQ==", - "dev": true, - "dependencies": { - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/cli/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/@wdio/cli/node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@wdio/cli/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/@wdio/cli/node_modules/chrome-launcher": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.13.4.tgz", - "integrity": "sha512-nnzXiDbGKjDSK6t2I+35OAPBy5Pw/39bgkb/ZAFwMhwJbdYBp6aH+vW28ZgtjdU890Q7D+3wN/tB8N66q5Gi2A==", - "dev": true, - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^1.0.5", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "^0.5.3", - "rimraf": "^3.0.2" - } - }, - "node_modules/@wdio/cli/node_modules/chrome-launcher/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, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/@wdio/cli/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/@wdio/cli/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/@wdio/cli/node_modules/devtools": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.5.7.tgz", - "integrity": "sha512-+kqmvFbceElhYpN35yjm1T4Rz3VbH0QaqrNWKRpeyFp657Y5W0bm1s5FyMUeIv0aTNkAgWcETtqL+EG9X9uvjQ==", - "dev": true, - "dependencies": { - "@wdio/config": "7.5.3", - "@wdio/logger": "7.5.3", - "@wdio/protocols": "7.5.3", - "@wdio/types": "7.5.3", - "@wdio/utils": "7.5.3", - "chrome-launcher": "^0.13.1", - "edge-paths": "^2.1.0", - "puppeteer-core": "^9.1.0", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^0.7.21", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/devtools-protocol": { - "version": "0.0.878340", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.878340.tgz", - "integrity": "sha512-W0q8Y02r1RNwfZtI4Jjh1/MZxRHyrIgy9FvElbJzQelZjmNH197H4mBQs7DZjlUUDA9s6Zz2jl+zUYFgLgEnzw==", - "dev": true - }, - "node_modules/@wdio/cli/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/@wdio/cli/node_modules/puppeteer-core": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-9.1.1.tgz", - "integrity": "sha512-zbedbitVIGhmgz0nt7eIdLsnaoVZSlNJfBivqm2w67T8LR2bU1dvnruDZ8nQO0zn++Iet7zHbAOdnuS5+H2E7A==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "devtools-protocol": "0.0.869402", - "extract-zip": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "pkg-dir": "^4.2.0", - "progress": "^2.0.1", - "proxy-from-env": "^1.1.0", - "rimraf": "^3.0.2", - "tar-fs": "^2.0.0", - "unbzip2-stream": "^1.3.3", - "ws": "^7.2.3" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/@wdio/cli/node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.869402", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.869402.tgz", - "integrity": "sha512-VvlVYY+VDJe639yHs5PHISzdWTLL3Aw8rO4cvUtwvoxFd6FHbE4OpHHcde52M6096uYYazAmd4l0o5VuFRO2WA==", - "dev": true - }, - "node_modules/@wdio/cli/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/@wdio/cli/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/@wdio/cli/node_modules/webdriverio": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.5.7.tgz", - "integrity": "sha512-TLluVPLo6Snn/dxEITvMz7ZuklN4qZOBddDuLb9LO3rhsfKDMNbnhcBk0SLdFsWny0aCuhWNpJ6co93702XC0A==", - "dev": true, - "dependencies": { - "@types/aria-query": "^4.2.1", - "@wdio/config": "7.5.3", - "@wdio/logger": "7.5.3", - "@wdio/protocols": "7.5.3", - "@wdio/repl": "7.5.3", - "@wdio/types": "7.5.3", - "@wdio/utils": "7.5.3", - "archiver": "^5.0.0", - "aria-query": "^4.2.2", - "atob": "^2.1.2", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools": "7.5.7", - "devtools-protocol": "^0.0.878340", - "fs-extra": "^10.0.0", - "get-port": "^5.1.1", - "grapheme-splitter": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", - "lodash.zip": "^4.2.0", - "minimatch": "^3.0.4", - "puppeteer-core": "^9.1.0", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "7.5.3" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@wdio/cli/node_modules/yargs": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", - "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", - "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.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@wdio/concise-reporter": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@wdio/concise-reporter/-/concise-reporter-7.5.7.tgz", - "integrity": "sha512-964i7eQ4sboSla2bdR8714Er82QBgS6u39GmDFX8Izy9Ge38xaE75HuF5S7mnOWGzSojCWgqtwy5k7Rfg6GE3g==", - "dev": true, - "dependencies": { - "@wdio/reporter": "7.5.7", - "@wdio/types": "7.5.3", - "chalk": "^4.0.0", - "pretty-ms": "^7.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@wdio/cli": "^7.0.0" - } - }, - "node_modules/@wdio/concise-reporter/node_modules/@wdio/types": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.5.3.tgz", - "integrity": "sha512-jmumhKBhNDABnpmrshYLEcdE9WoP5tmynsDNbDABlb/W8FFiLySQOejukhYIL9CLys4zXerV3/edks0SCzHOiQ==", - "dev": true, - "dependencies": { - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/concise-reporter/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/@wdio/concise-reporter/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/@wdio/concise-reporter/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/@wdio/concise-reporter/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/@wdio/concise-reporter/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/@wdio/concise-reporter/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/@wdio/config": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.5.3.tgz", - "integrity": "sha512-udvVizYoilOxuWj/BmoN6y7ZCd4wPdYNlSfWznrbCezAdaLZ4/pNDOO0WRWx2C4+q1wdkXZV/VuQPUGfL0lEHQ==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.5.3", - "@wdio/types": "7.5.3", - "deepmerge": "^4.0.0", - "glob": "^7.1.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/config/node_modules/@wdio/logger": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.5.3.tgz", - "integrity": "sha512-r9EADpm0ncS1bDQSWi/nhF9C59/WNLbdAAFlo782E9ItFCpDhNit3aQP9vETv1vFxJRjUIM8Fw/HW8zwPadkbw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/config/node_modules/@wdio/types": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.5.3.tgz", - "integrity": "sha512-jmumhKBhNDABnpmrshYLEcdE9WoP5tmynsDNbDABlb/W8FFiLySQOejukhYIL9CLys4zXerV3/edks0SCzHOiQ==", - "dev": true, - "dependencies": { - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/config/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/@wdio/config/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/@wdio/config/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/@wdio/config/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/@wdio/config/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/@wdio/config/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/@wdio/local-runner": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-7.5.7.tgz", - "integrity": "sha512-aYc0XUV+/e3cg8Fp+CWlC4FbwSSG3mKAv1iuy/+Hwzg2kJE+aa+Rf2p2BQYc7HPRtKNW0bM8o+aCImZLAiPM+A==", - "dev": true, - "dependencies": { - "@types/stream-buffers": "^3.0.3", - "@wdio/logger": "7.5.3", - "@wdio/repl": "7.5.3", - "@wdio/runner": "7.5.7", - "@wdio/types": "7.5.3", - "async-exit-hook": "^2.0.1", - "split2": "^3.2.2", - "stream-buffers": "^3.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@wdio/cli": "^7.0.0" - } - }, - "node_modules/@wdio/local-runner/node_modules/@wdio/logger": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.5.3.tgz", - "integrity": "sha512-r9EADpm0ncS1bDQSWi/nhF9C59/WNLbdAAFlo782E9ItFCpDhNit3aQP9vETv1vFxJRjUIM8Fw/HW8zwPadkbw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/local-runner/node_modules/@wdio/types": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.5.3.tgz", - "integrity": "sha512-jmumhKBhNDABnpmrshYLEcdE9WoP5tmynsDNbDABlb/W8FFiLySQOejukhYIL9CLys4zXerV3/edks0SCzHOiQ==", - "dev": true, - "dependencies": { - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/local-runner/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/@wdio/local-runner/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/@wdio/local-runner/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/@wdio/local-runner/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/@wdio/local-runner/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/@wdio/local-runner/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/@wdio/logger": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.16.0.tgz", - "integrity": "sha512-/6lOGb2Iow5eSsy7RJOl1kCwsP4eMlG+/QKro5zUJsuyNJSQXf2ejhpkzyKWLgQbHu83WX6cM1014AZuLkzoQg==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/logger/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/@wdio/logger/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/@wdio/logger/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/@wdio/logger/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/@wdio/logger/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/@wdio/logger/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/@wdio/mocha-framework": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-7.5.3.tgz", - "integrity": "sha512-96QCVWsiyZxEgOZP3oTq2B2T7zne5dCdehLa2n4q/BLjk96Rj0jifidJZfd/1+vdNPKX0gWWAzpy98Znn8MVMw==", - "dev": true, - "dependencies": { - "@types/mocha": "^8.0.0", - "@wdio/logger": "7.5.3", - "@wdio/types": "7.5.3", - "@wdio/utils": "7.5.3", - "expect-webdriverio": "^2.0.0", - "mocha": "^8.0.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/mocha-framework/node_modules/@wdio/logger": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.5.3.tgz", - "integrity": "sha512-r9EADpm0ncS1bDQSWi/nhF9C59/WNLbdAAFlo782E9ItFCpDhNit3aQP9vETv1vFxJRjUIM8Fw/HW8zwPadkbw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/mocha-framework/node_modules/@wdio/types": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.5.3.tgz", - "integrity": "sha512-jmumhKBhNDABnpmrshYLEcdE9WoP5tmynsDNbDABlb/W8FFiLySQOejukhYIL9CLys4zXerV3/edks0SCzHOiQ==", - "dev": true, - "dependencies": { - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/mocha-framework/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@wdio/mocha-framework/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/@wdio/mocha-framework/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/@wdio/mocha-framework/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/@wdio/mocha-framework/node_modules/chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.1" - } - }, - "node_modules/@wdio/mocha-framework/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/@wdio/mocha-framework/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/@wdio/mocha-framework/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/@wdio/mocha-framework/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@wdio/mocha-framework/node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/@wdio/mocha-framework/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/@wdio/mocha-framework/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/@wdio/mocha-framework/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@wdio/mocha-framework/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/@wdio/mocha-framework/node_modules/js-yaml": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.0.0.tgz", - "integrity": "sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@wdio/mocha-framework/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/@wdio/mocha-framework/node_modules/log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@wdio/mocha-framework/node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@wdio/mocha-framework/node_modules/mocha": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.4.0.tgz", - "integrity": "sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.1", - "debug": "4.3.1", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.1.6", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.0.0", - "log-symbols": "4.0.0", - "minimatch": "3.0.4", - "ms": "2.1.3", - "nanoid": "3.1.20", - "serialize-javascript": "5.0.1", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "wide-align": "1.1.3", - "workerpool": "6.1.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 10.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/@wdio/mocha-framework/node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/@wdio/mocha-framework/node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@wdio/mocha-framework/node_modules/nanoid": { - "version": "3.1.20", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz", - "integrity": "sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/@wdio/mocha-framework/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/@wdio/mocha-framework/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/@wdio/mocha-framework/node_modules/readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/@wdio/mocha-framework/node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/@wdio/mocha-framework/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/@wdio/mocha-framework/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/@wdio/mocha-framework/node_modules/workerpool": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.0.tgz", - "integrity": "sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==", - "dev": true - }, - "node_modules/@wdio/mocha-framework/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/@wdio/mocha-framework/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@wdio/protocols": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.5.3.tgz", - "integrity": "sha512-lpNaKwxYhDSL6neDtQQYXvzMAw+u4PXx65ryeMEX82mkARgzSZps5Kyrg9ub7X4T17K1NPfnY6UhZEWg6cKJCg==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/repl": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.5.3.tgz", - "integrity": "sha512-jfNJwNoc2nWdnLsFoGHmOJR9zaWfDTBMWM3W1eR5kXIjevD6gAfWsB5ZoA4IdybujCXxdnhlsm4o2jIzp/6f7A==", - "dev": true, - "dependencies": { - "@wdio/utils": "7.5.3" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/reporter": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.5.7.tgz", - "integrity": "sha512-9PXqZtCXDtU6UYLNDPu9MZQ8BiABGnRlJTrlbYB3gBfZDibMkJMvwXzPderipBv2+ifDZXmGe3Njf1ao2TkbFA==", - "dev": true, - "dependencies": { - "@wdio/types": "7.5.3", - "fs-extra": "^10.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/reporter/node_modules/@wdio/types": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.5.3.tgz", - "integrity": "sha512-jmumhKBhNDABnpmrshYLEcdE9WoP5tmynsDNbDABlb/W8FFiLySQOejukhYIL9CLys4zXerV3/edks0SCzHOiQ==", - "dev": true, - "dependencies": { - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/runner": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-7.5.7.tgz", - "integrity": "sha512-RzVXd+xnwK/thkx1/xo9K5iscQ0Ofobgsx5dNVtwLDVMn9V7jCW/WX4dSCPAPaVSqnUCmkcQp3P5AoSBPpCZnQ==", - "dev": true, - "dependencies": { - "@wdio/config": "7.5.3", - "@wdio/logger": "7.5.3", - "@wdio/types": "7.5.3", - "@wdio/utils": "7.5.3", - "deepmerge": "^4.0.0", - "gaze": "^1.1.2", - "webdriver": "7.5.3", - "webdriverio": "7.5.7" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/runner/node_modules/@types/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", - "dev": true - }, - "node_modules/@wdio/runner/node_modules/@wdio/logger": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.5.3.tgz", - "integrity": "sha512-r9EADpm0ncS1bDQSWi/nhF9C59/WNLbdAAFlo782E9ItFCpDhNit3aQP9vETv1vFxJRjUIM8Fw/HW8zwPadkbw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/runner/node_modules/@wdio/types": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.5.3.tgz", - "integrity": "sha512-jmumhKBhNDABnpmrshYLEcdE9WoP5tmynsDNbDABlb/W8FFiLySQOejukhYIL9CLys4zXerV3/edks0SCzHOiQ==", - "dev": true, - "dependencies": { - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/runner/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/@wdio/runner/node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@wdio/runner/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/@wdio/runner/node_modules/chrome-launcher": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.13.4.tgz", - "integrity": "sha512-nnzXiDbGKjDSK6t2I+35OAPBy5Pw/39bgkb/ZAFwMhwJbdYBp6aH+vW28ZgtjdU890Q7D+3wN/tB8N66q5Gi2A==", - "dev": true, - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^1.0.5", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "^0.5.3", - "rimraf": "^3.0.2" - } - }, - "node_modules/@wdio/runner/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/@wdio/runner/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/@wdio/runner/node_modules/devtools": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.5.7.tgz", - "integrity": "sha512-+kqmvFbceElhYpN35yjm1T4Rz3VbH0QaqrNWKRpeyFp657Y5W0bm1s5FyMUeIv0aTNkAgWcETtqL+EG9X9uvjQ==", - "dev": true, - "dependencies": { - "@wdio/config": "7.5.3", - "@wdio/logger": "7.5.3", - "@wdio/protocols": "7.5.3", - "@wdio/types": "7.5.3", - "@wdio/utils": "7.5.3", - "chrome-launcher": "^0.13.1", - "edge-paths": "^2.1.0", - "puppeteer-core": "^9.1.0", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^0.7.21", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/runner/node_modules/devtools-protocol": { - "version": "0.0.878340", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.878340.tgz", - "integrity": "sha512-W0q8Y02r1RNwfZtI4Jjh1/MZxRHyrIgy9FvElbJzQelZjmNH197H4mBQs7DZjlUUDA9s6Zz2jl+zUYFgLgEnzw==", - "dev": true - }, - "node_modules/@wdio/runner/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/@wdio/runner/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, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/@wdio/runner/node_modules/puppeteer-core": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-9.1.1.tgz", - "integrity": "sha512-zbedbitVIGhmgz0nt7eIdLsnaoVZSlNJfBivqm2w67T8LR2bU1dvnruDZ8nQO0zn++Iet7zHbAOdnuS5+H2E7A==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "devtools-protocol": "0.0.869402", - "extract-zip": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "pkg-dir": "^4.2.0", - "progress": "^2.0.1", - "proxy-from-env": "^1.1.0", - "rimraf": "^3.0.2", - "tar-fs": "^2.0.0", - "unbzip2-stream": "^1.3.3", - "ws": "^7.2.3" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/@wdio/runner/node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.869402", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.869402.tgz", - "integrity": "sha512-VvlVYY+VDJe639yHs5PHISzdWTLL3Aw8rO4cvUtwvoxFd6FHbE4OpHHcde52M6096uYYazAmd4l0o5VuFRO2WA==", - "dev": true - }, - "node_modules/@wdio/runner/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/@wdio/runner/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/@wdio/runner/node_modules/webdriverio": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.5.7.tgz", - "integrity": "sha512-TLluVPLo6Snn/dxEITvMz7ZuklN4qZOBddDuLb9LO3rhsfKDMNbnhcBk0SLdFsWny0aCuhWNpJ6co93702XC0A==", - "dev": true, - "dependencies": { - "@types/aria-query": "^4.2.1", - "@wdio/config": "7.5.3", - "@wdio/logger": "7.5.3", - "@wdio/protocols": "7.5.3", - "@wdio/repl": "7.5.3", - "@wdio/types": "7.5.3", - "@wdio/utils": "7.5.3", - "archiver": "^5.0.0", - "aria-query": "^4.2.2", - "atob": "^2.1.2", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools": "7.5.7", - "devtools-protocol": "^0.0.878340", - "fs-extra": "^10.0.0", - "get-port": "^5.1.1", - "grapheme-splitter": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", - "lodash.zip": "^4.2.0", - "minimatch": "^3.0.4", - "puppeteer-core": "^9.1.0", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "7.5.3" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/runner/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@wdio/spec-reporter": { - "version": "7.19.7", - "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-7.19.7.tgz", - "integrity": "sha512-BDBZU2EK/GuC9VxtfqPtoW43FmvKxYDsvcDVDi3F7o+9fkcuGSJiWbw1AX251ZzzVQ7YP9ImTitSpdpUKXkilQ==", - "dev": true, - "dependencies": { - "@types/easy-table": "^0.0.33", - "@wdio/reporter": "7.19.7", - "@wdio/types": "7.19.5", - "chalk": "^4.0.0", - "easy-table": "^1.1.1", - "pretty-ms": "^7.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@wdio/cli": "^7.0.0" - } - }, - "node_modules/@wdio/spec-reporter/node_modules/@wdio/reporter": { - "version": "7.19.7", - "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-7.19.7.tgz", - "integrity": "sha512-Dum19gpfru66FnIq78/4HTuW87B7ceLDp6PJXwQM5kXyN7Gb7zhMgp6FZTM0FCYLyi6U/zXZSvpNUYl77caS6g==", - "dev": true, - "dependencies": { - "@types/diff": "^5.0.0", - "@types/node": "^17.0.4", - "@types/object-inspect": "^1.8.0", - "@types/supports-color": "^8.1.0", - "@types/tmp": "^0.2.0", - "@wdio/types": "7.19.5", - "diff": "^5.0.0", - "fs-extra": "^10.0.0", - "object-inspect": "^1.10.3", - "supports-color": "8.1.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/spec-reporter/node_modules/@wdio/types": { - "version": "7.19.5", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.19.5.tgz", - "integrity": "sha512-S1lC0pmtEO7NVH/2nM1c7NHbkgxLZH3VVG/z6ym3Bbxdtcqi2LMsEvvawMAU/fmhyiIkMsGZCO8vxG9cRw4z4A==", - "dev": true, - "dependencies": { - "@types/node": "^17.0.4", - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "^4.6.2" - } - }, - "node_modules/@wdio/spec-reporter/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/@wdio/spec-reporter/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/@wdio/spec-reporter/node_modules/chalk/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/@wdio/spec-reporter/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/@wdio/spec-reporter/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/@wdio/spec-reporter/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/@wdio/spec-reporter/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@wdio/sync": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/@wdio/sync/-/sync-7.5.7.tgz", - "integrity": "sha512-Zu/AYLjwqbFSbaOU1US7ownv3ov8JrtoGHq51JfJ4masefJDXNkHix2cZ0qEgl3IvkkWQ0ewL0G8GTXb3KOemA==", - "dev": true, - "dependencies": { - "@types/fibers": "^3.1.0", - "@types/puppeteer": "^5.4.0", - "@wdio/logger": "7.5.3", - "@wdio/types": "7.5.3", - "fibers": "^5.0.0", - "webdriverio": "7.5.7" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/sync/node_modules/@types/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", - "dev": true - }, - "node_modules/@wdio/sync/node_modules/@wdio/logger": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.5.3.tgz", - "integrity": "sha512-r9EADpm0ncS1bDQSWi/nhF9C59/WNLbdAAFlo782E9ItFCpDhNit3aQP9vETv1vFxJRjUIM8Fw/HW8zwPadkbw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/sync/node_modules/@wdio/types": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.5.3.tgz", - "integrity": "sha512-jmumhKBhNDABnpmrshYLEcdE9WoP5tmynsDNbDABlb/W8FFiLySQOejukhYIL9CLys4zXerV3/edks0SCzHOiQ==", - "dev": true, - "dependencies": { - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/sync/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/@wdio/sync/node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/@wdio/sync/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/@wdio/sync/node_modules/chrome-launcher": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.13.4.tgz", - "integrity": "sha512-nnzXiDbGKjDSK6t2I+35OAPBy5Pw/39bgkb/ZAFwMhwJbdYBp6aH+vW28ZgtjdU890Q7D+3wN/tB8N66q5Gi2A==", - "dev": true, - "dependencies": { - "@types/node": "*", - "escape-string-regexp": "^1.0.5", - "is-wsl": "^2.2.0", - "lighthouse-logger": "^1.0.0", - "mkdirp": "^0.5.3", - "rimraf": "^3.0.2" - } - }, - "node_modules/@wdio/sync/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/@wdio/sync/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/@wdio/sync/node_modules/devtools": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.5.7.tgz", - "integrity": "sha512-+kqmvFbceElhYpN35yjm1T4Rz3VbH0QaqrNWKRpeyFp657Y5W0bm1s5FyMUeIv0aTNkAgWcETtqL+EG9X9uvjQ==", - "dev": true, - "dependencies": { - "@wdio/config": "7.5.3", - "@wdio/logger": "7.5.3", - "@wdio/protocols": "7.5.3", - "@wdio/types": "7.5.3", - "@wdio/utils": "7.5.3", - "chrome-launcher": "^0.13.1", - "edge-paths": "^2.1.0", - "puppeteer-core": "^9.1.0", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^0.7.21", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/sync/node_modules/devtools-protocol": { - "version": "0.0.878340", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.878340.tgz", - "integrity": "sha512-W0q8Y02r1RNwfZtI4Jjh1/MZxRHyrIgy9FvElbJzQelZjmNH197H4mBQs7DZjlUUDA9s6Zz2jl+zUYFgLgEnzw==", - "dev": true - }, - "node_modules/@wdio/sync/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/@wdio/sync/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, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/@wdio/sync/node_modules/puppeteer-core": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-9.1.1.tgz", - "integrity": "sha512-zbedbitVIGhmgz0nt7eIdLsnaoVZSlNJfBivqm2w67T8LR2bU1dvnruDZ8nQO0zn++Iet7zHbAOdnuS5+H2E7A==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "devtools-protocol": "0.0.869402", - "extract-zip": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "pkg-dir": "^4.2.0", - "progress": "^2.0.1", - "proxy-from-env": "^1.1.0", - "rimraf": "^3.0.2", - "tar-fs": "^2.0.0", - "unbzip2-stream": "^1.3.3", - "ws": "^7.2.3" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/@wdio/sync/node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.869402", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.869402.tgz", - "integrity": "sha512-VvlVYY+VDJe639yHs5PHISzdWTLL3Aw8rO4cvUtwvoxFd6FHbE4OpHHcde52M6096uYYazAmd4l0o5VuFRO2WA==", - "dev": true - }, - "node_modules/@wdio/sync/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/@wdio/sync/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/@wdio/sync/node_modules/webdriverio": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.5.7.tgz", - "integrity": "sha512-TLluVPLo6Snn/dxEITvMz7ZuklN4qZOBddDuLb9LO3rhsfKDMNbnhcBk0SLdFsWny0aCuhWNpJ6co93702XC0A==", - "dev": true, - "dependencies": { - "@types/aria-query": "^4.2.1", - "@wdio/config": "7.5.3", - "@wdio/logger": "7.5.3", - "@wdio/protocols": "7.5.3", - "@wdio/repl": "7.5.3", - "@wdio/types": "7.5.3", - "@wdio/utils": "7.5.3", - "archiver": "^5.0.0", - "aria-query": "^4.2.2", - "atob": "^2.1.2", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools": "7.5.7", - "devtools-protocol": "^0.0.878340", - "fs-extra": "^10.0.0", - "get-port": "^5.1.1", - "grapheme-splitter": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", - "lodash.zip": "^4.2.0", - "minimatch": "^3.0.4", - "puppeteer-core": "^9.1.0", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "7.5.3" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/sync/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@wdio/types": { - "version": "7.16.14", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.16.14.tgz", - "integrity": "sha512-AyNI9iBSos9xWBmiFAF3sBs6AJXO/55VppU/eeF4HRdbZMtMarnvMuahM+jlUrA3vJSmDW+ufelG0MT//6vrnw==", - "dev": true, - "dependencies": { - "@types/node": "^17.0.4", - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/utils": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.5.3.tgz", - "integrity": "sha512-nlLDKr8v8abLOHCKroBwQkGPdCIxjID2MllgWX23xqkYZylM9RdwPBdL8osQt9m3rq2TxiPAT4OlbzNt2WtN6Q==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.5.3", - "@wdio/types": "7.5.3" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/utils/node_modules/@wdio/logger": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.5.3.tgz", - "integrity": "sha512-r9EADpm0ncS1bDQSWi/nhF9C59/WNLbdAAFlo782E9ItFCpDhNit3aQP9vETv1vFxJRjUIM8Fw/HW8zwPadkbw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/utils/node_modules/@wdio/types": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.5.3.tgz", - "integrity": "sha512-jmumhKBhNDABnpmrshYLEcdE9WoP5tmynsDNbDABlb/W8FFiLySQOejukhYIL9CLys4zXerV3/edks0SCzHOiQ==", - "dev": true, - "dependencies": { - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@wdio/utils/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/@wdio/utils/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/@wdio/utils/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/@wdio/utils/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/@wdio/utils/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/@wdio/utils/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/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xmldom/xmldom": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.8.tgz", - "integrity": "sha512-PrJx38EfpitFhwmILRl37jAdBlsww6AZ6rRVK4QS7T7RHLhX7mSs647sTmgr9GIxe3qjXdesmomEgbgaokrVFg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "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/aes-decrypter": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-3.1.3.tgz", - "integrity": "sha512-VkG9g4BbhMBy+N5/XodDeV6F02chEk9IpgRTq/0bS80y4dzy79VH2Gtms02VXomf3HmyRe3yyJYkJ990ns+d6A==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.5", - "global": "^4.4.0", - "pkcs7": "^1.0.4" - } - }, - "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": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", - "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/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.4.2" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-cyan": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", - "integrity": "sha512-eCjan3AVo/SxZ0/MyIYRtkpxIu/H3xZN7URr1vXVrISxeyz8fUFz0FJziamK4sS8I+t35y4rHg1b2PklyBe/7A==", - "dev": true, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha512-HrgGIZUl8h2EHuZaU9hTR/cU5nhKxpVE1V6kdGsQ8e4zirElJ5fvtfc8N7Q1oq1aatO275i8pUFUCpNWCAnVWw==", - "dev": true, - "dependencies": { - "ansi-wrap": "0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-red": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", - "integrity": "sha512-ewaIr5y+9CUTGFwZfpECUbFlGcC0GCw1oqR9RI6h1gQCd9Aj2GxSckCnPsVJnmfMZbwFYE+leZGASgkWl06Jow==", - "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": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", - "dev": true, - "dependencies": { - "buffer-equal": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", - "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.3", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", - "dev": true, - "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archiver/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/archiver/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "dependencies": { - "deep-equal": "^2.0.5" - } - }, - "node_modules/arr-diff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "integrity": "sha512-OQwDZUqYaQwyyhDJHThmzId8daf4/RFNLaeh3AevmSeZ5Y7ug4Ga/yKc6l6kTZOBW781rCj103ZuTh8GAsB3+Q==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.0.1", - "array-slice": "^0.2.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-diff/node_modules/array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha512-rlVfZW/1Ph2SNySXwR9QYkChp8EkOEiTMO5Vwx60usw04i4nWemkm9RXmQqgkQFaLHsqLuADvjp6IfgL9l2M8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha512-A2BETWCqhsecSvCkWAeVBFLH6sXEUGASuzkpjL3GR1SlL/PWL6M3J8EAAld2Uubmh39tvkJTqC9LeLHCUKmFXA==", - "dev": true, - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha512-tVqVTHt+Q5Xb09qRkbu+DidW1yYzz5izWS2Xm2yFm7qJnmUfz4HPzNxbHkdRJbz2lrqI7S+z17xNYdFcBBO8Hw==", - "dev": true, - "dependencies": { - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-2.1.0.tgz", - "integrity": "sha512-t5db90jq+qdgk8aFnxEkjqta0B/GHrM1pxzuuZz2zWsOXc5nKu3t+76s/PQBA8FTcM/ipspIH9jWG4OxCBc2eA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha512-LeZY+DZDRnvP7eMuQ6LHfCzUGxAAIViUBliK24P3hWXL6y4SortgR6Nim6xrkfSLlmH0+k+9NYNwVC2s53ZrYQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", - "dev": true - }, - "node_modules/array-includes": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", - "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5", - "get-intrinsic": "^1.1.1", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha512-BC4Yl89vneCYfpLrs5JU2aAu9/a+xWbeKhvISg9PT7eWFB9UlRvI+rKEtk6mgxWr3dSkk9gQ8hCrdqt06NXPdw==", - "dev": true, - "dependencies": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-initial/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "dev": true, - "dependencies": { - "is-number": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-last/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-sort": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "dev": true, - "dependencies": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", - "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", - "dev": true, - "dependencies": { - "es6-object-assign": "^1.1.0", - "is-nan": "^1.2.1", - "object-is": "^1.0.1", - "util": "^0.12.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/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", - "dev": true - }, - "node_modules/async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "node_modules/async-exit-hook": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha512-VPXfB4Vk49z1LHHodrEQ6Xf7W4gg1w0dAPROHngx7qgDjqmIQ+fXmwgGXTW/ITLai0YLSvWepJOP9EVpMnEAcw==", - "dev": true, - "dependencies": { - "async-done": "^1.2.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "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/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", - "dev": true - }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/babel-core": { - "version": "6.26.3", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", - "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", - "dev": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-generator": "^6.26.0", - "babel-helpers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-register": "^6.26.0", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "convert-source-map": "^1.5.1", - "debug": "^2.6.9", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.8", - "slash": "^1.0.0", - "source-map": "^0.5.7" - } - }, - "node_modules/babel-core/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/babel-core/node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/babel-core/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/babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, - "dependencies": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "node_modules/babel-generator/node_modules/jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "node_modules/babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", - "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", - "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", - "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", - "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", - "dev": true, - "dependencies": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" - } - }, - "node_modules/babel-register/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "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.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/babel-register/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, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "dev": true, - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "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.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", - "dev": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse/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/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-traverse/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/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha512-bZOOfCb3gXBXbTFXq3OZtGR88LwGeJvzu6szttaIzymOTS4ZttBNOWSv7aLZja2EMycKtRYV0Oa8SNKH/zkxvg==", - "dev": true, - "dependencies": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/basic-auth/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/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "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/beeper": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", - "integrity": "sha512-3vqtKL1N45I5dV0RdssXZG7X6pCqQrWPNOlBPZPrd+QkE2HEhR57Z04m0KtpbsZH73j+a3F8UD1TQnn+ExTvIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "dev": true, - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/binaryextensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.3.0.tgz", - "integrity": "sha512-nAihlQsYGyc5Bwq6+EsubvANYGExeJKHDO3RjnvwU042fawQTQfM3Kxn7IHUXQOz4bzfwsGYYHGSvXyW4zOGLg==", - "dev": true, - "engines": { - "node": ">=0.8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/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/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bluebird": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", - "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", - "dev": true - }, - "node_modules/body": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/body/-/body-5.1.0.tgz", - "integrity": "sha512-chUsBxGRtuElD6fmw1gHLpvnKdVLK302peeFa9ZqAEk8TyzZ3fygLyUEDDPTJvL9+Bor0dIwn6ePOsRM2y0zQQ==", - "dev": true, - "dependencies": { - "continuable-cache": "^0.3.1", - "error": "^7.0.0", - "raw-body": "~1.1.0", - "safe-json-parse": "~1.0.1" - } - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/body/node_modules/bytes": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", - "integrity": "sha512-/x68VkHLeTl3/Ll8IvxdwzhrT+IyKc52e/oyHhA2RwqPqswSnjVbSddfPRwAsJtbilMAPSRWwAlpxdYsSWOTKQ==", - "dev": true - }, - "node_modules/body/node_modules/raw-body": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.1.7.tgz", - "integrity": "sha512-WmJJU2e9Y6M5UzTOkHaM7xJGAPQD8PNzx3bAd2+uhZAim6wDk6dAZxPVYLF67XhbR4hmKGh33Lpmh4XWrCH5Mg==", - "dev": true, - "dependencies": { - "bytes": "1", - "string_decoder": "0.10" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/body/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001400", - "electron-to-chromium": "^1.4.251", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.9" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/browserstack": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", - "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", - "dev": true, - "dependencies": { - "https-proxy-agent": "^2.2.1" - } - }, - "node_modules/browserstack-local": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/browserstack-local/-/browserstack-local-1.5.1.tgz", - "integrity": "sha512-T/wxyWDzvBHbDvl7fZKpFU7mYze6nrUkBhNy+d+8bXBqgQX10HTYvajIGO0wb49oGSLCPM0CMZTV/s7e6LF0sA==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "https-proxy-agent": "^5.0.1", - "is-running": "^2.1.0", - "ps-tree": "=1.2.0", - "temp-fs": "^0.9.9" - } - }, - "node_modules/browserstack/node_modules/agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "dependencies": { - "es6-promisify": "^5.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/browserstack/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/browserstack/node_modules/https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "dependencies": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/browserstacktunnel-wrapper": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/browserstacktunnel-wrapper/-/browserstacktunnel-wrapper-2.0.5.tgz", - "integrity": "sha512-oociT3nl+FhQnyJbAb1RM4oQ5pN7aKeXEURkTkiEVm/Rji2r0agl3Wbw5V23VFn9lCU5/fGyDejRZPtGYsEcFw==", - "dev": true, - "dependencies": { - "https-proxy-agent": "^2.2.1", - "unzipper": "^0.9.3" - }, - "engines": { - "node": ">= 0.10.20" - } - }, - "node_modules/browserstacktunnel-wrapper/node_modules/agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "dependencies": { - "es6-promisify": "^5.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/browserstacktunnel-wrapper/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/browserstacktunnel-wrapper/node_modules/https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "dependencies": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "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": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", - "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", - "dev": true, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/buffer-indexof-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "dev": true, - "engines": { - "node": ">=0.2.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cac": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/cac/-/cac-3.0.4.tgz", - "integrity": "sha512-hq4rxE3NT5PlaEiVV39Z45d6MoFcQZG5dsgJqtAUeOz3408LEQAElToDkf9i5IYSCOmK0If/81dLg7nKxqPR0w==", - "dev": true, - "dependencies": { - "camelcase-keys": "^3.0.0", - "chalk": "^1.1.3", - "indent-string": "^3.0.0", - "minimist": "^1.2.0", - "read-pkg-up": "^1.0.1", - "suffix": "^0.1.0", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cac/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/cac/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/cac/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/cac/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cac/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/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/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-3.0.0.tgz", - "integrity": "sha512-U4E6A6aFyYnNW+tDt5/yIUKQURKXe3WMFPfX4FxrQFcwZ/R08AUk1xWcUtlr7oq6CV07Ji+aa69V2g7BSpblnQ==", - "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/can-autoplay": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/can-autoplay/-/can-autoplay-3.0.2.tgz", - "integrity": "sha512-Ih6wc7yJB4TylS/mLyAW0Dj5Nh3Gftq/g966TcxgvpNCOzlbqTs85srAq7mwIspo4w8gnLCVVGroyCHfh6l9aA==", - "dev": true - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001429", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001429.tgz", - "integrity": "sha512-511ThLu1hF+5RRRt0zYCf2U2yRr9GPF6m5y90SBCWsvSoYoW7yAGlv/elyPaNfvGCkp6kj/KFZWU0BMA69Prsg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "dev": true, - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, - "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/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "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/chrome-launcher/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/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/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/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "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/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-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha512-5D2XXSpkOnleOI21TG7p3T0bGAsZ/XknZpKBmGYyluO8pw4zA3K8ZlrBIbC4FXg3m6z/RNFiUFfT2sQK01+UHA==", - "dev": true, - "dependencies": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", - "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/compress-commons": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", - "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", - "dev": true, - "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.2", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/compress-commons/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/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-with-sourcemaps": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", - "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", - "dev": true, - "dependencies": { - "source-map": "^0.6.1" - } - }, - "node_modules/concat-with-sourcemaps/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/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect-livereload": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz", - "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/connect/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/connect/node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "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.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/connect/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/connect/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/connect/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/continuable-cache": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/continuable-cache/-/continuable-cache-0.3.1.tgz", - "integrity": "sha512-TF30kpKhTH8AGCG3dut0rdd/19B7Z+qCnrMoBLpyQu/2drZdNrrpcjPEoJeSVsQM+8KmWG5O56oPDjSSUsuTyA==", - "dev": true - }, - "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==" - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/copy-props": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz", - "integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==", - "dev": true, - "dependencies": { - "each-props": "^1.3.2", - "is-plain-object": "^5.0.0" - } - }, - "node_modules/core-js": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.26.0.tgz", - "integrity": "sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", - "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", - "dependencies": { - "browserslist": "^4.21.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-pure": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.26.0.tgz", - "integrity": "sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/coveralls": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz", - "integrity": "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==", - "dev": true, - "dependencies": { - "js-yaml": "^3.13.1", - "lcov-parse": "^1.0.0", - "log-driver": "^1.2.7", - "minimist": "^1.2.5", - "request": "^2.88.2" - }, - "bin": { - "coveralls": "bin/coveralls.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "dev": true, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", - "dev": true, - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/criteo-direct-rsa-validate": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/criteo-direct-rsa-validate/-/criteo-direct-rsa-validate-1.1.0.tgz", - "integrity": "sha512-7gQ3zX+d+hS/vOxzLrZ4aRAceB7qNJ0VzaGNpcWjDCmtOpASB50USJDupTik/H2nHgiSAA3VNZ3SFuONs8LR9Q==" - }, - "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-js": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-3.3.0.tgz", - "integrity": "sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==" - }, - "node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, - "node_modules/css-shorthand-properties": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/css-shorthand-properties/-/css-shorthand-properties-1.1.1.tgz", - "integrity": "sha512-Md+Juc7M3uOdbAFwOYlTrccIZ7oCFuzrhKYQjdeUEW/sE1hv17Jp/Bws+ReOPpGVBTYCBoYo+G17V5Qo8QQ75A==", - "dev": true - }, - "node_modules/css-value": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/css-value/-/css-value-0.0.1.tgz", - "integrity": "sha512-FUV3xaJ63buRLgHrLQVlVgQnQdR4yqdLGaDu7g8CQcWjInDfM9plBTPI9FRfpahju1UBSaMckeb2/46ApS/V1Q==", - "dev": true - }, - "node_modules/css/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/custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "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/date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/dateformat": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", - "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/de-indent": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", - "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", - "dev": true, - "optional": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/debug-fabulous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-1.1.0.tgz", - "integrity": "sha512-GZqvGIgKNlUnHUPQhepnUZFIMoi3dgZKQBzKDeL2g7oJF9SNAji/AAu36dusFUas0O+pae74lNeoIPHqXWDkLg==", - "dev": true, - "dependencies": { - "debug": "3.X", - "memoizee": "0.4.X", - "object-assign": "4.X" - } - }, - "node_modules/debug-fabulous/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "dev": true, - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "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": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/deep-equal": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz", - "integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "es-get-iterator": "^1.1.1", - "get-intrinsic": "^1.0.1", - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.2", - "is-regex": "^1.1.1", - "isarray": "^2.0.5", - "object-is": "^1.1.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.3", - "which-boxed-primitive": "^1.0.1", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-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/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/default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "dev": true, - "dependencies": { - "kind-of": "^5.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha512-2xaP6GiwVwOEbXCGoJ4ufgC76m8cj805jrghScewJC2ZDsb9U0b4BIrba+xt/Uytyd0HvQ6+WymSRTfnYj59GQ==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "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-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", - "dev": true, - "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/devtools": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/devtools/-/devtools-7.25.4.tgz", - "integrity": "sha512-R6/S/dCqxoX4Y6PxIGM9JFAuSRZzUeV5r+CoE/frhmno6mTe7dEEgwkJlfit3LkKRoul8n4DsL2A3QtWOvq5IA==", - "dev": true, - "dependencies": { - "@types/node": "^18.0.0", - "@types/ua-parser-js": "^0.7.33", - "@wdio/config": "7.25.4", - "@wdio/logger": "7.19.0", - "@wdio/protocols": "7.22.0", - "@wdio/types": "7.25.4", - "@wdio/utils": "7.25.4", - "chrome-launcher": "^0.15.0", - "edge-paths": "^2.1.0", - "puppeteer-core": "^13.1.3", - "query-selector-shadow-dom": "^1.0.0", - "ua-parser-js": "^1.0.1", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/devtools-protocol": { - "version": "0.0.1061995", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1061995.tgz", - "integrity": "sha512-pKZZWTjWa/IF4ENCg6GN8bu/AxSZgdhjSa26uc23wz38Blt2Tnm9icOPcSG3Cht55rMq35in1w3rWVPcZ60ArA==", - "dev": true - }, - "node_modules/devtools/node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "dev": true - }, - "node_modules/devtools/node_modules/@wdio/config": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.25.4.tgz", - "integrity": "sha512-vb0emDtD9FbFh/yqW6oNdo2iuhQp8XKj6GX9fyy9v4wZgg3B0HPMVJxhIfcoHz7LMBWlHSo9YdvhFI5EQHRLBA==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.19.0", - "@wdio/types": "7.25.4", - "@wdio/utils": "7.25.4", - "deepmerge": "^4.0.0", - "glob": "^8.0.3" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/devtools/node_modules/@wdio/logger": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.19.0.tgz", - "integrity": "sha512-xR7SN/kGei1QJD1aagzxs3KMuzNxdT/7LYYx+lt6BII49+fqL/SO+5X0FDCZD0Ds93AuQvvz9eGyzrBI2FFXmQ==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/devtools/node_modules/@wdio/protocols": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.22.0.tgz", - "integrity": "sha512-8EXRR+Ymdwousm/VGtW3H1hwxZ/1g1H99A1lF0U4GuJ5cFWHCd0IVE5H31Z52i8ZruouW8jueMkGZPSo2IIUSQ==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/devtools/node_modules/@wdio/types": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.25.4.tgz", - "integrity": "sha512-muvNmq48QZCvocctnbe0URq2FjJjUPIG4iLoeMmyF0AQgdbjaUkMkw3BHYNHVTbSOU9WMsr2z8alhj/I2H6NRQ==", - "dev": true, - "dependencies": { - "@types/node": "^18.0.0", - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "^4.6.2" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/devtools/node_modules/@wdio/utils": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.25.4.tgz", - "integrity": "sha512-8iwQDk+foUqSzKZKfhLxjlCKOkfRJPNHaezQoevNgnrTq/t0ek+ldZCATezb9B8jprAuP4mgS9xi22akc6RkzA==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.19.0", - "@wdio/types": "7.25.4", - "p-iteration": "^1.1.8" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/devtools/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/devtools/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/devtools/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/devtools/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/devtools/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/devtools/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "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/devtools/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/devtools/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/devtools/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/devtools/node_modules/ua-parser-js": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.33.tgz", - "integrity": "sha512-RqshF7TPTE0XLYAqmjlu5cLLuGdKrNu9O1KLA/qp39QtbZwuzwv1dT46DZSopoUMsYgXpB3Cv8a03FI8b74oFQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "node_modules/devtools/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "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/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "dev": true, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "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/doctrine-temporary-fork": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine-temporary-fork/-/doctrine-temporary-fork-2.1.0.tgz", - "integrity": "sha512-nliqOv5NkE4zMON4UA6AMJE6As35afs8aYXATpU4pTUdIKiARZwrJVEP1boA3Rx1ZXHVkwxkhcq4VkqvsuRLsA==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/documentation": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/documentation/-/documentation-14.0.1.tgz", - "integrity": "sha512-Y/brACCE3sNnDJPFiWlhXrqGY+NelLYVZShLGse5bT1KdohP4JkPf5T2KNq1YWhIEbDYl/1tebRLC0WYbPQxVw==", - "dev": true, - "dependencies": { - "@babel/core": "^7.18.10", - "@babel/generator": "^7.18.10", - "@babel/parser": "^7.18.11", - "@babel/traverse": "^7.18.11", - "@babel/types": "^7.18.10", - "chalk": "^5.0.1", - "chokidar": "^3.5.3", - "diff": "^5.1.0", - "doctrine-temporary-fork": "2.1.0", - "git-url-parse": "^13.1.0", - "github-slugger": "1.4.0", - "glob": "^8.0.3", - "globals-docs": "^2.4.1", - "highlight.js": "^11.6.0", - "ini": "^3.0.0", - "js-yaml": "^4.1.0", - "konan": "^2.1.1", - "lodash": "^4.17.21", - "mdast-util-find-and-replace": "^2.2.1", - "mdast-util-inject": "^1.1.0", - "micromark-util-character": "^1.1.0", - "parse-filepath": "^1.0.2", - "pify": "^6.0.0", - "read-pkg-up": "^9.1.0", - "remark": "^14.0.2", - "remark-gfm": "^3.0.1", - "remark-html": "^15.0.1", - "remark-reference-links": "^6.0.1", - "remark-toc": "^8.0.1", - "resolve": "^1.22.1", - "strip-json-comments": "^5.0.0", - "unist-builder": "^3.0.0", - "unist-util-visit": "^4.1.0", - "vfile": "^5.3.4", - "vfile-reporter": "^7.0.4", - "vfile-sort": "^3.0.0", - "yargs": "^17.5.1" - }, - "bin": { - "documentation": "bin/documentation.js" - }, - "engines": { - "node": ">=14" - }, - "optionalDependencies": { - "@vue/compiler-sfc": "^3.2.37", - "vue-template-compiler": "^2.7.8" - } - }, - "node_modules/documentation/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/documentation/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/documentation/node_modules/chalk": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.1.2.tgz", - "integrity": "sha512-E5CkT4jWURs1Vy5qGJye+XwCkNj7Od3Af7CP6SujMetSMkLs8Do2RWJK5yx1wamHV/op8Rz+9rltjaTQWDnEFQ==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/documentation/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "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/documentation/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/documentation/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/documentation/node_modules/yargs": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.0.tgz", - "integrity": "sha512-8H/wTDqlSwoSnScvV2N/JHfLWOKuh5MVla9hqLjK3nsfyy6Y4kDSYSvkU5YCUEPOSnRXfIyx3Sq+B/IWudTo4g==", - "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.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "dev": true, - "dependencies": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true - }, - "node_modules/dset": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.2.tgz", - "integrity": "sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==", - "engines": { - "node": ">=4" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/duplexer2": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", - "integrity": "sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==", - "dev": true, - "dependencies": { - "readable-stream": "~1.1.9" - } - }, - "node_modules/duplexer2/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - }, - "node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } - }, - "node_modules/each-props/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/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/easy-table": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.2.0.tgz", - "integrity": "sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "optionalDependencies": { - "wcwidth": "^1.0.1" - } - }, - "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/edge-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/edge-paths/-/edge-paths-2.2.1.tgz", - "integrity": "sha512-AI5fC7dfDmCdKo3m5y7PkYE8m6bMqR6pvVpgtrZkkhcJXFLelUgkjrhk3kXXx8Kbw2cRaTT4LkOR7hqf39KJdw==", - "dev": true, - "dependencies": { - "@types/which": "^1.3.2", - "which": "^2.0.2" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/ejs": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.8.tgz", - "integrity": "sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==", - "dev": true, - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" - }, - "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/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "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/engine.io": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.4.2.tgz", - "integrity": "sha512-FKn/3oMiJjrOEOeUub2WCox6JhxBXq/Zn3fZOMCBxKnNYtsdKjxhl7yR3fZhM9PV+rdE75SU5SYMc+2PGzo+Tg==", - "dev": true, - "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.11.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io-parser": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", - "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/engine.io/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/error/-/error-7.2.1.tgz", - "integrity": "sha512-fo9HBvWnx3NGUKMvMwB/CBCMMrfEJgbDTVDEkPygA3Bdd3lM1OyCd+rbQ8BwnpF6GdVeOLDNmyL4N5Bg80ZvdA==", - "dev": true, - "dependencies": { - "string-template": "~0.2.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/es-abstract": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.4.tgz", - "integrity": "sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.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-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.5", - "string.prototype.trimstart": "^1.0.5", - "unbox-primitive": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-get-iterator": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", - "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.0", - "has-symbols": "^1.0.1", - "is-arguments": "^1.1.0", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es5-shim": { - "version": "4.6.7", - "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.6.7.tgz", - "integrity": "sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-object-assign": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", - "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", - "dev": true - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "node_modules/es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", - "dev": true, - "dependencies": { - "es6-promise": "^4.0.3" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "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==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==", - "dev": true, - "dependencies": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=0.12.0" - }, - "optionalDependencies": { - "source-map": "~0.2.0" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/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/escodegen/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/escodegen/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/escodegen/node_modules/source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==", - "dev": true, - "optional": true, - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen/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/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-standard": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", - "integrity": "sha512-UkFojTV1o0GOe1edOEiuI5ccYLJSuNngtqSeClNzhsmG8KPJ+7mRxgtp2oYhqZAK/brlXMoCd+VgXViE0AfyKw==", - "dev": true, - "peerDependencies": { - "eslint": ">=3.19.0", - "eslint-plugin-import": ">=2.2.0", - "eslint-plugin-node": ">=4.2.2", - "eslint-plugin-promise": ">=3.5.0", - "eslint-plugin-standard": ">=3.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", - "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", - "dev": true, - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/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/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", - "dev": true, - "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-plugin-node/node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint-plugin-prebid": { - "resolved": "plugins/eslint", - "link": true - }, - "node_modules/eslint-plugin-promise": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz", - "integrity": "sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==", - "dev": true, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0" - } - }, - "node_modules/eslint-plugin-standard": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz", - "integrity": "sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w==", - "dev": true, - "peerDependencies": { - "eslint": ">=3.19.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/eslint/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/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/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/eslint/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/eslint/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/eslint/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/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/eslint/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/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/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/eslint/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/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/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/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/esrecurse/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/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, - "optional": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/event-stream": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", - "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", - "dev": true, - "dependencies": { - "duplexer": "~0.1.1", - "from": "~0", - "map-stream": "~0.1.0", - "pause-stream": "0.0.11", - "split": "0.3", - "stream-combiner": "~0.0.4", - "through": "~2.3.1" - } - }, - "node_modules/event-stream/node_modules/map-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", - "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", - "dev": true - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "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": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/execa/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/execa/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/expect-webdriverio": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-2.0.2.tgz", - "integrity": "sha512-dst0tqP1aZ2p7TPmbatqoIQ+7hRTw+IeKNi830XxKhu2DNNe5vQ85i9ttf9rpXgbnUf91HxKcocn4G7A5bQxDA==", - "dev": true, - "dependencies": { - "expect": "^26.6.2", - "jest-matcher-utils": "^26.6.2" - } - }, - "node_modules/expect/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/expect/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/expect/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/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dev": true, - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "dev": true - }, - "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": "1.1.4", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-1.1.4.tgz", - "integrity": "sha512-L7AGmkO6jhDkEBBGWlLtftA80Xq8DipnrRPr0pyi7GQLXkaq9JYA4xF4z6qnadIC6euiTDKco0cGSU9muw+WTw==", - "dev": true, - "dependencies": { - "kind-of": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend-shallow/node_modules/kind-of": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", - "integrity": "sha512-aUH6ElPnMGon2/YkxRIigV32MOpTVcoXQ1Oo8aYn40s+sJ3j+0gFZsT8HKDcxNy7Fi9zuquWtGaGAahOdv5p/g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "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/extract-zip/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/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/faker": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", - "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==", - "dev": true - }, - "node_modules/fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "dev": true, - "dependencies": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "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-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/faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha512-Xhj93RXbMSq8urNCUq4p9l0P6hnySJ/7YNRhYNug0bLOuii7pKO7xQFb5mx9xZXWCar88pLPb805PvUkwrLZpQ==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "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/fibers": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/fibers/-/fibers-5.0.3.tgz", - "integrity": "sha512-/qYTSoZydQkM21qZpGLDLuCq8c+B8KhuCQ1kLPvnRNhxhVbvrpmH9l2+Lblf5neDuEsY4bfT7LeO553TXQDvJw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "detect-libc": "^1.0.3" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dev": true, - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/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/filelist/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "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/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/findup-sync/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/findup-sync/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/braces/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/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/findup-sync/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/fill-range/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/findup-sync/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fined/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/flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "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/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", - "dev": true, - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/foreachasync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", - "integrity": "sha512-J+ler7Ta54FwwNcx6wQRDhTIbNeyDcARMkOcguEqnEdtm0jKvN3Li3PDAb2Du3ubJYEWfYL83XMROXdsXAXycw==", - "dev": true - }, - "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/fork-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/fork-stream/-/fork-stream-0.0.4.tgz", - "integrity": "sha512-Pqq5NnT78ehvUnAk/We/Jr22vSvanRlFTpAmQ88xBY/M1TlHe+P0ILuEyXS595ysdGfaj22634LBkGMA2GTcpA==", - "dev": true - }, - "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/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", - "dev": true - }, - "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": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fs-mkdirp-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/fs.extra": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fs.extra/-/fs.extra-1.3.2.tgz", - "integrity": "sha512-Ig401VXtyrWrz23k9KxAx9OrnL8AHSLNhQ8YJH2wSYuH0ZUfxwBeY6zXkd/oOyVRFTlpEu/0n5gHeuZt7aqbkw==", - "dev": true, - "dependencies": { - "fs-extra": "~0.6.1", - "mkdirp": "~0.3.5", - "walk": "^2.3.9" - }, - "engines": { - "node": "*" - } - }, - "node_modules/fs.extra/node_modules/fs-extra": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.6.4.tgz", - "integrity": "sha512-5rU898vl/Z948L+kkJedbmo/iltzmiF5bn/eEk0j/SgrPpI+Ydau9xlJPicV7Av2CHYBGz5LAlwTnBU80j1zPQ==", - "dev": true, - "dependencies": { - "jsonfile": "~1.0.1", - "mkdirp": "0.3.x", - "ncp": "~0.4.2", - "rimraf": "~2.2.0" - } - }, - "node_modules/fs.extra/node_modules/jsonfile": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-1.0.1.tgz", - "integrity": "sha512-KbsDJNRfRPF5v49tMNf9sqyyGqGLBcz1v5kZT01kG5ns5mQSltwxCKVmUzVKtEinkUnTDtSrp6ngWpV7Xw0ZlA==", - "dev": true - }, - "node_modules/fs.extra/node_modules/mkdirp": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", - "integrity": "sha512-8OCq0De/h9ZxseqzCH8Kw/Filf5pF/vMI6+BH7Lu0jXz2pqYCjTAQRolSxRIi+Ax+oCCjlxoJMP0YQ4XlrQNHg==", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dev": true - }, - "node_modules/fs.extra/node_modules/rimraf": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", - "integrity": "sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==", - "dev": true, - "bin": { - "rimraf": "bin.js" - } - }, - "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==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/node_modules/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, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/fstream/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/fun-hooks": { - "version": "0.9.10", - "resolved": "https://registry.npmjs.org/fun-hooks/-/fun-hooks-0.9.10.tgz", - "integrity": "sha512-7xBjdT+oMYOPWgwFxNiNzF4ubeUvim4zs1DnQqSSGyxu8UD7AW/6Z0iFsVRwuVSIZKUks2en2VHHotmNfj3ipw==", - "dependencies": { - "typescript-tuple": "^2.2.1" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "dependencies": { - "globule": "^1.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "engines": { - "node": ">=6.9.0" - } - }, - "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-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/git-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", - "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", - "dev": true, - "dependencies": { - "is-ssh": "^1.4.0", - "parse-url": "^8.1.0" - } - }, - "node_modules/git-url-parse": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", - "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", - "dev": true, - "dependencies": { - "git-up": "^7.0.0" - } - }, - "node_modules/github-slugger": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.4.0.tgz", - "integrity": "sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==", - "dev": true - }, - "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": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", - "dev": true, - "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-stream/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-stream/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.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/glob-watcher": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz", - "integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "normalize-path": "^3.0.0", - "object.defaults": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-watcher/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/glob-watcher/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/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/glob-watcher/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/glob-watcher/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/glob-watcher/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-watcher/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/glob-watcher/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/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/glob-watcher/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/micromatch/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/glob-watcher/node_modules/micromatch/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/glob-watcher/node_modules/micromatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-watcher/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/glob-watcher/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix/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/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/globals-docs": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/globals-docs/-/globals-docs-2.4.1.tgz", - "integrity": "sha512-qpPnUKkWnz8NESjrCvnlGklsgiQzlq+rcCxoG5uNQ+dNA7cFMCmn231slLAwS2N/PlkzZ3COL8CcS10jXmLHqg==", - "dev": true - }, - "node_modules/globule": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", - "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", - "dev": true, - "dependencies": { - "glob": "~7.1.1", - "lodash": "^4.17.21", - "minimatch": "~3.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/globule/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/globule/node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", - "dev": true, - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "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/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/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "engines": { - "node": ">=4.x" - } - }, - "node_modules/gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "dev": true, - "dependencies": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-clean": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/gulp-clean/-/gulp-clean-0.4.0.tgz", - "integrity": "sha512-DARK8rNMo4lHOFLGTiHEJdf19GuoBDHqGUaypz+fOhrvOs3iFO7ntdYtdpNxv+AzSJBx/JfypF0yEj9ks1IStQ==", - "dev": true, - "dependencies": { - "fancy-log": "^1.3.2", - "plugin-error": "^0.1.2", - "rimraf": "^2.6.2", - "through2": "^2.0.3", - "vinyl": "^2.1.0" - }, - "engines": { - "node": ">=0.9" - } - }, - "node_modules/gulp-clean/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/gulp-clean/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-cli": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz", - "integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==", - "dev": true, - "dependencies": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.4.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.2.0", - "yargs": "^7.1.0" - }, - "bin": { - "gulp": "bin/gulp.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-cli/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/gulp-cli/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/gulp-cli/node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", - "dev": true - }, - "node_modules/gulp-cli/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/gulp-cli/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/gulp-cli/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", - "dev": true, - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", - "dev": true, - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/gulp-cli/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", - "dev": true, - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-cli/node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", - "dev": true - }, - "node_modules/gulp-cli/node_modules/yargs": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", - "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", - "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.1" - } - }, - "node_modules/gulp-cli/node_modules/yargs-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", - "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", - "dev": true, - "dependencies": { - "camelcase": "^3.0.0", - "object.assign": "^4.1.0" - } - }, - "node_modules/gulp-concat": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/gulp-concat/-/gulp-concat-2.6.1.tgz", - "integrity": "sha512-a2scActrQrDBpBbR3WUZGyGS1JEPLg5PZJdIa7/Bi3GuKAmPYDK6SFhy/NZq5R8KsKKFvtfR0fakbUCcKGCCjg==", - "dev": true, - "dependencies": { - "concat-with-sourcemaps": "^1.0.0", - "through2": "^2.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gulp-concat/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-connect": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/gulp-connect/-/gulp-connect-5.7.0.tgz", - "integrity": "sha512-8tRcC6wgXMLakpPw9M7GRJIhxkYdgZsXwn7n56BA2bQYGLR9NOPhMzx7js+qYDy6vhNkbApGKURjAw1FjY4pNA==", - "dev": true, - "dependencies": { - "ansi-colors": "^2.0.5", - "connect": "^3.6.6", - "connect-livereload": "^0.6.0", - "fancy-log": "^1.3.2", - "map-stream": "^0.0.7", - "send": "^0.16.2", - "serve-index": "^1.9.1", - "serve-static": "^1.13.2", - "tiny-lr": "^1.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-connect/node_modules/ansi-colors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-2.0.5.tgz", - "integrity": "sha512-yAdfUZ+c2wetVNIFsNRn44THW+Lty6S5TwMpUfLA/UaGhiXbBv/F8E60/1hMLd0cnF/CDoWH8vzVaI5bAcHCjw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-connect/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/gulp-connect/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/gulp-connect/node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", - "dev": true - }, - "node_modules/gulp-connect/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/gulp-connect/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/gulp-connect/node_modules/mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", - "dev": true, - "bin": { - "mime": "cli.js" - } - }, - "node_modules/gulp-connect/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/gulp-connect/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/gulp-connect/node_modules/send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", - "dev": true, - "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.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/gulp-connect/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/gulp-connect/node_modules/statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/gulp-eslint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gulp-eslint/-/gulp-eslint-6.0.0.tgz", - "integrity": "sha512-dCVPSh1sA+UVhn7JSQt7KEb4An2sQNbOdB3PA8UCfxsoPlAKjJHxYHGXdXC7eb+V1FAnilSFFqslPrq037l1ig==", - "dev": true, - "dependencies": { - "eslint": "^6.0.0", - "fancy-log": "^1.3.2", - "plugin-error": "^1.0.1" - } - }, - "node_modules/gulp-eslint/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/gulp-eslint/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-eslint/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/gulp-eslint/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/gulp-eslint/node_modules/astral-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gulp-eslint/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/gulp-eslint/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/gulp-eslint/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/gulp-eslint/node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/gulp-eslint/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/gulp-eslint/node_modules/eslint": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", - "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/gulp-eslint/node_modules/eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-eslint/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gulp-eslint/node_modules/eslint/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-eslint/node_modules/espree": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", - "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/gulp-eslint/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/gulp-eslint/node_modules/file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "dependencies": { - "flat-cache": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/gulp-eslint/node_modules/flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/gulp-eslint/node_modules/flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "node_modules/gulp-eslint/node_modules/globals": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", - "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", - "dev": true, - "dependencies": { - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gulp-eslint/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/gulp-eslint/node_modules/inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/gulp-eslint/node_modules/inquirer/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/gulp-eslint/node_modules/inquirer/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/gulp-eslint/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gulp-eslint/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/gulp-eslint/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, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/gulp-eslint/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/gulp-eslint/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gulp-eslint/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/gulp-eslint/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/gulp-eslint/node_modules/regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true, - "engines": { - "node": ">=6.5.0" - } - }, - "node_modules/gulp-eslint/node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/gulp-eslint/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-eslint/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-eslint/node_modules/slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-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/gulp-eslint/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/gulp-eslint/node_modules/table": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", - "dev": true, - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/gulp-eslint/node_modules/table/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-eslint/node_modules/table/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/gulp-eslint/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/gulp-eslint/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/gulp-eslint/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/gulp-if": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-if/-/gulp-if-3.0.0.tgz", - "integrity": "sha512-fCUEngzNiEZEK2YuPm+sdMpO6ukb8+/qzbGfJBXyNOXz85bCG7yBI+pPSl+N90d7gnLvMsarthsAImx0qy7BAw==", - "dev": true, - "dependencies": { - "gulp-match": "^1.1.0", - "ternary-stream": "^3.0.0", - "through2": "^3.0.1" - } - }, - "node_modules/gulp-if/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/gulp-js-escape": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gulp-js-escape/-/gulp-js-escape-1.0.1.tgz", - "integrity": "sha512-F+53crhLb78CTlG7ZZJFWzP0+/4q0vt2/pULXFkTMs6AGBo0Eh5cx+eWsqqHv8hrNIUsuTab3Se8rOOzP/6+EQ==", - "dev": true, - "dependencies": { - "through2": "^0.6.3" - } - }, - "node_modules/gulp-js-escape/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/gulp-js-escape/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/gulp-js-escape/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", - "dev": true - }, - "node_modules/gulp-js-escape/node_modules/through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", - "dev": true, - "dependencies": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, - "node_modules/gulp-match": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/gulp-match/-/gulp-match-1.1.0.tgz", - "integrity": "sha512-DlyVxa1Gj24DitY2OjEsS+X6tDpretuxD6wTfhXE/Rw2hweqc1f6D/XtsJmoiCwLWfXgR87W9ozEityPCVzGtQ==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.3" - } - }, - "node_modules/gulp-replace": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.1.3.tgz", - "integrity": "sha512-HcPHpWY4XdF8zxYkDODHnG2+7a3nD/Y8Mfu3aBgMiCFDW3X2GiOKXllsAmILcxe3KZT2BXoN18WrpEFm48KfLQ==", - "dev": true, - "dependencies": { - "@types/node": "^14.14.41", - "@types/vinyl": "^2.0.4", - "istextorbinary": "^3.0.0", - "replacestream": "^4.0.3", - "yargs-parser": ">=5.0.0-security.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gulp-replace/node_modules/@types/node": { - "version": "14.18.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.33.tgz", - "integrity": "sha512-qelS/Ra6sacc4loe/3MSjXNL1dNQ/GjxNHVzuChwMfmk7HuycRLVQN2qNY3XahK+fZc5E2szqQSKUyAF0E+2bg==", - "dev": true - }, - "node_modules/gulp-shell": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/gulp-shell/-/gulp-shell-0.8.0.tgz", - "integrity": "sha512-wHNCgmqbWkk1c6Gc2dOL5SprcoeujQdeepICwfQRo91DIylTE7a794VEE+leq3cE2YDoiS5ulvRfKVIEMazcTQ==", - "dev": true, - "dependencies": { - "chalk": "^3.0.0", - "fancy-log": "^1.3.3", - "lodash.template": "^4.5.0", - "plugin-error": "^1.0.1", - "through2": "^3.0.1", - "tslib": "^1.10.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/gulp-shell/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/gulp-shell/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/gulp-shell/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/gulp-shell/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/gulp-shell/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/gulp-shell/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/gulp-shell/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/gulp-shell/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/gulp-shell/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/gulp-shell/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/gulp-shell/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/gulp-shell/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/gulp-sourcemaps": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-3.0.0.tgz", - "integrity": "sha512-RqvUckJkuYqy4VaIH60RMal4ZtG0IbQ6PXMNkNsshEGJ9cldUPRb/YCgboYae+CLAs1HQNb4ADTKCx65HInquQ==", - "dev": true, - "dependencies": { - "@gulp-sourcemaps/identity-map": "^2.0.1", - "@gulp-sourcemaps/map-sources": "^1.0.0", - "acorn": "^6.4.1", - "convert-source-map": "^1.0.0", - "css": "^3.0.0", - "debug-fabulous": "^1.0.0", - "detect-newline": "^2.0.0", - "graceful-fs": "^4.0.0", - "source-map": "^0.6.0", - "strip-bom-string": "^1.0.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gulp-sourcemaps/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/gulp-sourcemaps/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/gulp-sourcemaps/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-terser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/gulp-terser/-/gulp-terser-2.1.0.tgz", - "integrity": "sha512-lQ3+JUdHDVISAlUIUSZ/G9Dz/rBQHxOiYDQ70IVWFQeh4b33TC1MCIU+K18w07PS3rq/CVc34aQO4SUbdaNMPQ==", - "dev": true, - "dependencies": { - "plugin-error": "^1.0.1", - "terser": "^5.9.0", - "through2": "^4.0.2", - "vinyl-sourcemaps-apply": "^0.2.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/gulp-terser/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/gulp-terser/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/gulp-terser/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/gulp-terser/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/gulp-terser/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/gulp-util": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", - "integrity": "sha512-q5oWPc12lwSFS9h/4VIjG+1NuNDlJ48ywV2JKItY4Ycc/n1fXJeYPVQsfu5ZrhQi7FGSDBalwUCLar/GyHXKGw==", - "deprecated": "gulp-util is deprecated - replace it, following the guidelines at https://medium.com/gulpjs/gulp-util-ca3b1f9f9ac5", - "dev": true, - "dependencies": { - "array-differ": "^1.0.0", - "array-uniq": "^1.0.2", - "beeper": "^1.0.0", - "chalk": "^1.0.0", - "dateformat": "^2.0.0", - "fancy-log": "^1.1.0", - "gulplog": "^1.0.0", - "has-gulplog": "^0.1.0", - "lodash._reescape": "^3.0.0", - "lodash._reevaluate": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.template": "^3.0.0", - "minimist": "^1.1.0", - "multipipe": "^0.1.2", - "object-assign": "^3.0.0", - "replace-ext": "0.0.1", - "through2": "^2.0.0", - "vinyl": "^0.5.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/gulp-util/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/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/gulp-util/node_modules/clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha512-dhUqc57gSMCo6TX85FLfe51eC/s+Im2MLkAgJwfaRRexR2tA4dd3eLEW4L6efzHc2iNorrRRXITifnDLlRrhaA==", - "dev": true - }, - "node_modules/gulp-util/node_modules/lodash.template": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", - "integrity": "sha512-0B4Y53I0OgHUJkt+7RmlDFWKjVAI/YUpWNiL9GQz5ORDr4ttgfQGo+phBWKFLJbBdtOwgMuUkdOHOnPg45jKmQ==", - "dev": true, - "dependencies": { - "lodash._basecopy": "^3.0.0", - "lodash._basetostring": "^3.0.0", - "lodash._basevalues": "^3.0.0", - "lodash._isiterateecall": "^3.0.0", - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0", - "lodash.keys": "^3.0.0", - "lodash.restparam": "^3.0.0", - "lodash.templatesettings": "^3.0.0" - } - }, - "node_modules/gulp-util/node_modules/lodash.templatesettings": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", - "integrity": "sha512-TcrlEr31tDYnWkHFWDCV3dHYroKEXpJZ2YJYvJdhN+y4AkWMDZ5I4I8XDtUKqSAyG81N7w+I1mFEJtcED+tGqQ==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0", - "lodash.escape": "^3.0.0" - } - }, - "node_modules/gulp-util/node_modules/object-assign": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", - "integrity": "sha512-jHP15vXVGeVh1HuaA2wY6lxk+whK/x4KBG88VXeRma7CCun7iGD5qPc4eYykQ9sdQvg8jkwFKsSxHln2ybW3xQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gulp-util/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/gulp-util/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/gulp-util/node_modules/vinyl": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", - "integrity": "sha512-P5zdf3WB9uzr7IFoVQ2wZTmUwHL8cMZWJGzLBNCHNZ3NB6HTMsYABtt7z8tAGIINLXyAob9B9a1yzVGMFOYKEA==", - "dev": true, - "dependencies": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - }, - "engines": { - "node": ">= 0.9" - } - }, - "node_modules/gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha512-hm6N8nrm3Y08jXie48jsC55eCZz9mnb4OirAStEk2deqeyhXU3C1otDVh+ccttMuc1sBi6RX6ZJ720hs9RCvgw==", - "dev": true, - "dependencies": { - "glogg": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/gzip-size": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", - "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", - "dev": true, - "dependencies": { - "duplexer": "^0.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/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/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/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-gulplog": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", - "integrity": "sha512-+F4GzLjwHNNDEAJW2DC1xXfEoPkRDmUdJ7CBYw4MpqtDwOnqdImJl7GWlpqx+Wko6//J8uKTnIe4wZSv7yCqmw==", - "dev": true, - "dependencies": { - "sparkles": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", - "dev": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hast-util-is-element": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", - "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", - "dev": true, - "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-sanitize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-4.0.0.tgz", - "integrity": "sha512-pw56+69jq+QSr/coADNvWTmBPDy+XsmwaF5KnUys4/wM1jt/fZdl7GPxhXXXYdXnz3Gj3qMkbUCH2uKjvX0MgQ==", - "dev": true, - "dependencies": { - "@types/hast": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-html": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", - "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", - "dev": true, - "dependencies": { - "@types/hast": "^2.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-is-element": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "html-void-elements": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.2", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", - "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/highlight.js": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.6.0.tgz", - "integrity": "sha512-ig1eqDzJaB0pqEvlPVIpSSyMaO92bH1N2rJpLMN/nX396wTpDA4Eq0uK+7I/2XG17pFaaKE0kjV/XPeGt7Evjw==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", - "dev": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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/html-void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", - "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "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": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.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/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "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": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "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-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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/indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/individual": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/individual/-/individual-2.0.0.tgz", - "integrity": "sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g==", - "dev": true - }, - "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==" - }, - "node_modules/ini": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", - "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", - "dev": true, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/inquirer": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", - "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/inquirer/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/inquirer/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/inquirer/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/inquirer/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/inquirer/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/inquirer/node_modules/rxjs": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/inquirer/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/inquirer/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dev": true, - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "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" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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-extendable/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-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-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dev": true, - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-running": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-running/-/is-running-2.1.0.tgz", - "integrity": "sha512-mjJd3PujZMl7j+D395WTIO5tU5RIDBfVSRtRR4VOJou3H66E38UjbjvDGh3slJzPuolsb+yQFqwHNNdyp5jg3w==", - "dev": true - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-ssh": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", - "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", - "dev": true, - "dependencies": { - "protocols": "^2.0.1" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.9.tgz", - "integrity": "sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.20.0", - "for-each": "^0.3.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dev": true, - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "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/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true, - "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, - "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": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha512-nMtdn4hvK0HjUlzr1DrKSUY8ychprt8dzHOgY2KXsIhHu5PuQQEOTM27gV9Xblyon7aUH/TSFIjRHEODF/FRPg==", - "deprecated": "This module is no longer maintained, try this instead:\n npm i nyc\nVisit https://istanbul.js.org/integrations for other alternatives.", - "dev": true, - "dependencies": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "istanbul": "lib/cli.js" - } - }, - "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-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "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-lib-report/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/istanbul-lib-report/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/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/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/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/istanbul/node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", - "dev": 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/istanbul/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul/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, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/istanbul/node_modules/resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", - "dev": true - }, - "node_modules/istanbul/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", - "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/istanbul/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/istextorbinary": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-3.3.0.tgz", - "integrity": "sha512-Tvq1W6NAcZeJ8op+Hq7tdZ434rqnMx4CCZ7H0ff83uEloDvVbqAwaMTZcafKGJT0VHkYzuXUiCY4hlXQg6WfoQ==", - "dev": true, - "dependencies": { - "binaryextensions": "^2.2.0", - "textextensions": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", - "dev": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/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/jake/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/jake/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/jake/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/jake/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/jake/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/jake/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/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-diff/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/jest-diff/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/jest-diff/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/jest-diff/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/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff/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/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-matcher-utils/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/jest-matcher-utils/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/jest-matcher-utils/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/jest-matcher-utils/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/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-matcher-utils/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/jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-message-util/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/jest-message-util/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/jest-message-util/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/jest-message-util/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/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/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/jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "dev": true, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "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==" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/js-yaml/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "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-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": "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/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/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "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/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/just-clone": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/just-clone/-/just-clone-1.0.2.tgz", - "integrity": "sha512-p93GINPwrve0w3HUzpXmpTl7MyzzWz1B5ag44KEtq/hP1mtK8lA2b9Q0VQaPlnY87352osJcE6uBmN0e8kuFMw==" - }, - "node_modules/just-debounce": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.1.0.tgz", - "integrity": "sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ==", - "dev": true - }, - "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, - "node_modules/karma": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", - "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", - "dev": true, - "dependencies": { - "@colors/colors": "1.5.0", - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.5.1", - "connect": "^3.7.0", - "di": "^0.0.1", - "dom-serialize": "^2.2.1", - "glob": "^7.1.7", - "graceful-fs": "^4.2.6", - "http-proxy": "^1.18.1", - "isbinaryfile": "^4.0.8", - "lodash": "^4.17.21", - "log4js": "^6.4.1", - "mime": "^2.5.2", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.5", - "qjobs": "^1.2.0", - "range-parser": "^1.2.1", - "rimraf": "^3.0.2", - "socket.io": "^4.4.1", - "source-map": "^0.6.1", - "tmp": "^0.2.1", - "ua-parser-js": "^0.7.30", - "yargs": "^16.1.1" - }, - "bin": { - "karma": "bin/karma" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/karma-babel-preprocessor": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/karma-babel-preprocessor/-/karma-babel-preprocessor-8.0.2.tgz", - "integrity": "sha512-6ZUnHwaK2EyhgxbgeSJW6n6WZUYSEdekHIV/qDUnPgMkVzQBHEvd07d2mTL5AQjV8uTUgH6XslhaPrp+fHWH2A==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "@babel/core": "7" - } - }, - "node_modules/karma-browserstack-launcher": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-browserstack-launcher/-/karma-browserstack-launcher-1.4.0.tgz", - "integrity": "sha512-bUQK84U+euDfOUfEjcF4IareySMOBNRLrrl9q6cttIe8f011Ir6olLITTYMOJDcGY58wiFIdhPHSPd9Pi6+NfQ==", - "dev": true, - "dependencies": { - "browserstack": "~1.5.1", - "browserstacktunnel-wrapper": "~2.0.2", - "q": "~1.5.0" - }, - "peerDependencies": { - "karma": ">=0.9" - } - }, - "node_modules/karma-chai": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/karma-chai/-/karma-chai-0.1.0.tgz", - "integrity": "sha512-mqKCkHwzPMhgTYca10S90aCEX9+HjVjjrBFAsw36Zj7BlQNbokXXCAe6Ji04VUMsxcY5RLP7YphpfO06XOubdg==", - "dev": true, - "peerDependencies": { - "chai": "*", - "karma": ">=0.10.9" - } - }, - "node_modules/karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "dependencies": { - "which": "^1.2.1" - } - }, - "node_modules/karma-chrome-launcher/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/karma-coverage-istanbul-reporter": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", - "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^3.0.2", - "minimatch": "^3.0.4" - }, - "funding": { - "url": "https://github.com/sponsors/mattlewis92" - } - }, - "node_modules/karma-coverage-istanbul-reporter/node_modules/istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/karma-coverage-istanbul-reporter/node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/karma-coverage-istanbul-reporter/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/karma-coverage-istanbul-reporter/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/karma-coverage-istanbul-reporter/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/karma-coverage-istanbul-reporter/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/karma-coverage-istanbul-reporter/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/karma-es5-shim": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/karma-es5-shim/-/karma-es5-shim-0.0.4.tgz", - "integrity": "sha512-8xU6F2/R6u6HAZ/nlyhhx3WEhj4C6hJorG7FR2REX81pgj2LSo9ADJXxCGIeXg6Qr2BGpxp4hcZcEOYGAwiumg==", - "dev": true, - "dependencies": { - "es5-shim": "^4.0.5" - } - }, - "node_modules/karma-firefox-launcher": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-2.1.2.tgz", - "integrity": "sha512-VV9xDQU1QIboTrjtGVD4NCfzIH7n01ZXqy/qpBhnOeGVOkG5JYPEm8kuSd7psHE6WouZaQ9Ool92g8LFweSNMA==", - "dev": true, - "dependencies": { - "is-wsl": "^2.2.0", - "which": "^2.0.1" - } - }, - "node_modules/karma-ie-launcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/karma-ie-launcher/-/karma-ie-launcher-1.0.0.tgz", - "integrity": "sha512-ts71ke8pHvw6qdRtq0+7VY3ANLoZuUNNkA8abRaWV13QRPNm7TtSOqyszjHUtuwOWKcsSz4tbUtrNICrQC+SXQ==", - "dev": true, - "dependencies": { - "lodash": "^4.6.1" - }, - "peerDependencies": { - "karma": ">=0.9" - } - }, - "node_modules/karma-mocha": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", - "integrity": "sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.3" - } - }, - "node_modules/karma-mocha-reporter": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/karma-mocha-reporter/-/karma-mocha-reporter-2.2.5.tgz", - "integrity": "sha512-Hr6nhkIp0GIJJrvzY8JFeHpQZNseuIakGac4bpw8K1+5F0tLb6l7uvXRa8mt2Z+NVwYgCct4QAfp2R2QP6o00w==", - "dev": true, - "dependencies": { - "chalk": "^2.1.0", - "log-symbols": "^2.1.0", - "strip-ansi": "^4.0.0" - }, - "peerDependencies": { - "karma": ">=0.13" - } - }, - "node_modules/karma-mocha-reporter/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/karma-mocha-reporter/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/karma-opera-launcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/karma-opera-launcher/-/karma-opera-launcher-1.0.0.tgz", - "integrity": "sha512-rdty4FlVIowmUhPuG08TeXKHvaRxeDSzPxGIkWguCF3A32kE0uvXZ6dXW08PuaNjai8Ip3f5Pn9Pm2HlChaxCw==", - "dev": true, - "peerDependencies": { - "karma": ">=0.9" - } - }, - "node_modules/karma-safari-launcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/karma-safari-launcher/-/karma-safari-launcher-1.0.0.tgz", - "integrity": "sha512-qmypLWd6F2qrDJfAETvXDfxHvKDk+nyIjpH9xIeI3/hENr0U3nuqkxaftq73PfXZ4aOuOChA6SnLW4m4AxfRjQ==", - "dev": true, - "peerDependencies": { - "karma": ">=0.9" - } - }, - "node_modules/karma-script-launcher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/karma-script-launcher/-/karma-script-launcher-1.0.0.tgz", - "integrity": "sha512-5NRc8KmTBjNPE3dNfpJP90BArnBohYV4//MsLFfUA1e6N+G1/A5WuWctaFBtMQ6MWRybs/oguSej0JwDr8gInA==", - "dev": true, - "peerDependencies": { - "karma": ">=0.9" - } - }, - "node_modules/karma-sinon": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/karma-sinon/-/karma-sinon-1.0.5.tgz", - "integrity": "sha512-wrkyAxJmJbn75Dqy17L/8aILJWFm7znd1CE8gkyxTBFnjMSOe2XTJ3P30T8SkxWZHmoHX0SCaUJTDBEoXs25Og==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - }, - "peerDependencies": { - "karma": ">=0.10", - "sinon": "*" - } - }, - "node_modules/karma-sourcemap-loader": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.8.tgz", - "integrity": "sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2" - } - }, - "node_modules/karma-spec-reporter": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/karma-spec-reporter/-/karma-spec-reporter-0.0.32.tgz", - "integrity": "sha512-ZXsYERZJMTNRR2F3QN11OWF5kgnT/K2dzhM+oY3CDyMrDI3TjIWqYGG7c15rR9wjmy9lvdC+CCshqn3YZqnNrA==", - "dev": true, - "dependencies": { - "colors": "^1.1.2" - }, - "peerDependencies": { - "karma": ">=0.9" - } - }, - "node_modules/karma-webpack": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.0.tgz", - "integrity": "sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3", - "minimatch": "^3.0.4", - "webpack-merge": "^4.1.5" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/karma/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/karma/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, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/karma/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/karma/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/karma/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/karma/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/keycode": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.1.tgz", - "integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==", - "dev": true - }, - "node_modules/keyv": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.0.tgz", - "integrity": "sha512-2YvuMsA+jnFGtBareKqgANOEKe1mk3HKiXu2fRmAfyxG0MJAywNhi5ttWA3PMjl4NmpyjZNbFifR2vNjW1znfA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/konan": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/konan/-/konan-2.1.1.tgz", - "integrity": "sha512-7ZhYV84UzJ0PR/RJnnsMZcAbn+kLasJhVNWsu8ZyVEJYRpGA5XESQ9d/7zOa08U0Ou4cmB++hMNY/3OSV9KIbg==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.10.5", - "@babel/traverse": "^7.10.5" - } - }, - "node_modules/ky": { - "version": "0.29.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.29.0.tgz", - "integrity": "sha512-01TBSOqlHmLfcQhHseugGHLxPtU03OyZWaLDWt5MfzCkijG6xWFvAQPhKVn0cR2MMjYvBP9keQ8A3+rQEhLO5g==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" - } - }, - "node_modules/last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha512-U/VxvpX4N/rFvPzr3qG5EtLKEnNI0emvIQB3/ecEwv+8GHaUKbIB8vxv1Oai5FAF0d0r7LXHhLLe5K/yChm5GQ==", - "dev": true, - "dependencies": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", - "dev": true, - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lcov-parse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", - "integrity": "sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==", - "dev": true, - "bin": { - "lcov-parse": "bin/cli.js" - } - }, - "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", - "dev": true, - "dependencies": { - "flush-write-stream": "^1.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "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/liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "dev": true, - "dependencies": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/liftoff/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/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/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", - "dev": true - }, - "node_modules/live-connect-common": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/live-connect-common/-/live-connect-common-1.0.0.tgz", - "integrity": "sha512-LBZsvykcGeVRYI1eqqXrrNZsoBdL2a8cpyrYPIiGAF/CpixbyRbvqGslaFw511lH294QB16J3fYYg21aYuaM2Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/live-connect-js": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/live-connect-js/-/live-connect-js-5.0.0.tgz", - "integrity": "sha512-Bv0wQQ+/1VU0/YczEpObbWtHbuXwaHGxwg1+Pe7ZlDgBLb334CrqSQvOL1uyZw3//zs+fSO94yYaQzjjkTd5OQ==", - "dependencies": { - "live-connect-common": "^1.0.0", - "tiny-hashes": "1.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/livereload-js": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.4.0.tgz", - "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", - "dev": true - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "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/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._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha512-rFR6Vpm4HeCK1WPGvjZSJ+7yik8d8PVUdCJx5rT2pogG4Ve/2ZS7kfmO5l5T2o5V2mqlNIfSF5MZlr1+xOoYQQ==", - "dev": true - }, - "node_modules/lodash._basetostring": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", - "integrity": "sha512-mTzAr1aNAv/i7W43vOR/uD/aJ4ngbtsRaCubp2BfZhlGU/eORUjg/7F6X0orNMdv33JOrdgGybtvMN/po3EWrA==", - "dev": true - }, - "node_modules/lodash._basevalues": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", - "integrity": "sha512-H94wl5P13uEqlCg7OcNNhMQ8KvWSIyqXzOPusRgHC9DK3o54P6P3xtbXlVbRABG4q5gSmp7EDdJ0MSuW9HX6Mg==", - "dev": true - }, - "node_modules/lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha512-RrL9VxMEPyDMHOd9uFbvMe8X55X16/cGM5IgOKgRElQZutpX89iS6vwl64duTV1/16w5JY7tuFNXqoekmh1EmA==", - "dev": true - }, - "node_modules/lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha512-De+ZbrMu6eThFti/CSzhRvTKMgQToLxbij58LMfM8JnYDNSOjkjTCIaa8ixglOeGh2nyPlakbt5bJWJ7gvpYlQ==", - "dev": true - }, - "node_modules/lodash._reescape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", - "integrity": "sha512-Sjlavm5y+FUVIF3vF3B75GyXrzsfYV8Dlv3L4mEpuB9leg8N6yf/7rU06iLPx9fY0Mv3khVp9p7Dx0mGV6V5OQ==", - "dev": true - }, - "node_modules/lodash._reevaluate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", - "integrity": "sha512-OrPwdDc65iJiBeUe5n/LIjd7Viy99bKwDdk7Z5ljfZg0uFRFlfQaCy9tZ4YMAag9WAZmlVpe1iZrkIMMSMHD3w==", - "dev": true - }, - "node_modules/lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", - "dev": true - }, - "node_modules/lodash._root": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", - "integrity": "sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==", - "dev": true - }, - "node_modules/lodash.clone": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", - "integrity": "sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, - "node_modules/lodash.defaults": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", - "dev": true - }, - "node_modules/lodash.difference": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", - "dev": true - }, - "node_modules/lodash.escape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", - "integrity": "sha512-n1PZMXgaaDWZDSvuNZ/8XOcYO2hOKDqZel5adtR30VKQAtoWs/5AOeFA0vPV8moiPzlqe7F4cP2tzpFewQyelQ==", - "dev": true, - "dependencies": { - "lodash._root": "^3.0.0" - } - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", - "dev": true - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "dev": true - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true - }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", - "dev": true - }, - "node_modules/lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha512-JwObCrNJuT0Nnbuecmqr5DgtuBppuCvGD9lxjFpAzwnVtdGoDQ1zig+5W8k5/6Gcn0gZ3936HDAlGd28i7sOGQ==", - "dev": true - }, - "node_modules/lodash.isobject": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", - "integrity": "sha512-3/Qptq2vr7WeJbB4KHUSKlq8Pl7ASXi3UG6CMbBm8WRtXi8+GHm7mKaU3urfpSEzWe2wCIChs6/sdocUsTKJiA==", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, - "node_modules/lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha512-CuBsapFjcubOGMn3VD+24HOAPxM79tH+V6ivJL3CHYjtrawauDJHUk//Yew9Hvc6e9rbCrURGk8z6PC+8WJBfQ==", - "dev": true, - "dependencies": { - "lodash._getnative": "^3.0.0", - "lodash.isarguments": "^3.0.0", - "lodash.isarray": "^3.0.0" - } - }, - "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/lodash.pickby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", - "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", - "dev": true - }, - "node_modules/lodash.restparam": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", - "integrity": "sha512-L4/arjjuq4noiUJpt3yS6KIKDtJwNe2fIYgMqyYYKoeIfV1iEqvPwhCx23o+R9dzouGihDAPN1dTIRWa7zk8tw==", - "dev": true - }, - "node_modules/lodash.some": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", - "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==", - "dev": true - }, - "node_modules/lodash.template": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", - "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0", - "lodash.templatesettings": "^4.0.0" - } - }, - "node_modules/lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "dev": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true - }, - "node_modules/lodash.union": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", - "dev": true - }, - "node_modules/lodash.zip": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", - "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", - "dev": true - }, - "node_modules/log-driver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", - "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", - "dev": true, - "engines": { - "node": ">=0.8.6" - } - }, - "node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log4js": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", - "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", - "dev": true, - "dependencies": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "flatted": "^3.2.7", - "rfdc": "^1.3.0", - "streamroller": "^3.1.3" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/loglevel": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.0.tgz", - "integrity": "sha512-G6A/nJLRgWOuuwdNuA6koovfEV1YpqqAG4pRUlFaz3jj2QNZ8M4vBqnVA+HBTmU/AMNUtlOsMmSpF6NyOjztbA==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loglevel-plugin-prefix": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", - "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true - }, - "node_modules/lolex": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.7.5.tgz", - "integrity": "sha512-l9x0+1offnKKIzYVjyXU2SiwhXDLekRzKyhnbyldPHvC7BvLPVpdNUNR2KeMAiCN2D/kLNttZgQD5WjSxuBx3Q==", - "dev": true - }, - "node_modules/longest-streak": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.0.1.tgz", - "integrity": "sha512-cHlYSUpL2s7Fb3394mYxwTYj8niTaNHUCLr0qdiCXQfSjfuA7CKofpX2uSwEfFDQ0EB7JcnMnm+GjbqqoinYYg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", - "dev": true, - "dependencies": { - "get-func-name": "^2.0.0" - } - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", - "dev": true, - "dependencies": { - "es5-ext": "~0.10.2" - } - }, - "node_modules/m3u8-parser": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-4.7.1.tgz", - "integrity": "sha512-pbrQwiMiq+MmI9bl7UjtPT3AK603PV9bogNlr83uC+X9IoxqL5E4k7kU7fMQ0dpRgxgeSMygqUa0IMLQNXLBNA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.5", - "global": "^4.4.0" - } - }, - "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", - "dev": true, - "optional": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - } - }, - "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-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/make-iterator/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==", - "dev": true - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/markdown-table": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.2.tgz", - "integrity": "sha512-y8j3a5/DkJCmS5x4dMCQL+OR0+2EAq3DOtio1COSHsmW2BGXnNCK3v12hJt1LrUz5iZH5g0LmuYOjDdI+czghA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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/matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha512-LFgVbaHIHMqCRuCZyfCtUOq9/Lnzhi7Z0KFUE2fhD54+JN2jLh3hC02RLkqauJ3U4soU6H1J3tfj/Byk7GoEjA==", - "dev": true, - "dependencies": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/matchdep/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/matchdep/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/braces/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/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/matchdep/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/fill-range/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha512-vs+3unmJT45eczmcAZ6zMJtxN3l/QXeccaXQx5cu/MeJMhewVfoWZqibRkOxPnmoR59+Zy5hjabfQc6JLSah4g==", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/matchdep/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/matchdep/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/matchdep/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mdast-util-definitions": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.1.tgz", - "integrity": "sha512-rQ+Gv7mHttxHOBx2dkF4HWTg+EE+UR78ptQWDylzPKaQuVGdG4HIoY3SrS/pCp80nZ04greFvXbVFHT+uf0JVQ==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.1.tgz", - "integrity": "sha512-SobxkQXFAdd4b5WmEakmkVoh18icjQRxGy5OWTCzgsLRm1Fu/KCtwD1HIQSsmq5ZRjVH0Ehwg6/Fn3xIUk+nKw==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.2.0.tgz", - "integrity": "sha512-iZJyyvKD1+K7QX1b5jXdE7Sc5dtoTry1vzV28UZZe8Z1xVnB/czKntJ7ZAkG0tANqRnBF6p3p7GpU1y19DTf2Q==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown/node_modules/mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.1.tgz", - "integrity": "sha512-42yHBbfWIFisaAfV1eixlabbsa6q7vHeSPY+cg+BBjX51M8xhgMacqH9g6TftB/9+YkcI0ooV4ncfrJslzm/RQ==", - "dev": true, - "dependencies": { - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-gfm-autolink-literal": "^1.0.0", - "mdast-util-gfm-footnote": "^1.0.0", - "mdast-util-gfm-strikethrough": "^1.0.0", - "mdast-util-gfm-table": "^1.0.0", - "mdast-util-gfm-task-list-item": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.2.tgz", - "integrity": "sha512-FzopkOd4xTTBeGXhXSBU0OCDDh5lUj2rd+HQqG92Ld+jL4lpUfgX2AT2OHAVP9aEeDKp7G92fuooSZcYJA3cRg==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "ccount": "^2.0.0", - "mdast-util-find-and-replace": "^2.0.0", - "micromark-util-character": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.1.tgz", - "integrity": "sha512-p+PrYlkw9DeCRkTVw1duWqPRHX6Ywh2BNKJQcZbCwAuP/59B0Lk9kakuAd7KbQprVO4GzdW8eS5++A9PUSqIyw==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0", - "micromark-util-normalize-identifier": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.1.tgz", - "integrity": "sha512-zKJbEPe+JP6EUv0mZ0tQUyLQOC+FADt0bARldONot/nefuISkaZFlmVK4tU6JgfyZGrky02m/I6PmehgAgZgqg==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.6.tgz", - "integrity": "sha512-uHR+fqFq3IvB3Rd4+kzXW8dmpxUhvgCQZep6KdjsLK4O6meK5dYZEayLtIxNus1XO3gfjfcIFe8a7L0HZRGgag==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.1.tgz", - "integrity": "sha512-KZ4KLmPdABXOsfnM6JHUIjxEvcx2ulk656Z/4Balw071/5qgnhz+H1uGtf2zIGnrnvDC8xR4Fj9uKbjAFGNIeA==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-inject": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-inject/-/mdast-util-inject-1.1.0.tgz", - "integrity": "sha512-CcJ0mHa36QYumDKiZ2OIR+ClhfOM7zIzN+Wfy8tRZ1hpH9DKLCS+Mh4DyK5bCxzE9uxMWcbIpeNFWsg1zrj/2g==", - "dev": true, - "dependencies": { - "mdast-util-to-string": "^1.0.0" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.2.4.tgz", - "integrity": "sha512-a21xoxSef1l8VhHxS1Dnyioz6grrJkoaCUgGzMD/7dWHvboYX3VW53esRUfB5tgTyz4Yos1n25SPcj35dJqmAg==", - "dev": true, - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-definitions": "^5.0.0", - "micromark-util-sanitize-uri": "^1.1.0", - "trim-lines": "^3.0.0", - "unist-builder": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.3.0.tgz", - "integrity": "sha512-6tUSs4r+KK4JGTTiQ7FfHmVOaDrLQJPmpjD6wPMlHGUVXoG9Vjc3jIeP+uyBWRf8clwB2blM+W7+KrlMYQnftA==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-1.1.0.tgz", - "integrity": "sha512-jVU0Nr2B9X3MU4tSK7JP1CMkSvOj7X5l/GboG1tKRw52lLF1x2Ju92Ms9tNetCcbfX3hzlM73zYo2NKkWSfF/A==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-toc": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-6.1.0.tgz", - "integrity": "sha512-0PuqZELXZl4ms1sF7Lqigrqik4Ll3UhbI+jdTrfw7pZ9QPawgl7LD4GQ8MkU7bT/EwiVqChNTbifa2jLLKo76A==", - "dev": true, - "dependencies": { - "@types/extend": "^3.0.0", - "@types/github-slugger": "^1.0.0", - "@types/mdast": "^3.0.0", - "extend": "^3.0.0", - "github-slugger": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "unist-util-is": "^5.0.0", - "unist-util-visit": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-toc/node_modules/mdast-util-to-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.0.tgz", - "integrity": "sha512-n4Vypz/DZgwo0iMHLQL49dJzlp7YtAJP+N07MZHpjPf/5XJuHUWstviF4Mn2jEiR/GNmtnRRqnwsXExk3igfFA==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-toc/node_modules/unist-util-visit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", - "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-toc/node_modules/unist-util-visit-parents": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", - "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "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/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromark": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.1.0.tgz", - "integrity": "sha512-6Mj0yHLdUZjHnOPgr5xfWIMqMWS12zDN6iws9SLuSz76W8jTtAv24MN4/CL7gJrl5vtxGInkkqDv/JIoRsQOvA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.0.6.tgz", - "integrity": "sha512-K+PkJTxqjFfSNkfAhp4GB+cZPfQd6dxtTXnf+RjZOV7T4EEXnvgzOcnp+eSTmpGk9d1S9sL6/lqrgSNn/s0HZA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz", - "integrity": "sha512-p2sGjajLa0iYiGQdT0oelahRYtMWvLjy8J9LOCxzIQsllMCGLbsLW+Nc+N4vi02jcRJvedVJ68cjelKIO6bpDA==", - "dev": true, - "dependencies": { - "micromark-extension-gfm-autolink-literal": "^1.0.0", - "micromark-extension-gfm-footnote": "^1.0.0", - "micromark-extension-gfm-strikethrough": "^1.0.0", - "micromark-extension-gfm-table": "^1.0.0", - "micromark-extension-gfm-tagfilter": "^1.0.0", - "micromark-extension-gfm-task-list-item": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.3.tgz", - "integrity": "sha512-i3dmvU0htawfWED8aHMMAzAVp/F0Z+0bPh3YrbTPPL1v4YAlCZpy5rBO5p0LPYiZo0zFVkoYh7vDU7yQSiCMjg==", - "dev": true, - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.0.4.tgz", - "integrity": "sha512-E/fmPmDqLiMUP8mLJ8NbJWJ4bTw6tS+FEQS8CcuDtZpILuOb2kjLqPEeAePF1djXROHXChM/wPJw0iS4kHCcIg==", - "dev": true, - "dependencies": { - "micromark-core-commonmark": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.4.tgz", - "integrity": "sha512-/vjHU/lalmjZCT5xt7CcHVJGq8sYRm80z24qAKXzaHzem/xsDYb2yLL+NNVbYvmpLx3O7SYPuGL5pzusL9CLIQ==", - "dev": true, - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.5.tgz", - "integrity": "sha512-xAZ8J1X9W9K3JTJTUL7G6wSKhp2ZYHrFk5qJgY/4B33scJzE2kpfRL6oiw/veJTbt7jiM/1rngLlOKPWr1G+vg==", - "dev": true, - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.1.tgz", - "integrity": "sha512-Ty6psLAcAjboRa/UKUbbUcwjVAv5plxmpUTy2XC/3nJFL37eHej8jrHrRzkqcpipJliuBH30DTs7+3wqNcQUVA==", - "dev": true, - "dependencies": { - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.3.tgz", - "integrity": "sha512-PpysK2S1Q/5VXi72IIapbi/jliaiOFzv7THH4amwXeYXLq3l1uo8/2Be0Ac1rEwK20MQEsGH2ltAZLNY2KI/0Q==", - "dev": true, - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-factory-destination": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz", - "integrity": "sha512-eUBA7Rs1/xtTVun9TmV3gjfPz2wEwgK5R5xcbIM5ZYAtvGF6JkyaDsj0agx8urXnO31tEO6Ug83iVH3tdedLnw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.0.2.tgz", - "integrity": "sha512-CTIwxlOnU7dEshXDQ+dsr2n+yxpP0+fn271pu0bwDIS8uqfFcumXpj5mLn3hSC8iw2MUr6Gx8EcKng1dD7i6hg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz", - "integrity": "sha512-qUmqs4kj9a5yBnk3JMLyjtWYN6Mzfcx8uJfi5XAveBniDevmZasdGBba5b4QsvRcAkmvGo5ACmSUmyGiKTLZew==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.0.2.tgz", - "integrity": "sha512-zily+Nr4yFqgMGRKLpTVsNl5L4PMu485fGFDOQJQBl2NFpjGte1e86zC0da93wf97jrc4+2G2GQudFMHn3IX+A==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.0.0.tgz", - "integrity": "sha512-Qx7uEyahU1lt1RnsECBiuEbfr9INjQTGa6Err+gF3g0Tx4YEviPbqqGKNv/NrBaE7dVHdn1bVZKM/n5I/Bak7A==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.1.0.tgz", - "integrity": "sha512-agJ5B3unGNJ9rJvADMJ5ZiYjBRyDpzKAOk01Kpi1TKhlT1APx3XZk6eN7RtSz1erbWHC2L8T3xLZ81wdtGRZzg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.0.0.tgz", - "integrity": "sha512-5e8xTis5tEZKgesfbQMKRCyzvffRRUX+lK/y+DvsMFdabAicPkkZV6gO+FEWi9RfuKKoxxPwNL+dFF0SMImc1g==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.0.0.tgz", - "integrity": "sha512-F8oW2KKrQRb3vS5ud5HIqBVkCqQi224Nm55o5wYLzY/9PwHGXC01tr3d7+TqHHz6zrKQ72Okwtvm/xQm6OVNZA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.0.0.tgz", - "integrity": "sha512-J8H058vFBdo/6+AsjHp2NF7AJ02SZtWaVUjsayNFeAiydTxUwViQPxN0Hf8dp4FmCQi0UUFovFsEyRSUmFH3MA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.0.0.tgz", - "integrity": "sha512-OzO9AI5VUtrTD7KSdagf4MWgHMtET17Ua1fIpXTpuhclCqD8egFWo85GxSGvxgkGS74bEahvtM0WP0HjvV0e4w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.0.2.tgz", - "integrity": "sha512-DLT5Ho02qr6QWVNYbRZ3RYOSSWWFuH3tJexd3dgN1odEuPNxCngTCXJum7+ViRAd9BbdxCvMToPOD/IvVhzG6Q==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz", - "integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-html-tag-name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz", - "integrity": "sha512-BKlClMmYROy9UiV03SwNmckkjn8QHVaWkqoAqzivabvdGcwNGMMMH/5szAnywmsTBUzDsU57/mFi0sp4BQO6dA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.0.0.tgz", - "integrity": "sha512-yg+zrL14bBTFrQ7n35CmByWUTFsgst5JhA4gJYoty4Dqzj4Z4Fr/DHekSS5aLfH9bdlfnSvKAWsAgJhIbogyBg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.0.0.tgz", - "integrity": "sha512-CB/AGk98u50k42kvgaMM94wzBqozSzDDaonKU7P7jwQIuH2RU0TeBqGYJz2WY1UdihhjweivStrJ2JdkdEmcfw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^1.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.1.0.tgz", - "integrity": "sha512-RoxtuSCX6sUNtxhbmsEFQfWzs8VN7cTctmBPvYivo98xb/kDEoTCtJQX5wyzIYEmk/lvNFTat4hL8oW0KndFpg==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.0.2.tgz", - "integrity": "sha512-d90uqCnXp/cy4G881Ub4psE57Sf8YD0pim9QdjCRNjfas2M1u6Lbt+XZK9gnHL2XFhnozZiEdCa9CNfXSfQ6xA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.0.1.tgz", - "integrity": "sha512-oKDEMK2u5qqAptasDAwWDXq0tG9AssVwAx3E9bBF3t/shRIGsWIRG+cGafs2p/SnDSOecnt6hZPCE2o6lHfFmQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.0.2.tgz", - "integrity": "sha512-DCfg/T8fcrhrRKTPjRrw/5LLvdGV7BHySf/1LOZx7TzWZdYRjogNtyNq885z3nNallwr3QUKARjqvHqX1/7t+w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "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==", - "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==", - "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": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "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.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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/mocha": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.1.0.tgz", - "integrity": "sha512-vUF7IYxEoN7XhQpFLxQAEMtE4W91acW4B6En9l97MwE9stL1A9gusXfoHZCLVHDUJ/7V5+lbCM6yMqzo5vNymg==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "nanoid": "3.3.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/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/mocha/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/mocha/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/mocha/node_modules/chalk/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/mocha/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/mocha/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/mocha/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/mocha/node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/mocha/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/mocha/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/mocha/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/glob/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/mocha/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/mocha/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/mocha/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/mocha/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/minimatch/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/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/mocha/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/mocha/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/mocha/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/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/mocha/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/mocha/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/morgan": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", - "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==", - "dev": true, - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan/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/morgan/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/morgan/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/mpd-parser": { - "version": "0.21.1", - "resolved": "https://registry.npmjs.org/mpd-parser/-/mpd-parser-0.21.1.tgz", - "integrity": "sha512-BxlSXWbKE1n7eyEPBnTEkrzhS3PdmkkKdM1pgKbPnPOH0WFZIc0sPOWi7m0Uo3Wd2a4Or8Qf4ZbS7+ASqQ49fw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.5", - "@xmldom/xmldom": "^0.7.2", - "global": "^4.4.0" - }, - "bin": { - "mpd-to-m3u8-json": "bin/parse.js" - } - }, - "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/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "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==" - }, - "node_modules/multipipe": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", - "integrity": "sha512-7ZxrUybYv9NonoXgwoOqtStIu18D1c3eFZj27hqgf5kBrBF8Q+tE8V0MW8dKM5QLkQPh1JhhbKgHLY9kifov4Q==", - "dev": true, - "dependencies": { - "duplexer2": "0.0.2" - } - }, - "node_modules/mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/mux.js": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-6.0.1.tgz", - "integrity": "sha512-22CHb59rH8pWGcPGW5Og7JngJ9s+z4XuSlYvnxhLuc58cA1WqGDQPzuG8I+sPm1/p0CdgpzVTaKW408k5DNn8w==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.11.2", - "global": "^4.4.0" - }, - "bin": { - "muxjs-transmux": "bin/transmux.js" - }, - "engines": { - "node": ">=8", - "npm": ">=5" - } - }, - "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.3", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", - "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/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/nanomatch/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/nanomatch/node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/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": "0.4.2", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz", - "integrity": "sha512-PfGU8jYWdRl4FqJfCy0IzbkGyFHntfWygZg46nFk/dJD/XRrk2cj0SsKSX9n5u5gE0E0YfEpKWrEkfjnlZSTXA==", - "dev": true, - "bin": { - "ncp": "bin/ncp" - } - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/nise": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", - "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", - "dev": true, - "dependencies": { - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "lolex": "^5.0.1", - "path-to-regexp": "^1.7.0" - } - }, - "node_modules/nise/node_modules/@sinonjs/formatio": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", - "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" - } - }, - "node_modules/nise/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, - "node_modules/nise/node_modules/lolex": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", - "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" - } - }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "dependencies": { - "isarray": "0.0.1" - } - }, - "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-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==" - }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/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-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dev": true, - "dependencies": { - "once": "^1.3.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "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/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", - "dev": true, - "dependencies": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", - "dev": true, - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha512-naLhxxpUESbNkRqc35oQ2scZSJueHGQNUfMW/0U37IgN6tE2dgDWg3whf+NEliy3F/QysrO48XKUz/nGPe+AQw==", - "dev": true, - "dependencies": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "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/opener": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", - "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", - "dev": true, - "bin": { - "opener": "bin/opener-bin.js" - } - }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ora/node_modules/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/ora/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", - "dev": true, - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-iteration": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz", - "integrity": "sha512-IMFBSDIYcPNnW7uWYGrBqmvTiq7W0uB0fJn6shQZs7dlF3OvrHOre+JT9ikSZ7gZS3vWqclVgoQSvToJrns7uQ==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "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/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/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/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-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", - "dev": true, - "dependencies": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "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/parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-path": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", - "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", - "dev": true, - "dependencies": { - "protocols": "^2.0.0" - } - }, - "node_modules/parse-url": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", - "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", - "dev": true, - "dependencies": { - "parse-path": "^7.0.0" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "dev": true - }, - "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==" - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", - "dev": true, - "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", - "dev": true, - "dependencies": { - "through": "~2.3" - } - }, - "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==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-6.1.0.tgz", - "integrity": "sha512-KocF8ve28eFjjuBKKGvzOBGzG8ew2OqOOSxTTZhirkzH7h3BI1vyzqlR0qbfcDBve1Yzo3FVlWUAtCRrbVN8Fw==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkcs7": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pkcs7/-/pkcs7-1.0.4.tgz", - "integrity": "sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.5.5" - }, - "bin": { - "pkcs7": "bin/cli.js" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/plugin-error": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/plugin-error/-/plugin-error-0.1.2.tgz", - "integrity": "sha512-WzZHcm4+GO34sjFMxQMqZbsz3xiNEgonCskQ9v+IroMmYgk/tas8dG+Hr2D6IbRPybZ12oWpzE/w3cGJ6FJzOw==", - "dev": true, - "dependencies": { - "ansi-cyan": "^0.1.1", - "ansi-red": "^0.1.1", - "arr-diff": "^1.0.1", - "arr-union": "^2.0.1", - "extend-shallow": "^1.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postcss": { - "version": "8.4.18", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.18.tgz", - "integrity": "sha512-Wi8mWhncLJm11GATDaQKobXSNEYGUHeQLiQqDFG1qQ5UTDPTEvKw0Xt5NsTpktGTwLps3ByrWsBrG0rB8YQ9oA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "optional": true, - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss/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, - "optional": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "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/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/pretty-format/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/pretty-format/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/pretty-format/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/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "dev": true, - "dependencies": { - "parse-ms": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "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/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/property-information": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", - "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/protocols": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", - "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", - "dev": true - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "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/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, - "node_modules/ps-tree": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", - "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", - "dev": true, - "dependencies": { - "event-stream": "=3.3.4" - }, - "bin": { - "ps-tree": "bin/ps-tree.js" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "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/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/puppeteer-core": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-13.7.0.tgz", - "integrity": "sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==", - "dev": true, - "dependencies": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.981744", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" - }, - "engines": { - "node": ">=10.18.1" - } - }, - "node_modules/puppeteer-core/node_modules/devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", - "dev": true - }, - "node_modules/puppeteer-core/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "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/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true, - "engines": { - "node": ">=0.9" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/query-selector-shadow-dom": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.0.tgz", - "integrity": "sha512-bK0/0cCI+R8ZmOF1QjT7HupDUYCxbf/9TJgAmSXQxZpftXmTAeil9DRoCnTDkWbvOyZzhcMBwKpptWcdkGFIMg==", - "dev": true - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "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/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/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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/read-pkg": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", - "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^2.0.0" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", - "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", - "dev": true, - "dependencies": { - "find-up": "^6.3.0", - "read-pkg": "^7.1.0", - "type-fest": "^2.5.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "dev": true, - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.1.1.tgz", - "integrity": "sha512-vJXaRMJgRVD3+cUZs3Mncj2mxpt5mP0EmNOsxRSZRMlbqjvxzDEOIUWXGmavo0ZC9+tNZCBLQ66reA11nbpHZg==", - "dev": true, - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/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/read-pkg-up/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dev": true, - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/read-pkg-up/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/read-pkg-up/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/read-pkg/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/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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/readable-stream/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/readable-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/readdir-glob": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.2.tgz", - "integrity": "sha512-6RLVvwJtVwEDfPdn6X6Ille4/lxGl0ATOY4FN/B9nxQcgOazvvI0nodiD19ScKq0PvA/29VpaOQML36o5IzZWA==", - "dev": true, - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/readdir-glob/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/readdir-glob/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/recursive-readdir": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz", - "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", - "dev": true, - "dependencies": { - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", - "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.10", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz", - "integrity": "sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==" - }, - "node_modules/regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/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/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsgen": "^0.7.1", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsgen": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", - "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==" - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/remark": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/remark/-/remark-14.0.2.tgz", - "integrity": "sha512-A3ARm2V4BgiRXaUo5K0dRvJ1lbogrbXnhkJRmD0yw092/Yl0kOCZt1k9ZeElEwkZsWGsMumz6qL5MfNJH9nOBA==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "remark-parse": "^10.0.0", - "remark-stringify": "^10.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-gfm": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", - "integrity": "sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-gfm": "^2.0.0", - "micromark-extension-gfm": "^2.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/remark-html/-/remark-html-15.0.1.tgz", - "integrity": "sha512-7ta5UPRqj8nP0GhGMYUAghZ/DRno7dgq7alcW90A7+9pgJsXzGJlFgwF8HOP1b1tMgT3WwbeANN+CaTimMfyNQ==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "hast-util-sanitize": "^4.0.0", - "hast-util-to-html": "^8.0.0", - "mdast-util-to-hast": "^12.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz", - "integrity": "sha512-1fUyHr2jLsVOkhbvPRBJ5zTKZZyD6yZzYaWCS6BPBdQ8vEMBCH+9zNCDA6tET/zHCi/jLqjCWtlJZUPk+DbnFw==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-reference-links": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/remark-reference-links/-/remark-reference-links-6.0.1.tgz", - "integrity": "sha512-34wY2C6HXSuKVTRtyJJwefkUD8zBOZOSHFZ4aSTnU2F656gr9WeuQ2dL6IJDK3NPd2F6xKF2t4XXcQY9MygAXg==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "unified": "^10.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-10.0.2.tgz", - "integrity": "sha512-6wV3pvbPvHkbNnWB0wdDvVFHOe1hBRAx1Q/5g/EpH4RppAII6J8Gnwe7VbHuXaoKIF6LAg6ExTel/+kNqSQ7lw==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-toc": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/remark-toc/-/remark-toc-8.0.1.tgz", - "integrity": "sha512-7he2VOm/cy13zilnOTZcyAoyoolV26ULlon6XyCFU+vG54Z/LWJnwphj/xKIDLOt66QmJUgTyUvLVHi2aAElyg==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-toc": "^6.0.0", - "unified": "^10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-buffer/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", - "dev": true, - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-bom-stream/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/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/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", - "dev": true, - "dependencies": { - "is-finite": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha512-AFBWBy9EVRTa/LhEcG8QDP3FvpwZqmvN2QFDuJswFeaVhWnZMp8q3E6Zd90SR04PlIwfGdyVjNyLPyen/ek5CQ==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha512-CHPV/GAglbIB1tnQgaiysb8H2yCy8WQ7lcEwQ/eT+kLj0QHV8LnJW0zpqpE7RSkrMSRoa+EBoag86clf7WAgSg==", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/replacestream": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/replacestream/-/replacestream-4.0.3.tgz", - "integrity": "sha512-AC0FiLS352pBBiZhd4VXB1Ab/lh0lEgpP+GGvZqbQh8a5cmXVoTe5EX/YeTFArnp4SRGTHh1qCHu9lGs1qG8sA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.3", - "object-assign": "^4.0.1", - "readable-stream": "^2.0.2" - } - }, - "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/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/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/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", - "dev": true - }, - "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==", - "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-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", - "dev": true, - "dependencies": { - "value-or-function": "^3.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/resq": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/resq/-/resq-1.10.2.tgz", - "integrity": "sha512-HmgVS3j+FLrEDBTDYysPdPVF9/hioDMJ/otOiQDKqk77YfZeeLOj0qi34yObumcud1gBpk+wpBTEg4kMicD++A==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^2.0.1" - } - }, - "node_modules/resq/node_modules/fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==", - "dev": true - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rgb2hex": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz", - "integrity": "sha512-22MOP1Rh7sAo1BZpDG6R5RFYzR2lYEgwq7HEmyW2qcsOqR2lQKmn+O//xV3YG/0rrhMC6KVX2hU+ZXuaw9a5bw==", - "dev": true - }, - "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/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/rust-result": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rust-result/-/rust-result-1.0.0.tgz", - "integrity": "sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA==", - "dev": true, - "dependencies": { - "individual": "^2.0.0" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-json-parse": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-1.0.1.tgz", - "integrity": "sha512-o0JmTu17WGUaUOHa1l0FPGXKBfijbxK6qoHzlkihsDXxzBHvJcA7zgviKR92Xs841rX9pK16unfphLq0/KqX7A==", - "dev": true - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/samsam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", - "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", - "deprecated": "This package has been deprecated in favour of @sinonjs/samsam", - "dev": true - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/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/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha512-Ny/iyOzSSa8M5ML46IAx3iXc6tfOsYU2R4AXi2UpHk60Zrgyq6eqPj/xiOfS0rRl/iiQ/rdJkVjw/5cdUyCntQ==", - "dev": true, - "dependencies": { - "sver-compat": "^1.5.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serialize-error": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", - "integrity": "sha512-3NnuWfM6vBYoy5gZFvHiYsVbafvI9vZv/+jlIigFn4oP4zjNPK3LhcY0xSCgeb1a5L8jO71Mit9LlNoi2UfDDQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-error/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/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-index/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/serve-index/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/serve-index/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/serve-index/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - }, - "node_modules/serve-index/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/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/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/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "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/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.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/sinon": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.5.0.tgz", - "integrity": "sha512-trdx+mB0VBBgoYucy6a9L7/jfQOmvGeaKZT4OOJ+lPAtI8623xyGr8wLiE4eojzBS8G9yXbhx42GHUOVLr4X2w==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@sinonjs/formatio": "^2.0.0", - "diff": "^3.1.0", - "lodash.get": "^4.4.2", - "lolex": "^2.2.0", - "nise": "^1.2.0", - "supports-color": "^5.1.0", - "type-detect": "^4.0.5" - } - }, - "node_modules/sinon/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/sirv": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.19.tgz", - "integrity": "sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ==", - "dev": true, - "dependencies": { - "@polka/url": "^1.0.0-next.20", - "mrmime": "^1.0.0", - "totalist": "^1.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/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/slice-ansi/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/slice-ansi/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/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/snapdragon/node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/socket.io": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.6.1.tgz", - "integrity": "sha512-KMcaAi4l/8+xEjkRICl6ak8ySoxsYG+gG6/XfRCPJPQ/haCRIJBTL4wIl8YCsmtaBovcAXGLOShyVWQ/FG8GZA==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.4.1", - "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", - "dev": true, - "dependencies": { - "ws": "~8.11.0" - } - }, - "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "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, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "node_modules/source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "dependencies": { - "source-map": "^0.5.6" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true, - "optional": true - }, - "node_modules/space-separated-tokens": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", - "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true - }, - "node_modules/split": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", - "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", - "dev": true, - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/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/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/split2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "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/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-buffers": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", - "integrity": "sha512-DQi1h8VEBA/lURbSwFtEHnSTb9s2/pwLEaFuNhXwy1Dx3Sa0lOuYT2yNUr4/j2fs8oCAMANtrZ5OrPZtyVs3MQ==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/stream-combiner": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", - "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", - "dev": true, - "dependencies": { - "duplexer": "~0.1.1" - } - }, - "node_modules/stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==", - "dev": true - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "node_modules/streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "dependencies": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/streamroller/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/streamroller/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/streamroller/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/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/string-template": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", - "integrity": "sha512-Yptehjogou2xm4UJbxJ4CxgZx12HBfeystp0y3x7s4Dj32ltVVG1Gg8YhKjHZkHicuKpZX/ffilA8505VbUbpw==", - "dev": true - }, - "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/string.prototype.trimend": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", - "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", - "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.19.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "dev": true, - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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/suffix": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/suffix/-/suffix-0.1.1.tgz", - "integrity": "sha512-j5uf6MJtMCfC4vBe5LFktSe4bGyNTBk7I2Kdri0jeLrcv5B9pWfxVa5JQpoxgtR8vaVB7bVxsWgnfQbX5wkhAA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha512-aFTHfmjwizMNlNE6dsGmoAM4lHjL0CyiobWaFiXWSlD7cIxshW422Nb8KbXCmR6z+0ZEPY+daXJrDyh/vuwTyg==", - "dev": true, - "dependencies": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/table": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", - "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/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/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/tar-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/temp-fs": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/temp-fs/-/temp-fs-0.9.9.tgz", - "integrity": "sha512-WfecDCR1xC9b0nsrzSaxPf3ZuWeWLUWblW4vlDQAa1biQaKHiImHnJfeQocQe/hXKMcolRzgkcVX/7kK4zoWbw==", - "dev": true, - "dependencies": { - "rimraf": "~2.5.2" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/temp-fs/node_modules/rimraf": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "integrity": "sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==", - "dev": true, - "dependencies": { - "glob": "^7.0.5" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/ternary-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ternary-stream/-/ternary-stream-3.0.0.tgz", - "integrity": "sha512-oIzdi+UL/JdktkT+7KU5tSIQjj8pbShj3OASuvDEhm0NT5lppsm7aXWAmAq4/QMaBIyfuEcNLbAQA+HpaISobQ==", - "dev": true, - "dependencies": { - "duplexify": "^4.1.1", - "fork-stream": "^0.0.4", - "merge-stream": "^2.0.0", - "through2": "^3.0.1" - } - }, - "node_modules/ternary-stream/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", - "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/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/terser-webpack-plugin/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/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/terser/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/terser/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/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/textextensions": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-3.3.0.tgz", - "integrity": "sha512-mk82dS8eRABNbeVJrEiN5/UMSCliINAuz8mkUwH4SwslkNP//gbEzlWNS5au0z5Dpx40SQxzqZevZkn+WYJ9Dw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "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/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dev": true, - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/through2-filter/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha512-gLCeArryy2yNTRzTGKbZbloctj64jkZ57hj5zdraXue6aFgd6PmvVtEyiUU+hvU0v7q08oVv8r8ev0tRo6bvgw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/timers-ext": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.7.tgz", - "integrity": "sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ==", - "dev": true, - "dependencies": { - "es5-ext": "~0.10.46", - "next-tick": "1" - } - }, - "node_modules/tiny-hashes": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tiny-hashes/-/tiny-hashes-1.0.1.tgz", - "integrity": "sha512-knIN5zj4fl7kW4EBU5sLP20DWUvi/rVouvJezV0UAym2DkQaqm365Nyc8F3QEiOvunNDMxR8UhcXd1d5g+Wg1g==" - }, - "node_modules/tiny-lr": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-1.1.1.tgz", - "integrity": "sha512-44yhA3tsaRoMOjQQ+5v5mVdqef+kH6Qze9jTpqtVufgYjYt08zyZAwNwwVBj3i1rJMnR52IxOW0LK0vBzgAkuA==", - "dev": true, - "dependencies": { - "body": "^5.1.0", - "debug": "^3.1.0", - "faye-websocket": "~0.10.0", - "livereload-js": "^2.3.0", - "object-assign": "^4.1.0", - "qs": "^6.4.0" - } - }, - "node_modules/tiny-lr/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", - "dev": true, - "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/to-regex/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/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", - "dev": true, - "dependencies": { - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/to-through/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/totalist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", - "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "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": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "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/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.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", - "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/typescript-compare": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz", - "integrity": "sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA==", - "dependencies": { - "typescript-logic": "^0.0.0" - } - }, - "node_modules/typescript-logic": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/typescript-logic/-/typescript-logic-0.0.0.tgz", - "integrity": "sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q==" - }, - "node_modules/typescript-tuple": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.2.1.tgz", - "integrity": "sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q==", - "dependencies": { - "typescript-compare": "^0.0.2" - } - }, - "node_modules/ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "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, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/undertaker": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.3.0.tgz", - "integrity": "sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "fast-levenshtein": "^1.0.0", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha512-UR1khWeAjugW3548EfQmL9Z7pGMlBgXteQpr1IZeZBtnkCJQJIJ1Scj0mb9wQaPvUZ9Q17XqW6TIaPchJkyfqw==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/undertaker/node_modules/fast-levenshtein": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz", - "integrity": "sha512-Ia0sQNrMPXXkqVFt6w6M1n1oKo3NfKs+mvaV811Jwir7vAk9a6PVV9VPYf6X3BU97QiLEmuW3uXH9u87zDFfdw==", - "dev": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/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/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dev": true, - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "node_modules/unist-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", - "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.3.tgz", - "integrity": "sha512-p/5EMGIa1qwbXjA+QgcBXaPWjSnZfQ2Sc3yBEEfgPwsEmJd8Qh+DSk3LGnmOM4S1bY2C0AjmMnB8RuEYxpPwXQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.2.tgz", - "integrity": "sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.1.tgz", - "integrity": "sha512-n9KN3WV9k4h1DxYR1LoajgN93wpEi/7ZplVe02IoB4gH5ctI1AaF2670BLHQYbwj+pY83gFtyeySFiyMHJklrg==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.1.tgz", - "integrity": "sha512-gks4baapT/kNRaWxuGkl5BIhoanZo7sC/cUT/JToSRNL1dYoXRFl75d++NkjYk4TAu2uv2Px+l8guMajogeuiw==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "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/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/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/unzipper": { - "version": "0.9.15", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.9.15.tgz", - "integrity": "sha512-2aaUvO4RAeHDvOCuEtth7jrHFaCKTSXPqUkXwADaLBzGbgZGzUDccoEdJ5lW+3RmfpOZYNx0Rw6F6PUzM6caIA==", - "dev": true, - "dependencies": { - "big-integer": "^1.6.17", - "binary": "~0.3.0", - "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", - "duplexer2": "~0.1.4", - "fstream": "^1.0.12", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" - } - }, - "node_modules/unzipper/node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist-lint": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "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/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.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/url-toolkit": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.2.5.tgz", - "integrity": "sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==", - "dev": true - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "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/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "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/uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "dev": true, - "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, - "bin": { - "uvu": "bin.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8flags": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz", - "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "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/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, - "node_modules/vfile": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.5.tgz", - "integrity": "sha512-U1ho2ga33eZ8y8pkbQLH54uKqGhFJ6GYIHnnG5AhRpAh3OWjkrRHKa/KogbmQn8We+c0KVV3rTOgR9V/WowbXQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.2.tgz", - "integrity": "sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-reporter": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.4.tgz", - "integrity": "sha512-4cWalUnLrEnbeUQ+hARG5YZtaHieVK3Jp4iG5HslttkVl+MHunSGNAIrODOTLbtjWsNZJRMCkL66AhvZAYuJ9A==", - "dev": true, - "dependencies": { - "@types/supports-color": "^8.0.0", - "string-width": "^5.0.0", - "supports-color": "^9.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-sort": "^3.0.0", - "vfile-statistics": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-reporter/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/vfile-reporter/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/vfile-reporter/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/vfile-reporter/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/vfile-reporter/node_modules/supports-color": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.3.tgz", - "integrity": "sha512-aszYUX/DVK/ed5rFLb/dDinVJrQjG/vmU433wtqVSD800rYsJNWxh2R3USV90aLSU+UsyQkbNeffVLzc6B6foA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/vfile-sort": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-3.0.0.tgz", - "integrity": "sha512-fJNctnuMi3l4ikTVcKpxTbzHeCgvDhnI44amA3NVDvA6rTC6oKCFpCVyT5n2fFMr3ebfr+WVQZedOCd73rzSxg==", - "dev": true, - "dependencies": { - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-statistics": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-2.0.0.tgz", - "integrity": "sha512-foOWtcnJhKN9M2+20AOTlWi2dxNfAoeNIoxD5GXcO182UJyId4QrXa41fWrgcfV3FWTjdEDy3I4cpLVcQscIMA==", - "dev": true, - "dependencies": { - "vfile-message": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/video.js": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/video.js/-/video.js-7.20.3.tgz", - "integrity": "sha512-JMspxaK74LdfWcv69XWhX4rILywz/eInOVPdKefpQiZJSMD5O8xXYueqACP2Q5yqKstycgmmEKlJzZ+kVmDciw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "@videojs/http-streaming": "2.14.3", - "@videojs/vhs-utils": "^3.0.4", - "@videojs/xhr": "2.6.0", - "aes-decrypter": "3.1.3", - "global": "^4.4.0", - "keycode": "^2.2.0", - "m3u8-parser": "4.7.1", - "mpd-parser": "0.21.1", - "mux.js": "6.0.1", - "safe-json-parse": "4.0.0", - "videojs-font": "3.2.0", - "videojs-vtt.js": "^0.15.4" - } - }, - "node_modules/video.js/node_modules/safe-json-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-4.0.0.tgz", - "integrity": "sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ==", - "dev": true, - "dependencies": { - "rust-result": "^1.0.0" - } - }, - "node_modules/videojs-contrib-ads": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/videojs-contrib-ads/-/videojs-contrib-ads-6.9.0.tgz", - "integrity": "sha512-nzKz+jhCGMTYffSNVYrmp9p70s05v6jUMOY3Z7DpVk3iFrWK4Zi/BIkokDWrMoHpKjdmCdKzfJVBT+CrUj6Spw==", - "dev": true, - "dependencies": { - "global": "^4.3.2", - "video.js": "^6 || ^7" - }, - "engines": { - "node": ">=8", - "npm": ">=5" - } - }, - "node_modules/videojs-font": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-3.2.0.tgz", - "integrity": "sha512-g8vHMKK2/JGorSfqAZQUmYYNnXmfec4MLhwtEFS+mMs2IDY398GLysy6BH6K+aS1KMNu/xWZ8Sue/X/mdQPliA==", - "dev": true - }, - "node_modules/videojs-ima": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/videojs-ima/-/videojs-ima-1.11.0.tgz", - "integrity": "sha512-ZRoWuGyJ75zamwZgpr0i/gZ6q7Evda/Q6R46gpW88WN7u0ORU7apw/lM1MSG4c3YDXW8LDENgzMAvMZUdifWhg==", - "dev": true, - "dependencies": { - "@hapi/cryptiles": "^5.1.0", - "can-autoplay": "^3.0.0", - "extend": ">=3.0.2", - "lodash": ">=4.17.19", - "lodash.template": ">=4.5.0", - "videojs-contrib-ads": "^6.6.5" - }, - "engines": { - "node": ">=0.8.0" - }, - "peerDependencies": { - "video.js": "^5.19.2 || ^6 || ^7" - } - }, - "node_modules/videojs-playlist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/videojs-playlist/-/videojs-playlist-5.0.0.tgz", - "integrity": "sha512-TM9bytwKqkE05wdWPEKDpkwMGhS/VgMCIsEuNxmX1J1JO9zaTIl4Wm3egf5j1dhIw19oWrqGUV/nK0YNIelCpA==", - "dev": true, - "dependencies": { - "global": "^4.3.2", - "video.js": "^6 || ^7" - }, - "engines": { - "node": ">=4.4.0" - } - }, - "node_modules/videojs-vtt.js": { - "version": "0.15.4", - "resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.4.tgz", - "integrity": "sha512-r6IhM325fcLb1D6pgsMkTQT1PpFdUdYZa1iqk7wJEu+QlibBwATPfPc9Bg8Jiym0GE5yP1AG2rMLu+QMVWkYtA==", - "dev": true, - "dependencies": { - "global": "^4.3.1" - } - }, - "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-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dev": true, - "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", - "dev": true, - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-sourcemap/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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/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/void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vue-template-compiler": { - "version": "2.7.13", - "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.13.tgz", - "integrity": "sha512-jYM6TClwDS9YqP48gYrtAtaOhRKkbYmbzE+Q51gX5YDr777n7tNI/IZk4QV4l/PjQPNh/FVa/E92sh/RqKMrog==", - "dev": true, - "optional": true, - "dependencies": { - "de-indent": "^1.0.2", - "he": "^1.2.0" - } - }, - "node_modules/walk": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz", - "integrity": "sha512-4eRTBZljBfIISK1Vnt69Gvr2w/wc3U6Vtrw7qiN5iqYJPH7LElcYh/iU4XWhdCy2dZqv1ToMyYlybDylfG/5Vg==", - "dev": true, - "dependencies": { - "foreachasync": "^3.0.0" - } - }, - "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/webdriver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.5.3.tgz", - "integrity": "sha512-cDTn/hYj5x8BYwXxVb/WUwqGxrhCMP2rC8ttIWCfzmiVtmOnJGulC7CyxU3+p9Q5R/gIKTzdJOss16dhb+5CoA==", - "dev": true, - "dependencies": { - "@wdio/config": "7.5.3", - "@wdio/logger": "7.5.3", - "@wdio/protocols": "7.5.3", - "@wdio/types": "7.5.3", - "@wdio/utils": "7.5.3", - "got": "^11.0.2", - "lodash.merge": "^4.6.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriver/node_modules/@wdio/logger": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.5.3.tgz", - "integrity": "sha512-r9EADpm0ncS1bDQSWi/nhF9C59/WNLbdAAFlo782E9ItFCpDhNit3aQP9vETv1vFxJRjUIM8Fw/HW8zwPadkbw==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriver/node_modules/@wdio/types": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.5.3.tgz", - "integrity": "sha512-jmumhKBhNDABnpmrshYLEcdE9WoP5tmynsDNbDABlb/W8FFiLySQOejukhYIL9CLys4zXerV3/edks0SCzHOiQ==", - "dev": true, - "dependencies": { - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriver/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/webdriver/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/webdriver/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/webdriver/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/webdriver/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/webdriver/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/webdriverio": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-7.25.4.tgz", - "integrity": "sha512-agkgwn2SIk5cAJ03uue1GnGZcUZUDN3W4fUMY9/VfO8bVJrPEgWg31bPguEWPu+YhEB/aBJD8ECxJ3OEKdy4qQ==", - "dev": true, - "dependencies": { - "@types/aria-query": "^5.0.0", - "@types/node": "^18.0.0", - "@wdio/config": "7.25.4", - "@wdio/logger": "7.19.0", - "@wdio/protocols": "7.22.0", - "@wdio/repl": "7.25.4", - "@wdio/types": "7.25.4", - "@wdio/utils": "7.25.4", - "archiver": "^5.0.0", - "aria-query": "^5.0.0", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools": "7.25.4", - "devtools-protocol": "^0.0.1061995", - "fs-extra": "^10.0.0", - "grapheme-splitter": "^1.0.2", - "lodash.clonedeep": "^4.5.0", - "lodash.isobject": "^3.0.2", - "lodash.isplainobject": "^4.0.6", - "lodash.zip": "^4.2.0", - "minimatch": "^5.0.0", - "puppeteer-core": "^13.1.3", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^8.0.0", - "webdriver": "7.25.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/node_modules/@types/node": { - "version": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "dev": true - }, - "node_modules/webdriverio/node_modules/@wdio/config": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-7.25.4.tgz", - "integrity": "sha512-vb0emDtD9FbFh/yqW6oNdo2iuhQp8XKj6GX9fyy9v4wZgg3B0HPMVJxhIfcoHz7LMBWlHSo9YdvhFI5EQHRLBA==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.19.0", - "@wdio/types": "7.25.4", - "@wdio/utils": "7.25.4", - "deepmerge": "^4.0.0", - "glob": "^8.0.3" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/node_modules/@wdio/logger": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-7.19.0.tgz", - "integrity": "sha512-xR7SN/kGei1QJD1aagzxs3KMuzNxdT/7LYYx+lt6BII49+fqL/SO+5X0FDCZD0Ds93AuQvvz9eGyzrBI2FFXmQ==", - "dev": true, - "dependencies": { - "chalk": "^4.0.0", - "loglevel": "^1.6.0", - "loglevel-plugin-prefix": "^0.8.4", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/node_modules/@wdio/protocols": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-7.22.0.tgz", - "integrity": "sha512-8EXRR+Ymdwousm/VGtW3H1hwxZ/1g1H99A1lF0U4GuJ5cFWHCd0IVE5H31Z52i8ZruouW8jueMkGZPSo2IIUSQ==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/node_modules/@wdio/repl": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-7.25.4.tgz", - "integrity": "sha512-kYhj9gLsUk4HmlXLqkVre+gwbfvw9CcnrHjqIjrmMS4mR9D8zvBb5CItb3ZExfPf9jpFzIFREbCAYoE9x/kMwg==", - "dev": true, - "dependencies": { - "@wdio/utils": "7.25.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/node_modules/@wdio/types": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-7.25.4.tgz", - "integrity": "sha512-muvNmq48QZCvocctnbe0URq2FjJjUPIG4iLoeMmyF0AQgdbjaUkMkw3BHYNHVTbSOU9WMsr2z8alhj/I2H6NRQ==", - "dev": true, - "dependencies": { - "@types/node": "^18.0.0", - "got": "^11.8.1" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "^4.6.2" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/webdriverio/node_modules/@wdio/utils": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-7.25.4.tgz", - "integrity": "sha512-8iwQDk+foUqSzKZKfhLxjlCKOkfRJPNHaezQoevNgnrTq/t0ek+ldZCATezb9B8jprAuP4mgS9xi22akc6RkzA==", - "dev": true, - "dependencies": { - "@wdio/logger": "7.19.0", - "@wdio/types": "7.25.4", - "p-iteration": "^1.1.8" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/webdriverio/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/webdriverio/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/webdriverio/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/webdriverio/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/webdriverio/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/webdriverio/node_modules/glob": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", - "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", - "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/webdriverio/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/webdriverio/node_modules/ky": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.30.0.tgz", - "integrity": "sha512-X/u76z4JtDVq10u1JA5UQfatPxgPaVDMYTrgHyiTpGN2z4TMEJkIHsoSBBSg9SWZEIXTKsi9kHgiQ9o3Y/4yog==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" - } - }, - "node_modules/webdriverio/node_modules/minimatch": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", - "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/webdriverio/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/webdriverio/node_modules/webdriver": { - "version": "7.25.4", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-7.25.4.tgz", - "integrity": "sha512-6nVDwenh0bxbtUkHASz9B8T9mB531Fn1PcQjUGj2t5dolLPn6zuK1D7XYVX40hpn6r3SlYzcZnEBs4X0az5Txg==", - "dev": true, - "dependencies": { - "@types/node": "^18.0.0", - "@wdio/config": "7.25.4", - "@wdio/logger": "7.19.0", - "@wdio/protocols": "7.22.0", - "@wdio/types": "7.25.4", - "@wdio/utils": "7.25.4", - "got": "^11.0.2", - "ky": "0.30.0", - "lodash.merge": "^4.6.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "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/webpack": { - "version": "5.76.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.76.0.tgz", - "integrity": "sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-bundle-analyzer": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.7.0.tgz", - "integrity": "sha512-j9b8ynpJS4K+zfO5GGwsAcQX4ZHpWV+yRiHDiL+bE0XHJ8NiPYLTNVQdlFYWxtpg9lfAQNlwJg16J9AJtFSXRg==", - "dev": true, - "dependencies": { - "acorn": "^8.0.4", - "acorn-walk": "^8.0.0", - "chalk": "^4.1.0", - "commander": "^7.2.0", - "gzip-size": "^6.0.0", - "lodash": "^4.17.20", - "opener": "^1.5.2", - "sirv": "^1.0.7", - "ws": "^7.3.1" - }, - "bin": { - "webpack-bundle-analyzer": "lib/bin/analyzer.js" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/webpack-bundle-analyzer/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-bundle-analyzer/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/webpack-bundle-analyzer/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/webpack-bundle-analyzer/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/webpack-bundle-analyzer/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-manifest-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-5.0.0.tgz", - "integrity": "sha512-8RQfMAdc5Uw3QbCQ/CBV/AXqOR8mt03B6GJmRbhWopE8GzRfEpn+k0ZuWywxW+5QZsffhmFDY1J6ohqJo+eMuw==", - "dev": true, - "dependencies": { - "tapable": "^2.0.0", - "webpack-sources": "^2.2.0" - }, - "engines": { - "node": ">=12.22.0" - }, - "peerDependencies": { - "webpack": "^5.47.0" - } - }, - "node_modules/webpack-manifest-plugin/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-manifest-plugin/node_modules/webpack-sources": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz", - "integrity": "sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-stream": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webpack-stream/-/webpack-stream-7.0.0.tgz", - "integrity": "sha512-XoAQTHyCaYMo6TS7Atv1HYhtmBgKiVLONJbzLBl2V3eibXQ2IT/MCRM841RW/r3vToKD5ivrTJFWgd/ghoxoRg==", - "dev": true, - "dependencies": { - "fancy-log": "^1.3.3", - "lodash.clone": "^4.3.2", - "lodash.some": "^4.2.2", - "memory-fs": "^0.5.0", - "plugin-error": "^1.0.1", - "supports-color": "^8.1.1", - "through": "^2.3.8", - "vinyl": "^2.2.1" - }, - "engines": { - "node": ">= 10.0.0" - }, - "peerDependencies": { - "webpack": "^5.21.2" - } - }, - "node_modules/webpack-stream/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/webpack-stream/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/webpack-stream/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/webpack-stream/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/webpack-stream/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/webpack-stream/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/webpack-stream/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/webpack/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/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "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/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/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dev": true, - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", - "dev": true - }, - "node_modules/which-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.8.tgz", - "integrity": "sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.20.0", - "for-each": "^0.3.3", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/wide-align/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/wide-align/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/wide-align/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/wide-align/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true - }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/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/wrap-ansi/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/wrap-ansi/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/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": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "dependencies": { - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/write/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, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "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/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "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": "1.3.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz", - "integrity": "sha512-7OGt4xXoWJQh5ulgZ78rKaqY7dNWbjfK+UKxGcIlaM2j7C4fqGchyv8CPvEWdRPrHp6Ula/YU8yGRpYGOHrI+g==", - "dev": true - }, - "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/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yarn-install": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yarn-install/-/yarn-install-1.0.0.tgz", - "integrity": "sha512-VO1u181msinhPcGvQTVMnHVOae8zjX/NSksR17e6eXHRveDvHCF5mGjh9hkN8mzyfnCqcBe42LdTs7bScuTaeg==", - "dev": true, - "dependencies": { - "cac": "^3.0.3", - "chalk": "^1.1.3", - "cross-spawn": "^4.0.2" - }, - "bin": { - "yarn-install": "bin/yarn-install.js", - "yarn-remove": "bin/yarn-remove.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yarn-install/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "node_modules/yarn-install/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/yarn-install/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yarn-install/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/yarn-install/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/yarn-install/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, - "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-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", - "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", - "dev": true, - "dependencies": { - "archiver-utils": "^2.1.0", - "compress-commons": "^4.1.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/zip-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/zwitch": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.2.tgz", - "integrity": "sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "plugins/eslint": { - "name": "eslint-plugin-prebid", - "version": "1.0.0", - "dev": true, - "license": "Apache-2.0" - } - }, "dependencies": { "@ampproject/remapping": { "version": "2.2.0", @@ -27633,8 +2358,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} + "dev": true }, "yargs": { "version": "17.6.0", @@ -28551,8 +3275,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} + "dev": true } } }, @@ -28882,8 +3605,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} + "dev": true } } }, @@ -29168,8 +3890,7 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} + "dev": true }, "acorn-walk": { "version": "8.2.0", @@ -29214,8 +3935,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} + "dev": true }, "amdefine": { "version": "1.0.1", @@ -32565,8 +7285,7 @@ "version": "10.2.1", "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", "integrity": "sha512-UkFojTV1o0GOe1edOEiuI5ccYLJSuNngtqSeClNzhsmG8KPJ+7mRxgtp2oYhqZAK/brlXMoCd+VgXViE0AfyKw==", - "dev": true, - "requires": {} + "dev": true }, "eslint-import-resolver-node": { "version": "0.3.6", @@ -32689,21 +7408,20 @@ } }, "eslint-plugin-prebid": { - "version": "file:plugins/eslint" + "version": "file:plugins/eslint", + "dev": true }, "eslint-plugin-promise": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz", "integrity": "sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==", - "dev": true, - "requires": {} + "dev": true }, "eslint-plugin-standard": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.1.0.tgz", "integrity": "sha512-fVcdyuKRr0EZ4fjWl3c+gp1BANFJD1+RaWa2UPYfMZ6jCtp5RG00kSaXnK/dE5sYzt4kaWJ9qdxqUfc0d9kX0w==", - "dev": true, - "requires": {} + "dev": true }, "eslint-scope": { "version": "5.1.1", @@ -37470,8 +12188,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/karma-babel-preprocessor/-/karma-babel-preprocessor-8.0.2.tgz", "integrity": "sha512-6ZUnHwaK2EyhgxbgeSJW6n6WZUYSEdekHIV/qDUnPgMkVzQBHEvd07d2mTL5AQjV8uTUgH6XslhaPrp+fHWH2A==", - "dev": true, - "requires": {} + "dev": true }, "karma-browserstack-launcher": { "version": "1.4.0", @@ -37488,8 +12205,7 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/karma-chai/-/karma-chai-0.1.0.tgz", "integrity": "sha512-mqKCkHwzPMhgTYca10S90aCEX9+HjVjjrBFAsw36Zj7BlQNbokXXCAe6Ji04VUMsxcY5RLP7YphpfO06XOubdg==", - "dev": true, - "requires": {} + "dev": true }, "karma-chrome-launcher": { "version": "3.1.1", @@ -37667,29 +12383,25 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/karma-opera-launcher/-/karma-opera-launcher-1.0.0.tgz", "integrity": "sha512-rdty4FlVIowmUhPuG08TeXKHvaRxeDSzPxGIkWguCF3A32kE0uvXZ6dXW08PuaNjai8Ip3f5Pn9Pm2HlChaxCw==", - "dev": true, - "requires": {} + "dev": true }, "karma-safari-launcher": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/karma-safari-launcher/-/karma-safari-launcher-1.0.0.tgz", "integrity": "sha512-qmypLWd6F2qrDJfAETvXDfxHvKDk+nyIjpH9xIeI3/hENr0U3nuqkxaftq73PfXZ4aOuOChA6SnLW4m4AxfRjQ==", - "dev": true, - "requires": {} + "dev": true }, "karma-script-launcher": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/karma-script-launcher/-/karma-script-launcher-1.0.0.tgz", "integrity": "sha512-5NRc8KmTBjNPE3dNfpJP90BArnBohYV4//MsLFfUA1e6N+G1/A5WuWctaFBtMQ6MWRybs/oguSej0JwDr8gInA==", - "dev": true, - "requires": {} + "dev": true }, "karma-sinon": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/karma-sinon/-/karma-sinon-1.0.5.tgz", "integrity": "sha512-wrkyAxJmJbn75Dqy17L/8aILJWFm7znd1CE8gkyxTBFnjMSOe2XTJ3P30T8SkxWZHmoHX0SCaUJTDBEoXs25Og==", - "dev": true, - "requires": {} + "dev": true }, "karma-sourcemap-loader": { "version": "0.3.8", @@ -40696,8 +15408,7 @@ "version": "8.5.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", - "dev": true, - "requires": {} + "dev": true } } }, @@ -42373,23 +17084,6 @@ } } }, - "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" - }, - "dependencies": { - "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-template": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/string-template/-/string-template-0.2.1.tgz", @@ -42429,6 +17123,23 @@ "es-abstract": "^1.19.5" } }, + "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" + }, + "dependencies": { + "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 + } + } + }, "stringify-entities": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", @@ -43056,13 +17767,6 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, - "typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", - "dev": true, - "peer": true - }, "typescript-compare": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz", @@ -44200,8 +18904,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} + "dev": true }, "ajv": { "version": "6.12.6", @@ -44310,8 +19013,7 @@ "version": "7.5.9", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "requires": {} + "dev": true } } }, @@ -44639,11 +19341,18 @@ } }, "ws": { +<<<<<<< HEAD "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": {} +======= + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true +>>>>>>> 5e82ff013 (remote siteId, make endpoint specification optional (provide default), refactoring, fix tests) }, "xtend": { "version": "4.0.2", diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 0f983de038b..6caa76dcb55 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -1,90 +1,110 @@ -import { expect } from 'chai'; - import analyticsAdapter from 'modules/33acrossAnalyticsAdapter.js'; - +import { log } from 'modules/33acrossAnalyticsAdapter.js'; import * as mockGpt from 'test/spec/integration/faker/googletag.js'; - -import * as utils from 'src/utils.js'; import * as events from 'src/events.js'; +import * as faker from 'faker'; import CONSTANTS from 'src/constants.json'; const { EVENTS } = CONSTANTS; +const { assert } = sinon; -describe.only('33acrossAnalyticsAdapter:', function() { - let sandbox, clock; +describe('33acrossAnalyticsAdapter:', function() { + let sandbox; beforeEach(function() { mockGpt.enable(); - sandbox = sinon.sandbox.create(); - clock = sandbox.useFakeTimers(1680287706002); + + sandbox = sinon.createSandbox({ + useFakeTimers: { + now: new Date(2023, 3, 3, 0, 1, 33, 425), + }, + }); + + sandbox.spy(log, 'info'); + sandbox.spy(log, 'warn'); + sandbox.spy(log, 'error'); }); afterEach(function() { - sandbox.restore(); analyticsAdapter.disableAnalytics(); + mockGpt.enable(); events.clearEvents(); + sandbox.restore(); }); - describe('enableAnalytics', function() { - context('when endpoint hasn\'t been given', function() { - it('logs an error', function() { - sandbox.spy(utils, 'logError'); + describe('enableAnalytics:', function() { + context('When pid is given', function() { + context('but endpoint is not', function() { + it('it logs an info message', function() { + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + pid: 'test-pid', + }, + }); - analyticsAdapter.enableAnalytics({ - provider: '33across', - options: { - pid: 'test-pid', - }, + assert.calledOnce(log.info); + assert.calledWithExactly(log.info, 'Invalid endpoint provided for "options.endpoint". Using default endpoint.'); }); + }); + + context('but the endpoint is invalid', function() { + it('it logs an info message', function() { + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + pid: 'test-pid', + endpoint: 'foo' + }, + }); - sinon.assert.calledOnce(utils.logError); - sinon.assert.calledWithExactly(utils.logError, '33across Analytics: No endpoint provided for "options.endpoint". No analytics will be sent.'); + assert.calledOnce(log.info); + assert.calledWithExactly(log.info, 'Invalid endpoint provided for "options.endpoint". Using default endpoint.'); + }); }); }); - context('when pid hasn\'t been given', function() { - it('logs an error', function() { - sandbox.spy(utils, 'logError'); - analyticsAdapter.enableAnalytics({ - provider: '33across', - options: { - endpoint: 'test-endpoint', - }, - }); + context('When endpoint is given', function() { + context('but pid is not', function() { + it('it logs an error message', function() { + analyticsAdapter.enableAnalytics({ + provider: '33across', + options: { + endpoint: faker.internet.url() + }, + }); - sinon.assert.calledOnce(utils.logError); - sinon.assert.calledWithExactly(utils.logError, '33across Analytics: No partnerId provided for "options.pid". No analytics will be sent.'); + assert.calledOnce(log.error); + assert.calledWithExactly(log.error, 'No partnerId provided for "options.pid". No analytics will be sent.'); + }); }); }); - context('when pid and endpoint have been given', function() { - context('and an invalid timeout config value has been given', function() { - it('logs an info message', function() { - sandbox.spy(utils, 'logInfo'); - + context('When pid and endpoint are given', function() { + context('and an invalid timeout config value is given', function() { + it('it logs an info message', function() { [ null, 'foo', -1 ].forEach((value, index) => { analyticsAdapter.enableAnalytics({ provider: '33across', options: { pid: 'test-pid', - endpoint: 'test-endpoint', + endpoint: 'http://test-endpoint', timeout: value }, }); analyticsAdapter.disableAnalytics(); - sinon.assert.calledWithExactly(utils.logInfo.getCall(index), '33across Analytics: Invalid timeout provided for "options.timeout". Using default timeout of 3000ms.'); + assert.called(log.info); + assert.calledWithExactly(log.info.getCall(index), 'Invalid timeout provided for "options.timeout". Using default timeout of 3000ms.'); }); }); }); it('logs any received GAM slotRenderEnded event', function() { - sandbox.spy(utils, 'logInfo'); - analyticsAdapter.enableAnalytics({ provider: '33across', options: { pid: 'test-pid', - endpoint: 'test-endpoint' + endpoint: faker.internet.url(), }, }); @@ -97,7 +117,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { mockGpt.emitEvent('slotRenderEnded', gEvent); - sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: slotRenderEnded', Object.assign({ eventName: 'slotRenderEnded' }, gEvent)); + assert.calledWithExactly(log.info, 'slotRenderEnded', { ...gEvent, eventName: 'slotRenderEnded' }); }); }); }); @@ -109,7 +129,7 @@ describe.only('33acrossAnalyticsAdapter:', function() { analyticsAdapter.enableAnalytics({ provider: '33across', options: { - endpoint: 'test-endpoint', + endpoint: 'http://test-endpoint', pid: 'test-pid', timeout: this.defaultTimeout, ...options @@ -120,42 +140,44 @@ describe.only('33acrossAnalyticsAdapter:', function() { context('when an auction is complete', function() { context('and the AnalyticsReport is sent successfully to the given endpoint', function() { - it('logs an info message', function() { - sandbox.spy(utils, 'logInfo'); + it('it logs an info message', function() { + const endpoint = faker.internet.url(); + this.enableAnalytics({ endpoint }); - this.enableAnalytics({ endpoint: 'foo-endpoint' }); + sandbox.stub(navigator, 'sendBeacon').returns(true); - sandbox.stub(navigator, 'sendBeacon') - .withArgs('foo-endpoint', JSON.stringify(getStandardAnalyticsReport())) - .returns(true); performStandardAuction(); - clock.tick(this.defaultTimeout + 1); + sandbox.clock.tick(this.defaultTimeout + 1); - sinon.assert.calledOnce(navigator.sendBeacon); - sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: Analytics report sent to foo-endpoint', getStandardAnalyticsReport()); + assert.calledOnce(navigator.sendBeacon); + assert.calledWith(navigator.sendBeacon, endpoint, sinon.match.string); + assert.calledWith(log.info, `Analytics report sent to ${endpoint}`, sinon.match.object); + + navigator.sendBeacon.restore(); }); }); }); context('when an error occurs while sending the AnalyticsReport', function() { it('logs an error', function() { - sandbox.spy(utils, 'logError'); this.enableAnalytics(); sandbox.stub(navigator, 'sendBeacon').returns(false); + performStandardAuction(); - clock.tick(this.defaultTimeout + 1); + sandbox.clock.tick(this.defaultTimeout + 1); + + assert.calledOnce(navigator.sendBeacon); + assert.calledOnce(log.error); + assert.calledWith(log.error, 'Analytics report exceeded User-Agent data limits and was not sent.', sinon.match.object); - sinon.assert.calledOnce(utils.logError); - sinon.assert.calledWith(utils.logError, '33across Analytics: Analytics report exceeded User-Agent data limits and was not sent.', sinon.match.object); + navigator.sendBeacon.restore(); }); }); context('when a BID_WON event is received', function() { - context('and there\'s no record of that bid being requested', function() { + context('and there is no record of that bid being requested', function() { it('logs a warning message', function() { - sandbox.spy(utils, 'logWarn'); - this.enableAnalytics(); const mockEvents = getMockEvents(); @@ -170,15 +192,13 @@ describe.only('33acrossAnalyticsAdapter:', function() { events.emit(EVENTS.BID_WON, fakeBidWonEvent); - sinon.assert.calledWithExactly(utils.logWarn, '33across Analytics: transactionId "foo" was not found. Nothing to enqueue.'); + assert.calledWithExactly(log.warn, 'transactionId "foo" was not found. Nothing to enqueue.'); }); }); }); context('when the same BID_REQUESTED event is received more than once', function() { it('logs a warning message', function() { - sandbox.spy(utils, 'logWarn'); - this.enableAnalytics(); const mockEvents = getMockEvents(); @@ -190,23 +210,22 @@ describe.only('33acrossAnalyticsAdapter:', function() { events.emit(EVENTS.BID_REQUESTED, auction.BID_REQUESTED[0]); events.emit(EVENTS.BID_REQUESTED, auction.BID_REQUESTED[0]); - sinon.assert.calledWithExactly(utils.logWarn, '33across Analytics: transactionId "ef947609-7b55-4420-8407-599760d0e373" already exists') + assert.calledWithExactly(log.warn, 'transactionId "ef947609-7b55-4420-8407-599760d0e373" already exists') }); }); - context('when a transaction doesn\'t reach its complete state', function() { + context('when a transaction does not reach its complete state', function() { context('and a timeout config value has been given', function() { context('and the timeout value has elapsed', function() { - it('logs an error', function() { + it('logs a warning', function() { this.enableAnalytics({ timeout: 2000 }); - sandbox.spy(utils, 'logWarn'); - performAuctionWithMissingBidWon(); - clock.tick(2001); + sandbox.clock.tick(5001); - sinon.assert.calledWithExactly(utils.logWarn, '33across Analytics: Timed out waiting for ad transactions to complete. Sending report.'); + assert.called(log.warn); + assert.calledWithExactly(log.warn, 'Timed out waiting for ad transactions to complete. Sending report.'); }); }) }); @@ -216,37 +235,34 @@ describe.only('33acrossAnalyticsAdapter:', function() { it('logs an error', function() { this.enableAnalytics(); - sandbox.spy(utils, 'logWarn'); - performAuctionWithMissingBidWon(); - clock.tick(this.defaultTimeout + 1); + sandbox.clock.tick(this.defaultTimeout + 1); - sinon.assert.calledWithExactly(utils.logWarn, '33across Analytics: Timed out waiting for ad transactions to complete. Sending report.'); + assert.calledWithExactly(log.warn, 'Timed out waiting for ad transactions to complete. Sending report.'); }); }) }); context('and the incomplete report has been sent successfully', function() { it('logs an info message', function() { - sandbox.spy(utils, 'logInfo'); const incompleteAnalyticsReport = Object.assign( getStandardAnalyticsReport(), { bidsWon: [] } ); - sandbox.stub(navigator, 'sendBeacon') - .withArgs('foo-endpoint', JSON.stringify(incompleteAnalyticsReport)) - .returns(true); + sandbox.stub(navigator, 'sendBeacon').returns(true); - this.enableAnalytics({ endpoint: 'foo-endpoint' }); + const endpoint = faker.internet.url(); + this.enableAnalytics({ endpoint }); performAuctionWithMissingBidWon(); + sandbox.clock.tick(this.defaultTimeout + 1); - clock.tick(this.defaultTimeout + 1); + assert.calledOnce(navigator.sendBeacon); + assert.calledWith(log.info, `Analytics report sent to ${endpoint}`, incompleteAnalyticsReport); - sinon.assert.calledOnce(navigator.sendBeacon); - sinon.assert.calledWithExactly(utils.logInfo, '33across Analytics: Analytics report sent to foo-endpoint', sinon.match.object); + navigator.sendBeacon.restore(); }); }); }); @@ -325,7 +341,6 @@ function performAuctionWithMissingBidWon() { function getStandardAnalyticsReport() { return { - siteId: '', pid: 'test-pid', src: 'pbjs', analyticsVersion: '1.0.0', @@ -334,7 +349,7 @@ function getStandardAnalyticsReport() { adUnits: [{ transactionId: 'ef947609-7b55-4420-8407-599760d0e373', adUnitCode: '/19968336/header-bid-tag-0', - slotId: '', + slotId: '/19968336/header-bid-tag-0', mediaTypes: ['banner'], sizes: ['300x250', '300x600'], bids: [{ @@ -353,7 +368,7 @@ function getStandardAnalyticsReport() { }, { transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', adUnitCode: '/19968336/header-bid-tag-1', - slotId: '', + slotId: '/19968336/header-bid-tag-1', mediaTypes: ['banner'], sizes: ['728x90', '970x250'], bids: [{ @@ -372,7 +387,7 @@ function getStandardAnalyticsReport() { }, { transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', adUnitCode: '/17118521/header-bid-tag-2', - slotId: '', + slotId: '/17118521/header-bid-tag-2', mediaTypes: ['banner'], sizes: ['300x250'], bids: [] From 3a0145e06d97b6bf18a87f39d1218477041fe7a0 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Fri, 21 Apr 2023 11:36:19 -0400 Subject: [PATCH 20/41] remove extraneous logs --- modules/33acrossAnalyticsAdapter.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 90610eef448..f02455959b9 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -134,17 +134,14 @@ class TransactionManager { // gulp-eslint is using eslint 6, a version that doesn't support private method syntax // eslint-disable-next-line no-dupe-class-members #clearTimeout() { - log.info(`clear timeout. #timeoutId: ${this.#timeoutId}`); return window.clearTimeout(this.#timeoutId); } // eslint-disable-next-line no-dupe-class-members #restartSendTimeout() { - log.info(`Restarting send timeout. ${this.#unsent} unsent.`); this.#clearTimeout(); this.#timeoutId = setTimeout(() => { - log.info(`timeout triggered. #timeout: ${this.#timeout}. #unsent: ${this.#unsent}`); if (this.#timeout !== 0) { log.warn(`Timed out waiting for ad transactions to complete. Sending report.`); } From 05a77e2518a3436950a9f34511d1c66b4f333eca Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Fri, 21 Apr 2023 11:39:23 -0400 Subject: [PATCH 21/41] simplify GAM logging --- modules/33acrossAnalyticsAdapter.js | 5 +---- test/spec/modules/33acrossAnalyticsAdapter_spec.js | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index f02455959b9..f512d9b0d8d 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -240,10 +240,7 @@ function subscribeToGamSlotRenderEvent(transactionManager) { window.googletag.cmd = window.googletag.cmd || []; window.googletag.cmd.push(() => { window.googletag.pubads().addEventListener('slotRenderEnded', event => { - log.info('slotRenderEnded', event); - - const slot = `${event.slot.getAdUnitPath()}:${event.slot.getSlotElementId()}`; - log.info(slot); + log.info('slotRenderEnded', `adUnitPath: ${event.slot.getAdUnitPath()}`, `slotElementId: ${event.slot.getSlotElementId()}`); }); }); } diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 6caa76dcb55..3c30561e39e 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -117,7 +117,7 @@ describe('33acrossAnalyticsAdapter:', function() { mockGpt.emitEvent('slotRenderEnded', gEvent); - assert.calledWithExactly(log.info, 'slotRenderEnded', { ...gEvent, eventName: 'slotRenderEnded' }); + assert.calledWithExactly(log.info, 'slotRenderEnded', `adUnitPath: ${gEvent.slot.getAdUnitPath()}`, `slotElementId: ${gEvent.slot.getSlotElementId()}`); }); }); }); From afc218dc1e255d3676fe8a5c64d76c3ffd4b98b9 Mon Sep 17 00:00:00 2001 From: Carlos Felix Date: Fri, 21 Apr 2023 16:12:48 -0500 Subject: [PATCH 22/41] remove hardcoded version --- test/spec/modules/33acrossAnalyticsAdapter_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 3c30561e39e..9a96ccb4ca5 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -344,7 +344,7 @@ function getStandardAnalyticsReport() { pid: 'test-pid', src: 'pbjs', analyticsVersion: '1.0.0', - pbjsVersion: '7.44.0-pre', + pbjsVersion: '$prebid.version$', auctions: [{ adUnits: [{ transactionId: 'ef947609-7b55-4420-8407-599760d0e373', From 526273207e28e2aeb4924087722bc0dc3a5868b8 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Mon, 24 Apr 2023 12:56:12 -0400 Subject: [PATCH 23/41] general improvements to documentation with fixes to jsdoc types --- modules/33acrossAnalyticsAdapter.js | 57 ++++++++++++++++++++++------- modules/33acrossAnalyticsAdapter.md | 33 ++++++++++++++--- 2 files changed, 70 insertions(+), 20 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index f512d9b0d8d..39965367ef9 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -78,7 +78,7 @@ export const log = getLogger(); * all bids are complete. */ class TransactionManager { - #timeoutId = null; + #timeoutId; #pending = 0; #timeout; #transactions = {}; @@ -157,18 +157,28 @@ class TransactionManager { const locals = { /** @type {Object} */ transactionManagers: {}, - /** @type {string} */ - endpoint: DEFAULT_ENDPOINT, - /** @type {AnalyticsReport} */ + /** @type {AnalyticsCache=} */ analyticsCache: undefined, /** sets all locals to undefined */ reset() { this.transactionManagers = {}; - this.endpoint = DEFAULT_ENDPOINT; this.analyticsCache = undefined; } } +/** + * @typedef {Object} AnalyticsAdapter + * @property {function} track + * @property {function} enableAnalytics + * @property {function} disableAnalytics + * @property {function} [originEnableAnalytics] + * @property {function} [originDisableAnalytics] + * @property {function} [_oldEnable] + */ + +/** + * @type {AnalyticsAdapter} + */ const analyticsAdapter = Object.assign( buildAdapter({ analyticsType: 'endpoint' }), { track: analyticEventHandler } @@ -178,10 +188,19 @@ analyticsAdapter.originEnableAnalytics = analyticsAdapter.enableAnalytics; analyticsAdapter.enableAnalytics = enableAnalyticsWrapper; /** - * @param {Object} [config] Analytics module configuration + * @typedef {Object} AnalyticsConfig + * @property {string} provider + * @property {Object} options + * @property {string} options.pid - Publisher/Partner ID + * @property {string} [options.endpoint=DEFAULT_ENDPOINT] - Endpoint to send analytics data + * @property {number} [options.timeout=DEFAULT_TRANSACTION_TIMEOUT] - Timeout for sending analytics data */ -function enableAnalyticsWrapper(config = {}) { - const { options = {} } = config; + +/** + * @param {AnalyticsConfig} config Analytics module configuration + */ +function enableAnalyticsWrapper(config) { + const { options } = config; const pid = options.pid; if (!pid) { @@ -202,7 +221,7 @@ function enableAnalyticsWrapper(config = {}) { } /** - * @param {string} endpoint + * @param {string} [endpoint] * @returns {string} */ function calculateEndpoint(endpoint) { @@ -215,7 +234,7 @@ function calculateEndpoint(endpoint) { return DEFAULT_ENDPOINT; } /** - * @param {number|undefined} configTimeout + * @param {number} [configTimeout] * @returns {number} Transaction Timeout */ function calculateTransactionTimeout(configTimeout) { @@ -233,7 +252,7 @@ function calculateTransactionTimeout(configTimeout) { } /** - * @param {TransacionManager} transactionManager + * @param {TransactionManager} transactionManager */ function subscribeToGamSlotRenderEvent(transactionManager) { window.googletag = window.googletag || {}; @@ -314,9 +333,9 @@ function parseAuction({ adUnits, auctionId, bidderRequests }) { * @param {Object} args * @param {string} args.transactionId * @param {string} args.code - * @param {string} args.ortb2Imp - * @param {Array} args.mediaTypes - * @param {Array} args.sizes + * @param {Object} args.ortb2Imp + * @param {Array} args.mediaTypes + * @param {Array<[number,number]>} args.sizes * @returns {AdUnit} */ function parseAdUnit({ transactionId, code, ortb2Imp, mediaTypes, sizes }) { @@ -378,6 +397,11 @@ function parseBidResponse({ cpm, currency, originalCpm, floorData, mediaType, si * @param {EVENTS[keyof EVENTS]} args.eventType */ function analyticEventHandler({ eventType, args }) { + if (!locals.analyticsCache) { + log.error('Something went wrong. Analytics cache is not initialized.'); + return; + } + switch (eventType) { case EVENTS.AUCTION_INIT: const auction = parseAuction(args); @@ -410,6 +434,11 @@ function analyticEventHandler({ eventType, args }) { const cachedAuction = locals.analyticsCache.auctions[args.auctionId]; const cachedAdUnit = cachedAuction.adUnits.find(adUnit => adUnit.transactionId === args.transactionId); + if (!cachedAdUnit) { + log.error('Failed to find adUnit in analytics cache.'); + return; + } + cachedAdUnit.bids.push(bidResponse); break; diff --git a/modules/33acrossAnalyticsAdapter.md b/modules/33acrossAnalyticsAdapter.md index 88ab6d55f0e..a93ff3b0ba4 100644 --- a/modules/33acrossAnalyticsAdapter.md +++ b/modules/33acrossAnalyticsAdapter.md @@ -1,22 +1,39 @@ -# 33Across Analytics Adapter +# Overview ```txt -Module Name: 33Across Analytics Adapter -Module Type: Analytics Adapter +Module Name: 33Across Analytics Adapter +Module Type: Analytics Adapter +Maintainer: headerbidding@33across.com ``` -## How to configure? +# Description + +## Configuration + +In order to guarantee consistent reports of your ad slot behavior, we recommend +including the GPT Pre-Auction Module, `gptPreAuction`. If you are compiling from +source, this might look something like: + +```sh +gulp bundle --modules=gptPreAuction,consentManagement,consentManagementGpp,consentManagementUsp,enrichmentFpdModule,gdprEnforcement,33acrossBidAdapter,33acrossAnalyticsAdapter +``` + +Enable the 33Across Analytics Adapter in Prebid.js using the analytics provider `33across` +and options as seen in the example below. The analytics adapter is free to use! +However, the publisher must work with our account management team to obtain +a Publisher/Partner ID (PID). If you are already using the 33Across PID, +you may use your existing PID with the analytics adapter. ```js pbjs.enableAnalytics({ provider: '33across', options: { /** - * The partner id assigned by the 33Across Team + * The 33Across PID (PID). */ pid: 12345, /** - * Defaults to 33Across endpoint if not provided + * Defaults to the 33Across Analytics endpoint if not provided. * [optional] */ endpoint: 'https://localhost:9999/event', @@ -29,3 +46,7 @@ pbjs.enableAnalytics({ } }); ``` + +## Privacy Policy + +The 33Across privacy policy is at From 4eeb8cfe76c18642020f10803dcd89a2cc6d2ee1 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Mon, 24 Apr 2023 14:20:36 -0400 Subject: [PATCH 24/41] update tests for style conformance --- modules/33acrossAnalyticsAdapter.js | 14 +-- .../modules/33acrossAnalyticsAdapter_spec.js | 99 +++++++++++-------- 2 files changed, 66 insertions(+), 47 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 39965367ef9..b10805b25fa 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -1,4 +1,4 @@ -import * as utils from '../src/utils.js'; +import { deepAccess, logInfo, logWarn, logError } from '../src/utils.js'; import buildAdapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'; import adapterManager from '../src/adapterManager.js'; import CONSTANTS from '../src/constants.json'; @@ -189,7 +189,7 @@ analyticsAdapter.enableAnalytics = enableAnalyticsWrapper; /** * @typedef {Object} AnalyticsConfig - * @property {string} provider + * @property {string} provider - set by pbjs at module registration time * @property {Object} options * @property {string} options.pid - Publisher/Partner ID * @property {string} [options.endpoint=DEFAULT_ENDPOINT] - Endpoint to send analytics data @@ -325,7 +325,7 @@ function parseAuction({ adUnits, auctionId, bidderRequests }) { return { adUnits: adUnits.map(unit => parseAdUnit(unit)), auctionId, - userIds: Object.keys(utils.deepAccess(bidderRequests, '0.bids.0.userId', {})) + userIds: Object.keys(deepAccess(bidderRequests, '0.bids.0.userId', {})) } } @@ -345,7 +345,7 @@ function parseAdUnit({ transactionId, code, ortb2Imp, mediaTypes, sizes }) { // Note: GPID supports adUnits that have matching `code` values by appending a `#UNIQUIFIER`. // The value of the UNIQUIFIER is likely to be the div-id, // but, if div-id is randomized / unavailable, may be something else like the media size) - slotId: utils.deepAccess(ortb2Imp, 'ext.gpid', code), + slotId: deepAccess(ortb2Imp, 'ext.gpid', code), mediaTypes: Object.keys(mediaTypes), sizes: sizes.map(size => size.join('x')), bids: [] @@ -485,8 +485,8 @@ function getLogger() { const LPREFIX = `${PROVIDER_NAME} Analytics: `; return { - info: (msg, ...args) => utils.logInfo(`${LPREFIX}${msg}`, ...args), - warn: (msg, ...args) => utils.logWarn(`${LPREFIX}${msg}`, ...args), - error: (msg, ...args) => utils.logError(`${LPREFIX}${msg}`, ...args), + info: (msg, ...args) => logInfo(`${LPREFIX}${msg}`, ...args), + warn: (msg, ...args) => logWarn(`${LPREFIX}${msg}`, ...args), + error: (msg, ...args) => logError(`${LPREFIX}${msg}`, ...args), } } diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 9a96ccb4ca5..60286609b14 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -22,6 +22,8 @@ describe('33acrossAnalyticsAdapter:', function() { sandbox.spy(log, 'info'); sandbox.spy(log, 'warn'); sandbox.spy(log, 'error'); + + sandbox.stub(navigator, 'sendBeacon'); }); afterEach(function() { @@ -36,29 +38,25 @@ describe('33acrossAnalyticsAdapter:', function() { context('but endpoint is not', function() { it('it logs an info message', function() { analyticsAdapter.enableAnalytics({ - provider: '33across', options: { pid: 'test-pid', }, }); - assert.calledOnce(log.info); - assert.calledWithExactly(log.info, 'Invalid endpoint provided for "options.endpoint". Using default endpoint.'); + log.info.calledOnceWithExactly('Invalid endpoint provided for "options.endpoint". Using default endpoint.'); }); }); context('but the endpoint is invalid', function() { it('it logs an info message', function() { analyticsAdapter.enableAnalytics({ - provider: '33across', options: { pid: 'test-pid', endpoint: 'foo' }, }); - assert.calledOnce(log.info); - assert.calledWithExactly(log.info, 'Invalid endpoint provided for "options.endpoint". Using default endpoint.'); + log.info.calledOnceWithExactly('Invalid endpoint provided for "options.endpoint". Using default endpoint.'); }); }); }); @@ -67,14 +65,12 @@ describe('33acrossAnalyticsAdapter:', function() { context('but pid is not', function() { it('it logs an error message', function() { analyticsAdapter.enableAnalytics({ - provider: '33across', options: { endpoint: faker.internet.url() }, }); - assert.calledOnce(log.error); - assert.calledWithExactly(log.error, 'No partnerId provided for "options.pid". No analytics will be sent.'); + log.error.calledOnceWithExactly('No partnerId provided for "options.pid". No analytics will be sent.'); }); }); }); @@ -82,26 +78,24 @@ describe('33acrossAnalyticsAdapter:', function() { context('When pid and endpoint are given', function() { context('and an invalid timeout config value is given', function() { it('it logs an info message', function() { - [ null, 'foo', -1 ].forEach((value, index) => { + [ null, 'foo', -1 ].forEach(timeout => { analyticsAdapter.enableAnalytics({ - provider: '33across', options: { pid: 'test-pid', endpoint: 'http://test-endpoint', - timeout: value + timeout }, }); analyticsAdapter.disableAnalytics(); - assert.called(log.info); - assert.calledWithExactly(log.info.getCall(index), 'Invalid timeout provided for "options.timeout". Using default timeout of 3000ms.'); + log.info.calledOnceWithExactly('Invalid timeout provided for "options.timeout". Using default timeout of 3000ms.'); + log.info.resetHistory(); }); }); }); it('logs any received GAM slotRenderEnded event', function() { analyticsAdapter.enableAnalytics({ - provider: '33across', options: { pid: 'test-pid', endpoint: faker.internet.url(), @@ -127,7 +121,6 @@ describe('33acrossAnalyticsAdapter:', function() { this.defaultTimeout = 3000; this.enableAnalytics = (options) => { analyticsAdapter.enableAnalytics({ - provider: '33across', options: { endpoint: 'http://test-endpoint', pid: 'test-pid', @@ -140,20 +133,34 @@ describe('33acrossAnalyticsAdapter:', function() { context('when an auction is complete', function() { context('and the AnalyticsReport is sent successfully to the given endpoint', function() { - it('it logs an info message', function() { + it('it calls "sendBeacon" with the appropriate string', function() { const endpoint = faker.internet.url(); this.enableAnalytics({ endpoint }); - sandbox.stub(navigator, 'sendBeacon').returns(true); + navigator.sendBeacon + .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())) + .returns(true); performStandardAuction(); sandbox.clock.tick(this.defaultTimeout + 1); - assert.calledOnce(navigator.sendBeacon); - assert.calledWith(navigator.sendBeacon, endpoint, sinon.match.string); - assert.calledWith(log.info, `Analytics report sent to ${endpoint}`, sinon.match.object); + navigator.sendBeacon + .calledOnceWithExactly(endpoint, JSON.stringify(getStandardAnalyticsReport())); + }); + + it('it logs an info message containing the report', function() { + const endpoint = faker.internet.url(); + this.enableAnalytics({ endpoint }); + + navigator.sendBeacon + .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())) + .returns(true); + + performStandardAuction(); + sandbox.clock.tick(this.defaultTimeout + 1); - navigator.sendBeacon.restore(); + log.info + .calledWithExactly(`Analytics report sent to ${endpoint}`, getStandardAnalyticsReport()); }); }); }); @@ -161,17 +168,13 @@ describe('33acrossAnalyticsAdapter:', function() { context('when an error occurs while sending the AnalyticsReport', function() { it('logs an error', function() { this.enableAnalytics(); - - sandbox.stub(navigator, 'sendBeacon').returns(false); + navigator.sendBeacon.returns(false); performStandardAuction(); sandbox.clock.tick(this.defaultTimeout + 1); - assert.calledOnce(navigator.sendBeacon); - assert.calledOnce(log.error); - assert.calledWith(log.error, 'Analytics report exceeded User-Agent data limits and was not sent.', sinon.match.object); - - navigator.sendBeacon.restore(); + log.error + .calledWithExactly('Analytics report exceeded User-Agent data limits and was not sent.', getStandardAnalyticsReport()); }); }); @@ -192,7 +195,8 @@ describe('33acrossAnalyticsAdapter:', function() { events.emit(EVENTS.BID_WON, fakeBidWonEvent); - assert.calledWithExactly(log.warn, 'transactionId "foo" was not found. Nothing to enqueue.'); + log.warn + .calledWithExactly('transactionId "foo" was not found. Nothing to enqueue.'); }); }); }); @@ -210,7 +214,8 @@ describe('33acrossAnalyticsAdapter:', function() { events.emit(EVENTS.BID_REQUESTED, auction.BID_REQUESTED[0]); events.emit(EVENTS.BID_REQUESTED, auction.BID_REQUESTED[0]); - assert.calledWithExactly(log.warn, 'transactionId "ef947609-7b55-4420-8407-599760d0e373" already exists') + log.warn + .calledWithExactly('transactionId "ef947609-7b55-4420-8407-599760d0e373" already exists'); }); }); @@ -222,10 +227,10 @@ describe('33acrossAnalyticsAdapter:', function() { performAuctionWithMissingBidWon(); - sandbox.clock.tick(5001); + sandbox.clock.tick(this.defaultTimeout + 1); - assert.called(log.warn); - assert.calledWithExactly(log.warn, 'Timed out waiting for ad transactions to complete. Sending report.'); + log.warn + .calledWithExactly('Timed out waiting for ad transactions to complete. Sending report.'); }); }) }); @@ -239,19 +244,20 @@ describe('33acrossAnalyticsAdapter:', function() { sandbox.clock.tick(this.defaultTimeout + 1); - assert.calledWithExactly(log.warn, 'Timed out waiting for ad transactions to complete. Sending report.'); + log.warn + .calledWithExactly('Timed out waiting for ad transactions to complete. Sending report.'); }); }) }); context('and the incomplete report has been sent successfully', function() { - it('logs an info message', function() { + it('sends a report string', function() { const incompleteAnalyticsReport = Object.assign( getStandardAnalyticsReport(), { bidsWon: [] } ); - sandbox.stub(navigator, 'sendBeacon').returns(true); + navigator.sendBeacon.returns(true); const endpoint = faker.internet.url(); this.enableAnalytics({ endpoint }); @@ -259,10 +265,23 @@ describe('33acrossAnalyticsAdapter:', function() { performAuctionWithMissingBidWon(); sandbox.clock.tick(this.defaultTimeout + 1); - assert.calledOnce(navigator.sendBeacon); - assert.calledWith(log.info, `Analytics report sent to ${endpoint}`, incompleteAnalyticsReport); + navigator.sendBeacon + .calledOnceWithExactly(endpoint, JSON.stringify(incompleteAnalyticsReport)); + }); + + it('logs an info message', function() { + const incompleteAnalyticsReport = { ...getStandardAnalyticsReport(), bidsWon: [] }; + + navigator.sendBeacon.returns(true); + + const endpoint = faker.internet.url(); + this.enableAnalytics({ endpoint }); + + performAuctionWithMissingBidWon(); + sandbox.clock.tick(this.defaultTimeout + 1); - navigator.sendBeacon.restore(); + log.info + .calledOnceWithExactly(`Analytics report sent to ${endpoint}`, incompleteAnalyticsReport); }); }); }); From cdcebf82ed6ec91ba9320397300e4d8890d5226b Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Mon, 24 Apr 2023 15:35:33 -0400 Subject: [PATCH 25/41] IDG-677/remove code related to GAM slotRenderEnded --- modules/33acrossAnalyticsAdapter.js | 26 +++---------------- .../modules/33acrossAnalyticsAdapter_spec.js | 20 -------------- 2 files changed, 4 insertions(+), 42 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index b10805b25fa..425f217ed15 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -3,9 +3,7 @@ import buildAdapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'; import adapterManager from '../src/adapterManager.js'; import CONSTANTS from '../src/constants.json'; -/** - * @typedef {typeof import('../src/constants.json').EVENTS} EVENTS - */ +// printf "declare const CONSTANTS: %s; export default CONSTANTS;" "$(cat src/constants.json)" > src/constants.json.d.ts const { EVENTS } = CONSTANTS; const ANALYTICS_VERSION = '1.0.0'; @@ -16,7 +14,7 @@ const DEFAULT_ENDPOINT = `${window.origin}/api`; // TODO: Update to production e export const log = getLogger(); /** - * @typedef {Object} AnalyticsReport - Sent when all bids are complete (as determined by `bidWon` and `slotRenderEnded` events) + * @typedef {Object} AnalyticsReport - Sent when all bids are complete (as determined by `bidWon` event) * @property {string} pid - Partner ID * @property {'pbjs'} src - Source of the report * @property {string} analyticsVersion - Version of the Prebid.js 33Across Analytics Adapter @@ -74,8 +72,7 @@ export const log = getLogger(); /** * After the first bid is initiated, we wait until every bid is completed before sending the report. * - * We will listen for the `bidWon` event and for `slotRenderEnded` event from GAM to determine when - * all bids are complete. + * We will listen for the `bidWon` event to determine when all bids are complete. */ class TransactionManager { #timeoutId; @@ -251,19 +248,6 @@ function calculateTransactionTimeout(configTimeout) { return DEFAULT_TRANSACTION_TIMEOUT; } -/** - * @param {TransactionManager} transactionManager - */ -function subscribeToGamSlotRenderEvent(transactionManager) { - window.googletag = window.googletag || {}; - window.googletag.cmd = window.googletag.cmd || []; - window.googletag.cmd.push(() => { - window.googletag.pubads().addEventListener('slotRenderEnded', event => { - log.info('slotRenderEnded', `adUnitPath: ${event.slot.getAdUnitPath()}`, `slotElementId: ${event.slot.getSlotElementId()}`); - }); - }); -} - /** necessary for testing */ analyticsAdapter.originDisableAnalytics = analyticsAdapter.disableAnalytics; analyticsAdapter.disableAnalytics = function () { @@ -409,7 +393,7 @@ function analyticEventHandler({ eventType, args }) { locals.analyticsCache.auctions[auction.auctionId] = auction; locals.analyticsCache.bidsWon[args.auctionId] = []; - const transactionManager = locals.transactionManagers[args.auctionId] ||= + locals.transactionManagers[args.auctionId] ||= new TransactionManager({ timeout: analyticsAdapter.getTimeout(), onComplete() { @@ -420,8 +404,6 @@ function analyticEventHandler({ eventType, args }) { } }); - subscribeToGamSlotRenderEvent(transactionManager); - break; case EVENTS.BID_REQUESTED: args.bids.forEach((bid) => { diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 60286609b14..143e4e6c2b1 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -93,26 +93,6 @@ describe('33acrossAnalyticsAdapter:', function() { }); }); }); - - it('logs any received GAM slotRenderEnded event', function() { - analyticsAdapter.enableAnalytics({ - options: { - pid: 'test-pid', - endpoint: faker.internet.url(), - }, - }); - - performAuctionWithMissingBidWon(); - - window.googletag.cmd.forEach(fn => fn()); - - const { gam } = getMockEvents(); - const [ gEvent ] = gam.slotRenderEnded; - - mockGpt.emitEvent('slotRenderEnded', gEvent); - - assert.calledWithExactly(log.info, 'slotRenderEnded', `adUnitPath: ${gEvent.slot.getAdUnitPath()}`, `slotElementId: ${gEvent.slot.getSlotElementId()}`); - }); }); }); From 99a671242abb5ef2479a8cf5b4880a63389e76df Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Mon, 24 Apr 2023 15:39:17 -0400 Subject: [PATCH 26/41] IDG-677/remove typegen hint, and replace with jsdoc ref --- modules/33acrossAnalyticsAdapter.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 425f217ed15..5d25f3ab20f 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -3,7 +3,9 @@ import buildAdapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'; import adapterManager from '../src/adapterManager.js'; import CONSTANTS from '../src/constants.json'; -// printf "declare const CONSTANTS: %s; export default CONSTANTS;" "$(cat src/constants.json)" > src/constants.json.d.ts +/** + * @typedef {typeof import('../src/constants.json').EVENTS} EVENTS + */ const { EVENTS } = CONSTANTS; const ANALYTICS_VERSION = '1.0.0'; From 222115e204dd3747b04fbf0022e407c7295582fe Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Thu, 27 Apr 2023 11:21:47 -0400 Subject: [PATCH 27/41] IDG-677/replace bidsWon with hasWon field, add sendReport trigger on auctionEnd (in the case that auction ends AND not all bids have resolved), and general refactoring --- modules/33acrossAnalyticsAdapter.js | 297 +++++++++++++--------------- 1 file changed, 141 insertions(+), 156 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 5d25f3ab20f..70d5998916c 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -17,12 +17,11 @@ export const log = getLogger(); /** * @typedef {Object} AnalyticsReport - Sent when all bids are complete (as determined by `bidWon` event) + * @property {string} analyticsVersion - Version of the Prebid.js 33Across Analytics Adapter * @property {string} pid - Partner ID * @property {'pbjs'} src - Source of the report - * @property {string} analyticsVersion - Version of the Prebid.js 33Across Analytics Adapter * @property {string} pbjsVersion - Version of Prebid.js * @property {Auction[]} auctions - * @property {Bid[]} bidsWon */ /** @@ -36,38 +35,47 @@ export const log = getLogger(); * @typedef {Object} Auction - Parsed auction data * @property {AdUnit[]} adUnits * @property {string} auctionId - * @property {Object} userIds + * @property {string[]} userIds + */ + +/** + * @typedef {`${number}x${number}`} AdUnitSize + */ + +/** + * @typedef {('banner'|'native'|'video')} AdUnitMediaType */ /** * @typedef {Object} BidResponse * @property {number} cpm * @property {string} cur - * @property {number} cpmOrig + * @property {number} [cpmOrig] * @property {number} cpmFloor - * @property {string} mediaType - * @property {string} size + * @property {AdUnitMediaType} mediaType + * @property {AdUnitSize} size */ /** * @typedef {Object} Bid - Parsed bid data * @property {string} bidder + * @property {string} bidId * @property {string} source * @property {string} status - * @property {BidResponse} bidResponse - * @property {string} [transactionId] - Only included for winning bids + * @property {BidResponse} [bidResponse] + * @property {1|0} [hasWon] */ /** * @typedef {Object} AdUnit - Parsed adUnit data - * @property {string} transactionId - Primary key for *this* auction/adUnit/bid combination + * @property {string} transactionId - Primary key for *this* auction/adUnit combination * @property {string} adUnitCode * @property {string} slotId - Equivalent to GPID. (Note that * GPID supports adUnits where multiple units have the same `code` values * by appending a `#UNIQUIFIER`. The value of the UNIQUIFIER is likely to be the div-id, * but, if div-id is randomized / unavailable, may be something else like the media size) - * @property {Array<('banner'|'native'|'video')>} mediaTypes - * @property {Array<`${number}x${number}`>} sizes + * @property {Array} mediaTypes + * @property {Array} sizes * @property {Array} bids */ @@ -92,9 +100,7 @@ class TransactionManager { if (this.#pending <= 0) { this.#clearTimeout(); - this.#onComplete(); - this.#transactions = {}; } } @@ -104,12 +110,8 @@ class TransactionManager { this.#onComplete = onComplete; } - add(transactionId) { - if (this.#transactions[transactionId]) { - log.warn(`transactionId "${transactionId}" already exists`); - - return; - } + initiate(transactionId) { + if (this.#transactions[transactionId]) return; this.#transactions[transactionId] = { status: 'waiting' @@ -119,7 +121,7 @@ class TransactionManager { this.#restartSendTimeout(); } - que(transactionId) { + complete(transactionId) { if (!this.#transactions[transactionId]) { log.warn(`transactionId "${transactionId}" was not found. Nothing to enqueue.`); return; @@ -127,7 +129,15 @@ class TransactionManager { this.#transactions[transactionId].status = 'queued'; --this.#unsent; - log.info(`Queued transaction "${transactionId}". ${this.#unsent} unsent.`, this.#transactions); + log.info(`Queued transaction "${transactionId}". ${this.#unsent} transactions pending.`, this.#transactions); + } + + completeAll(reason) { + Object.keys(this.#transactions).forEach(transactionId => { + this.complete(transactionId); + }); + + log.info('All remaining transactions flushed.' + (reason ? ` Reason: ${reason}` : '')); } // gulp-eslint is using eslint 6, a version that doesn't support private method syntax @@ -154,14 +164,14 @@ class TransactionManager { * initialized during `enableAnalytics` */ const locals = { - /** @type {Object} */ + /** @type {Object} - one manager per auction */ transactionManagers: {}, /** @type {AnalyticsCache=} */ - analyticsCache: undefined, + cache: undefined, /** sets all locals to undefined */ reset() { this.transactionManagers = {}; - this.analyticsCache = undefined; + this.cache = undefined; } } @@ -214,7 +224,10 @@ function enableAnalyticsWrapper(config) { const timeout = calculateTransactionTimeout(options.timeout); this.getTimeout = () => timeout; - locals.analyticsCache = newAnalyticsCache(pid); + locals.cache = { + pid, + auctions: {}, + }; analyticsAdapter.originEnableAnalytics(config); } @@ -266,25 +279,13 @@ adapterManager.registerAnalyticsAdapter({ export default analyticsAdapter; -/** - * @param {string} pid Partner ID - * @returns {AnalyticsCache} - */ -function newAnalyticsCache(pid) { - return { - pid, - auctions: {}, - bidsWon: {}, - }; -} - /** * @param {AnalyticsCache} analyticsCache * @param {string} completedAuctionId value of auctionId * @return {AnalyticsReport} Analytics report */ function createReportFromCache(analyticsCache, completedAuctionId) { - const { pid, bidsWon, auctions } = analyticsCache; + const { pid, auctions } = analyticsCache; return { pid, @@ -292,88 +293,22 @@ function createReportFromCache(analyticsCache, completedAuctionId) { analyticsVersion: ANALYTICS_VERSION, pbjsVersion: '$prebid.version$', // Replaced by build script auctions: [ auctions[completedAuctionId] ], - bidsWon: bidsWon[completedAuctionId] - } -} - -/** - * @param {Object} args - * @param {Array} args.adUnits - * @param {string} args.auctionId - * @param {Array} args.bidderRequests - * @returns {Auction} - */ -function parseAuction({ adUnits, auctionId, bidderRequests }) { - if (typeof auctionId !== 'string' || !Array.isArray(bidderRequests)) { - log.error('Analytics adapter failed to parse auction.'); - } - - return { - adUnits: adUnits.map(unit => parseAdUnit(unit)), - auctionId, - userIds: Object.keys(deepAccess(bidderRequests, '0.bids.0.userId', {})) - } -} - -/** - * @param {Object} args - * @param {string} args.transactionId - * @param {string} args.code - * @param {Object} args.ortb2Imp - * @param {Array} args.mediaTypes - * @param {Array<[number,number]>} args.sizes - * @returns {AdUnit} - */ -function parseAdUnit({ transactionId, code, ortb2Imp, mediaTypes, sizes }) { - return { - transactionId, - adUnitCode: code, - // Note: GPID supports adUnits that have matching `code` values by appending a `#UNIQUIFIER`. - // The value of the UNIQUIFIER is likely to be the div-id, - // but, if div-id is randomized / unavailable, may be something else like the media size) - slotId: deepAccess(ortb2Imp, 'ext.gpid', code), - mediaTypes: Object.keys(mediaTypes), - sizes: sizes.map(size => size.join('x')), - bids: [] } } -/** - * @param {Object} args - * @param {string} args.auctionId - * @param {string} args.bidder - * @param {string} args.source - * @param {string} args.status - * @param {Object} args.args - * @returns {Bid} - */ -function parseBid({ auctionId, bidder, source, status, ...args }) { - return { - bidder, - source, - status, - bidResponse: parseBidResponse(args) - } +function getBidsForTransaction(auctionId, transactionId) { + const auction = locals.cache.auctions[auctionId]; + return auction.adUnits.find(adUnit => adUnit.transactionId === transactionId).bids; } -/** - * @param {Object} args - * @param {number} args.cpm - * @param {string} args.currency - * @param {number} args.originalCpm - * @param {Object} args.floorData - * @param {string} args.mediaType - * @param {string} args.size - * @returns {BidResponse} - */ -function parseBidResponse({ cpm, currency, originalCpm, floorData, mediaType, size }) { - return { - cpm, - cur: currency, - cpmOrig: originalCpm, - cpmFloor: floorData?.cpmAfterAdjustments, - mediaType, - size +function getBid(auctionId, bidId) { + const auction = locals.cache.auctions[auctionId]; + for (let adUnit of auction.adUnits) { + for (let bid of adUnit.bids) { + if (bid.bidId === bidId) { + return bid; + } + } } } @@ -383,65 +318,115 @@ function parseBidResponse({ cpm, currency, originalCpm, floorData, mediaType, si * @param {EVENTS[keyof EVENTS]} args.eventType */ function analyticEventHandler({ eventType, args }) { - if (!locals.analyticsCache) { + if (!locals.cache) { log.error('Something went wrong. Analytics cache is not initialized.'); return; } switch (eventType) { case EVENTS.AUCTION_INIT: - const auction = parseAuction(args); - - locals.analyticsCache.auctions[auction.auctionId] = auction; - locals.analyticsCache.bidsWon[args.auctionId] = []; - - locals.transactionManagers[args.auctionId] ||= - new TransactionManager({ - timeout: analyticsAdapter.getTimeout(), - onComplete() { - sendReport( - createReportFromCache(locals.analyticsCache, auction.auctionId), - analyticsAdapter.getUrl() - ); - } - }); - + onAuctionInit(args); break; case EVENTS.BID_REQUESTED: - args.bids.forEach((bid) => { - locals.transactionManagers[args.auctionId].add(bid.transactionId); - }); - + onBidRequested(args); break; case EVENTS.BID_RESPONSE: - const bidResponse = parseBid(args); - const cachedAuction = locals.analyticsCache.auctions[args.auctionId]; - const cachedAdUnit = cachedAuction.adUnits.find(adUnit => adUnit.transactionId === args.transactionId); + onBidResponse(args); + break; + case EVENTS.BID_WON: + onBidWon(args); + break; + case EVENTS.AUCTION_END: + onAuctionEnd(args); + break; + default: + break; + } +} - if (!cachedAdUnit) { - log.error('Failed to find adUnit in analytics cache.'); - return; +function onAuctionInit({ adUnits, auctionId, bidderRequests }) { + if (typeof auctionId !== 'string' || !Array.isArray(bidderRequests)) { + log.error('Analytics adapter failed to parse auction.'); + } + + locals.cache.auctions[auctionId] = { + auctionId, + adUnits: adUnits.map(au => { + return { + transactionId: au.transactionId, + adUnitCode: au.code, + // Note: GPID supports adUnits that have matching `code` values by appending a `#UNIQUIFIER`. + // The value of the UNIQUIFIER is likely to be the div-id, + // but, if div-id is randomized / unavailable, may be something else like the media size) + slotId: deepAccess(au, 'ortb2Imp.ext.gpid') || deepAccess(au, 'ortb2Imp.ext.pbadslot'), + mediaTypes: Object.keys(au.mediaTypes), + sizes: au.sizes.map(size => size.join('x')), + bids: [], } + }), + userIds: Object.keys(deepAccess(bidderRequests, '0.bids.0.userId', {})), + }; - cachedAdUnit.bids.push(bidResponse); + locals.transactionManagers[auctionId] ||= + new TransactionManager({ + timeout: analyticsAdapter.getTimeout(), + onComplete() { + sendReport( + createReportFromCache(locals.cache, auctionId), + analyticsAdapter.getUrl() + ); + } + }); +} - break; - case EVENTS.BID_WON: - const bidWon = Object.assign(parseBid(args), { - transactionId: args.transactionId - }); +function onBidRequested({ auctionId, bids }) { + for (let { bidder, bidId, transactionId, src } of bids) { + locals.transactionManagers[auctionId].initiate(transactionId); + getBidsForTransaction(auctionId, transactionId).push({ + bidder, + bidId, + status: 'pending', + hasWon: 0, + source: src, + }); + } +} - const auctionBids = locals.analyticsCache.bidsWon[args.auctionId]; +function onBidResponse({ requestId, auctionId, cpm, currency, originalCpm, floorData, mediaType, size, source, status }) { + Object.assign(getBid(auctionId, requestId), + { + bidResponse: { + cpm, + cur: currency, + cpmOrig: originalCpm, + cpmFloor: floorData?.cpmAfterAdjustments, + mediaType, + size + }, + status, + source + } + ); +} - auctionBids.push(bidWon); +function onBidWon({ auctionId, requestId, transactionId }) { + const bid = getBid(auctionId, requestId); + if (!bid) { + log.error(`Cannot find bid "${requestId}". Auction ID: "${auctionId}". Transaction ID: "${transactionId}".`); + return; + } - // eslint-disable-next-line no-unused-expressions - locals.transactionManagers[args.auctionId]?.que(bidWon.transactionId); + Object.assign(bid, + { + hasWon: 1 + } + ); - break; - default: - break; - } + locals.transactionManagers[auctionId]?.complete(transactionId); +} + +function onAuctionEnd({ auctionId }) { + locals.transactionManagers[auctionId]?.completeAll('auctionEnd'); } /** From 8b6019831ecdf30c87281beb9fca32959fa769b2 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Fri, 28 Apr 2023 11:23:50 -0400 Subject: [PATCH 28/41] IDG-677/update tests to ensure reports always match new spec, and general refactoring --- test/spec/assertValid.js | 57 + .../modules/33acrossAnalyticsAdapter_spec.js | 1094 +++++----- test/spec/modules/mock.js | 1928 +++++++++++++++++ 3 files changed, 2588 insertions(+), 491 deletions(-) create mode 100644 test/spec/assertValid.js create mode 100644 test/spec/modules/mock.js diff --git a/test/spec/assertValid.js b/test/spec/assertValid.js new file mode 100644 index 00000000000..389a54b503e --- /dev/null +++ b/test/spec/assertValid.js @@ -0,0 +1,57 @@ +function assertMatchesReportSpec(report) { + expect(report).to.have.property('analyticsVersion', '1.0.0'); + expect(report).to.have.property('pid').that.is.a('string'); + expect(report).to.have.property('src').that.is.a('string'); + expect(report).to.have.property('pbjsVersion').that.is.a('string'); + expect(report).to.have.property('auctions').that.is.an('array'); + expect(report.auctions).to.have.lengthOf.above(0); + + report.auctions.forEach(auction => { + expect(auction).to.have.property('adUnits').that.is.an('array'); + expect(auction).to.have.property('auctionId').that.is.a('string'); + expect(auction).to.have.property('userIds').that.is.an('array'); + + auction.adUnits.forEach(adUnit => { + expect(adUnit).to.have.property('transactionId').that.is.a('string'); + expect(adUnit).to.have.property('adUnitCode').that.is.a('string'); + expect(adUnit).to.have.property('slotId').that.is.a('string'); + expect(adUnit).to.have.property('mediaTypes').that.is.an('array'); + expect(adUnit).to.have.property('sizes').that.is.an('array'); + expect(adUnit).to.have.property('bids').that.is.an('array'); + + adUnit.mediaTypes.forEach(assertIsMediaType); + + adUnit.sizes.forEach(assertIsSizeString); + + adUnit.bids.forEach(bid => { + expect(bid).to.have.property('bidder').that.is.a('string'); + expect(bid).to.have.property('bidId').that.is.a('string'); + expect(bid).to.have.property('source').that.is.a('string'); + expect(bid).to.have.property('status').that.is.a('string'); + + if (bid.bidResponse) { + expect(bid.bidResponse).to.be.an('object'); + assertIsMediaType(bid.bidResponse.mediaType); + assertIsSizeString(bid.bidResponse.size); + expect(bid.bidResponse).to.have.property('cur').that.is.a('string'); + expect(bid.bidResponse).to.have.property('cpm').that.is.a('number'); + expect(bid.bidResponse).to.have.property('cpmFloor').that.is.a('number'); + if (bid.bidResponse.cpmOrig) { + expect(bid.bidResponse).to.have.property('cpmOrig').that.is.a('number'); + } + } + if (bid.hasWon) { + expect(bid.hasWon).to.have.property('hasWon', 1); + } + }); + }); + }); + + function assertIsMediaType(mediaType) { + expect(mediaType).to.be.oneOf(['banner', 'video', 'native']); + } + + function assertIsSizeString(size) { + expect(size).to.match(/[0-9]+x[0-9]+/); + } +} diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 143e4e6c2b1..0793ad8b364 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -4,13 +4,13 @@ import * as mockGpt from 'test/spec/integration/faker/googletag.js'; import * as events from 'src/events.js'; import * as faker from 'faker'; import CONSTANTS from 'src/constants.json'; -const { EVENTS } = CONSTANTS; -const { assert } = sinon; +const { EVENTS, BID_STATUS } = CONSTANTS; -describe('33acrossAnalyticsAdapter:', function() { +describe('33acrossAnalyticsAdapter:', function () { let sandbox; + let assert = getLocalAssert(); - beforeEach(function() { + beforeEach(function () { mockGpt.enable(); sandbox = sinon.createSandbox({ @@ -23,32 +23,37 @@ describe('33acrossAnalyticsAdapter:', function() { sandbox.spy(log, 'warn'); sandbox.spy(log, 'error'); - sandbox.stub(navigator, 'sendBeacon'); + sandbox.stub(navigator, 'sendBeacon').callsFake(function (url, data) { + const json = JSON.parse(data); + assert.isAnalyticsReport(json); + + return true; + }); }); - afterEach(function() { + afterEach(function () { analyticsAdapter.disableAnalytics(); - mockGpt.enable(); + mockGpt.disable(); events.clearEvents(); sandbox.restore(); }); - describe('enableAnalytics:', function() { - context('When pid is given', function() { - context('but endpoint is not', function() { - it('it logs an info message', function() { + describe('enableAnalytics:', function () { + context('When pid is given', function () { + context('but endpoint is not', function () { + it('it logs an info message', function () { analyticsAdapter.enableAnalytics({ options: { pid: 'test-pid', }, }); - log.info.calledOnceWithExactly('Invalid endpoint provided for "options.endpoint". Using default endpoint.'); + assert.calledWithExactly(log.info, 'Invalid endpoint provided for "options.endpoint". Using default endpoint.'); }); }); - context('but the endpoint is invalid', function() { - it('it logs an info message', function() { + context('but the endpoint is invalid', function () { + it('it logs an info message', function () { analyticsAdapter.enableAnalytics({ options: { pid: 'test-pid', @@ -56,29 +61,29 @@ describe('33acrossAnalyticsAdapter:', function() { }, }); - log.info.calledOnceWithExactly('Invalid endpoint provided for "options.endpoint". Using default endpoint.'); + assert.calledWithExactly(log.info, 'Invalid endpoint provided for "options.endpoint". Using default endpoint.'); }); }); }); - context('When endpoint is given', function() { - context('but pid is not', function() { - it('it logs an error message', function() { + context('When endpoint is given', function () { + context('but pid is not', function () { + it('it logs an error message', function () { analyticsAdapter.enableAnalytics({ options: { endpoint: faker.internet.url() }, }); - log.error.calledOnceWithExactly('No partnerId provided for "options.pid". No analytics will be sent.'); + assert.calledWithExactly(log.error, 'No partnerId provided for "options.pid". No analytics will be sent.'); }); }); }); - context('When pid and endpoint are given', function() { - context('and an invalid timeout config value is given', function() { - it('it logs an info message', function() { - [ null, 'foo', -1 ].forEach(timeout => { + context('When pid and endpoint are given', function () { + context('and an invalid timeout config value is given', function () { + it('it logs an info message', function () { + [null, 'foo', -1].forEach(timeout => { analyticsAdapter.enableAnalytics({ options: { pid: 'test-pid', @@ -88,7 +93,7 @@ describe('33acrossAnalyticsAdapter:', function() { }); analyticsAdapter.disableAnalytics(); - log.info.calledOnceWithExactly('Invalid timeout provided for "options.timeout". Using default timeout of 3000ms.'); + assert.calledWithExactly(log.info, 'Invalid timeout provided for "options.timeout". Using default timeout of 3000ms.'); log.info.resetHistory(); }); }); @@ -96,8 +101,15 @@ describe('33acrossAnalyticsAdapter:', function() { }); }); - describe('Event Handling', function() { - beforeEach(function() { + // check that upcoming tests are derived from a valid report + describe('Report Mocks', function () { + it('the standard report should have the correct format', function () { + assert.isAnalyticsReport(getStandardAnalyticsReport()); + }); + }); + + describe('Event Handling', function () { + beforeEach(function () { this.defaultTimeout = 3000; this.enableAnalytics = (options) => { analyticsAdapter.enableAnalytics({ @@ -111,24 +123,38 @@ describe('33acrossAnalyticsAdapter:', function() { } }); - context('when an auction is complete', function() { - context('and the AnalyticsReport is sent successfully to the given endpoint', function() { - it('it calls "sendBeacon" with the appropriate string', function() { + context('when an auction is complete', function () { + context('and the AnalyticsReport is sent successfully to the given endpoint', function () { + it('it calls "sendBeacon" with 3 won bids', function () { const endpoint = faker.internet.url(); this.enableAnalytics({ endpoint }); navigator.sendBeacon - .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())) - .returns(true); + .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())); performStandardAuction(); - sandbox.clock.tick(this.defaultTimeout + 1); + sandbox.clock.tick(this.defaultTimeout + 1000); + + const [url, jsonString] = navigator.sendBeacon.firstCall.args; + const { auctions } = JSON.parse(jsonString); + + assert.lengthOf(mapToBids(auctions).filter(bid => bid.hasWon), 3); + }); + + it('it calls "sendBeacon" with the appropriate string', function () { + const endpoint = faker.internet.url(); + this.enableAnalytics({ endpoint }); navigator.sendBeacon - .calledOnceWithExactly(endpoint, JSON.stringify(getStandardAnalyticsReport())); + .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())); + + performStandardAuction(); + sandbox.clock.tick(this.defaultTimeout + 1000); + + assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, getStandardAnalyticsReport()); }); - it('it logs an info message containing the report', function() { + it('it logs an info message containing the report', function () { const endpoint = faker.internet.url(); this.enableAnalytics({ endpoint }); @@ -139,33 +165,31 @@ describe('33acrossAnalyticsAdapter:', function() { performStandardAuction(); sandbox.clock.tick(this.defaultTimeout + 1); - log.info - .calledWithExactly(`Analytics report sent to ${endpoint}`, getStandardAnalyticsReport()); + assert.calledWithExactly(log.info, `Analytics report sent to ${endpoint}`, getStandardAnalyticsReport()); }); }); }); - context('when an error occurs while sending the AnalyticsReport', function() { - it('logs an error', function() { + context('when an error occurs while sending the AnalyticsReport', function () { + it('logs an error', function () { this.enableAnalytics(); navigator.sendBeacon.returns(false); performStandardAuction(); sandbox.clock.tick(this.defaultTimeout + 1); - log.error - .calledWithExactly('Analytics report exceeded User-Agent data limits and was not sent.', getStandardAnalyticsReport()); + assert.calledWithExactly(log.error, 'Analytics report exceeded User-Agent data limits and was not sent.', getStandardAnalyticsReport()); }); }); - context('when a BID_WON event is received', function() { - context('and there is no record of that bid being requested', function() { - it('logs a warning message', function() { + context('when a BID_WON event is received', function () { + context('and there is no record of that bid being requested', function () { + it('logs a warning message', function () { this.enableAnalytics(); const mockEvents = getMockEvents(); const { prebid } = mockEvents; - const [ auction ] = prebid; + const [auction] = prebid; events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); @@ -175,156 +199,138 @@ describe('33acrossAnalyticsAdapter:', function() { events.emit(EVENTS.BID_WON, fakeBidWonEvent); - log.warn - .calledWithExactly('transactionId "foo" was not found. Nothing to enqueue.'); + const { auctionId, requestId, transactionId } = fakeBidWonEvent; + assert.calledWithExactly(log.error, `Cannot find bid "${requestId}". Auction ID: "${auctionId}". Transaction ID: "${transactionId}".`); }); }); }); - context('when the same BID_REQUESTED event is received more than once', function() { - it('logs a warning message', function() { - this.enableAnalytics(); - - const mockEvents = getMockEvents(); - const { prebid } = mockEvents; - const [ auction ] = prebid; - - events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); - - events.emit(EVENTS.BID_REQUESTED, auction.BID_REQUESTED[0]); - events.emit(EVENTS.BID_REQUESTED, auction.BID_REQUESTED[0]); - - log.warn - .calledWithExactly('transactionId "ef947609-7b55-4420-8407-599760d0e373" already exists'); - }); - }); - - context('when a transaction does not reach its complete state', function() { - context('and a timeout config value has been given', function() { - context('and the timeout value has elapsed', function() { - it('logs a warning', function() { + context('when a transaction does not reach its complete state', function () { + context('and a timeout config value has been given', function () { + context('and the timeout value has elapsed', function () { + it('logs a warning', function () { this.enableAnalytics({ timeout: 2000 }); - performAuctionWithMissingBidWon(); + performStandardAuction(['bidWon', 'auctionEnd']); sandbox.clock.tick(this.defaultTimeout + 1); - log.warn - .calledWithExactly('Timed out waiting for ad transactions to complete. Sending report.'); + assert.calledWithExactly(log.warn, 'Timed out waiting for ad transactions to complete. Sending report.'); }); }) }); - context('when a timeout config value hasn\'t been given', function() { - context('and the default timeout has elapsed', function() { - it('logs an error', function() { + context('when a timeout config value has not been given', function () { + context('and the default timeout has elapsed', function () { + it('logs an error', function () { this.enableAnalytics(); - performAuctionWithMissingBidWon(); + performStandardAuction(['bidWon', 'auctionEnd']); sandbox.clock.tick(this.defaultTimeout + 1); - log.warn - .calledWithExactly('Timed out waiting for ad transactions to complete. Sending report.'); + assert.calledWithExactly(log.warn, 'Timed out waiting for ad transactions to complete. Sending report.'); }); }) }); - context('and the incomplete report has been sent successfully', function() { - it('sends a report string', function() { - const incompleteAnalyticsReport = Object.assign( - getStandardAnalyticsReport(), - { bidsWon: [] } - ); + context('and the incomplete report has been sent successfully', function () { + it('it sends a report string', function () { + const incompleteAnalyticsReport = getStandardAnalyticsReport(); + incompleteAnalyticsReport.auctions.forEach(auction => { + auction.adUnits.forEach(adUnit => { + adUnit.bids.forEach(bid => { + bid.hasWon = 0; + }); + }); + }); navigator.sendBeacon.returns(true); const endpoint = faker.internet.url(); this.enableAnalytics({ endpoint }); - performAuctionWithMissingBidWon(); - sandbox.clock.tick(this.defaultTimeout + 1); + performStandardAuction(['bidWon', 'auctionEnd']); + sandbox.clock.tick(this.defaultTimeout + 10); - navigator.sendBeacon - .calledOnceWithExactly(endpoint, JSON.stringify(incompleteAnalyticsReport)); + assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, incompleteAnalyticsReport); }); - it('logs an info message', function() { - const incompleteAnalyticsReport = { ...getStandardAnalyticsReport(), bidsWon: [] }; + it('it logs an info message', function () { + const incompleteAnalyticsReport = getStandardAnalyticsReport(); + incompleteAnalyticsReport.auctions.forEach(auction => { + auction.adUnits.forEach(adUnit => { + adUnit.bids.forEach(bid => { + bid.hasWon = 0; + }); + }); + }); navigator.sendBeacon.returns(true); const endpoint = faker.internet.url(); this.enableAnalytics({ endpoint }); - performAuctionWithMissingBidWon(); + performStandardAuction(['bidWon', 'auctionEnd']); sandbox.clock.tick(this.defaultTimeout + 1); - log.info - .calledOnceWithExactly(`Analytics report sent to ${endpoint}`, incompleteAnalyticsReport); + assert.calledWithExactly(log.info, `Analytics report sent to ${endpoint}`, incompleteAnalyticsReport); }); }); }); }); }); -/** - * Events in possible order of execution - * - * ADD_AD_UNITS - * REQUEST_BIDS - * BEFORE_REQUEST_BIDS - * AUCTION_INIT - * BID_REQUESTED - * BEFORE_BIDDER_HTTP - * NO_BID - * BIDDER_DONE - * BID_ADJUSTMENT - * BID_RESPONSE - * BIDDER_DONE - * NO_BID - * TCF2_ENFORCEMENT - * AUCTION_END - * SET_TARGETING - * BIDDER_DONE - * - GAM SLOT RENDER EVENT - * BID_WON - * AD_RENDER_SUCCEEDED - * AD_RENDER_FAILED - * BID_TIMEOUT - */ - -function performStandardAuction() { +function performStandardAuction(exclude = []) { const mockEvents = getMockEvents(); const { prebid, gam } = mockEvents; + const [auction] = prebid; - for (let auction of prebid) { + if (!exclude.includes(EVENTS.AUCTION_INIT)) { events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + } - auction.BID_REQUESTED.forEach((bidRequestedEvent) => { + if (!exclude.includes(EVENTS.BID_REQUESTED)) { + for (let bidRequestedEvent of auction.BID_REQUESTED) { events.emit(EVENTS.BID_REQUESTED, bidRequestedEvent); - }); + }; + } - auction.BID_RESPONSE.forEach((bidResponseEvent) => { + if (!exclude.includes(EVENTS.BID_RESPONSE)) { + for (let bidResponseEvent of auction.BID_RESPONSE) { events.emit(EVENTS.BID_RESPONSE, bidResponseEvent); - }); - - events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); + }; + } + if (!exclude.includes('slotRenderEnded')) { for (let gEvent of gam.slotRenderEnded) { mockGpt.emitEvent(gEvent); } + } - auction.BID_WON.forEach((bidWonEvent) => { + if (!exclude.includes(EVENTS.BID_WON)) { + for (let bidWonEvent of auction.BID_WON) { events.emit(EVENTS.BID_WON, bidWonEvent); - }); + }; + } + + if (!exclude.includes(EVENTS.AUCTION_END)) { + events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); } } +function mapToBids(auctions) { + return auctions.flatMap( + auction => auction.adUnits.flatMap( + au => au.bids + ) + ); +} + function performAuctionWithMissingBidWon() { const mockEvents = getMockEvents(); const { prebid } = mockEvents; - const [ auction ] = prebid; + const [auction] = prebid; events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); @@ -338,6 +344,93 @@ function performAuctionWithMissingBidWon() { events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); } +function getLocalAssert() { + // Derived from ReportDefnition.cue -> AnalyticsReport + function isAnalyticsReport(report) { + assert.hasAllKeys(report, ['analyticsVersion', 'pid', 'src', 'pbjsVersion', 'auctions']); + assert.equal(report.analyticsVersion, '1.0.0'); + assert.isString(report.pid); + assert.isString(report.src); + assert.isString(report.pbjsVersion); + assert.isArray(report.auctions); + assert.isAbove(report.auctions.length, 0); + report.auctions.forEach(isAuction); + } + function isAuction(auction) { + assert.hasAllKeys(auction, ['adUnits', 'auctionId', 'userIds']); + assert.isArray(auction.adUnits); + assert.isString(auction.auctionId); + assert.isArray(auction.userIds); + auction.adUnits.forEach(isAdUnit); + } + function isAdUnit(adUnit) { + assert.hasAllKeys(adUnit, ['transactionId', 'adUnitCode', 'slotId', 'mediaTypes', 'sizes', 'bids']); + assert.isString(adUnit.transactionId); + assert.isString(adUnit.adUnitCode); + assert.isString(adUnit.slotId); + assert.isArray(adUnit.mediaTypes); + assert.isArray(adUnit.sizes); + assert.isArray(adUnit.bids); + adUnit.mediaTypes.forEach(isMediaType); + adUnit.sizes.forEach(isSizeString); + adUnit.bids.forEach(isBid); + } + function isBid(bid) { + assert.containsAllKeys(bid, ['bidder', 'bidId', 'source', 'status', 'hasWon']); + if ('bidResponse' in bid) { + isBidResponse(bid.bidResponse); + } + assert.isString(bid.bidder); + assert.isString(bid.bidId); + assert.isString(bid.source); + assert.oneOf(bid.status, [...Object.values(BID_STATUS), 'pending']); + assert.oneOf(bid.hasWon, [0, 1]); + } + function isBidResponse(bidResponse) { + assert.containsAllKeys(bidResponse, ['mediaType', 'size', 'cur', 'cpm', 'cpmFloor']); + if ('cpmOrig' in bidResponse) { + assert.isNumber(bidResponse.cpmOrig); + } + isMediaType(bidResponse.mediaType); + isSizeString(bidResponse.size); + assert.isString(bidResponse.cur); + assert.isNumber(bidResponse.cpm); + assert.isNumber(bidResponse.cpmFloor); + } + function isMediaType(mediaType) { + assert.oneOf(mediaType, ['banner', 'video', 'native']); + } + function isSizeString(size) { + assert.match(size, /[0-9]+x[0-9]+/); + } + + function calledOnceWithStringJsonEquivalent(sinonSpy, ...args) { + args.forEach((arg, i) => { + const stubCallArgs = sinonSpy.firstCall.args[i] + + if (typeof arg === 'object') { + assert.deepEqual(JSON.parse(stubCallArgs), arg); + } else { + assert.strictEqual(stubCallArgs, arg); + } + }); + } + + return { + ...assert, + calledWithExactly: sinon.assert.calledWithExactly, + alwaysCalledWithExactly: sinon.assert.alwaysCalledWithExactly, + calledOnceWithStringJsonEquivalent, + isAnalyticsReport, + isAuction, + isAdUnit, + isBid, + isBidResponse, + isMediaType, + isSizeString + } +}; + function getStandardAnalyticsReport() { return { pid: 'test-pid', @@ -353,6 +446,7 @@ function getStandardAnalyticsReport() { sizes: ['300x250', '300x600'], bids: [{ bidder: 'bidder0', + bidId: '20661fc5fbb5d9b', source: 'client', status: 'rendered', bidResponse: { @@ -362,7 +456,8 @@ function getStandardAnalyticsReport() { cpmFloor: 1, mediaType: 'banner', size: '300x250' - } + }, + hasWon: 1 }] }, { transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', @@ -372,6 +467,7 @@ function getStandardAnalyticsReport() { sizes: ['728x90', '970x250'], bids: [{ bidder: 'bidder0', + bidId: '21ad295f40dd7ab', source: 'client', status: 'targetingSet', bidResponse: { @@ -381,7 +477,8 @@ function getStandardAnalyticsReport() { cpmFloor: 1, mediaType: 'banner', size: '728x90' - } + }, + hasWon: 1 }] }, { transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', @@ -389,51 +486,25 @@ function getStandardAnalyticsReport() { slotId: '/17118521/header-bid-tag-2', mediaTypes: ['banner'], sizes: ['300x250'], - bids: [] + bids: [{ + bidder: 'bidder0', + bidId: '22108ac7b778717', + source: 'client', + status: 'targetingSet', + bidResponse: { + cpm: 1.5, + cur: 'USD', + cpmOrig: 1.5, + cpmFloor: 1, + mediaType: 'banner', + size: '728x90' + }, + hasWon: 1 + }] }], auctionId: 'auction-000', userIds: ['33acrossId'] }], - bidsWon: [{ - bidder: 'bidder0', - source: 'client', - status: 'rendered', - bidResponse: { - cpm: 1.5, - cur: 'USD', - cpmOrig: 1.5, - cpmFloor: 1, - mediaType: 'banner', - size: '300x250' - }, - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - }, { - bidder: 'bidder0', - source: 'client', - status: 'rendered', - bidResponse: { - cpm: 1.5, - cur: 'USD', - cpmOrig: 1.5, - cpmFloor: 1, - mediaType: 'banner', - size: '728x90' - }, - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - }, { - bidder: 'bidder0', - source: 'client', - status: 'targetingSet', - bidResponse: { - cpm: 1.5, - cur: 'USD', - cpmOrig: 1.5, - cpmFloor: 1, - mediaType: 'banner', - size: '728x90' - }, - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - }] }; } @@ -1086,374 +1157,375 @@ function getMockEvents() { publisherId: '1001', }, }, - BID_REQUESTED: [{ - bidderCode: 'bidder0', - auctionId, - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - bids: [ - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', + BID_REQUESTED: [ + { + bidderCode: 'bidder0', + auctionId, + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + bids: [ + { + bidder: 'bidder0', + params: { + placement_id: 12345678, }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'ef947609-7b55-4420-8407-599760d0e373', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-0', + }, + pbadslot: '/19968336/header-bid-tag-0', }, - ], + gpid: '/19968336/header-bid-tag-0', + }, }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'ef947609-7b55-4420-8407-599760d0e373', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-0', + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-0', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + sizes: [ + [300, 250], + [300, 600], + ], + bidId: '20661fc5fbb5d9b', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', }, - pbadslot: '/19968336/header-bid-tag-0', }, - gpid: '/19968336/header-bid-tag-0', }, }, - mediaTypes: { - banner: { - sizes: [ - [300, 250], - [300, 600], - ], + { + bidder: 'bidder0', + params: { + placement_id: 12345678, }, - }, - adUnitCode: '/19968336/header-bid-tag-0', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - sizes: [ - [300, 250], - [300, 600], - ], - bidId: '20661fc5fbb5d9b', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', + userId: { + '33acrossId': { + envelope: + 'v1.0014', }, }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], + id: 'v1.0014', + atype: 1, }, ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, + ortb2Imp: { + ext: { + tid: 'abab4423-d962-41aa-adc7-0681f686c330', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-1', + }, + pbadslot: '/19968336/header-bid-tag-1', }, - ], + gpid: '/19968336/header-bid-tag-1', + }, }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'abab4423-d962-41aa-adc7-0681f686c330', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-1', + mediaTypes: { + banner: { + sizes: [ + [728, 90], + [970, 250], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-1', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + sizes: [ + [728, 90], + [970, 250], + ], + bidId: '21ad295f40dd7ab', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', }, - pbadslot: '/19968336/header-bid-tag-1', }, - gpid: '/19968336/header-bid-tag-1', }, }, - mediaTypes: { - banner: { - sizes: [ - [728, 90], - [970, 250], - ], + { + bidder: 'bidder0', + params: { + placement_id: 20216405, }, - }, - adUnitCode: '/19968336/header-bid-tag-1', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - sizes: [ - [728, 90], - [970, 250], - ], - bidId: '21ad295f40dd7ab', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', + userId: { + '33acrossId': { + envelope: + 'v1.0014', }, }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], + id: 'v1.0014', + atype: 1, }, ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', }, - pbadslot: '/17118521/header-bid-tag-2', + gpid: '/17118521/header-bid-tag-2', }, - gpid: '/17118521/header-bid-tag-2', }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '22108ac7b778717', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', + mediaTypes: { + banner: { + sizes: [[300, 250]], }, }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '22108ac7b778717', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, }, }, }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { reachedTop: true, isAmp: false, numIframes: 0, stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', canonicalUrl: null, - }, - }, - ortb2: { - site: { page: 'https://site.example.com/pb.html', domain: 'site.example.com', - publisher: { - domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, }, }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', }, }, - }, - start: 1680279732963, - }], + start: 1680279732963, + }], BID_RESPONSE: [{ bidderCode: 'bidder0', width: 300, @@ -1536,6 +1608,46 @@ function getMockEvents() { pbCg: '', size: '728x90', status: 'targetingSet', + }, + { + bidderCode: 'bidder0', + width: 300, + height: 250, + statusMessage: 'Bid available', + adId: '3969aa0dc284f9e', + requestId: '22108ac7b778717', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + auctionId, + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 98476543, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/17118521/header-bid-tag-2', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, + responseTimestamp: 1680279733305, + requestTimestamp: 1680279732963, + bidder: 'bidder0', + timeToRespond: 342, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '728x90', + status: 'targetingSet', }], BID_WON: [{ bidderCode: 'bidder0', @@ -1653,7 +1765,7 @@ function getMockEvents() { height: 250, statusMessage: 'Bid available', adId: '3969aa0dc284f9e', - requestId: '15bef0b1fd2b2e', + requestId: '22108ac7b778717', transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', auctionId, mediaType: 'banner', @@ -2271,7 +2383,7 @@ function getMockEvents() { start: 1680279732963, } ], - noBids: [ /* no need to populate */ ], + noBids: [ /* no need to populate */], bidsReceived: [ { bidderCode: 'bidder0', diff --git a/test/spec/modules/mock.js b/test/spec/modules/mock.js new file mode 100644 index 00000000000..0152f079a89 --- /dev/null +++ b/test/spec/modules/mock.js @@ -0,0 +1,1928 @@ +export function getMockEvents() { + const ad = '
ad
'; + const auctionId = 'auction-000'; + + return { + gam: { + slotRenderEnded: [ + { + serviceName: 'publisher_ads', + slot: mockGpt.makeSlot({ code: 'box' }), + isEmpty: true, + slotContentChanged: true, + size: null, + advertiserId: null, + campaignId: null, + creativeId: null, + creativeTemplateId: null, + labelIds: null, + lineItemId: null, + isBackfill: false, + }, + { + serviceName: 'publisher_ads', + slot: mockGpt.makeSlot({ code: 'box' }), + isEmpty: false, + slotContentChanged: true, + size: [1, 1], + advertiserId: 12345, + campaignId: 400000001, + creativeId: 6789, + creativeTemplateId: null, + labelIds: null, + lineItemId: 1011, + isBackfill: false, + yieldGroupIds: null, + companyIds: null, + }, + { + serviceName: 'publisher_ads', + slot: mockGpt.makeSlot({ code: 'box' }), + isEmpty: false, + slotContentChanged: true, + size: [728, 90], + advertiserId: 12346, + campaignId: 299999000, + creativeId: 6790, + creativeTemplateId: null, + labelIds: null, + lineItemId: 1012, + isBackfill: false, + yieldGroupIds: null, + companyIds: null, + }, + ], + }, + prebid: [{ + AUCTION_INIT: { + auctionId, + timestamp: 1680279732944, + auctionStatus: 'inProgress', + adUnits: [ + { + code: '/19968336/header-bid-tag-0', + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600], + ], + }, + }, + bids: [ + { + bidder: 'bidder0', + params: { + placementId: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + ], + sizes: [ + [300, 250], + [300, 600], + ], + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + ortb2Imp: { + ext: { + tid: 'ef947609-7b55-4420-8407-599760d0e373', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-0', + }, + pbadslot: '/19968336/header-bid-tag-0', + }, + gpid: '/19968336/header-bid-tag-0', + }, + }, + }, + { + code: '/19968336/header-bid-tag-1', + mediaTypes: { + banner: { + sizes: [ + [728, 90], + [970, 250], + ], + }, + }, + bids: [ + { + bidder: 'bidder0', + params: { + placementId: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + ], + sizes: [ + [728, 90], + [970, 250], + ], + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + ortb2Imp: { + ext: { + tid: 'abab4423-d962-41aa-adc7-0681f686c330', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-1', + }, + pbadslot: '/19968336/header-bid-tag-1', + }, + gpid: '/19968336/header-bid-tag-1', + }, + }, + }, + { + code: '/17118521/header-bid-tag-2', + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + floors: { + currency: 'USD', + schema: { + delimiter: '|', + fields: ['mediaType', 'size'], + }, + values: { + 'banner|300x250': 0.01, + }, + }, + bids: [ + { + bidder: '33across', + params: { + siteId: 'dukr5O4SWr6iygaKkGJozW', + productId: 'siab', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder0', + params: { + placementId: 20216405, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + ], + sizes: [[300, 250]], + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + }, + ], + adUnitCodes: [ + '/19968336/header-bid-tag-0', + '/19968336/header-bid-tag-1', + '/17118521/header-bid-tag-2', + ], + bidderRequests: [ + { + bidderCode: 'bidder0', + auctionId, + bidderRequestId: '196b58215c10dc9', + bids: [ + { + bidder: 'bidder0', + params: { + placement_id: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'ef947609-7b55-4420-8407-599760d0e373', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-0', + }, + pbadslot: '/19968336/header-bid-tag-0', + }, + gpid: '/19968336/header-bid-tag-0', + }, + }, + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-0', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + sizes: [ + [300, 250], + [300, 600], + ], + bidId: '20661fc5fbb5d9b', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'abab4423-d962-41aa-adc7-0681f686c330', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-1', + }, + pbadslot: '/19968336/header-bid-tag-1', + }, + gpid: '/19968336/header-bid-tag-1', + }, + }, + mediaTypes: { + banner: { + sizes: [ + [728, 90], + [970, 250], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-1', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + sizes: [ + [728, 90], + [970, 250], + ], + bidId: '21ad295f40dd7ab', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 20216405, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '22108ac7b778717', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732963, + } + ], + noBids: [], + bidsReceived: [], + bidsRejected: [], + winningBids: [], + timeout: 3000, + seatNonBids: [], + config: { + publisherId: '1001', + }, + }, + BID_REQUESTED: [{ + bidderCode: 'bidder0', + auctionId, + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + bids: [ + { + bidder: 'bidder0', + params: { + placement_id: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'ef947609-7b55-4420-8407-599760d0e373', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-0', + }, + pbadslot: '/19968336/header-bid-tag-0', + }, + gpid: '/19968336/header-bid-tag-0', + }, + }, + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-0', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + sizes: [ + [300, 250], + [300, 600], + ], + bidId: '20661fc5fbb5d9b', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'abab4423-d962-41aa-adc7-0681f686c330', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-1', + }, + pbadslot: '/19968336/header-bid-tag-1', + }, + gpid: '/19968336/header-bid-tag-1', + }, + }, + mediaTypes: { + banner: { + sizes: [ + [728, 90], + [970, 250], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-1', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + sizes: [ + [728, 90], + [970, 250], + ], + bidId: '21ad295f40dd7ab', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 20216405, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '22108ac7b778717', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732963, + }], + BID_RESPONSE: [{ + bidderCode: 'bidder0', + width: 300, + height: 250, + statusMessage: 'Bid available', + adId: '123456789abcdef', + requestId: '20661fc5fbb5d9b', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + auctionId, + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 96846035, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/19968336/header-bid-tag-0', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, + bidder: 'bidder0', + timeToRespond: 341, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '300x250', + status: 'rendered', + params: [ + { + placementId: 12345678, + }, + ], + }, + { + bidderCode: 'bidder0', + width: 728, + height: 90, + statusMessage: 'Bid available', + adId: '3969aa0dc284f9e', + requestId: '21ad295f40dd7ab', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + auctionId, + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 98476543, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/19968336/header-bid-tag-1', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, + responseTimestamp: 1680279733305, + requestTimestamp: 1680279732963, + bidder: 'bidder0', + timeToRespond: 342, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '728x90', + status: 'targetingSet', + }], + BID_WON: [{ + bidderCode: 'bidder0', + width: 300, + height: 250, + statusMessage: 'Bid available', + adId: '123456789abcdef', + requestId: '20661fc5fbb5d9b', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + auctionId, + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 96846035, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/19968336/header-bid-tag-0', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, + responseTimestamp: 1680279733304, + requestTimestamp: 1680279732963, + bidder: 'bidder0', + timeToRespond: 341, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '300x250', + adserverTargeting: { + bidder: 'bidder0', + hb_adid: '123456789abcdef', + hb_pb: '1.50', + hb_size: '300x250', + hb_source: 'client', + hb_format: 'banner', + hb_adomain: '', + hb_acat: '', + }, + status: 'rendered', + params: [ + { + placementId: 12345678, + }, + ], + }, + { + bidderCode: 'bidder0', + width: 728, + height: 90, + statusMessage: 'Bid available', + adId: '3969aa0dc284f9e', + requestId: '21ad295f40dd7ab', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + auctionId, + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 98476543, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/19968336/header-bid-tag-1', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, + responseTimestamp: 1680279733304, + requestTimestamp: 1680279732963, + bidder: 'bidder0', + timeToRespond: 342, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '728x90', + adserverTargeting: { + bidder: 'bidder0', + hb_adid: '3969aa0dc284f9e', + hb_pb: '1.50', + hb_size: '728x90', + hb_source: 'client', + hb_format: 'banner', + hb_adomain: '', + hb_acat: '', + }, + status: 'rendered', + params: [ + { + placementId: 12345678, + }, + ], + }, + { + bidderCode: 'bidder0', + width: 300, + height: 250, + statusMessage: 'Bid available', + adId: '3969aa0dc284f9e', + requestId: '15bef0b1fd2b2e', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + auctionId, + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 98476543, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/17118521/header-bid-tag-2', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, + responseTimestamp: 1680279733305, + requestTimestamp: 1680279732963, + bidder: 'bidder0', + timeToRespond: 342, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '728x90', + status: 'targetingSet', + }], + AUCTION_END: { + auctionId, + timestamp: 1680279732944, + auctionEnd: 1680279733675, + auctionStatus: 'completed', + adUnits: [ + { + code: '/19968336/header-bid-tag-0', + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600], + ], + }, + }, + bids: [ + { + bidder: 'bidder0', + params: { + placementId: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + ], + sizes: [ + [300, 250], + [300, 600], + ], + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + ortb2Imp: { + ext: { + tid: 'ef947609-7b55-4420-8407-599760d0e373', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-0', + }, + pbadslot: '/19968336/header-bid-tag-0', + }, + gpid: '/19968336/header-bid-tag-0', + }, + }, + }, + { + code: '/19968336/header-bid-tag-1', + mediaTypes: { + banner: { + sizes: [ + [728, 90], + [970, 250], + ], + }, + }, + bids: [ + { + bidder: 'bidder0', + params: { + placementId: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + ], + sizes: [ + [728, 90], + [970, 250], + ], + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + ortb2Imp: { + ext: { + tid: 'abab4423-d962-41aa-adc7-0681f686c330', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-1', + }, + pbadslot: '/19968336/header-bid-tag-1', + }, + gpid: '/19968336/header-bid-tag-1', + }, + }, + }, + { + code: '/17118521/header-bid-tag-2', + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + floors: { + currency: 'USD', + schema: { + delimiter: '|', + fields: ['mediaType', 'size'], + }, + values: { + 'banner|300x250': 0.01, + }, + }, + bids: [ + { + bidder: '33across', + params: { + siteId: 'dukr5O4SWr6iygaKkGJozW', + productId: 'siab', + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + { + bidder: 'bidder0', + params: { + placementId: 20216405, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + }, + ], + sizes: [[300, 250]], + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + }, + ], + adUnitCodes: [ + '/19968336/header-bid-tag-0', + '/19968336/header-bid-tag-1', + '/17118521/header-bid-tag-2', + ], + bidderRequests: [ + { + bidderCode: 'bidder0', + auctionId, + bidderRequestId: '196b58215c10dc9', + bids: [ + { + bidder: 'bidder0', + params: { + placement_id: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'ef947609-7b55-4420-8407-599760d0e373', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-0', + }, + pbadslot: '/19968336/header-bid-tag-0', + }, + gpid: '/19968336/header-bid-tag-0', + }, + }, + mediaTypes: { + banner: { + sizes: [ + [300, 250], + [300, 600], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-0', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + sizes: [ + [300, 250], + [300, 600], + ], + bidId: '20661fc5fbb5d9b', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 12345678, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'abab4423-d962-41aa-adc7-0681f686c330', + data: { + adserver: { + name: 'gam', + adslot: '/19968336/header-bid-tag-1', + }, + pbadslot: '/19968336/header-bid-tag-1', + }, + gpid: '/19968336/header-bid-tag-1', + }, + }, + mediaTypes: { + banner: { + sizes: [ + [728, 90], + [970, 250], + ], + }, + }, + adUnitCode: '/19968336/header-bid-tag-1', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + sizes: [ + [728, 90], + [970, 250], + ], + bidId: '21ad295f40dd7ab', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + { + bidder: 'bidder0', + params: { + placement_id: 20216405, + }, + userId: { + '33acrossId': { + envelope: + 'v1.0014', + }, + }, + userIdAsEids: [ + { + source: '33across.com', + uids: [ + { + id: 'v1.0014', + atype: 1, + }, + ], + }, + ], + crumbs: { + pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', + }, + ortb2Imp: { + ext: { + tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + data: { + adserver: { + name: 'gam', + adslot: '/17118521/header-bid-tag-2', + }, + pbadslot: '/17118521/header-bid-tag-2', + }, + gpid: '/17118521/header-bid-tag-2', + }, + }, + mediaTypes: { + banner: { + sizes: [[300, 250]], + }, + }, + adUnitCode: '/17118521/header-bid-tag-2', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', + sizes: [[300, 250]], + bidId: '22108ac7b778717', + bidderRequestId: '196b58215c10dc9', + auctionId, + src: 'client', + bidRequestsCount: 1, + bidderRequestsCount: 1, + bidderWinsCount: 0, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + }, + ], + auctionStart: 1680279732944, + timeout: 3000, + refererInfo: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + topmostLocation: 'https://site.example.com/pb.html', + location: 'https://site.example.com/pb.html', + canonicalUrl: null, + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + ref: null, + legacy: { + reachedTop: true, + isAmp: false, + numIframes: 0, + stack: ['https://site.example.com/pb.html'], + referer: 'https://site.example.com/pb.html', + canonicalUrl: null, + }, + }, + ortb2: { + site: { + page: 'https://site.example.com/pb.html', + domain: 'site.example.com', + publisher: { + domain: 'site.example.com', + }, + }, + device: { + w: 594, + h: 976, + dnt: 0, + ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', + language: 'en', + sua: { + source: 2, + platform: { + brand: 'macOS', + version: ['13', '2', '1'], + }, + browsers: [ + { + brand: 'Google Chrome', + version: ['111', '0', '5563', '110'], + }, + { + brand: 'Not(A:Brand', + version: ['8', '0', '0', '0'], + }, + { + brand: 'Chromium', + version: ['111', '0', '5563', '110'], + }, + ], + mobile: 0, + model: '', + bitness: '64', + architecture: 'arm', + }, + }, + }, + start: 1680279732963, + } + ], + noBids: [ /* no need to populate */ ], + bidsReceived: [ + { + bidderCode: 'bidder0', + width: 300, + height: 250, + statusMessage: 'Bid available', + adId: '123456789abcdef', + requestId: '20661fc5fbb5d9b', + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', + auctionId, + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 96846035, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/19968336/header-bid-tag-0', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, + bidder: 'bidder0', + timeToRespond: 341, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '300x250', + status: 'rendered', + params: [ + { + placementId: 12345678, + }, + ], + }, + { + bidderCode: 'bidder0', + width: 728, + height: 90, + statusMessage: 'Bid available', + adId: '3969aa0dc284f9e', + requestId: '21ad295f40dd7ab', + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', + auctionId, + mediaType: 'banner', + source: 'client', + cpm: 1.5, + creativeId: 98476543, + currency: 'USD', + netRevenue: true, + ttl: 300, + adUnitCode: '/19968336/header-bid-tag-1', + bidder0: { + buyerMemberId: 1234, + }, + ad, + adapterCode: 'bidder0', + originalCpm: 1.5, + originalCurrency: 'USD', + floorData: { + cpmAfterAdjustments: 1 + }, + responseTimestamp: 1680279733305, + requestTimestamp: 1680279732963, + bidder: 'bidder0', + timeToRespond: 342, + pbLg: '1.50', + pbMg: '1.50', + pbHg: '1.50', + pbAg: '1.50', + pbDg: '1.50', + pbCg: '', + size: '728x90', + status: 'targetingSet', + }, + ], + bidsRejected: [], + winningBids: [], + timeout: 3000, + seatNonBids: [], + }, + }] + }; +} From 2f58f7f95a6d74c4315742115877fa3767b10e4c Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Fri, 28 Apr 2023 12:10:06 -0400 Subject: [PATCH 29/41] IDG-677/add fallback to use adUnitCode as slotId if "ortb2Imp.ext.{gpid,data.pbadslot}" values are both missing --- modules/33acrossAnalyticsAdapter.js | 4 ++-- modules/33acrossAnalyticsAdapter.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 70d5998916c..827cb7f7579 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -129,7 +129,7 @@ class TransactionManager { this.#transactions[transactionId].status = 'queued'; --this.#unsent; - log.info(`Queued transaction "${transactionId}". ${this.#unsent} transactions pending.`, this.#transactions); + log.info(`Queued transaction "${transactionId}" for delivery. ${this.#unsent} transactions still pending.`, this.#transactions); } completeAll(reason) { @@ -358,7 +358,7 @@ function onAuctionInit({ adUnits, auctionId, bidderRequests }) { // Note: GPID supports adUnits that have matching `code` values by appending a `#UNIQUIFIER`. // The value of the UNIQUIFIER is likely to be the div-id, // but, if div-id is randomized / unavailable, may be something else like the media size) - slotId: deepAccess(au, 'ortb2Imp.ext.gpid') || deepAccess(au, 'ortb2Imp.ext.pbadslot'), + slotId: deepAccess(au, 'ortb2Imp.ext.gpid') || deepAccess(au, 'ortb2Imp.ext.data.pbadslot', au.code), mediaTypes: Object.keys(au.mediaTypes), sizes: au.sizes.map(size => size.join('x')), bids: [], diff --git a/modules/33acrossAnalyticsAdapter.md b/modules/33acrossAnalyticsAdapter.md index a93ff3b0ba4..be9cbc9a961 100644 --- a/modules/33acrossAnalyticsAdapter.md +++ b/modules/33acrossAnalyticsAdapter.md @@ -39,7 +39,7 @@ pbjs.enableAnalytics({ endpoint: 'https://localhost:9999/event', /** * Timeout in milliseconds after which an auction report - * will be sent regardless of auction state + * will be sent regardless of auction state. * [optional] */ timeout: 3000 From 79954c7538eb9e5d912ab6f65421fd973986b732 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Fri, 28 Apr 2023 21:31:15 -0400 Subject: [PATCH 30/41] remove accidental file commits Ticket: IDG-677 --- test/spec/assertValid.js | 57 -- test/spec/modules/mock.js | 1928 ------------------------------------- 2 files changed, 1985 deletions(-) delete mode 100644 test/spec/assertValid.js delete mode 100644 test/spec/modules/mock.js diff --git a/test/spec/assertValid.js b/test/spec/assertValid.js deleted file mode 100644 index 389a54b503e..00000000000 --- a/test/spec/assertValid.js +++ /dev/null @@ -1,57 +0,0 @@ -function assertMatchesReportSpec(report) { - expect(report).to.have.property('analyticsVersion', '1.0.0'); - expect(report).to.have.property('pid').that.is.a('string'); - expect(report).to.have.property('src').that.is.a('string'); - expect(report).to.have.property('pbjsVersion').that.is.a('string'); - expect(report).to.have.property('auctions').that.is.an('array'); - expect(report.auctions).to.have.lengthOf.above(0); - - report.auctions.forEach(auction => { - expect(auction).to.have.property('adUnits').that.is.an('array'); - expect(auction).to.have.property('auctionId').that.is.a('string'); - expect(auction).to.have.property('userIds').that.is.an('array'); - - auction.adUnits.forEach(adUnit => { - expect(adUnit).to.have.property('transactionId').that.is.a('string'); - expect(adUnit).to.have.property('adUnitCode').that.is.a('string'); - expect(adUnit).to.have.property('slotId').that.is.a('string'); - expect(adUnit).to.have.property('mediaTypes').that.is.an('array'); - expect(adUnit).to.have.property('sizes').that.is.an('array'); - expect(adUnit).to.have.property('bids').that.is.an('array'); - - adUnit.mediaTypes.forEach(assertIsMediaType); - - adUnit.sizes.forEach(assertIsSizeString); - - adUnit.bids.forEach(bid => { - expect(bid).to.have.property('bidder').that.is.a('string'); - expect(bid).to.have.property('bidId').that.is.a('string'); - expect(bid).to.have.property('source').that.is.a('string'); - expect(bid).to.have.property('status').that.is.a('string'); - - if (bid.bidResponse) { - expect(bid.bidResponse).to.be.an('object'); - assertIsMediaType(bid.bidResponse.mediaType); - assertIsSizeString(bid.bidResponse.size); - expect(bid.bidResponse).to.have.property('cur').that.is.a('string'); - expect(bid.bidResponse).to.have.property('cpm').that.is.a('number'); - expect(bid.bidResponse).to.have.property('cpmFloor').that.is.a('number'); - if (bid.bidResponse.cpmOrig) { - expect(bid.bidResponse).to.have.property('cpmOrig').that.is.a('number'); - } - } - if (bid.hasWon) { - expect(bid.hasWon).to.have.property('hasWon', 1); - } - }); - }); - }); - - function assertIsMediaType(mediaType) { - expect(mediaType).to.be.oneOf(['banner', 'video', 'native']); - } - - function assertIsSizeString(size) { - expect(size).to.match(/[0-9]+x[0-9]+/); - } -} diff --git a/test/spec/modules/mock.js b/test/spec/modules/mock.js deleted file mode 100644 index 0152f079a89..00000000000 --- a/test/spec/modules/mock.js +++ /dev/null @@ -1,1928 +0,0 @@ -export function getMockEvents() { - const ad = '
ad
'; - const auctionId = 'auction-000'; - - return { - gam: { - slotRenderEnded: [ - { - serviceName: 'publisher_ads', - slot: mockGpt.makeSlot({ code: 'box' }), - isEmpty: true, - slotContentChanged: true, - size: null, - advertiserId: null, - campaignId: null, - creativeId: null, - creativeTemplateId: null, - labelIds: null, - lineItemId: null, - isBackfill: false, - }, - { - serviceName: 'publisher_ads', - slot: mockGpt.makeSlot({ code: 'box' }), - isEmpty: false, - slotContentChanged: true, - size: [1, 1], - advertiserId: 12345, - campaignId: 400000001, - creativeId: 6789, - creativeTemplateId: null, - labelIds: null, - lineItemId: 1011, - isBackfill: false, - yieldGroupIds: null, - companyIds: null, - }, - { - serviceName: 'publisher_ads', - slot: mockGpt.makeSlot({ code: 'box' }), - isEmpty: false, - slotContentChanged: true, - size: [728, 90], - advertiserId: 12346, - campaignId: 299999000, - creativeId: 6790, - creativeTemplateId: null, - labelIds: null, - lineItemId: 1012, - isBackfill: false, - yieldGroupIds: null, - companyIds: null, - }, - ], - }, - prebid: [{ - AUCTION_INIT: { - auctionId, - timestamp: 1680279732944, - auctionStatus: 'inProgress', - adUnits: [ - { - code: '/19968336/header-bid-tag-0', - mediaTypes: { - banner: { - sizes: [ - [300, 250], - [300, 600], - ], - }, - }, - bids: [ - { - bidder: 'bidder0', - params: { - placementId: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - ], - sizes: [ - [300, 250], - [300, 600], - ], - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - ortb2Imp: { - ext: { - tid: 'ef947609-7b55-4420-8407-599760d0e373', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-0', - }, - pbadslot: '/19968336/header-bid-tag-0', - }, - gpid: '/19968336/header-bid-tag-0', - }, - }, - }, - { - code: '/19968336/header-bid-tag-1', - mediaTypes: { - banner: { - sizes: [ - [728, 90], - [970, 250], - ], - }, - }, - bids: [ - { - bidder: 'bidder0', - params: { - placementId: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - ], - sizes: [ - [728, 90], - [970, 250], - ], - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - ortb2Imp: { - ext: { - tid: 'abab4423-d962-41aa-adc7-0681f686c330', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-1', - }, - pbadslot: '/19968336/header-bid-tag-1', - }, - gpid: '/19968336/header-bid-tag-1', - }, - }, - }, - { - code: '/17118521/header-bid-tag-2', - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - floors: { - currency: 'USD', - schema: { - delimiter: '|', - fields: ['mediaType', 'size'], - }, - values: { - 'banner|300x250': 0.01, - }, - }, - bids: [ - { - bidder: '33across', - params: { - siteId: 'dukr5O4SWr6iygaKkGJozW', - productId: 'siab', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'bidder0', - params: { - placementId: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - ], - sizes: [[300, 250]], - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - }, - ], - adUnitCodes: [ - '/19968336/header-bid-tag-0', - '/19968336/header-bid-tag-1', - '/17118521/header-bid-tag-2', - ], - bidderRequests: [ - { - bidderCode: 'bidder0', - auctionId, - bidderRequestId: '196b58215c10dc9', - bids: [ - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'ef947609-7b55-4420-8407-599760d0e373', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-0', - }, - pbadslot: '/19968336/header-bid-tag-0', - }, - gpid: '/19968336/header-bid-tag-0', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [300, 250], - [300, 600], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-0', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - sizes: [ - [300, 250], - [300, 600], - ], - bidId: '20661fc5fbb5d9b', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'abab4423-d962-41aa-adc7-0681f686c330', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-1', - }, - pbadslot: '/19968336/header-bid-tag-1', - }, - gpid: '/19968336/header-bid-tag-1', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [728, 90], - [970, 250], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-1', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - sizes: [ - [728, 90], - [970, 250], - ], - bidId: '21ad295f40dd7ab', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '22108ac7b778717', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732963, - } - ], - noBids: [], - bidsReceived: [], - bidsRejected: [], - winningBids: [], - timeout: 3000, - seatNonBids: [], - config: { - publisherId: '1001', - }, - }, - BID_REQUESTED: [{ - bidderCode: 'bidder0', - auctionId, - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - bids: [ - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'ef947609-7b55-4420-8407-599760d0e373', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-0', - }, - pbadslot: '/19968336/header-bid-tag-0', - }, - gpid: '/19968336/header-bid-tag-0', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [300, 250], - [300, 600], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-0', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - sizes: [ - [300, 250], - [300, 600], - ], - bidId: '20661fc5fbb5d9b', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'abab4423-d962-41aa-adc7-0681f686c330', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-1', - }, - pbadslot: '/19968336/header-bid-tag-1', - }, - gpid: '/19968336/header-bid-tag-1', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [728, 90], - [970, 250], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-1', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - sizes: [ - [728, 90], - [970, 250], - ], - bidId: '21ad295f40dd7ab', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '22108ac7b778717', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732963, - }], - BID_RESPONSE: [{ - bidderCode: 'bidder0', - width: 300, - height: 250, - statusMessage: 'Bid available', - adId: '123456789abcdef', - requestId: '20661fc5fbb5d9b', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - auctionId, - mediaType: 'banner', - source: 'client', - cpm: 1.5, - creativeId: 96846035, - currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/19968336/header-bid-tag-0', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', - floorData: { - cpmAfterAdjustments: 1 - }, - bidder: 'bidder0', - timeToRespond: 341, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', - size: '300x250', - status: 'rendered', - params: [ - { - placementId: 12345678, - }, - ], - }, - { - bidderCode: 'bidder0', - width: 728, - height: 90, - statusMessage: 'Bid available', - adId: '3969aa0dc284f9e', - requestId: '21ad295f40dd7ab', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - auctionId, - mediaType: 'banner', - source: 'client', - cpm: 1.5, - creativeId: 98476543, - currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/19968336/header-bid-tag-1', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', - floorData: { - cpmAfterAdjustments: 1 - }, - responseTimestamp: 1680279733305, - requestTimestamp: 1680279732963, - bidder: 'bidder0', - timeToRespond: 342, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', - size: '728x90', - status: 'targetingSet', - }], - BID_WON: [{ - bidderCode: 'bidder0', - width: 300, - height: 250, - statusMessage: 'Bid available', - adId: '123456789abcdef', - requestId: '20661fc5fbb5d9b', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - auctionId, - mediaType: 'banner', - source: 'client', - cpm: 1.5, - creativeId: 96846035, - currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/19968336/header-bid-tag-0', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', - floorData: { - cpmAfterAdjustments: 1 - }, - responseTimestamp: 1680279733304, - requestTimestamp: 1680279732963, - bidder: 'bidder0', - timeToRespond: 341, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', - size: '300x250', - adserverTargeting: { - bidder: 'bidder0', - hb_adid: '123456789abcdef', - hb_pb: '1.50', - hb_size: '300x250', - hb_source: 'client', - hb_format: 'banner', - hb_adomain: '', - hb_acat: '', - }, - status: 'rendered', - params: [ - { - placementId: 12345678, - }, - ], - }, - { - bidderCode: 'bidder0', - width: 728, - height: 90, - statusMessage: 'Bid available', - adId: '3969aa0dc284f9e', - requestId: '21ad295f40dd7ab', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - auctionId, - mediaType: 'banner', - source: 'client', - cpm: 1.5, - creativeId: 98476543, - currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/19968336/header-bid-tag-1', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', - floorData: { - cpmAfterAdjustments: 1 - }, - responseTimestamp: 1680279733304, - requestTimestamp: 1680279732963, - bidder: 'bidder0', - timeToRespond: 342, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', - size: '728x90', - adserverTargeting: { - bidder: 'bidder0', - hb_adid: '3969aa0dc284f9e', - hb_pb: '1.50', - hb_size: '728x90', - hb_source: 'client', - hb_format: 'banner', - hb_adomain: '', - hb_acat: '', - }, - status: 'rendered', - params: [ - { - placementId: 12345678, - }, - ], - }, - { - bidderCode: 'bidder0', - width: 300, - height: 250, - statusMessage: 'Bid available', - adId: '3969aa0dc284f9e', - requestId: '15bef0b1fd2b2e', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - auctionId, - mediaType: 'banner', - source: 'client', - cpm: 1.5, - creativeId: 98476543, - currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/17118521/header-bid-tag-2', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', - floorData: { - cpmAfterAdjustments: 1 - }, - responseTimestamp: 1680279733305, - requestTimestamp: 1680279732963, - bidder: 'bidder0', - timeToRespond: 342, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', - size: '728x90', - status: 'targetingSet', - }], - AUCTION_END: { - auctionId, - timestamp: 1680279732944, - auctionEnd: 1680279733675, - auctionStatus: 'completed', - adUnits: [ - { - code: '/19968336/header-bid-tag-0', - mediaTypes: { - banner: { - sizes: [ - [300, 250], - [300, 600], - ], - }, - }, - bids: [ - { - bidder: 'bidder0', - params: { - placementId: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - ], - sizes: [ - [300, 250], - [300, 600], - ], - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - ortb2Imp: { - ext: { - tid: 'ef947609-7b55-4420-8407-599760d0e373', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-0', - }, - pbadslot: '/19968336/header-bid-tag-0', - }, - gpid: '/19968336/header-bid-tag-0', - }, - }, - }, - { - code: '/19968336/header-bid-tag-1', - mediaTypes: { - banner: { - sizes: [ - [728, 90], - [970, 250], - ], - }, - }, - bids: [ - { - bidder: 'bidder0', - params: { - placementId: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - ], - sizes: [ - [728, 90], - [970, 250], - ], - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - ortb2Imp: { - ext: { - tid: 'abab4423-d962-41aa-adc7-0681f686c330', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-1', - }, - pbadslot: '/19968336/header-bid-tag-1', - }, - gpid: '/19968336/header-bid-tag-1', - }, - }, - }, - { - code: '/17118521/header-bid-tag-2', - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - floors: { - currency: 'USD', - schema: { - delimiter: '|', - fields: ['mediaType', 'size'], - }, - values: { - 'banner|300x250': 0.01, - }, - }, - bids: [ - { - bidder: '33across', - params: { - siteId: 'dukr5O4SWr6iygaKkGJozW', - productId: 'siab', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'bidder0', - params: { - placementId: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - ], - sizes: [[300, 250]], - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - }, - ], - adUnitCodes: [ - '/19968336/header-bid-tag-0', - '/19968336/header-bid-tag-1', - '/17118521/header-bid-tag-2', - ], - bidderRequests: [ - { - bidderCode: 'bidder0', - auctionId, - bidderRequestId: '196b58215c10dc9', - bids: [ - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'ef947609-7b55-4420-8407-599760d0e373', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-0', - }, - pbadslot: '/19968336/header-bid-tag-0', - }, - gpid: '/19968336/header-bid-tag-0', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [300, 250], - [300, 600], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-0', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - sizes: [ - [300, 250], - [300, 600], - ], - bidId: '20661fc5fbb5d9b', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'abab4423-d962-41aa-adc7-0681f686c330', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-1', - }, - pbadslot: '/19968336/header-bid-tag-1', - }, - gpid: '/19968336/header-bid-tag-1', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [728, 90], - [970, 250], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-1', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - sizes: [ - [728, 90], - [970, 250], - ], - bidId: '21ad295f40dd7ab', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '22108ac7b778717', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732963, - } - ], - noBids: [ /* no need to populate */ ], - bidsReceived: [ - { - bidderCode: 'bidder0', - width: 300, - height: 250, - statusMessage: 'Bid available', - adId: '123456789abcdef', - requestId: '20661fc5fbb5d9b', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - auctionId, - mediaType: 'banner', - source: 'client', - cpm: 1.5, - creativeId: 96846035, - currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/19968336/header-bid-tag-0', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', - floorData: { - cpmAfterAdjustments: 1 - }, - bidder: 'bidder0', - timeToRespond: 341, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', - size: '300x250', - status: 'rendered', - params: [ - { - placementId: 12345678, - }, - ], - }, - { - bidderCode: 'bidder0', - width: 728, - height: 90, - statusMessage: 'Bid available', - adId: '3969aa0dc284f9e', - requestId: '21ad295f40dd7ab', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - auctionId, - mediaType: 'banner', - source: 'client', - cpm: 1.5, - creativeId: 98476543, - currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/19968336/header-bid-tag-1', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', - floorData: { - cpmAfterAdjustments: 1 - }, - responseTimestamp: 1680279733305, - requestTimestamp: 1680279732963, - bidder: 'bidder0', - timeToRespond: 342, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', - size: '728x90', - status: 'targetingSet', - }, - ], - bidsRejected: [], - winningBids: [], - timeout: 3000, - seatNonBids: [], - }, - }] - }; -} From c262820f328b1ae5c7504e1f0e8827196479aa32 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Fri, 28 Apr 2023 22:00:01 -0400 Subject: [PATCH 31/41] test that report is being sent as soon as all transactions for auction are completed Ticket: IDG-677 --- .../modules/33acrossAnalyticsAdapter_spec.js | 40 +++++++++---------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 0793ad8b364..eabc86db229 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -167,6 +167,19 @@ describe('33acrossAnalyticsAdapter:', function () { assert.calledWithExactly(log.info, `Analytics report sent to ${endpoint}`, getStandardAnalyticsReport()); }); + + it('it calls "sendBeacon" as soon as all values are available (before timeout)', function () { + const endpoint = faker.internet.url(); + this.enableAnalytics({ endpoint }); + + navigator.sendBeacon + .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())); + + performStandardAuction(); + sandbox.clock.tick(1); + + assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, getStandardAnalyticsReport()); + }); }); }); @@ -211,7 +224,7 @@ describe('33acrossAnalyticsAdapter:', function () { it('logs a warning', function () { this.enableAnalytics({ timeout: 2000 }); - performStandardAuction(['bidWon', 'auctionEnd']); + performStandardAuction({exclude:['bidWon', 'auctionEnd']}); sandbox.clock.tick(this.defaultTimeout + 1); @@ -225,7 +238,7 @@ describe('33acrossAnalyticsAdapter:', function () { it('logs an error', function () { this.enableAnalytics(); - performStandardAuction(['bidWon', 'auctionEnd']); + performStandardAuction({exclude:['bidWon', 'auctionEnd']}); sandbox.clock.tick(this.defaultTimeout + 1); @@ -250,7 +263,7 @@ describe('33acrossAnalyticsAdapter:', function () { const endpoint = faker.internet.url(); this.enableAnalytics({ endpoint }); - performStandardAuction(['bidWon', 'auctionEnd']); + performStandardAuction({exclude:['bidWon', 'auctionEnd']}); sandbox.clock.tick(this.defaultTimeout + 10); assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, incompleteAnalyticsReport); @@ -271,7 +284,7 @@ describe('33acrossAnalyticsAdapter:', function () { const endpoint = faker.internet.url(); this.enableAnalytics({ endpoint }); - performStandardAuction(['bidWon', 'auctionEnd']); + performStandardAuction({exclude:['bidWon', 'auctionEnd']}); sandbox.clock.tick(this.defaultTimeout + 1); assert.calledWithExactly(log.info, `Analytics report sent to ${endpoint}`, incompleteAnalyticsReport); @@ -281,7 +294,7 @@ describe('33acrossAnalyticsAdapter:', function () { }); }); -function performStandardAuction(exclude = []) { +function performStandardAuction({ exclude = [] } = {}) { const mockEvents = getMockEvents(); const { prebid, gam } = mockEvents; const [auction] = prebid; @@ -327,23 +340,6 @@ function mapToBids(auctions) { ); } -function performAuctionWithMissingBidWon() { - const mockEvents = getMockEvents(); - const { prebid } = mockEvents; - const [auction] = prebid; - - events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); - - auction.BID_REQUESTED.forEach((bidRequestedEvent) => { - events.emit(EVENTS.BID_REQUESTED, bidRequestedEvent); - }); - auction.BID_RESPONSE.forEach((bidResponseEvent) => { - events.emit(EVENTS.BID_RESPONSE, bidResponseEvent); - }); - - events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); -} - function getLocalAssert() { // Derived from ReportDefnition.cue -> AnalyticsReport function isAnalyticsReport(report) { From 9d7657caf33274f8e2455c7cbdc6c6b5f1eb6c19 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Fri, 28 Apr 2023 22:01:51 -0400 Subject: [PATCH 32/41] remove extraneous transaction manager counting & status mechanism and track transactionIds directly Ticket: IDG-677 --- modules/33acrossAnalyticsAdapter.js | 77 ++++++++++++++--------------- 1 file changed, 38 insertions(+), 39 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 827cb7f7579..ece0d3de782 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -80,83 +80,81 @@ export const log = getLogger(); */ /** - * After the first bid is initiated, we wait until every bid is completed before sending the report. + * After the first transaction begins, wait until all transactions are complete + * before calling `onComplete`. If the timeout is reached before all transactions + * are complete, send the report anyway. * - * We will listen for the `bidWon` event to determine when all bids are complete. + * Use this to track all transactions per auction, and send the report as soon + * as all adUnits have been won (or after timeout) even if other bid/auction + * activity is still happening. */ class TransactionManager { + /** + * Milliseconds between activity to allow until this collection automatically completes. + * @type {number} + */ + #sendTimeout; #timeoutId; - #pending = 0; - #timeout; - #transactions = {}; + #transactions = new Set(); + #completed = new Set(); #onComplete; - get #unsent() { - return this.#pending; - } - - set #unsent(value) { - this.#pending = value; - - if (this.#pending <= 0) { - this.#clearTimeout(); - this.#onComplete(); - this.#transactions = {}; - } - } - constructor({ timeout, onComplete }) { - this.#timeout = timeout; + this.#sendTimeout = timeout; this.#onComplete = onComplete; } initiate(transactionId) { - if (this.#transactions[transactionId]) return; - - this.#transactions[transactionId] = { - status: 'waiting' - }; - ++this.#unsent; - + this.#transactions.add(transactionId); this.#restartSendTimeout(); } complete(transactionId) { - if (!this.#transactions[transactionId]) { - log.warn(`transactionId "${transactionId}" was not found. Nothing to enqueue.`); + if (!this.#transactions.has(transactionId)) { + log.warn(`transactionId "${transactionId}" was not found. No transaction to mark as complete.`); return; } - this.#transactions[transactionId].status = 'queued'; - --this.#unsent; - log.info(`Queued transaction "${transactionId}" for delivery. ${this.#unsent} transactions still pending.`, this.#transactions); + this.#transactions.delete(transactionId); + this.#completed.add(transactionId); + log.info(`Marked transaction "${transactionId}" as complete. ${this.#transactions.size} transaction(s) pending.`, {pending: this.#transactions, completed: this.#completed}); + + if (this.#transactions.size === 0) { + this.#flushTransactions(); + } } completeAll(reason) { - Object.keys(this.#transactions).forEach(transactionId => { + for (let transactionId of this.#transactions) { this.complete(transactionId); - }); + }; log.info('All remaining transactions flushed.' + (reason ? ` Reason: ${reason}` : '')); } + #flushTransactions() { + this.#clearSendTimeout(); + this.#transactions = new Set(); + this.#onComplete(); + } + // gulp-eslint is using eslint 6, a version that doesn't support private method syntax // eslint-disable-next-line no-dupe-class-members - #clearTimeout() { + #clearSendTimeout() { return window.clearTimeout(this.#timeoutId); } // eslint-disable-next-line no-dupe-class-members #restartSendTimeout() { - this.#clearTimeout(); + this.#clearSendTimeout(); this.#timeoutId = setTimeout(() => { - if (this.#timeout !== 0) { + if (this.#sendTimeout !== 0) { log.warn(`Timed out waiting for ad transactions to complete. Sending report.`); } - this.#unsent = 0; - }, this.#timeout); + this.#flushTransactions(); + }, this.#sendTimeout); } } @@ -375,6 +373,7 @@ function onAuctionInit({ adUnits, auctionId, bidderRequests }) { createReportFromCache(locals.cache, auctionId), analyticsAdapter.getUrl() ); + delete locals.transactionManagers[auctionId]; } }); } From 1a1ce5732bade4a991c2ae0f66e82b0427370d49 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Mon, 1 May 2023 21:45:51 -0400 Subject: [PATCH 33/41] set default transaction timeout to 10s to better accommodate slower auctions, reverse auctionEnd and bidWon as the default sequence in test event emission, test for wider range of auction scenarios, improvements to clarity/specificity (naming) Ticket: IDG-677 --- modules/33acrossAnalyticsAdapter.js | 49 ++++--- modules/33acrossAnalyticsAdapter.md | 2 +- .../modules/33acrossAnalyticsAdapter_spec.js | 120 ++++++++++++++++-- 3 files changed, 141 insertions(+), 30 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index ece0d3de782..c90c098013e 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -10,7 +10,7 @@ const { EVENTS } = CONSTANTS; const ANALYTICS_VERSION = '1.0.0'; const PROVIDER_NAME = '33across'; -const DEFAULT_TRANSACTION_TIMEOUT = 3000; +const DEFAULT_TRANSACTION_TIMEOUT = 10000; const DEFAULT_ENDPOINT = `${window.origin}/api`; // TODO: Update to production endpoint export const log = getLogger(); @@ -94,9 +94,9 @@ class TransactionManager { * @type {number} */ #sendTimeout; - #timeoutId; - #transactions = new Set(); - #completed = new Set(); + #sendTimeoutId; + #transactionsPending = new Set(); + #transactionsCompleted = new Set(); #onComplete; constructor({ timeout, onComplete }) { @@ -104,28 +104,34 @@ class TransactionManager { this.#onComplete = onComplete; } + status() { + return { + pending: [...this.#transactionsPending], + completed: [...this.#transactionsCompleted], + }; + } + initiate(transactionId) { - this.#transactions.add(transactionId); + this.#transactionsPending.add(transactionId); this.#restartSendTimeout(); } complete(transactionId) { - if (!this.#transactions.has(transactionId)) { + if (!this.#transactionsPending.has(transactionId)) { log.warn(`transactionId "${transactionId}" was not found. No transaction to mark as complete.`); return; } - this.#transactions.delete(transactionId); - this.#completed.add(transactionId); - log.info(`Marked transaction "${transactionId}" as complete. ${this.#transactions.size} transaction(s) pending.`, {pending: this.#transactions, completed: this.#completed}); + this.#transactionsPending.delete(transactionId); + this.#transactionsCompleted.add(transactionId); - if (this.#transactions.size === 0) { + if (this.#transactionsPending.size === 0) { this.#flushTransactions(); } } completeAll(reason) { - for (let transactionId of this.#transactions) { + for (let transactionId of this.#transactionsPending) { this.complete(transactionId); }; @@ -134,21 +140,21 @@ class TransactionManager { #flushTransactions() { this.#clearSendTimeout(); - this.#transactions = new Set(); + this.#transactionsPending = new Set(); this.#onComplete(); } // gulp-eslint is using eslint 6, a version that doesn't support private method syntax // eslint-disable-next-line no-dupe-class-members #clearSendTimeout() { - return window.clearTimeout(this.#timeoutId); + return clearTimeout(this.#sendTimeoutId); } // eslint-disable-next-line no-dupe-class-members #restartSendTimeout() { this.#clearSendTimeout(); - this.#timeoutId = setTimeout(() => { + this.#sendTimeoutId = setTimeout(() => { if (this.#sendTimeout !== 0) { log.warn(`Timed out waiting for ad transactions to complete. Sending report.`); } @@ -256,7 +262,7 @@ function calculateTransactionTimeout(configTimeout) { return configTimeout; } - log.info(`Invalid timeout provided for "options.timeout". Using default timeout of 3000ms.`); + log.info(`Invalid timeout provided for "options.timeout". Using default timeout of ${DEFAULT_TRANSACTION_TIMEOUT}ms.`); return DEFAULT_TRANSACTION_TIMEOUT; } @@ -380,7 +386,6 @@ function onAuctionInit({ adUnits, auctionId, bidderRequests }) { function onBidRequested({ auctionId, bids }) { for (let { bidder, bidId, transactionId, src } of bids) { - locals.transactionManagers[auctionId].initiate(transactionId); getBidsForTransaction(auctionId, transactionId).push({ bidder, bidId, @@ -388,6 +393,10 @@ function onBidRequested({ auctionId, bids }) { hasWon: 0, source: src, }); + + // if there is no manager for this auction, then the auction has already been completed + // eslint-disable-next-line no-unused-expressions + locals.transactionManagers[auctionId]?.initiate(transactionId); } } @@ -421,11 +430,17 @@ function onBidWon({ auctionId, requestId, transactionId }) { } ); + // eslint-disable-next-line no-unused-expressions locals.transactionManagers[auctionId]?.complete(transactionId); } function onAuctionEnd({ auctionId }) { - locals.transactionManagers[auctionId]?.completeAll('auctionEnd'); + // auctionEnd event *sometimes* fires before bidWon events, + // even when auction is ending because all bids have been won. + setTimeout(() => { + // eslint-disable-next-line no-unused-expressions + locals.transactionManagers[auctionId]?.completeAll('auctionEnd'); + }, 0); } /** diff --git a/modules/33acrossAnalyticsAdapter.md b/modules/33acrossAnalyticsAdapter.md index be9cbc9a961..94c94ae0470 100644 --- a/modules/33acrossAnalyticsAdapter.md +++ b/modules/33acrossAnalyticsAdapter.md @@ -42,7 +42,7 @@ pbjs.enableAnalytics({ * will be sent regardless of auction state. * [optional] */ - timeout: 3000 + timeout: 10000 } }); ``` diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index eabc86db229..995ec4c18e5 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -110,7 +110,7 @@ describe('33acrossAnalyticsAdapter:', function () { describe('Event Handling', function () { beforeEach(function () { - this.defaultTimeout = 3000; + this.defaultTimeout = 10000; this.enableAnalytics = (options) => { analyticsAdapter.enableAnalytics({ options: { @@ -195,6 +195,100 @@ describe('33acrossAnalyticsAdapter:', function () { }); }); + context('when an auction report was already sent', function () { + context('and a new bid won event is returned after the report completes', function () { + it('it finishes the auction without error', function () { + const incompleteAnalyticsReport = getStandardAnalyticsReport(); + incompleteAnalyticsReport.auctions.forEach(auction => { + auction.adUnits.forEach(adUnit => { + adUnit.bids.forEach(bid => { + delete bid.bidResponse; + bid.hasWon = 0; + bid.status = 'pending'; + }); + }); + }); + + this.enableAnalytics(); + const { prebid: [auction] } = getMockEvents(); + + events.emit(EVENTS.AUCTION_INIT, auction.AUCTION_INIT); + for (let bidRequestedEvent of auction.BID_REQUESTED) { + events.emit(EVENTS.BID_REQUESTED, bidRequestedEvent); + }; + + sandbox.clock.tick(this.defaultTimeout + 1); + + for (let bidResponseEvent of auction.BID_RESPONSE) { + events.emit(EVENTS.BID_RESPONSE, bidResponseEvent); + }; + for (let bidWonEvent of auction.BID_WON) { + events.emit(EVENTS.BID_WON, bidWonEvent); + }; + + events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); + + sandbox.clock.tick(1); + + assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, 'http://test-endpoint', incompleteAnalyticsReport); + }); + }); + + context('and another auction completes after that', function () { + it('it sends the new report', function () { + const endpoint = faker.internet.url(); + this.enableAnalytics({ endpoint }); + + navigator.sendBeacon + .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())); + + performStandardAuction(); + sandbox.clock.tick(this.defaultTimeout + 1); + + performStandardAuction(); + sandbox.clock.tick(this.defaultTimeout + 1); + + assert.calledTwice(navigator.sendBeacon); + }); + }); + }); + + context('when two auctions overlap', function() { + it('it sends a report for each auction', function () { + const endpoint = faker.internet.url(); + this.enableAnalytics({ endpoint }); + + navigator.sendBeacon + .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())); + + performStandardAuction(); + performStandardAuction(); + sandbox.clock.tick(this.defaultTimeout + 1); + + assert.calledTwice(navigator.sendBeacon); + }); + }); + + context('when an AUCTION_END event is received before BID_WON events', function () { + it('it sends a report with the bids that have won', function () { + const endpoint = faker.internet.url(); + this.enableAnalytics({ endpoint }); + + navigator.sendBeacon + .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())); + + const { prebid: [auction] } = getMockEvents(); + + performStandardAuction({ exclude: [EVENTS.BID_WON] }); + + for (let bidWon of auction.BID_WON) { + events.emit(EVENTS.BID_WON, bidWon); + } + + assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, getStandardAnalyticsReport()); + }); + }); + context('when a BID_WON event is received', function () { context('and there is no record of that bid being requested', function () { it('logs a warning message', function () { @@ -224,7 +318,7 @@ describe('33acrossAnalyticsAdapter:', function () { it('logs a warning', function () { this.enableAnalytics({ timeout: 2000 }); - performStandardAuction({exclude:['bidWon', 'auctionEnd']}); + performStandardAuction({exclude: ['bidWon', 'auctionEnd']}); sandbox.clock.tick(this.defaultTimeout + 1); @@ -238,7 +332,7 @@ describe('33acrossAnalyticsAdapter:', function () { it('logs an error', function () { this.enableAnalytics(); - performStandardAuction({exclude:['bidWon', 'auctionEnd']}); + performStandardAuction({exclude: ['bidWon', 'auctionEnd']}); sandbox.clock.tick(this.defaultTimeout + 1); @@ -263,8 +357,8 @@ describe('33acrossAnalyticsAdapter:', function () { const endpoint = faker.internet.url(); this.enableAnalytics({ endpoint }); - performStandardAuction({exclude:['bidWon', 'auctionEnd']}); - sandbox.clock.tick(this.defaultTimeout + 10); + performStandardAuction({exclude: ['bidWon', 'auctionEnd']}); + sandbox.clock.tick(this.defaultTimeout + 1); assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, incompleteAnalyticsReport); }); @@ -284,7 +378,7 @@ describe('33acrossAnalyticsAdapter:', function () { const endpoint = faker.internet.url(); this.enableAnalytics({ endpoint }); - performStandardAuction({exclude:['bidWon', 'auctionEnd']}); + performStandardAuction({exclude: ['bidWon', 'auctionEnd']}); sandbox.clock.tick(this.defaultTimeout + 1); assert.calledWithExactly(log.info, `Analytics report sent to ${endpoint}`, incompleteAnalyticsReport); @@ -321,15 +415,17 @@ function performStandardAuction({ exclude = [] } = {}) { } } + // Note: AUCTION_END *frequently* (but not always) emits before BID_WON, + // even if the auction is ending because all bids have been won. + if (!exclude.includes(EVENTS.AUCTION_END)) { + events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); + } + if (!exclude.includes(EVENTS.BID_WON)) { for (let bidWonEvent of auction.BID_WON) { events.emit(EVENTS.BID_WON, bidWonEvent); }; } - - if (!exclude.includes(EVENTS.AUCTION_END)) { - events.emit(EVENTS.AUCTION_END, auction.AUCTION_END); - } } function mapToBids(auctions) { @@ -401,6 +497,7 @@ function getLocalAssert() { } function calledOnceWithStringJsonEquivalent(sinonSpy, ...args) { + sinon.assert.calledOnce(sinonSpy); args.forEach((arg, i) => { const stubCallArgs = sinonSpy.firstCall.args[i] @@ -412,10 +509,9 @@ function getLocalAssert() { }); } + sinon.assert.expose(assert, { prefix: '' }); return { ...assert, - calledWithExactly: sinon.assert.calledWithExactly, - alwaysCalledWithExactly: sinon.assert.alwaysCalledWithExactly, calledOnceWithStringJsonEquivalent, isAnalyticsReport, isAuction, From 2209d17671ae31e136c25f5219dec1def706e3b0 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Mon, 1 May 2023 21:50:10 -0400 Subject: [PATCH 34/41] fix invalid timeout test Ticket: IDG-677 --- test/spec/modules/33acrossAnalyticsAdapter_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 995ec4c18e5..4fa19f63a61 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -93,7 +93,7 @@ describe('33acrossAnalyticsAdapter:', function () { }); analyticsAdapter.disableAnalytics(); - assert.calledWithExactly(log.info, 'Invalid timeout provided for "options.timeout". Using default timeout of 3000ms.'); + assert.calledWithExactly(log.info, 'Invalid timeout provided for "options.timeout". Using default timeout of 10000ms.'); log.info.resetHistory(); }); }); From c4c7bab485a2be1aa2a7f4c6d7cf1de040a1ce53 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Wed, 3 May 2023 14:08:46 -0400 Subject: [PATCH 35/41] add support for usp Ticket: IDG-677 --- modules/33acrossAnalyticsAdapter.js | 17 +++++-- .../modules/33acrossAnalyticsAdapter_spec.js | 48 +++++++++++++++++-- 2 files changed, 59 insertions(+), 6 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index c90c098013e..48dca73f876 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -1,6 +1,6 @@ import { deepAccess, logInfo, logWarn, logError } from '../src/utils.js'; import buildAdapter from '../libraries/analyticsAdapter/AnalyticsAdapter.js'; -import adapterManager from '../src/adapterManager.js'; +import adapterManager, { uspDataHandler } from '../src/adapterManager.js'; import CONSTANTS from '../src/constants.json'; /** @@ -29,6 +29,7 @@ export const log = getLogger(); * @property {string} pid Partner ID * @property {Object} auctions * @property {Object} bidsWon + * @property {string} [usPrivacy] */ /** @@ -233,6 +234,11 @@ function enableAnalyticsWrapper(config) { auctions: {}, }; + const usPrivacy = uspDataHandler.getConsentData(); + if (/^1[Y|N|-]{3}$/.test(usPrivacy)) { + locals.cache.usPrivacy = usPrivacy; + } + analyticsAdapter.originEnableAnalytics(config); } @@ -289,15 +295,20 @@ export default analyticsAdapter; * @return {AnalyticsReport} Analytics report */ function createReportFromCache(analyticsCache, completedAuctionId) { - const { pid, auctions } = analyticsCache; + const { pid, auctions, usPrivacy } = analyticsCache; - return { + const report = { pid, src: 'pbjs', analyticsVersion: ANALYTICS_VERSION, pbjsVersion: '$prebid.version$', // Replaced by build script auctions: [ auctions[completedAuctionId] ], } + if (usPrivacy) { + report.usPrivacy = usPrivacy; + } + + return report; } function getBidsForTransaction(auctionId, transactionId) { diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 4fa19f63a61..f549537ab10 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -4,6 +4,7 @@ import * as mockGpt from 'test/spec/integration/faker/googletag.js'; import * as events from 'src/events.js'; import * as faker from 'faker'; import CONSTANTS from 'src/constants.json'; +import { uspDataHandler } from '../../../src/adapterManager'; const { EVENTS, BID_STATUS } = CONSTANTS; describe('33acrossAnalyticsAdapter:', function () { @@ -141,7 +142,7 @@ describe('33acrossAnalyticsAdapter:', function () { assert.lengthOf(mapToBids(auctions).filter(bid => bid.hasWon), 3); }); - it('it calls "sendBeacon" with the appropriate string', function () { + it('it calls "sendBeacon" with the correct report string', function () { const endpoint = faker.internet.url(); this.enableAnalytics({ endpoint }); @@ -181,6 +182,44 @@ describe('33acrossAnalyticsAdapter:', function () { assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, getStandardAnalyticsReport()); }); }); + + context('and a valid US Privacy configuration is present', function () { + ['1YNY', '1---', '1NY-', '1Y--', '1--Y', '1N--', '1--N', '1NNN'].forEach(consent => { + it(`it calls "sendBeacon" with a report containing the "${consent}" privacy string`, function () { + sandbox.stub(uspDataHandler, 'getConsentData').returns(consent); + this.enableAnalytics(); + + const reportWithConsent = { + ...getStandardAnalyticsReport(), + usPrivacy: consent + }; + navigator.sendBeacon + .withArgs('http://test-endpoint', reportWithConsent); + + performStandardAuction(); + sandbox.clock.tick(this.defaultTimeout + 1); + + assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, 'http://test-endpoint', reportWithConsent); + }); + }); + }); + + context('and an *invalid* US Privacy configuration is present', function () { + ['2ABC', '1234', '1YNYN', '11YNY'].forEach(consent => { + it('it calls "sendBeacon" without the usPrivacy field', function () { + sandbox.stub(uspDataHandler, 'getConsentData').returns(consent); + this.enableAnalytics(); + + navigator.sendBeacon + .withArgs('http://test-endpoint', getStandardAnalyticsReport()); + + performStandardAuction(); + sandbox.clock.tick(this.defaultTimeout + 1); + + assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, 'http://test-endpoint', getStandardAnalyticsReport()); + }); + }); + }); }); context('when an error occurs while sending the AnalyticsReport', function () { @@ -439,11 +478,14 @@ function mapToBids(auctions) { function getLocalAssert() { // Derived from ReportDefnition.cue -> AnalyticsReport function isAnalyticsReport(report) { - assert.hasAllKeys(report, ['analyticsVersion', 'pid', 'src', 'pbjsVersion', 'auctions']); + assert.containsAllKeys(report, ['analyticsVersion', 'pid', 'src', 'pbjsVersion', 'auctions']); + if ('usPrivacy' in report) { + assert.match(report.usPrivacy, /[0|1][Y|N|-]{3}/); + } assert.equal(report.analyticsVersion, '1.0.0'); assert.isString(report.pid); assert.isString(report.src); - assert.isString(report.pbjsVersion); + assert.equal(report.pbjsVersion, '$prebid.version$'); assert.isArray(report.auctions); assert.isAbove(report.auctions.length, 0); report.auctions.forEach(isAuction); From 02200f75de1466f6a5f25069e2950246e68a994e Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Thu, 4 May 2023 09:02:22 -0400 Subject: [PATCH 36/41] pre-clear event emitter in case state not cleared by other test suites Ticket: IDG-677 --- test/spec/modules/33acrossAnalyticsAdapter_spec.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index f549537ab10..d0b3ef226ad 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -11,6 +11,12 @@ describe('33acrossAnalyticsAdapter:', function () { let sandbox; let assert = getLocalAssert(); + /* this is required in case other providers' tests do not clear state */ + before(function () { + mockGpt.disable(); + events.clearEvents(); + }); + beforeEach(function () { mockGpt.enable(); From 243fe243c218371da6ba32358dba4582d16aef00 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Thu, 4 May 2023 09:18:05 -0400 Subject: [PATCH 37/41] tests: switch pre-clearing of "events" state with initiating our own stub of "events" emitter Ticket: IDG-677 --- test/spec/modules/33acrossAnalyticsAdapter_spec.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index d0b3ef226ad..6fde03633e3 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -11,12 +11,6 @@ describe('33acrossAnalyticsAdapter:', function () { let sandbox; let assert = getLocalAssert(); - /* this is required in case other providers' tests do not clear state */ - before(function () { - mockGpt.disable(); - events.clearEvents(); - }); - beforeEach(function () { mockGpt.enable(); @@ -26,6 +20,8 @@ describe('33acrossAnalyticsAdapter:', function () { }, }); + sandbox.stub(events, 'getEvents').returns([]); + sandbox.spy(log, 'info'); sandbox.spy(log, 'warn'); sandbox.spy(log, 'error'); @@ -41,7 +37,6 @@ describe('33acrossAnalyticsAdapter:', function () { afterEach(function () { analyticsAdapter.disableAnalytics(); mockGpt.disable(); - events.clearEvents(); sandbox.restore(); }); From 39c75210f544c735a9f8b160172e98c2d0f5d375 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Thu, 4 May 2023 10:51:44 -0400 Subject: [PATCH 38/41] adopt default endpoint without logging when endpoint value is unspecified Ticket: IDG-677 --- modules/33acrossAnalyticsAdapter.js | 6 +++--- test/spec/modules/33acrossAnalyticsAdapter_spec.js | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 48dca73f876..c01dbb345e7 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -11,7 +11,7 @@ const { EVENTS } = CONSTANTS; const ANALYTICS_VERSION = '1.0.0'; const PROVIDER_NAME = '33across'; const DEFAULT_TRANSACTION_TIMEOUT = 10000; -const DEFAULT_ENDPOINT = `${window.origin}/api`; // TODO: Update to production endpoint +export const DEFAULT_ENDPOINT = `${window.origin}/api`; // TODO: Update to production endpoint export const log = getLogger(); @@ -246,8 +246,8 @@ function enableAnalyticsWrapper(config) { * @param {string} [endpoint] * @returns {string} */ -function calculateEndpoint(endpoint) { - if (typeof endpoint === 'string' && endpoint.length > 0 && endpoint.startsWith('http')) { +function calculateEndpoint(endpoint = DEFAULT_ENDPOINT) { + if (typeof endpoint === 'string' && endpoint.startsWith('http')) { return endpoint; } diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 6fde03633e3..701533c1d11 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -5,6 +5,7 @@ import * as events from 'src/events.js'; import * as faker from 'faker'; import CONSTANTS from 'src/constants.json'; import { uspDataHandler } from '../../../src/adapterManager'; +import { DEFAULT_ENDPOINT } from '../../../modules/33acrossAnalyticsAdapter'; const { EVENTS, BID_STATUS } = CONSTANTS; describe('33acrossAnalyticsAdapter:', function () { @@ -43,14 +44,14 @@ describe('33acrossAnalyticsAdapter:', function () { describe('enableAnalytics:', function () { context('When pid is given', function () { context('but endpoint is not', function () { - it('it logs an info message', function () { + it('uses the default endpoint', function () { analyticsAdapter.enableAnalytics({ options: { pid: 'test-pid', }, }); - assert.calledWithExactly(log.info, 'Invalid endpoint provided for "options.endpoint". Using default endpoint.'); + assert.equal(analyticsAdapter.getUrl(), DEFAULT_ENDPOINT); }); }); From 14635ce0c864ea779021bfab0ceb17b24cf586b7 Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Thu, 4 May 2023 10:53:11 -0400 Subject: [PATCH 39/41] update docs to better reflect analytics adapter standard use-case and behavior Ticket: IDG-677 --- modules/33acrossAnalyticsAdapter.md | 51 +++++++++++++++++++---------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.md b/modules/33acrossAnalyticsAdapter.md index 94c94ae0470..2db0da78125 100644 --- a/modules/33acrossAnalyticsAdapter.md +++ b/modules/33acrossAnalyticsAdapter.md @@ -6,23 +6,47 @@ Module Type: Analytics Adapter Maintainer: headerbidding@33across.com ``` -# Description +#### About -## Configuration +This analytics adapter collects data about the performance of your ad slots +for each auction run on your site. The data is sent at the earliest opportunity +for each auction to provide a more complete picture of your ad performance. + +The analytics adapter is free to use! +However, the publisher must work with our account management team to obtain +a Publisher/Partner ID (PID). If you are already using the 33Across PID, +you may use your existing PID with the analytics adapter. + +The 33Across privacy policy is at . + +#### Analytics Options + +| Name | Scope | Example | Type | Description | +|-----------|----------|---------|-------|-------------| +| `pid` | required | 12345 | `int` | 33Across PID (Publisher ID) | +| `timeout` | optional | 10000 | `int` | Milliseconds to wait after last seen auction transaction before sending report. | + +#### Configuration + +The data is sent at the earliest opportunity for each auction to provide +a more complete picture of your ad performance, even if the auction is interrupted +by a page navigation. At the latest, the adapter will always send the report +when the page is unloaded, at the end of the auction, or after the timeout, +whichever comes first. In order to guarantee consistent reports of your ad slot behavior, we recommend -including the GPT Pre-Auction Module, `gptPreAuction`. If you are compiling from -source, this might look something like: +including the GPT Pre-Auction Module, `gptPreAuction`. This module is included +by default when Prebid is downloaded. If you are compiling from source, +this might look something like: ```sh -gulp bundle --modules=gptPreAuction,consentManagement,consentManagementGpp,consentManagementUsp,enrichmentFpdModule,gdprEnforcement,33acrossBidAdapter,33acrossAnalyticsAdapter +gulp bundle --modules=gptPreAuction,consentManagement,consentManagementGpp,consentManagementUsp,enrichmentFpdModule,gdprEnforcement,33acrossBidAdapter,33acrossIdSystem,33acrossAnalyticsAdapter ``` Enable the 33Across Analytics Adapter in Prebid.js using the analytics provider `33across` -and options as seen in the example below. The analytics adapter is free to use! -However, the publisher must work with our account management team to obtain -a Publisher/Partner ID (PID). If you are already using the 33Across PID, -you may use your existing PID with the analytics adapter. +and options as seen in the example below. + +#### Example Configuration ```js pbjs.enableAnalytics({ @@ -32,11 +56,6 @@ pbjs.enableAnalytics({ * The 33Across PID (PID). */ pid: 12345, - /** - * Defaults to the 33Across Analytics endpoint if not provided. - * [optional] - */ - endpoint: 'https://localhost:9999/event', /** * Timeout in milliseconds after which an auction report * will be sent regardless of auction state. @@ -46,7 +65,3 @@ pbjs.enableAnalytics({ } }); ``` - -## Privacy Policy - -The 33Across privacy policy is at From 999c2ed57ef01841229d6935491a7b1073c0416a Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Thu, 4 May 2023 13:21:02 -0400 Subject: [PATCH 40/41] refactoring: renaming and reducing mocks to only event data used Ticket: IDG-677 --- modules/33acrossAnalyticsAdapter.js | 34 +- .../modules/33acrossAnalyticsAdapter_spec.js | 1946 +---------------- 2 files changed, 102 insertions(+), 1878 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index c01dbb345e7..9a1936b0445 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -10,6 +10,7 @@ const { EVENTS } = CONSTANTS; const ANALYTICS_VERSION = '1.0.0'; const PROVIDER_NAME = '33across'; +const GVLID = 58; const DEFAULT_TRANSACTION_TIMEOUT = 10000; export const DEFAULT_ENDPOINT = `${window.origin}/api`; // TODO: Update to production endpoint @@ -259,11 +260,7 @@ function calculateEndpoint(endpoint = DEFAULT_ENDPOINT) { * @param {number} [configTimeout] * @returns {number} Transaction Timeout */ -function calculateTransactionTimeout(configTimeout) { - if (typeof configTimeout === 'undefined') { - return DEFAULT_TRANSACTION_TIMEOUT; - } - +function calculateTransactionTimeout(configTimeout = DEFAULT_TRANSACTION_TIMEOUT) { if (typeof configTimeout === 'number' && configTimeout >= 0) { return configTimeout; } @@ -284,7 +281,7 @@ analyticsAdapter.disableAnalytics = function () { adapterManager.registerAnalyticsAdapter({ adapter: analyticsAdapter, code: PROVIDER_NAME, - gvlid: 58, + gvlid: GVLID, }); export default analyticsAdapter; @@ -362,6 +359,7 @@ function analyticEventHandler({ eventType, args }) { function onAuctionInit({ adUnits, auctionId, bidderRequests }) { if (typeof auctionId !== 'string' || !Array.isArray(bidderRequests)) { log.error('Analytics adapter failed to parse auction.'); + return; } locals.cache.auctions[auctionId] = { @@ -406,8 +404,8 @@ function onBidRequested({ auctionId, bids }) { }); // if there is no manager for this auction, then the auction has already been completed - // eslint-disable-next-line no-unused-expressions - locals.transactionManagers[auctionId]?.initiate(transactionId); + locals.transactionManagers[auctionId] && + locals.transactionManagers[auctionId].initiate(transactionId); } } @@ -428,29 +426,31 @@ function onBidResponse({ requestId, auctionId, cpm, currency, originalCpm, floor ); } -function onBidWon({ auctionId, requestId, transactionId }) { +function onBidWon(bidWon) { + const { auctionId, requestId, transactionId } = bidWon; const bid = getBid(auctionId, requestId); if (!bid) { log.error(`Cannot find bid "${requestId}". Auction ID: "${auctionId}". Transaction ID: "${transactionId}".`); return; } - Object.assign(bid, - { - hasWon: 1 + for (let key in bid) { + if (key in bidWon) { + bid[key] = bidWon[key]; } - ); + } + bid.hasWon = 1; - // eslint-disable-next-line no-unused-expressions - locals.transactionManagers[auctionId]?.complete(transactionId); + locals.transactionManagers[auctionId] && + locals.transactionManagers[auctionId].complete(transactionId); } function onAuctionEnd({ auctionId }) { // auctionEnd event *sometimes* fires before bidWon events, // even when auction is ending because all bids have been won. setTimeout(() => { - // eslint-disable-next-line no-unused-expressions - locals.transactionManagers[auctionId]?.completeAll('auctionEnd'); + locals.transactionManagers[auctionId] && + locals.transactionManagers[auctionId].completeAll('auctionEnd'); }, 0); } diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 701533c1d11..0c410965e9e 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -29,7 +29,7 @@ describe('33acrossAnalyticsAdapter:', function () { sandbox.stub(navigator, 'sendBeacon').callsFake(function (url, data) { const json = JSON.parse(data); - assert.isAnalyticsReport(json); + assert.isValidAnalyticsReport(json); return true; }); @@ -107,7 +107,7 @@ describe('33acrossAnalyticsAdapter:', function () { // check that upcoming tests are derived from a valid report describe('Report Mocks', function () { it('the standard report should have the correct format', function () { - assert.isAnalyticsReport(getStandardAnalyticsReport()); + assert.isValidAnalyticsReport(createReportWithThreeBidWonEvents()); }); }); @@ -128,12 +128,12 @@ describe('33acrossAnalyticsAdapter:', function () { context('when an auction is complete', function () { context('and the AnalyticsReport is sent successfully to the given endpoint', function () { - it('it calls "sendBeacon" with 3 won bids', function () { + it('it calls "sendBeacon" with all won bids', function () { const endpoint = faker.internet.url(); this.enableAnalytics({ endpoint }); navigator.sendBeacon - .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())); + .withArgs(endpoint, JSON.stringify(createReportWithThreeBidWonEvents())); performStandardAuction(); sandbox.clock.tick(this.defaultTimeout + 1000); @@ -149,12 +149,12 @@ describe('33acrossAnalyticsAdapter:', function () { this.enableAnalytics({ endpoint }); navigator.sendBeacon - .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())); + .withArgs(endpoint, JSON.stringify(createReportWithThreeBidWonEvents())); performStandardAuction(); sandbox.clock.tick(this.defaultTimeout + 1000); - assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, getStandardAnalyticsReport()); + assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, createReportWithThreeBidWonEvents()); }); it('it logs an info message containing the report', function () { @@ -162,13 +162,13 @@ describe('33acrossAnalyticsAdapter:', function () { this.enableAnalytics({ endpoint }); navigator.sendBeacon - .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())) + .withArgs(endpoint, JSON.stringify(createReportWithThreeBidWonEvents())) .returns(true); performStandardAuction(); sandbox.clock.tick(this.defaultTimeout + 1); - assert.calledWithExactly(log.info, `Analytics report sent to ${endpoint}`, getStandardAnalyticsReport()); + assert.calledWithExactly(log.info, `Analytics report sent to ${endpoint}`, createReportWithThreeBidWonEvents()); }); it('it calls "sendBeacon" as soon as all values are available (before timeout)', function () { @@ -176,12 +176,12 @@ describe('33acrossAnalyticsAdapter:', function () { this.enableAnalytics({ endpoint }); navigator.sendBeacon - .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())); + .withArgs(endpoint, JSON.stringify(createReportWithThreeBidWonEvents())); performStandardAuction(); sandbox.clock.tick(1); - assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, getStandardAnalyticsReport()); + assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, createReportWithThreeBidWonEvents()); }); }); @@ -192,7 +192,7 @@ describe('33acrossAnalyticsAdapter:', function () { this.enableAnalytics(); const reportWithConsent = { - ...getStandardAnalyticsReport(), + ...createReportWithThreeBidWonEvents(), usPrivacy: consent }; navigator.sendBeacon @@ -213,12 +213,12 @@ describe('33acrossAnalyticsAdapter:', function () { this.enableAnalytics(); navigator.sendBeacon - .withArgs('http://test-endpoint', getStandardAnalyticsReport()); + .withArgs('http://test-endpoint', createReportWithThreeBidWonEvents()); performStandardAuction(); sandbox.clock.tick(this.defaultTimeout + 1); - assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, 'http://test-endpoint', getStandardAnalyticsReport()); + assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, 'http://test-endpoint', createReportWithThreeBidWonEvents()); }); }); }); @@ -232,14 +232,14 @@ describe('33acrossAnalyticsAdapter:', function () { performStandardAuction(); sandbox.clock.tick(this.defaultTimeout + 1); - assert.calledWithExactly(log.error, 'Analytics report exceeded User-Agent data limits and was not sent.', getStandardAnalyticsReport()); + assert.calledWithExactly(log.error, 'Analytics report exceeded User-Agent data limits and was not sent.', createReportWithThreeBidWonEvents()); }); }); context('when an auction report was already sent', function () { context('and a new bid won event is returned after the report completes', function () { it('it finishes the auction without error', function () { - const incompleteAnalyticsReport = getStandardAnalyticsReport(); + const incompleteAnalyticsReport = createReportWithThreeBidWonEvents(); incompleteAnalyticsReport.auctions.forEach(auction => { auction.adUnits.forEach(adUnit => { adUnit.bids.forEach(bid => { @@ -281,7 +281,7 @@ describe('33acrossAnalyticsAdapter:', function () { this.enableAnalytics({ endpoint }); navigator.sendBeacon - .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())); + .withArgs(endpoint, JSON.stringify(createReportWithThreeBidWonEvents())); performStandardAuction(); sandbox.clock.tick(this.defaultTimeout + 1); @@ -300,7 +300,7 @@ describe('33acrossAnalyticsAdapter:', function () { this.enableAnalytics({ endpoint }); navigator.sendBeacon - .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())); + .withArgs(endpoint, JSON.stringify(createReportWithThreeBidWonEvents())); performStandardAuction(); performStandardAuction(); @@ -316,7 +316,7 @@ describe('33acrossAnalyticsAdapter:', function () { this.enableAnalytics({ endpoint }); navigator.sendBeacon - .withArgs(endpoint, JSON.stringify(getStandardAnalyticsReport())); + .withArgs(endpoint, JSON.stringify(createReportWithThreeBidWonEvents())); const { prebid: [auction] } = getMockEvents(); @@ -326,7 +326,7 @@ describe('33acrossAnalyticsAdapter:', function () { events.emit(EVENTS.BID_WON, bidWon); } - assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, getStandardAnalyticsReport()); + assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, createReportWithThreeBidWonEvents()); }); }); @@ -384,36 +384,18 @@ describe('33acrossAnalyticsAdapter:', function () { context('and the incomplete report has been sent successfully', function () { it('it sends a report string', function () { - const incompleteAnalyticsReport = getStandardAnalyticsReport(); - incompleteAnalyticsReport.auctions.forEach(auction => { - auction.adUnits.forEach(adUnit => { - adUnit.bids.forEach(bid => { - bid.hasWon = 0; - }); - }); - }); - navigator.sendBeacon.returns(true); - const endpoint = faker.internet.url(); - this.enableAnalytics({ endpoint }); + this.enableAnalytics(); performStandardAuction({exclude: ['bidWon', 'auctionEnd']}); sandbox.clock.tick(this.defaultTimeout + 1); - assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, endpoint, incompleteAnalyticsReport); + const incompleteSentBid = JSON.parse(navigator.sendBeacon.firstCall.args[1]).auctions[0].adUnits[1].bids[0]; + assert.strictEqual(incompleteSentBid.hasWon, 0); }); it('it logs an info message', function () { - const incompleteAnalyticsReport = getStandardAnalyticsReport(); - incompleteAnalyticsReport.auctions.forEach(auction => { - auction.adUnits.forEach(adUnit => { - adUnit.bids.forEach(bid => { - bid.hasWon = 0; - }); - }); - }); - navigator.sendBeacon.returns(true); const endpoint = faker.internet.url(); @@ -422,7 +404,7 @@ describe('33acrossAnalyticsAdapter:', function () { performStandardAuction({exclude: ['bidWon', 'auctionEnd']}); sandbox.clock.tick(this.defaultTimeout + 1); - assert.calledWithExactly(log.info, `Analytics report sent to ${endpoint}`, incompleteAnalyticsReport); + assert.calledWith(log.info, `Analytics report sent to ${endpoint}`); }); }); }); @@ -450,12 +432,6 @@ function performStandardAuction({ exclude = [] } = {}) { }; } - if (!exclude.includes('slotRenderEnded')) { - for (let gEvent of gam.slotRenderEnded) { - mockGpt.emitEvent(gEvent); - } - } - // Note: AUCTION_END *frequently* (but not always) emits before BID_WON, // even if the auction is ending because all bids have been won. if (!exclude.includes(EVENTS.AUCTION_END)) { @@ -478,8 +454,7 @@ function mapToBids(auctions) { } function getLocalAssert() { - // Derived from ReportDefnition.cue -> AnalyticsReport - function isAnalyticsReport(report) { + function isValidAnalyticsReport(report) { assert.containsAllKeys(report, ['analyticsVersion', 'pid', 'src', 'pbjsVersion', 'auctions']); if ('usPrivacy' in report) { assert.match(report.usPrivacy, /[0|1][Y|N|-]{3}/); @@ -490,16 +465,16 @@ function getLocalAssert() { assert.equal(report.pbjsVersion, '$prebid.version$'); assert.isArray(report.auctions); assert.isAbove(report.auctions.length, 0); - report.auctions.forEach(isAuction); + report.auctions.forEach(isValidAuction); } - function isAuction(auction) { + function isValidAuction(auction) { assert.hasAllKeys(auction, ['adUnits', 'auctionId', 'userIds']); assert.isArray(auction.adUnits); assert.isString(auction.auctionId); assert.isArray(auction.userIds); - auction.adUnits.forEach(isAdUnit); + auction.adUnits.forEach(isValidAdUnit); } - function isAdUnit(adUnit) { + function isValidAdUnit(adUnit) { assert.hasAllKeys(adUnit, ['transactionId', 'adUnitCode', 'slotId', 'mediaTypes', 'sizes', 'bids']); assert.isString(adUnit.transactionId); assert.isString(adUnit.adUnitCode); @@ -507,14 +482,14 @@ function getLocalAssert() { assert.isArray(adUnit.mediaTypes); assert.isArray(adUnit.sizes); assert.isArray(adUnit.bids); - adUnit.mediaTypes.forEach(isMediaType); - adUnit.sizes.forEach(isSizeString); - adUnit.bids.forEach(isBid); + adUnit.mediaTypes.forEach(isValidMediaType); + adUnit.sizes.forEach(isValidSizeString); + adUnit.bids.forEach(isValidBid); } - function isBid(bid) { + function isValidBid(bid) { assert.containsAllKeys(bid, ['bidder', 'bidId', 'source', 'status', 'hasWon']); if ('bidResponse' in bid) { - isBidResponse(bid.bidResponse); + isValidBidResponse(bid.bidResponse); } assert.isString(bid.bidder); assert.isString(bid.bidId); @@ -522,21 +497,21 @@ function getLocalAssert() { assert.oneOf(bid.status, [...Object.values(BID_STATUS), 'pending']); assert.oneOf(bid.hasWon, [0, 1]); } - function isBidResponse(bidResponse) { + function isValidBidResponse(bidResponse) { assert.containsAllKeys(bidResponse, ['mediaType', 'size', 'cur', 'cpm', 'cpmFloor']); if ('cpmOrig' in bidResponse) { assert.isNumber(bidResponse.cpmOrig); } - isMediaType(bidResponse.mediaType); - isSizeString(bidResponse.size); + isValidMediaType(bidResponse.mediaType); + isValidSizeString(bidResponse.size); assert.isString(bidResponse.cur); assert.isNumber(bidResponse.cpm); assert.isNumber(bidResponse.cpmFloor); } - function isMediaType(mediaType) { + function isValidMediaType(mediaType) { assert.oneOf(mediaType, ['banner', 'video', 'native']); } - function isSizeString(size) { + function isValidSizeString(size) { assert.match(size, /[0-9]+x[0-9]+/); } @@ -557,17 +532,17 @@ function getLocalAssert() { return { ...assert, calledOnceWithStringJsonEquivalent, - isAnalyticsReport, - isAuction, - isAdUnit, - isBid, - isBidResponse, - isMediaType, - isSizeString + isValidAnalyticsReport, + isValidAuction, + isValidAdUnit, + isValidBid, + isValidBidResponse, + isValidMediaType, + isValidSizeString, } }; -function getStandardAnalyticsReport() { +function createReportWithThreeBidWonEvents() { return { pid: 'test-pid', src: 'pbjs', @@ -605,7 +580,7 @@ function getStandardAnalyticsReport() { bidder: 'bidder0', bidId: '21ad295f40dd7ab', source: 'client', - status: 'targetingSet', + status: 'rendered', bidResponse: { cpm: 1.5, cur: 'USD', @@ -645,65 +620,17 @@ function getStandardAnalyticsReport() { } function getMockEvents() { - const ad = '
ad
'; const auctionId = 'auction-000'; + const userId = { + '33acrossId': { + envelope: 'v1.0014', + }, + }; return { - gam: { - slotRenderEnded: [ - { - serviceName: 'publisher_ads', - slot: mockGpt.makeSlot({ code: 'box' }), - isEmpty: true, - slotContentChanged: true, - size: null, - advertiserId: null, - campaignId: null, - creativeId: null, - creativeTemplateId: null, - labelIds: null, - lineItemId: null, - isBackfill: false, - }, - { - serviceName: 'publisher_ads', - slot: mockGpt.makeSlot({ code: 'box' }), - isEmpty: false, - slotContentChanged: true, - size: [1, 1], - advertiserId: 12345, - campaignId: 400000001, - creativeId: 6789, - creativeTemplateId: null, - labelIds: null, - lineItemId: 1011, - isBackfill: false, - yieldGroupIds: null, - companyIds: null, - }, - { - serviceName: 'publisher_ads', - slot: mockGpt.makeSlot({ code: 'box' }), - isEmpty: false, - slotContentChanged: true, - size: [728, 90], - advertiserId: 12346, - campaignId: 299999000, - creativeId: 6790, - creativeTemplateId: null, - labelIds: null, - lineItemId: 1012, - isBackfill: false, - yieldGroupIds: null, - companyIds: null, - }, - ], - }, prebid: [{ AUCTION_INIT: { auctionId, - timestamp: 1680279732944, - auctionStatus: 'inProgress', adUnits: [ { code: '/19968336/header-bid-tag-0', @@ -718,29 +645,7 @@ function getMockEvents() { bids: [ { bidder: 'bidder0', - params: { - placementId: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, + userId, }, ], sizes: [ @@ -750,14 +655,6 @@ function getMockEvents() { transactionId: 'ef947609-7b55-4420-8407-599760d0e373', ortb2Imp: { ext: { - tid: 'ef947609-7b55-4420-8407-599760d0e373', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-0', - }, - pbadslot: '/19968336/header-bid-tag-0', - }, gpid: '/19968336/header-bid-tag-0', }, }, @@ -775,29 +672,7 @@ function getMockEvents() { bids: [ { bidder: 'bidder0', - params: { - placementId: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, + userId, }, ], sizes: [ @@ -807,14 +682,6 @@ function getMockEvents() { transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', ortb2Imp: { ext: { - tid: 'abab4423-d962-41aa-adc7-0681f686c330', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-1', - }, - pbadslot: '/19968336/header-bid-tag-1', - }, gpid: '/19968336/header-bid-tag-1', }, }, @@ -826,1789 +693,146 @@ function getMockEvents() { sizes: [[300, 250]], }, }, - floors: { - currency: 'USD', - schema: { - delimiter: '|', - fields: ['mediaType', 'size'], - }, - values: { - 'banner|300x250': 0.01, - }, - }, bids: [ { bidder: '33across', - params: { - siteId: 'dukr5O4SWr6iygaKkGJozW', - productId: 'siab', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, + userId, }, { bidder: 'bidder0', - params: { - placementId: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, + userId, }, ], sizes: [[300, 250]], transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', ortb2Imp: { ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, gpid: '/17118521/header-bid-tag-2', }, }, }, ], - adUnitCodes: [ - '/19968336/header-bid-tag-0', - '/19968336/header-bid-tag-1', - '/17118521/header-bid-tag-2', - ], bidderRequests: [ { - bidderCode: 'bidder0', - auctionId, - bidderRequestId: '196b58215c10dc9', bids: [ - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'ef947609-7b55-4420-8407-599760d0e373', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-0', - }, - pbadslot: '/19968336/header-bid-tag-0', - }, - gpid: '/19968336/header-bid-tag-0', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [300, 250], - [300, 600], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-0', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - sizes: [ - [300, 250], - [300, 600], - ], - bidId: '20661fc5fbb5d9b', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'abab4423-d962-41aa-adc7-0681f686c330', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-1', - }, - pbadslot: '/19968336/header-bid-tag-1', - }, - gpid: '/19968336/header-bid-tag-1', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [728, 90], - [970, 250], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-1', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - sizes: [ - [728, 90], - [970, 250], - ], - bidId: '21ad295f40dd7ab', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '22108ac7b778717', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, + { userId }, ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732963, } ], - noBids: [], - bidsReceived: [], - bidsRejected: [], - winningBids: [], - timeout: 3000, - seatNonBids: [], - config: { - publisherId: '1001', - }, }, BID_REQUESTED: [ { - bidderCode: 'bidder0', auctionId, - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', bids: [ { bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'ef947609-7b55-4420-8407-599760d0e373', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-0', - }, - pbadslot: '/19968336/header-bid-tag-0', - }, - gpid: '/19968336/header-bid-tag-0', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [300, 250], - [300, 600], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-0', transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - sizes: [ - [300, 250], - [300, 600], - ], bidId: '20661fc5fbb5d9b', - bidderRequestId: '196b58215c10dc9', - auctionId, src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, }, { bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'abab4423-d962-41aa-adc7-0681f686c330', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-1', - }, - pbadslot: '/19968336/header-bid-tag-1', - }, - gpid: '/19968336/header-bid-tag-1', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [728, 90], - [970, 250], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-1', transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - sizes: [ - [728, 90], - [970, 250], - ], bidId: '21ad295f40dd7ab', - bidderRequestId: '196b58215c10dc9', - auctionId, src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, }, { bidder: 'bidder0', - params: { - placement_id: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], bidId: '22108ac7b778717', - bidderRequestId: '196b58215c10dc9', - auctionId, src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, }, ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732963, }], BID_RESPONSE: [{ - bidderCode: 'bidder0', - width: 300, - height: 250, - statusMessage: 'Bid available', - adId: '123456789abcdef', - requestId: '20661fc5fbb5d9b', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', auctionId, - mediaType: 'banner', - source: 'client', cpm: 1.5, - creativeId: 96846035, currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/19968336/header-bid-tag-0', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', floorData: { cpmAfterAdjustments: 1 }, - bidder: 'bidder0', - timeToRespond: 341, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', + mediaType: 'banner', + originalCpm: 1.5, + requestId: '20661fc5fbb5d9b', size: '300x250', - status: 'rendered', - params: [ - { - placementId: 12345678, - }, - ], + source: 'client', + status: 'rendered' }, { - bidderCode: 'bidder0', - width: 728, - height: 90, - statusMessage: 'Bid available', - adId: '3969aa0dc284f9e', - requestId: '21ad295f40dd7ab', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', auctionId, - mediaType: 'banner', - source: 'client', cpm: 1.5, - creativeId: 98476543, currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/19968336/header-bid-tag-1', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', floorData: { cpmAfterAdjustments: 1 }, - responseTimestamp: 1680279733305, - requestTimestamp: 1680279732963, - bidder: 'bidder0', - timeToRespond: 342, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', + mediaType: 'banner', + originalCpm: 1.5, + requestId: '21ad295f40dd7ab', size: '728x90', + source: 'client', status: 'targetingSet', }, { - bidderCode: 'bidder0', - width: 300, - height: 250, - statusMessage: 'Bid available', - adId: '3969aa0dc284f9e', - requestId: '22108ac7b778717', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', auctionId, - mediaType: 'banner', - source: 'client', cpm: 1.5, - creativeId: 98476543, currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/17118521/header-bid-tag-2', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', floorData: { cpmAfterAdjustments: 1 }, - responseTimestamp: 1680279733305, - requestTimestamp: 1680279732963, - bidder: 'bidder0', - timeToRespond: 342, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', + mediaType: 'banner', + originalCpm: 1.5, + requestId: '22108ac7b778717', size: '728x90', + source: 'client', status: 'targetingSet', }], BID_WON: [{ - bidderCode: 'bidder0', - width: 300, - height: 250, - statusMessage: 'Bid available', - adId: '123456789abcdef', - requestId: '20661fc5fbb5d9b', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', auctionId, - mediaType: 'banner', - source: 'client', cpm: 1.5, - creativeId: 96846035, currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/19968336/header-bid-tag-0', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', floorData: { cpmAfterAdjustments: 1 }, - responseTimestamp: 1680279733304, - requestTimestamp: 1680279732963, - bidder: 'bidder0', - timeToRespond: 341, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', + mediaType: 'banner', + originalCpm: 1.5, + requestId: '20661fc5fbb5d9b', size: '300x250', - adserverTargeting: { - bidder: 'bidder0', - hb_adid: '123456789abcdef', - hb_pb: '1.50', - hb_size: '300x250', - hb_source: 'client', - hb_format: 'banner', - hb_adomain: '', - hb_acat: '', - }, + source: 'client', status: 'rendered', - params: [ - { - placementId: 12345678, - }, - ], + transactionId: 'ef947609-7b55-4420-8407-599760d0e373', }, { - bidderCode: 'bidder0', - width: 728, - height: 90, - statusMessage: 'Bid available', - adId: '3969aa0dc284f9e', - requestId: '21ad295f40dd7ab', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', auctionId, - mediaType: 'banner', - source: 'client', cpm: 1.5, - creativeId: 98476543, currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/19968336/header-bid-tag-1', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', floorData: { cpmAfterAdjustments: 1 }, - responseTimestamp: 1680279733304, - requestTimestamp: 1680279732963, - bidder: 'bidder0', - timeToRespond: 342, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', + mediaType: 'banner', + originalCpm: 1.5, + requestId: '21ad295f40dd7ab', size: '728x90', - adserverTargeting: { - bidder: 'bidder0', - hb_adid: '3969aa0dc284f9e', - hb_pb: '1.50', - hb_size: '728x90', - hb_source: 'client', - hb_format: 'banner', - hb_adomain: '', - hb_acat: '', - }, + source: 'client', status: 'rendered', - params: [ - { - placementId: 12345678, - }, - ], + transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', }, { - bidderCode: 'bidder0', - width: 300, - height: 250, - statusMessage: 'Bid available', - adId: '3969aa0dc284f9e', - requestId: '22108ac7b778717', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', auctionId, - mediaType: 'banner', - source: 'client', cpm: 1.5, - creativeId: 98476543, currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/17118521/header-bid-tag-2', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', floorData: { cpmAfterAdjustments: 1 }, - responseTimestamp: 1680279733305, - requestTimestamp: 1680279732963, - bidder: 'bidder0', - timeToRespond: 342, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', + mediaType: 'banner', + originalCpm: 1.5, + requestId: '22108ac7b778717', size: '728x90', + source: 'client', status: 'targetingSet', + transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', }], AUCTION_END: { auctionId, - timestamp: 1680279732944, - auctionEnd: 1680279733675, - auctionStatus: 'completed', - adUnits: [ - { - code: '/19968336/header-bid-tag-0', - mediaTypes: { - banner: { - sizes: [ - [300, 250], - [300, 600], - ], - }, - }, - bids: [ - { - bidder: 'bidder0', - params: { - placementId: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - ], - sizes: [ - [300, 250], - [300, 600], - ], - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - ortb2Imp: { - ext: { - tid: 'ef947609-7b55-4420-8407-599760d0e373', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-0', - }, - pbadslot: '/19968336/header-bid-tag-0', - }, - gpid: '/19968336/header-bid-tag-0', - }, - }, - }, - { - code: '/19968336/header-bid-tag-1', - mediaTypes: { - banner: { - sizes: [ - [728, 90], - [970, 250], - ], - }, - }, - bids: [ - { - bidder: 'bidder0', - params: { - placementId: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - ], - sizes: [ - [728, 90], - [970, 250], - ], - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - ortb2Imp: { - ext: { - tid: 'abab4423-d962-41aa-adc7-0681f686c330', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-1', - }, - pbadslot: '/19968336/header-bid-tag-1', - }, - gpid: '/19968336/header-bid-tag-1', - }, - }, - }, - { - code: '/17118521/header-bid-tag-2', - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - floors: { - currency: 'USD', - schema: { - delimiter: '|', - fields: ['mediaType', 'size'], - }, - values: { - 'banner|300x250': 0.01, - }, - }, - bids: [ - { - bidder: '33across', - params: { - siteId: 'dukr5O4SWr6iygaKkGJozW', - productId: 'siab', - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - { - bidder: 'bidder0', - params: { - placementId: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - }, - ], - sizes: [[300, 250]], - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - }, - ], - adUnitCodes: [ - '/19968336/header-bid-tag-0', - '/19968336/header-bid-tag-1', - '/17118521/header-bid-tag-2', - ], - bidderRequests: [ - { - bidderCode: 'bidder0', - auctionId, - bidderRequestId: '196b58215c10dc9', - bids: [ - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'ef947609-7b55-4420-8407-599760d0e373', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-0', - }, - pbadslot: '/19968336/header-bid-tag-0', - }, - gpid: '/19968336/header-bid-tag-0', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [300, 250], - [300, 600], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-0', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - sizes: [ - [300, 250], - [300, 600], - ], - bidId: '20661fc5fbb5d9b', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 12345678, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'abab4423-d962-41aa-adc7-0681f686c330', - data: { - adserver: { - name: 'gam', - adslot: '/19968336/header-bid-tag-1', - }, - pbadslot: '/19968336/header-bid-tag-1', - }, - gpid: '/19968336/header-bid-tag-1', - }, - }, - mediaTypes: { - banner: { - sizes: [ - [728, 90], - [970, 250], - ], - }, - }, - adUnitCode: '/19968336/header-bid-tag-1', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - sizes: [ - [728, 90], - [970, 250], - ], - bidId: '21ad295f40dd7ab', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - { - bidder: 'bidder0', - params: { - placement_id: 20216405, - }, - userId: { - '33acrossId': { - envelope: - 'v1.0014', - }, - }, - userIdAsEids: [ - { - source: '33across.com', - uids: [ - { - id: 'v1.0014', - atype: 1, - }, - ], - }, - ], - crumbs: { - pubcid: 'badbbf35-1573-47c5-948e-70a63f9271f4', - }, - ortb2Imp: { - ext: { - tid: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - data: { - adserver: { - name: 'gam', - adslot: '/17118521/header-bid-tag-2', - }, - pbadslot: '/17118521/header-bid-tag-2', - }, - gpid: '/17118521/header-bid-tag-2', - }, - }, - mediaTypes: { - banner: { - sizes: [[300, 250]], - }, - }, - adUnitCode: '/17118521/header-bid-tag-2', - transactionId: 'b43e7487-0a52-4689-a0f7-d139d08b1f9f', - sizes: [[300, 250]], - bidId: '22108ac7b778717', - bidderRequestId: '196b58215c10dc9', - auctionId, - src: 'client', - bidRequestsCount: 1, - bidderRequestsCount: 1, - bidderWinsCount: 0, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - }, - ], - auctionStart: 1680279732944, - timeout: 3000, - refererInfo: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - topmostLocation: 'https://site.example.com/pb.html', - location: 'https://site.example.com/pb.html', - canonicalUrl: null, - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - ref: null, - legacy: { - reachedTop: true, - isAmp: false, - numIframes: 0, - stack: ['https://site.example.com/pb.html'], - referer: 'https://site.example.com/pb.html', - canonicalUrl: null, - }, - }, - ortb2: { - site: { - page: 'https://site.example.com/pb.html', - domain: 'site.example.com', - publisher: { - domain: 'site.example.com', - }, - }, - device: { - w: 594, - h: 976, - dnt: 0, - ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36', - language: 'en', - sua: { - source: 2, - platform: { - brand: 'macOS', - version: ['13', '2', '1'], - }, - browsers: [ - { - brand: 'Google Chrome', - version: ['111', '0', '5563', '110'], - }, - { - brand: 'Not(A:Brand', - version: ['8', '0', '0', '0'], - }, - { - brand: 'Chromium', - version: ['111', '0', '5563', '110'], - }, - ], - mobile: 0, - model: '', - bitness: '64', - architecture: 'arm', - }, - }, - }, - start: 1680279732963, - } - ], - noBids: [ /* no need to populate */], - bidsReceived: [ - { - bidderCode: 'bidder0', - width: 300, - height: 250, - statusMessage: 'Bid available', - adId: '123456789abcdef', - requestId: '20661fc5fbb5d9b', - transactionId: 'ef947609-7b55-4420-8407-599760d0e373', - auctionId, - mediaType: 'banner', - source: 'client', - cpm: 1.5, - creativeId: 96846035, - currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/19968336/header-bid-tag-0', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', - floorData: { - cpmAfterAdjustments: 1 - }, - bidder: 'bidder0', - timeToRespond: 341, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', - size: '300x250', - status: 'rendered', - params: [ - { - placementId: 12345678, - }, - ], - }, - { - bidderCode: 'bidder0', - width: 728, - height: 90, - statusMessage: 'Bid available', - adId: '3969aa0dc284f9e', - requestId: '21ad295f40dd7ab', - transactionId: 'abab4423-d962-41aa-adc7-0681f686c330', - auctionId, - mediaType: 'banner', - source: 'client', - cpm: 1.5, - creativeId: 98476543, - currency: 'USD', - netRevenue: true, - ttl: 300, - adUnitCode: '/19968336/header-bid-tag-1', - bidder0: { - buyerMemberId: 1234, - }, - ad, - adapterCode: 'bidder0', - originalCpm: 1.5, - originalCurrency: 'USD', - floorData: { - cpmAfterAdjustments: 1 - }, - responseTimestamp: 1680279733305, - requestTimestamp: 1680279732963, - bidder: 'bidder0', - timeToRespond: 342, - pbLg: '1.50', - pbMg: '1.50', - pbHg: '1.50', - pbAg: '1.50', - pbDg: '1.50', - pbCg: '', - size: '728x90', - status: 'targetingSet', - }, - ], - bidsRejected: [], - winningBids: [], - timeout: 3000, - seatNonBids: [], }, }] }; From f4c03346b8b08e2a9c31f6532e30b75049ea143e Mon Sep 17 00:00:00 2001 From: Michael Scott-Nelson Date: Thu, 4 May 2023 15:28:13 -0400 Subject: [PATCH 41/41] remove usp consent string invalid test Ticket: IDG-677 --- modules/33acrossAnalyticsAdapter.js | 13 ++++--------- .../modules/33acrossAnalyticsAdapter_spec.js | 17 ----------------- 2 files changed, 4 insertions(+), 26 deletions(-) diff --git a/modules/33acrossAnalyticsAdapter.js b/modules/33acrossAnalyticsAdapter.js index 9a1936b0445..487c5d2f327 100644 --- a/modules/33acrossAnalyticsAdapter.js +++ b/modules/33acrossAnalyticsAdapter.js @@ -235,11 +235,6 @@ function enableAnalyticsWrapper(config) { auctions: {}, }; - const usPrivacy = uspDataHandler.getConsentData(); - if (/^1[Y|N|-]{3}$/.test(usPrivacy)) { - locals.cache.usPrivacy = usPrivacy; - } - analyticsAdapter.originEnableAnalytics(config); } @@ -292,7 +287,7 @@ export default analyticsAdapter; * @return {AnalyticsReport} Analytics report */ function createReportFromCache(analyticsCache, completedAuctionId) { - const { pid, auctions, usPrivacy } = analyticsCache; + const { pid, auctions } = analyticsCache; const report = { pid, @@ -301,8 +296,8 @@ function createReportFromCache(analyticsCache, completedAuctionId) { pbjsVersion: '$prebid.version$', // Replaced by build script auctions: [ auctions[completedAuctionId] ], } - if (usPrivacy) { - report.usPrivacy = usPrivacy; + if (uspDataHandler.getConsentData()) { + report.usPrivacy = uspDataHandler.getConsentData(); } return report; @@ -471,7 +466,7 @@ function sendReport(report, endpoint) { } /** - * Encapsute certain logger functions and add a prefix to the final messages. + * Encapsulate certain logger functions and add a prefix to the final messages. * * @return {Object} New logger functions */ diff --git a/test/spec/modules/33acrossAnalyticsAdapter_spec.js b/test/spec/modules/33acrossAnalyticsAdapter_spec.js index 0c410965e9e..078f1d2adde 100644 --- a/test/spec/modules/33acrossAnalyticsAdapter_spec.js +++ b/test/spec/modules/33acrossAnalyticsAdapter_spec.js @@ -205,23 +205,6 @@ describe('33acrossAnalyticsAdapter:', function () { }); }); }); - - context('and an *invalid* US Privacy configuration is present', function () { - ['2ABC', '1234', '1YNYN', '11YNY'].forEach(consent => { - it('it calls "sendBeacon" without the usPrivacy field', function () { - sandbox.stub(uspDataHandler, 'getConsentData').returns(consent); - this.enableAnalytics(); - - navigator.sendBeacon - .withArgs('http://test-endpoint', createReportWithThreeBidWonEvents()); - - performStandardAuction(); - sandbox.clock.tick(this.defaultTimeout + 1); - - assert.calledOnceWithStringJsonEquivalent(navigator.sendBeacon, 'http://test-endpoint', createReportWithThreeBidWonEvents()); - }); - }); - }); }); context('when an error occurs while sending the AnalyticsReport', function () {