@myinterview/widget-react 1.0.58-beta-dc3e080 → 1.0.58-beta-5e8c867
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +726 -944
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +726 -944
- package/dist/esm/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -7656,7 +7656,7 @@ function useMachine(getMachine) {
|
|
|
7656
7656
|
? State.create(options.state)
|
|
7657
7657
|
: service.machine.initialState);
|
|
7658
7658
|
}
|
|
7659
|
-
return service.
|
|
7659
|
+
return service.state;
|
|
7660
7660
|
}, [service]);
|
|
7661
7661
|
var isEqual = React.useCallback(function (prevState, nextState) {
|
|
7662
7662
|
if (service.status === InterpreterStatus.NotStarted) {
|
|
@@ -7688,42 +7688,6 @@ function useMachine(getMachine) {
|
|
|
7688
7688
|
return [storeSnapshot, service.send, service];
|
|
7689
7689
|
}
|
|
7690
7690
|
|
|
7691
|
-
(undefined && undefined.__read) || function (o, n) {
|
|
7692
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
7693
|
-
if (!m) return o;
|
|
7694
|
-
var i = m.call(o), r, ar = [], e;
|
|
7695
|
-
try {
|
|
7696
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
7697
|
-
}
|
|
7698
|
-
catch (error) { e = { error: error }; }
|
|
7699
|
-
finally {
|
|
7700
|
-
try {
|
|
7701
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
7702
|
-
}
|
|
7703
|
-
finally { if (e) throw e.error; }
|
|
7704
|
-
}
|
|
7705
|
-
return ar;
|
|
7706
|
-
};
|
|
7707
|
-
(undefined && undefined.__values) || function(o) {
|
|
7708
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
7709
|
-
if (m) return m.call(o);
|
|
7710
|
-
if (o && typeof o.length === "number") return {
|
|
7711
|
-
next: function () {
|
|
7712
|
-
if (o && i >= o.length) o = void 0;
|
|
7713
|
-
return { value: o && o[i++], done: !o };
|
|
7714
|
-
}
|
|
7715
|
-
};
|
|
7716
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
7717
|
-
};
|
|
7718
|
-
function getServiceSnapshot(service) {
|
|
7719
|
-
return service.status !== 0
|
|
7720
|
-
? service.getSnapshot()
|
|
7721
|
-
: service.machine.initialState;
|
|
7722
|
-
}
|
|
7723
|
-
function isService(actor) {
|
|
7724
|
-
return 'state' in actor && 'machine' in actor;
|
|
7725
|
-
}
|
|
7726
|
-
|
|
7727
7691
|
function isActorWithState(actorRef) {
|
|
7728
7692
|
return 'state' in actorRef;
|
|
7729
7693
|
}
|
|
@@ -7732,9 +7696,7 @@ function isDeferredActor(actorRef) {
|
|
|
7732
7696
|
}
|
|
7733
7697
|
function defaultGetSnapshot(actorRef) {
|
|
7734
7698
|
return 'getSnapshot' in actorRef
|
|
7735
|
-
?
|
|
7736
|
-
? getServiceSnapshot(actorRef)
|
|
7737
|
-
: actorRef.getSnapshot()
|
|
7699
|
+
? actorRef.getSnapshot()
|
|
7738
7700
|
: isActorWithState(actorRef)
|
|
7739
7701
|
? actorRef.state
|
|
7740
7702
|
: undefined;
|
|
@@ -7783,6 +7745,34 @@ function useActor(actorRef, getSnapshot) {
|
|
|
7783
7745
|
return [storeSnapshot, send];
|
|
7784
7746
|
}
|
|
7785
7747
|
|
|
7748
|
+
(undefined && undefined.__read) || function (o, n) {
|
|
7749
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
7750
|
+
if (!m) return o;
|
|
7751
|
+
var i = m.call(o), r, ar = [], e;
|
|
7752
|
+
try {
|
|
7753
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
7754
|
+
}
|
|
7755
|
+
catch (error) { e = { error: error }; }
|
|
7756
|
+
finally {
|
|
7757
|
+
try {
|
|
7758
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
7759
|
+
}
|
|
7760
|
+
finally { if (e) throw e.error; }
|
|
7761
|
+
}
|
|
7762
|
+
return ar;
|
|
7763
|
+
};
|
|
7764
|
+
(undefined && undefined.__values) || function(o) {
|
|
7765
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
7766
|
+
if (m) return m.call(o);
|
|
7767
|
+
if (o && typeof o.length === "number") return {
|
|
7768
|
+
next: function () {
|
|
7769
|
+
if (o && i >= o.length) o = void 0;
|
|
7770
|
+
return { value: o && o[i++], done: !o };
|
|
7771
|
+
}
|
|
7772
|
+
};
|
|
7773
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
7774
|
+
};
|
|
7775
|
+
|
|
7786
7776
|
var SPEED_TEST_LEVEL;
|
|
7787
7777
|
(function (SPEED_TEST_LEVEL) {
|
|
7788
7778
|
SPEED_TEST_LEVEL[SPEED_TEST_LEVEL["LOW"] = 0] = "LOW";
|
|
@@ -15557,7 +15547,7 @@ function truncate(str, max = 0) {
|
|
|
15557
15547
|
if (typeof str !== 'string' || max === 0) {
|
|
15558
15548
|
return str;
|
|
15559
15549
|
}
|
|
15560
|
-
return str.length <= max ? str : `${str.
|
|
15550
|
+
return str.length <= max ? str : `${str.substr(0, max)}...`;
|
|
15561
15551
|
}
|
|
15562
15552
|
|
|
15563
15553
|
/**
|
|
@@ -15724,7 +15714,9 @@ function urlEncode(object) {
|
|
|
15724
15714
|
* @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor
|
|
15725
15715
|
* an Error.
|
|
15726
15716
|
*/
|
|
15727
|
-
function convertToPlainObject(
|
|
15717
|
+
function convertToPlainObject(
|
|
15718
|
+
value,
|
|
15719
|
+
)
|
|
15728
15720
|
|
|
15729
15721
|
{
|
|
15730
15722
|
if (isError(value)) {
|
|
@@ -15917,14 +15909,6 @@ function createStackParser(...parsers) {
|
|
|
15917
15909
|
const frames = [];
|
|
15918
15910
|
|
|
15919
15911
|
for (const line of stack.split('\n').slice(skipFirst)) {
|
|
15920
|
-
// Ignore lines over 1kb as they are unlikely to be stack frames.
|
|
15921
|
-
// Many of the regular expressions use backtracking which results in run time that increases exponentially with
|
|
15922
|
-
// input size. Huge strings can result in hangs/Denial of Service:
|
|
15923
|
-
// https://github.com/getsentry/sentry-javascript/issues/2286
|
|
15924
|
-
if (line.length > 1024) {
|
|
15925
|
-
continue;
|
|
15926
|
-
}
|
|
15927
|
-
|
|
15928
15912
|
// https://github.com/getsentry/sentry-javascript/issues/5459
|
|
15929
15913
|
// Remove webpack (error: *) wrappers
|
|
15930
15914
|
const cleanedLine = line.replace(/\(error: (.*)\)/, '$1');
|
|
@@ -17650,9 +17634,6 @@ function forEachEnvelopeItem(
|
|
|
17650
17634
|
});
|
|
17651
17635
|
}
|
|
17652
17636
|
|
|
17653
|
-
/**
|
|
17654
|
-
* Encode a string to UTF8.
|
|
17655
|
-
*/
|
|
17656
17637
|
function encodeUTF8(input, textEncoder) {
|
|
17657
17638
|
const utf8 = textEncoder || new TextEncoder();
|
|
17658
17639
|
return utf8.encode(input);
|
|
@@ -17831,11 +17812,7 @@ function parseRetryAfterHeader(header, now = Date.now()) {
|
|
|
17831
17812
|
}
|
|
17832
17813
|
|
|
17833
17814
|
/**
|
|
17834
|
-
* Gets the time that
|
|
17835
|
-
* In case no category-specific limit is set but a general rate limit across all categories is active,
|
|
17836
|
-
* that time is returned.
|
|
17837
|
-
*
|
|
17838
|
-
* @return the time in ms that the category is disabled until or 0 if there's no active rate limit.
|
|
17815
|
+
* Gets the time that given category is disabled until for rate limiting
|
|
17839
17816
|
*/
|
|
17840
17817
|
function disabledUntil(limits, category) {
|
|
17841
17818
|
return limits[category] || limits.all || 0;
|
|
@@ -17850,8 +17827,7 @@ function isRateLimited(limits, category, now = Date.now()) {
|
|
|
17850
17827
|
|
|
17851
17828
|
/**
|
|
17852
17829
|
* Update ratelimits from incoming headers.
|
|
17853
|
-
*
|
|
17854
|
-
* @return the updated RateLimits object.
|
|
17830
|
+
* Returns true if headers contains a non-empty rate limiting header.
|
|
17855
17831
|
*/
|
|
17856
17832
|
function updateRateLimits(
|
|
17857
17833
|
limits,
|
|
@@ -18767,7 +18743,7 @@ class Hub {
|
|
|
18767
18743
|
*/
|
|
18768
18744
|
captureEvent(event, hint) {
|
|
18769
18745
|
const eventId = hint && hint.event_id ? hint.event_id : uuid4();
|
|
18770
|
-
if (
|
|
18746
|
+
if (event.type !== 'transaction') {
|
|
18771
18747
|
this._lastEventId = eventId;
|
|
18772
18748
|
}
|
|
18773
18749
|
|
|
@@ -18792,6 +18768,7 @@ class Hub {
|
|
|
18792
18768
|
|
|
18793
18769
|
if (!scope || !client) return;
|
|
18794
18770
|
|
|
18771
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
18795
18772
|
const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =
|
|
18796
18773
|
(client.getOptions && client.getOptions()) || {};
|
|
18797
18774
|
|
|
@@ -19285,15 +19262,7 @@ function createEventEnvelope(
|
|
|
19285
19262
|
tunnel,
|
|
19286
19263
|
) {
|
|
19287
19264
|
const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);
|
|
19288
|
-
|
|
19289
|
-
/*
|
|
19290
|
-
Note: Due to TS, event.type may be `replay_event`, theoretically.
|
|
19291
|
-
In practice, we never call `createEventEnvelope` with `replay_event` type,
|
|
19292
|
-
and we'd have to adjut a looot of types to make this work properly.
|
|
19293
|
-
We want to avoid casting this around, as that could lead to bugs (e.g. when we add another type)
|
|
19294
|
-
So the safe choice is to really guard against the replay_event type here.
|
|
19295
|
-
*/
|
|
19296
|
-
const eventType = event.type && event.type !== 'replay_event' ? event.type : 'event';
|
|
19265
|
+
const eventType = event.type || 'event';
|
|
19297
19266
|
|
|
19298
19267
|
enhanceEventWithSdkInfo(event, metadata && metadata.sdk);
|
|
19299
19268
|
|
|
@@ -19321,23 +19290,18 @@ function setupIntegrations(integrations) {
|
|
|
19321
19290
|
const integrationIndex = {};
|
|
19322
19291
|
|
|
19323
19292
|
integrations.forEach(integration => {
|
|
19324
|
-
|
|
19293
|
+
integrationIndex[integration.name] = integration;
|
|
19294
|
+
|
|
19295
|
+
if (installedIntegrations.indexOf(integration.name) === -1) {
|
|
19296
|
+
integration.setupOnce(addGlobalEventProcessor, getCurrentHub);
|
|
19297
|
+
installedIntegrations.push(integration.name);
|
|
19298
|
+
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);
|
|
19299
|
+
}
|
|
19325
19300
|
});
|
|
19326
19301
|
|
|
19327
19302
|
return integrationIndex;
|
|
19328
19303
|
}
|
|
19329
19304
|
|
|
19330
|
-
/** Setup a single integration. */
|
|
19331
|
-
function setupIntegration(integration, integrationIndex) {
|
|
19332
|
-
integrationIndex[integration.name] = integration;
|
|
19333
|
-
|
|
19334
|
-
if (installedIntegrations.indexOf(integration.name) === -1) {
|
|
19335
|
-
integration.setupOnce(addGlobalEventProcessor, getCurrentHub);
|
|
19336
|
-
installedIntegrations.push(integration.name);
|
|
19337
|
-
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log(`Integration installed: ${integration.name}`);
|
|
19338
|
-
}
|
|
19339
|
-
}
|
|
19340
|
-
|
|
19341
19305
|
/**
|
|
19342
19306
|
* Adds common information to events.
|
|
19343
19307
|
*
|
|
@@ -19771,13 +19735,6 @@ class BaseClient {
|
|
|
19771
19735
|
}
|
|
19772
19736
|
}
|
|
19773
19737
|
|
|
19774
|
-
/**
|
|
19775
|
-
* @inheritDoc
|
|
19776
|
-
*/
|
|
19777
|
-
addIntegration(integration) {
|
|
19778
|
-
setupIntegration(integration, this._integrations);
|
|
19779
|
-
}
|
|
19780
|
-
|
|
19781
19738
|
/**
|
|
19782
19739
|
* @inheritDoc
|
|
19783
19740
|
*/
|
|
@@ -20169,9 +20126,7 @@ const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;
|
|
|
20169
20126
|
function createTransport(
|
|
20170
20127
|
options,
|
|
20171
20128
|
makeRequest,
|
|
20172
|
-
buffer = makePromiseBuffer(
|
|
20173
|
-
options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,
|
|
20174
|
-
),
|
|
20129
|
+
buffer = makePromiseBuffer(options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE),
|
|
20175
20130
|
) {
|
|
20176
20131
|
let rateLimits = {};
|
|
20177
20132
|
|
|
@@ -20216,11 +20171,10 @@ function createTransport(
|
|
|
20216
20171
|
}
|
|
20217
20172
|
|
|
20218
20173
|
rateLimits = updateRateLimits(rateLimits, response);
|
|
20219
|
-
return response;
|
|
20220
20174
|
},
|
|
20221
20175
|
error => {
|
|
20176
|
+
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Failed while sending event:', error);
|
|
20222
20177
|
recordEnvelopeLoss('network_error');
|
|
20223
|
-
throw error;
|
|
20224
20178
|
},
|
|
20225
20179
|
);
|
|
20226
20180
|
|
|
@@ -20252,7 +20206,7 @@ function getEventForEnvelopeItem(item, type) {
|
|
|
20252
20206
|
return Array.isArray(item) ? (item )[1] : undefined;
|
|
20253
20207
|
}
|
|
20254
20208
|
|
|
20255
|
-
const SDK_VERSION = '7.
|
|
20209
|
+
const SDK_VERSION = '7.29.0';
|
|
20256
20210
|
|
|
20257
20211
|
let originalFunctionToString;
|
|
20258
20212
|
|
|
@@ -22204,7 +22158,7 @@ class HttpContext {constructor() { HttpContext.prototype.__init.call(this); }
|
|
|
22204
22158
|
...(referrer && { Referer: referrer }),
|
|
22205
22159
|
...(userAgent && { 'User-Agent': userAgent }),
|
|
22206
22160
|
};
|
|
22207
|
-
const request = { ...
|
|
22161
|
+
const request = { ...(url && { url }), headers };
|
|
22208
22162
|
|
|
22209
22163
|
return { ...event, request };
|
|
22210
22164
|
}
|
|
@@ -22468,9 +22422,6 @@ const DEFAULT_FLUSH_MIN_DELAY = 5000;
|
|
|
22468
22422
|
const DEFAULT_FLUSH_MAX_DELAY = 15000;
|
|
22469
22423
|
const INITIAL_FLUSH_DELAY = 5000;
|
|
22470
22424
|
|
|
22471
|
-
const RETRY_BASE_INTERVAL = 5000;
|
|
22472
|
-
const RETRY_MAX_COUNT = 3;
|
|
22473
|
-
|
|
22474
22425
|
/*! *****************************************************************************
|
|
22475
22426
|
Copyright (c) Microsoft Corporation.
|
|
22476
22427
|
|
|
@@ -29477,9 +29428,6 @@ var fdt = new u8(32);
|
|
|
29477
29428
|
for (var i = 0; i < 32; ++i)
|
|
29478
29429
|
fdt[i] = 5;
|
|
29479
29430
|
|
|
29480
|
-
/**
|
|
29481
|
-
* Create a breadcrumb for a replay.
|
|
29482
|
-
*/
|
|
29483
29431
|
function createBreadcrumb(
|
|
29484
29432
|
breadcrumb,
|
|
29485
29433
|
) {
|
|
@@ -29490,9 +29438,6 @@ function createBreadcrumb(
|
|
|
29490
29438
|
};
|
|
29491
29439
|
}
|
|
29492
29440
|
|
|
29493
|
-
/**
|
|
29494
|
-
* An event handler to react to DOM events.
|
|
29495
|
-
*/
|
|
29496
29441
|
function handleDom(handlerData) {
|
|
29497
29442
|
// Taken from https://github.com/getsentry/sentry-javascript/blob/master/packages/browser/src/integrations/breadcrumbs.ts#L112
|
|
29498
29443
|
let target;
|
|
@@ -29535,9 +29480,6 @@ function isEventWithTarget(event) {
|
|
|
29535
29480
|
|
|
29536
29481
|
let _LAST_BREADCRUMB = null;
|
|
29537
29482
|
|
|
29538
|
-
/**
|
|
29539
|
-
* An event handler to handle scope changes.
|
|
29540
|
-
*/
|
|
29541
29483
|
function handleScope(scope) {
|
|
29542
29484
|
const newBreadcrumb = scope.getLastBreadcrumb();
|
|
29543
29485
|
|
|
@@ -29560,9 +29502,6 @@ function handleScope(scope) {
|
|
|
29560
29502
|
return createBreadcrumb(newBreadcrumb);
|
|
29561
29503
|
}
|
|
29562
29504
|
|
|
29563
|
-
/**
|
|
29564
|
-
* An event handler to react to breadcrumbs.
|
|
29565
|
-
*/
|
|
29566
29505
|
function breadcrumbHandler(type, handlerData) {
|
|
29567
29506
|
if (type === 'scope') {
|
|
29568
29507
|
return handleScope(handlerData );
|
|
@@ -29574,19 +29513,15 @@ function breadcrumbHandler(type, handlerData) {
|
|
|
29574
29513
|
/**
|
|
29575
29514
|
* Add an event to the event buffer
|
|
29576
29515
|
*/
|
|
29577
|
-
|
|
29578
|
-
replay,
|
|
29579
|
-
event,
|
|
29580
|
-
isCheckout,
|
|
29581
|
-
) {
|
|
29516
|
+
function addEvent(replay, event, isCheckout) {
|
|
29582
29517
|
if (!replay.eventBuffer) {
|
|
29583
29518
|
// This implies that `_isEnabled` is false
|
|
29584
|
-
return
|
|
29519
|
+
return;
|
|
29585
29520
|
}
|
|
29586
29521
|
|
|
29587
29522
|
if (replay.isPaused()) {
|
|
29588
29523
|
// Do not add to event buffer when recording is paused
|
|
29589
|
-
return
|
|
29524
|
+
return;
|
|
29590
29525
|
}
|
|
29591
29526
|
|
|
29592
29527
|
// TODO: sadness -- we will want to normalize timestamps to be in ms -
|
|
@@ -29599,7 +29534,7 @@ async function addEvent(
|
|
|
29599
29534
|
// comes back to trigger a new session. The performance entries rely on
|
|
29600
29535
|
// `performance.timeOrigin`, which is when the page first opened.
|
|
29601
29536
|
if (timestampInMs + SESSION_IDLE_DURATION < new Date().getTime()) {
|
|
29602
|
-
return
|
|
29537
|
+
return;
|
|
29603
29538
|
}
|
|
29604
29539
|
|
|
29605
29540
|
// Only record earliest event if a new session was created, otherwise it
|
|
@@ -29609,17 +29544,14 @@ async function addEvent(
|
|
|
29609
29544
|
replay.getContext().earliestEvent = timestampInMs;
|
|
29610
29545
|
}
|
|
29611
29546
|
|
|
29612
|
-
|
|
29547
|
+
replay.eventBuffer.addEvent(event, isCheckout);
|
|
29613
29548
|
}
|
|
29614
29549
|
|
|
29615
29550
|
/**
|
|
29616
29551
|
* Create a "span" for each performance entry. The parent transaction is `this.replayEvent`.
|
|
29617
29552
|
*/
|
|
29618
|
-
function createPerformanceSpans(
|
|
29619
|
-
|
|
29620
|
-
entries,
|
|
29621
|
-
) {
|
|
29622
|
-
return entries.map(({ type, start, end, name, data }) =>
|
|
29553
|
+
function createPerformanceSpans(replay, entries) {
|
|
29554
|
+
entries.map(({ type, start, end, name, data }) =>
|
|
29623
29555
|
addEvent(replay, {
|
|
29624
29556
|
type: EventType.Custom,
|
|
29625
29557
|
timestamp: start,
|
|
@@ -29706,9 +29638,6 @@ function handleFetchSpanListener(replay) {
|
|
|
29706
29638
|
};
|
|
29707
29639
|
}
|
|
29708
29640
|
|
|
29709
|
-
/**
|
|
29710
|
-
* Returns true if we think the given event is an error originating inside of rrweb.
|
|
29711
|
-
*/
|
|
29712
29641
|
function isRrwebError(event) {
|
|
29713
29642
|
if (event.type || !_optionalChain([event, 'access', _ => _.exception, 'optionalAccess', _2 => _2.values, 'optionalAccess', _3 => _3.length])) {
|
|
29714
29643
|
return false;
|
|
@@ -29730,7 +29659,10 @@ function isRrwebError(event) {
|
|
|
29730
29659
|
function handleGlobalEventListener(replay) {
|
|
29731
29660
|
return (event) => {
|
|
29732
29661
|
// Do not apply replayId to the root event
|
|
29733
|
-
if (
|
|
29662
|
+
if (
|
|
29663
|
+
// @ts-ignore new event type
|
|
29664
|
+
event.type === REPLAY_EVENT_NAME
|
|
29665
|
+
) {
|
|
29734
29666
|
// Replays have separate set of breadcrumbs, do not include breadcrumbs
|
|
29735
29667
|
// from core SDK
|
|
29736
29668
|
delete event.breadcrumbs;
|
|
@@ -29746,7 +29678,7 @@ function handleGlobalEventListener(replay) {
|
|
|
29746
29678
|
|
|
29747
29679
|
// Only tag transactions with replayId if not waiting for an error
|
|
29748
29680
|
// @ts-ignore private
|
|
29749
|
-
if (
|
|
29681
|
+
if (event.type !== 'transaction' || replay.recordingMode === 'session') {
|
|
29750
29682
|
event.tags = { ...event.tags, replayId: _optionalChain([replay, 'access', _5 => _5.session, 'optionalAccess', _6 => _6.id]) };
|
|
29751
29683
|
}
|
|
29752
29684
|
|
|
@@ -30050,14 +29982,122 @@ function setupPerformanceObserver(replay) {
|
|
|
30050
29982
|
return performanceObserver;
|
|
30051
29983
|
}
|
|
30052
29984
|
|
|
29985
|
+
// Map entryType -> function to normalize data for event
|
|
29986
|
+
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
29987
|
+
const ENTRY_TYPES = {
|
|
29988
|
+
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
29989
|
+
resource: createResourceEntry,
|
|
29990
|
+
paint: createPaintEntry,
|
|
29991
|
+
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
29992
|
+
navigation: createNavigationEntry,
|
|
29993
|
+
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
29994
|
+
['largest-contentful-paint']: createLargestContentfulPaint,
|
|
29995
|
+
};
|
|
29996
|
+
|
|
29997
|
+
function createPerformanceEntries(entries) {
|
|
29998
|
+
return entries.map(createPerformanceEntry).filter(Boolean) ;
|
|
29999
|
+
}
|
|
30000
|
+
|
|
30001
|
+
function createPerformanceEntry(entry) {
|
|
30002
|
+
if (ENTRY_TYPES[entry.entryType] === undefined) {
|
|
30003
|
+
return null;
|
|
30004
|
+
}
|
|
30005
|
+
|
|
30006
|
+
return ENTRY_TYPES[entry.entryType](entry);
|
|
30007
|
+
}
|
|
30008
|
+
|
|
30009
|
+
function getAbsoluteTime(time) {
|
|
30010
|
+
// browserPerformanceTimeOrigin can be undefined if `performance` or
|
|
30011
|
+
// `performance.now` doesn't exist, but this is already checked by this integration
|
|
30012
|
+
return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;
|
|
30013
|
+
}
|
|
30014
|
+
|
|
30015
|
+
// TODO: type definition!
|
|
30016
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30017
|
+
function createPaintEntry(entry) {
|
|
30018
|
+
const { duration, entryType, name, startTime } = entry;
|
|
30019
|
+
|
|
30020
|
+
const start = getAbsoluteTime(startTime);
|
|
30021
|
+
return {
|
|
30022
|
+
type: entryType,
|
|
30023
|
+
name,
|
|
30024
|
+
start,
|
|
30025
|
+
end: start + duration,
|
|
30026
|
+
};
|
|
30027
|
+
}
|
|
30028
|
+
|
|
30029
|
+
// TODO: type definition!
|
|
30030
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30031
|
+
function createNavigationEntry(entry) {
|
|
30032
|
+
// TODO: There looks to be some more interesting bits in here (domComplete, domContentLoaded)
|
|
30033
|
+
const { entryType, name, duration, domComplete, startTime, transferSize, type } = entry;
|
|
30034
|
+
|
|
30035
|
+
// Ignore entries with no duration, they do not seem to be useful and cause dupes
|
|
30036
|
+
if (duration === 0) {
|
|
30037
|
+
return null;
|
|
30038
|
+
}
|
|
30039
|
+
|
|
30040
|
+
return {
|
|
30041
|
+
type: `${entryType}.${type}`,
|
|
30042
|
+
start: getAbsoluteTime(startTime),
|
|
30043
|
+
end: getAbsoluteTime(domComplete),
|
|
30044
|
+
name,
|
|
30045
|
+
data: {
|
|
30046
|
+
size: transferSize,
|
|
30047
|
+
duration,
|
|
30048
|
+
},
|
|
30049
|
+
};
|
|
30050
|
+
}
|
|
30051
|
+
|
|
30052
|
+
// TODO: type definition!
|
|
30053
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30054
|
+
function createResourceEntry(entry) {
|
|
30055
|
+
const { entryType, initiatorType, name, responseEnd, startTime, encodedBodySize, transferSize } = entry;
|
|
30056
|
+
|
|
30057
|
+
// Core SDK handles these
|
|
30058
|
+
if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {
|
|
30059
|
+
return null;
|
|
30060
|
+
}
|
|
30061
|
+
|
|
30062
|
+
return {
|
|
30063
|
+
type: `${entryType}.${initiatorType}`,
|
|
30064
|
+
start: getAbsoluteTime(startTime),
|
|
30065
|
+
end: getAbsoluteTime(responseEnd),
|
|
30066
|
+
name,
|
|
30067
|
+
data: {
|
|
30068
|
+
size: transferSize,
|
|
30069
|
+
encodedBodySize,
|
|
30070
|
+
},
|
|
30071
|
+
};
|
|
30072
|
+
}
|
|
30073
|
+
|
|
30074
|
+
// TODO: type definition!
|
|
30075
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30076
|
+
function createLargestContentfulPaint(entry) {
|
|
30077
|
+
const { duration, entryType, startTime, size } = entry;
|
|
30078
|
+
|
|
30079
|
+
const start = getAbsoluteTime(startTime);
|
|
30080
|
+
|
|
30081
|
+
return {
|
|
30082
|
+
type: entryType,
|
|
30083
|
+
name: entryType,
|
|
30084
|
+
start,
|
|
30085
|
+
end: start + duration,
|
|
30086
|
+
data: {
|
|
30087
|
+
duration,
|
|
30088
|
+
size,
|
|
30089
|
+
// Not sure why this errors, Node should be correct (Argument of type 'Node' is not assignable to parameter of type 'INode')
|
|
30090
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30091
|
+
nodeId: record.mirror.getId(entry.element ),
|
|
30092
|
+
},
|
|
30093
|
+
};
|
|
30094
|
+
}
|
|
30095
|
+
|
|
30053
30096
|
const workerString = `/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */
|
|
30054
|
-
function t(t){let e=t.length;for(;--e>=0;)t[e]=0}const e=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),a=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),i=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),n=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Array(576);t(s);const r=new Array(60);t(r);const o=new Array(512);t(o);const l=new Array(256);t(l);const h=new Array(29);t(h);const d=new Array(30);function _(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let f,c,u;function w(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}t(d);const m=t=>t<256?o[t]:o[256+(t>>>7)],b=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},g=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,b(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},p=(t,e,a)=>{g(t,a[2*e],a[2*e+1])},k=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},v=(t,e,a)=>{const i=new Array(16);let n,s,r=0;for(n=1;n<=15;n++)r=r+a[n-1]<<1,i[n]=r;for(s=0;s<=e;s++){let e=t[2*s+1];0!==e&&(t[2*s]=k(i[e]++,e))}},y=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},x=t=>{t.bi_valid>8?b(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},z=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[a]},A=(t,e,a)=>{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n<t.heap_len&&z(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!z(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i},E=(t,i,n)=>{let s,r,o,_,f=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+f++],s+=(255&t.pending_buf[t.sym_buf+f++])<<8,r=t.pending_buf[t.sym_buf+f++],0===s?p(t,r,i):(o=l[r],p(t,o+256+1,i),_=e[o],0!==_&&(r-=h[o],g(t,r,_)),s--,o=m(s),p(t,o,n),_=a[o],0!==_&&(s-=d[o],g(t,s,_)))}while(f<t.sym_next);p(t,256,i)},R=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,s=e.stat_desc.elems;let r,o,l,h=-1;for(t.heap_len=0,t.heap_max=573,r=0;r<s;r++)0!==a[2*r]?(t.heap[++t.heap_len]=h=r,t.depth[r]=0):a[2*r+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=h<2?++h:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,n&&(t.static_len-=i[2*l+1]);for(e.max_code=h,r=t.heap_len>>1;r>=1;r--)A(t,a,r);l=s;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],A(t,a,1),o=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=o,a[2*l]=a[2*r]+a[2*o],t.depth[l]=(t.depth[r]>=t.depth[o]?t.depth[r]:t.depth[o])+1,a[2*r+1]=a[2*o+1]=l,t.heap[1]=l++,A(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length;let h,d,_,f,c,u,w=0;for(f=0;f<=15;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],f=a[2*a[2*d+1]+1]+1,f>l&&(f=l,w++),a[2*d+1]=f,d>i||(t.bl_count[f]++,c=0,d>=o&&(c=r[d-o]),u=a[2*d],t.opt_len+=u*(f+c),s&&(t.static_len+=u*(n[2*d+1]+c)));if(0!==w){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,w-=2}while(w>0);for(f=l;0!==f;f--)for(d=t.bl_count[f];0!==d;)_=t.heap[--h],_>i||(a[2*_+1]!==f&&(t.opt_len+=(f-a[2*_+1])*a[2*_],a[2*_+1]=f),d--)}})(t,e),v(a,h,t.bl_count)},Z=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o<l&&n===r||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==s&&t.bl_tree[2*n]++,t.bl_tree[32]++):o<=10?t.bl_tree[34]++:t.bl_tree[36]++,o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4))},S=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o<l&&n===r)){if(o<h)do{p(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==s&&(p(t,n,t.bl_tree),o--),p(t,16,t.bl_tree),g(t,o-3,2)):o<=10?(p(t,17,t.bl_tree),g(t,o-3,3)):(p(t,18,t.bl_tree),g(t,o-11,7));o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4)}};let U=!1;const D=(t,e,a,i)=>{g(t,0+(i?1:0),3),x(t),b(t,a),b(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var O=(t,e,a,i)=>{let o,l,h=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),R(t,t.l_desc),R(t,t.d_desc),h=(t=>{let e;for(Z(t,t.dyn_ltree,t.l_desc.max_code),Z(t,t.dyn_dtree,t.d_desc.max_code),R(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*n[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),o=t.opt_len+3+7>>>3,l=t.static_len+3+7>>>3,l<=o&&(o=l)):o=l=a+5,a+4<=o&&-1!==e?D(t,e,a,i):4===t.strategy||l===o?(g(t,2+(i?1:0),3),E(t,s,r)):(g(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(g(t,e-257,5),g(t,a-1,5),g(t,i-4,4),s=0;s<i;s++)g(t,t.bl_tree[2*n[s]+1],3);S(t,t.dyn_ltree,e-1),S(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,h+1),E(t,t.dyn_ltree,t.dyn_dtree)),y(t),i&&x(t)},T={_tr_init:t=>{U||((()=>{let t,n,w,m,b;const g=new Array(16);for(w=0,m=0;m<28;m++)for(h[m]=w,t=0;t<1<<e[m];t++)l[w++]=m;for(l[w-1]=m,b=0,m=0;m<16;m++)for(d[m]=b,t=0;t<1<<a[m];t++)o[b++]=m;for(b>>=7;m<30;m++)for(d[m]=b<<7,t=0;t<1<<a[m]-7;t++)o[256+b++]=m;for(n=0;n<=15;n++)g[n]=0;for(t=0;t<=143;)s[2*t+1]=8,t++,g[8]++;for(;t<=255;)s[2*t+1]=9,t++,g[9]++;for(;t<=279;)s[2*t+1]=7,t++,g[7]++;for(;t<=287;)s[2*t+1]=8,t++,g[8]++;for(v(s,287,g),t=0;t<30;t++)r[2*t+1]=5,r[2*t]=k(t,5);f=new _(s,e,257,286,15),c=new _(r,a,0,30,15),u=new _(new Array(0),i,0,19,7)})(),U=!0),t.l_desc=new w(t.dyn_ltree,f),t.d_desc=new w(t.dyn_dtree,c),t.bl_desc=new w(t.bl_tree,u),t.bi_buf=0,t.bi_valid=0,y(t)},_tr_stored_block:D,_tr_flush_block:O,_tr_tally:(t,e,a)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(l[a]+256+1)]++,t.dyn_dtree[2*m(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{g(t,2,3),p(t,256,s),(t=>{16===t.bi_valid?(b(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var N=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const F=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var L=(t,e,a,i)=>{const n=F,s=i+a;t^=-1;for(let a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return-1^t},I={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},B={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:C,_tr_stored_block:H,_tr_flush_block:M,_tr_tally:j,_tr_align:K}=T,{Z_NO_FLUSH:P,Z_PARTIAL_FLUSH:Y,Z_FULL_FLUSH:G,Z_FINISH:X,Z_BLOCK:J,Z_OK:W,Z_STREAM_END:q,Z_STREAM_ERROR:Q,Z_DATA_ERROR:V,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:tt,Z_FILTERED:et,Z_HUFFMAN_ONLY:at,Z_RLE:it,Z_FIXED:nt,Z_DEFAULT_STRATEGY:st,Z_UNKNOWN:rt,Z_DEFLATED:ot}=B,lt=(t,e)=>(t.msg=I[e],e),ht=t=>2*t-(t>4?9:0),dt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},_t=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let ft=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const ct=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},ut=(t,e)=>{M(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,ct(t.strm)},wt=(t,e)=>{t.pending_buf[t.pending++]=e},mt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},bt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=N(t.adler,e,n,a):2===t.state.wrap&&(t.adler=L(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},gt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+258;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&s<f);if(i=258-(f-s),s=f-258,i>r){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},pt=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),_t(t),i+=e),0===t.strm.avail_in)break;if(a=bt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=ft(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=ft(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},kt=(t,e)=>{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_out<n)break;if(n=t.strm.avail_out-n,i=t.strstart-t.block_start,a>i+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a<s&&(0===a&&e!==X||e===P||a!==i+t.strm.avail_in))break;r=e===X&&a===i+t.strm.avail_in?1:0,H(t,0,0,r),t.pending_buf[t.pending-4]=a,t.pending_buf[t.pending-3]=a>>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,ct(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(bt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),r?4:e!==P&&e!==X&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(n=t.window_size-t.strstart,t.strm.avail_in>n&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(bt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water<t.strstart&&(t.high_water=t.strstart),n=t.bi_valid+42>>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===X)&&e!==P&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===X&&0===t.strm.avail_in&&a===i?1:0,H(t,t.block_start,a,r),t.block_start+=a,ct(t.strm)),r?3:1)},vt=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a)),t.match_length>=3)if(i=j(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=ft(t,t.ins_h,t.window[t.strstart+1]);else i=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2},yt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a),t.match_length<=5&&(t.strategy===et||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=j(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(ut(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=j(t,0,t.window[t.strstart-1]),i&&ut(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=j(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2};function xt(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const zt=[new xt(0,0,0,0,kt),new xt(4,4,8,4,vt),new xt(4,5,16,8,vt),new xt(4,6,32,32,vt),new xt(4,4,16,16,yt),new xt(8,16,32,32,yt),new xt(8,16,128,128,yt),new xt(8,32,128,256,yt),new xt(32,128,258,1024,yt),new xt(32,258,258,4096,yt)];function At(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ot,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),dt(this.dyn_ltree),dt(this.dyn_dtree),dt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),dt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),dt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Et=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||42!==e.status&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&113!==e.status&&666!==e.status?1:0},Rt=t=>{if(Et(t))return lt(t,Q);t.total_in=t.total_out=0,t.data_type=rt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=-2,C(e),W},Zt=t=>{const e=Rt(t);var a;return e===W&&((a=t.state).window_size=2*a.w_size,dt(a.head),a.max_lazy_match=zt[a.level].max_lazy,a.good_match=zt[a.level].good_length,a.nice_match=zt[a.level].nice_length,a.max_chain_length=zt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},St=(t,e,a,i,n,s)=>{if(!t)return Q;let r=1;if(e===tt&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ot||i<8||i>15||e<0||e>9||s<0||s>nt||8===i&&1!==r)return lt(t,Q);8===i&&(i=9);const o=new At;return t.state=o,o.strm=t,o.status=42,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new Uint8Array(2*o.w_size),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=3*(o.lit_bufsize-1),o.level=e,o.strategy=s,o.method=a,Zt(t)};var Ut={deflateInit:(t,e)=>St(t,e,ot,15,8,st),deflateInit2:St,deflateReset:Zt,deflateResetKeep:Rt,deflateSetHeader:(t,e)=>Et(t)||2!==t.state.wrap?Q:(t.state.gzhead=e,W),deflate:(t,e)=>{if(Et(t)||e>J||e<0)return t?lt(t,Q):Q;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||666===a.status&&e!==X)return lt(t,0===t.avail_out?$:Q);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(ct(t),0===t.avail_out)return a.last_flush=-1,W}else if(0===t.avail_in&&ht(e)<=ht(i)&&e!==X)return lt(t,$);if(666===a.status&&0!==t.avail_in)return lt(t,$);if(42===a.status&&0===a.wrap&&(a.status=113),42===a.status){let e=ot+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=at||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,mt(a,e),0!==a.strstart&&(mt(a,t.adler>>>16),mt(a,65535&t.adler)),t.adler=1,a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W}if(57===a.status)if(t.adler=0,wt(a,31),wt(a,139),wt(a,8),a.gzhead)wt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),wt(a,255&a.gzhead.time),wt(a,a.gzhead.time>>8&255),wt(a,a.gzhead.time>>16&255),wt(a,a.gzhead.time>>24&255),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(wt(a,255&a.gzhead.extra.length),wt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=L(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,3),a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=L(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,ct(t),0!==a.pending)return a.last_flush=-1,W;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=L(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,W;i=0}e=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,W;i=0}e=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(ct(t),0!==a.pending))return a.last_flush=-1,W;wt(a,255&t.adler),wt(a,t.adler>>8&255),t.adler=0}if(a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W}if(0!==t.avail_in||0!==a.lookahead||e!==P&&666!==a.status){let i=0===a.level?kt(a,e):a.strategy===at?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(pt(t),0===t.lookahead)){if(e===P)return 1;break}if(t.match_length=0,a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===it?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=258){if(pt(t),t.lookahead<=258&&e===P)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+258;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&n<s);t.match_length=258-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=j(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):zt[a.level].func(a,e);if(3!==i&&4!==i||(a.status=666),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),W;if(2===i&&(e===Y?K(a):e!==J&&(H(a,0,0,!1),e===G&&(dt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),ct(t),0===t.avail_out))return a.last_flush=-1,W}return e!==X?W:a.wrap<=0?q:(2===a.wrap?(wt(a,255&t.adler),wt(a,t.adler>>8&255),wt(a,t.adler>>16&255),wt(a,t.adler>>24&255),wt(a,255&t.total_in),wt(a,t.total_in>>8&255),wt(a,t.total_in>>16&255),wt(a,t.total_in>>24&255)):(mt(a,t.adler>>>16),mt(a,65535&t.adler)),ct(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?W:q)},deflateEnd:t=>{if(Et(t))return Q;const e=t.state.status;return t.state=null,113===e?lt(t,V):W},deflateSetDictionary:(t,e)=>{let a=e.length;if(Et(t))return Q;const i=t.state,n=i.wrap;if(2===n||1===n&&42!==i.status||i.lookahead)return Q;if(1===n&&(t.adler=N(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(dt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,pt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=ft(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,pt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,W},deflateInfo:"pako deflate (from Nodeca project)"};const Dt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Ot=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Dt(a,e)&&(t[e]=a[e])}}return t},Tt=t=>{let e=0;for(let a=0,i=t.length;a<i;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,i=0,n=t.length;e<n;e++){let n=t[e];a.set(n,i),i+=n.length}return a};let Nt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Nt=!1}const Ft=new Uint8Array(256);for(let t=0;t<256;t++)Ft[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Ft[254]=Ft[254]=1;var Lt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n<r;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),o+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(o),s=0,n=0;s<o;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},It=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i<a;){let e=t[i++];if(e<128){s[n++]=e;continue}let r=Ft[e];if(r>4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i<a;)e=e<<6|63&t[i++],r--;r>1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Nt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a})(s,n)},Bt=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Ft[t[a]]>e?a:e};var Ct=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ht=Object.prototype.toString,{Z_NO_FLUSH:Mt,Z_SYNC_FLUSH:jt,Z_FULL_FLUSH:Kt,Z_FINISH:Pt,Z_OK:Yt,Z_STREAM_END:Gt,Z_DEFAULT_COMPRESSION:Xt,Z_DEFAULT_STRATEGY:Jt,Z_DEFLATED:Wt}=B;function qt(t){this.options=Ot({level:Xt,method:Wt,chunkSize:16384,windowBits:15,memLevel:8,strategy:Jt},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Ut.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==Yt)throw new Error(I[a]);if(e.header&&Ut.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Lt(e.dictionary):"[object ArrayBuffer]"===Ht.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Ut.deflateSetDictionary(this.strm,t),a!==Yt)throw new Error(I[a]);this._dict_set=!0}}function Qt(t,e){const a=new qt(e);if(a.push(t,!0),a.err)throw a.msg||I[a.err];return a.result}qt.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?Pt:Mt,"string"==typeof t?a.input=Lt(t):"[object ArrayBuffer]"===Ht.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===jt||s===Kt)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Ut.deflate(a,s),n===Gt)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Ut.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Yt;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},qt.prototype.onData=function(t){this.chunks.push(t)},qt.prototype.onEnd=function(t){t===Yt&&(this.result=Tt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Vt={Deflate:qt,deflate:Qt,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Qt(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Qt(t,e)},constants:B};var $t=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<<E.lenbits)-1,b=(1<<E.distbits)-1;t:do{c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=u[f&m];e:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<<p)-1)];continue e}if(32&p){E.mode=16191;break t}t.msg="invalid literal/length code",E.mode=16209;break t}k=65535&g,p&=15,p&&(c<p&&(f+=z[a++]<<c,c+=8),k+=f&(1<<p)-1,f>>>=p,c-=p),c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=w[f&b];a:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<<p)-1)];continue a}t.msg="invalid distance code",E.mode=16209;break t}if(v=65535&g,p&=15,c<p&&(f+=z[a++]<<c,c+=8,c<p&&(f+=z[a++]<<c,c+=8)),v+=f&(1<<p)-1,v>o){t.msg="invalid distance too far back",E.mode=16209;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=16209;break t}if(y=0,x=_,0===d){if(y+=l-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}else if(d<p){if(y+=l+d-p,p-=d,p<k){k-=p;do{A[n++]=_[y++]}while(--p);if(y=0,d<k){p=d,k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}}else if(y+=d-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}for(;k>2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a<i&&n<r);k=c>>3,a-=k,c-=k<<3,f&=(1<<c)-1,t.next_in=a,t.next_out=n,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=n<r?r-n+257:257-(n-r),E.hold=f,E.bits=c};const te=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ee=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ae=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),ie=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var ne=(t,e,a,i,n,s,r,o)=>{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,S,U,D=null;for(w=0;w<=15;w++)E[w]=0;for(m=0;m<i;m++)E[e[a+m]]++;for(p=l,g=15;g>=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b<g&&0===E[b];b++);for(p<b&&(p=b),y=1,w=1;w<=15;w++)if(y<<=1,y-=E[w],y<0)return-1;if(y>0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<15;w++)R[w+1]=R[w]+E[w];for(m=0;m<i;m++)0!==e[a+m]&&(r[R[e[a+m]]++]=m);if(0===t?(A=D=r,u=20):1===t?(A=te,D=ee,u=257):(A=ae,D=ie,u=0),z=0,m=0,w=b,c=s,k=p,v=0,_=-1,x=1<<p,f=x-1,1===t&&x>852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1<u?(S=0,U=r[m]):r[m]>=u?(S=D[r[m]-u],U=A[r[m]-u]):(S=96,U=0),h=1<<w-v,d=1<<k,b=d;do{d-=h,n[c+(z>>v)+d]=Z<<24|S<<16|U|0}while(0!==d);for(h=1<<w-1;z&h;)h>>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<<k;k+v<g&&(y-=E[k+v],!(y<=0));)k++,y<<=1;if(x+=1<<k,1===t&&x>852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:se,Z_BLOCK:re,Z_TREES:oe,Z_OK:le,Z_STREAM_END:he,Z_NEED_DICT:de,Z_STREAM_ERROR:_e,Z_DATA_ERROR:fe,Z_MEM_ERROR:ce,Z_BUF_ERROR:ue,Z_DEFLATED:we}=B,me=16209,be=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function ge(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const pe=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<16180||e.mode>16211?1:0},ke=t=>{if(pe(t))return _e;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=16180,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,le},ve=t=>{if(pe(t))return _e;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,ke(t)},ye=(t,e)=>{let a;if(pe(t))return _e;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?_e:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,ve(t))},xe=(t,e)=>{if(!t)return _e;const a=new ge;t.state=a,a.strm=t,a.window=null,a.mode=16180;const i=ye(t,e);return i!==le&&(t.state=null),i};let ze,Ae,Ee=!0;const Re=t=>{if(Ee){ze=new Int32Array(512),Ae=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ne(1,t.lens,0,288,ze,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ne(2,t.lens,0,32,Ae,0,t.work,{bits:5}),Ee=!1}t.lencode=ze,t.lenbits=9,t.distcode=Ae,t.distbits=5},Ze=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),i>=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0};var Se={inflateReset:ve,inflateReset2:ye,inflateResetKeep:ke,inflateInit:t=>xe(t,15),inflateInit2:xe,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(pe(t)||!t.output||!t.input&&0!==t.avail_in)return _e;a=t.state,16191===a.mode&&(a.mode=16192),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=le;t:for(;;)switch(a.mode){case 16180:if(0===a.wrap){a.mode=16192;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(2&a.wrap&&35615===h){0===a.wbits&&(a.wbits=15),a.check=0,A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=me;break}if((15&h)!==we){t.msg="unknown compression method",a.mode=me;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=me;break}a.dmax=1<<a.wbits,a.flags=0,t.adler=a.check=1,a.mode=512&h?16189:16191,h=0,d=0;break;case 16181:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.flags=h,(255&a.flags)!==we){t.msg="unknown compression method",a.mode=me;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=me;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=L(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=16187;case 16187:if(4096&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.comment+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.comment=null);a.mode=16188;case 16188:if(512&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(65535&a.check)){t.msg="header crc mismatch",a.mode=me;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=16191;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}t.adler=a.check=be(h),h=0,d=0,a.mode=16190;case 16190:if(0===a.havedict)return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de;t.adler=a.check=1,a.mode=16191;case 16191:if(e===re||e===oe)break t;case 16192:if(a.last){h>>>=7&d,d-=7&d,a.mode=16206;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}switch(a.last=1&h,h>>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Re(a),a.mode=16199,e===oe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=me}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",a.mode=me;break}if(a.length=65535&h,h=0,d=0,a.mode=16194,e===oe)break t;case 16194:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=16191;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=me;break}a.have=0,a.mode=16197;case 16197:for(;a.have<a.ncode;){for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.lens[Z[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=ne(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=me;break}a.have=0,a.mode=16198;case 16198:for(;a.have<a.nlen+a.ndist;){for(;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(g<16)h>>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(h>>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=me;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=me;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===me)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=me;break}if(a.lenbits=9,E={bits:a.lenbits},x=ne(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=me;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=ne(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=me;break}if(a.mode=16199,e===oe)break t;case 16199:a.mode=16200;case 16200:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,$t(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,16191===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(b&&0==(240&b)){for(p=m,k=b,v=g;z=a.lencode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=16191;break}if(64&b){t.msg="invalid literal/length code",a.mode=me;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<<a.distbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(0==(240&b)){for(p=m,k=b,v=g;z=a.distcode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=me;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=me;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=me;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=16200);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=16200;break;case 16206:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<<d,d+=8}if(f-=l,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?L(a.check,n,f,r-f):N(a.check,n,f,r-f)),f=l,4&a.wrap&&(a.flags?h:be(h))!==a.check){t.msg="incorrect data check",a.mode=me;break}h=0,d=0}a.mode=16207;case 16207:if(a.wrap&&a.flags){for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=me;break}h=0,d=0}a.mode=16208;case 16208:x=he;break t;case me:x=fe;break t;case 16210:return ce;default:return _e}return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,(a.wsize||f!==t.avail_out&&a.mode<me&&(a.mode<16206||e!==se))&&Ze(t,t.output,t.next_out,f-t.avail_out),_-=t.avail_in,f-=t.avail_out,t.total_in+=_,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?L(a.check,n,f,t.next_out-f):N(a.check,n,f,t.next_out-f)),t.data_type=a.bits+(a.last?64:0)+(16191===a.mode?128:0)+(16199===a.mode||16194===a.mode?256:0),(0===_&&0===f||e===se)&&x===le&&(x=ue),x},inflateEnd:t=>{if(pe(t))return _e;let e=t.state;return e.window&&(e.window=null),t.state=null,le},inflateGetHeader:(t,e)=>{if(pe(t))return _e;const a=t.state;return 0==(2&a.wrap)?_e:(a.head=e,e.done=!1,le)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return pe(t)?_e:(i=t.state,0!==i.wrap&&16190!==i.mode?_e:16190===i.mode&&(n=1,n=N(n,e,a,0),n!==i.check)?fe:(s=Ze(t,e,a,a),s?(i.mode=16210,ce):(i.havedict=1,le)))},inflateInfo:"pako inflate (from Nodeca project)"};var Ue=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const De=Object.prototype.toString,{Z_NO_FLUSH:Oe,Z_FINISH:Te,Z_OK:Ne,Z_STREAM_END:Fe,Z_NEED_DICT:Le,Z_STREAM_ERROR:Ie,Z_DATA_ERROR:Be,Z_MEM_ERROR:Ce}=B;function He(t){this.options=Ot({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Se.inflateInit2(this.strm,e.windowBits);if(a!==Ne)throw new Error(I[a]);if(this.header=new Ue,Se.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Lt(e.dictionary):"[object ArrayBuffer]"===De.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Se.inflateSetDictionary(this.strm,e.dictionary),a!==Ne)))throw new Error(I[a])}He.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?Te:Oe,"[object ArrayBuffer]"===De.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=Se.inflate(a,r),s===Le&&n&&(s=Se.inflateSetDictionary(a,n),s===Ne?s=Se.inflate(a,r):s===Be&&(s=Le));a.avail_in>0&&s===Fe&&a.state.wrap>0&&0!==t[a.next_in];)Se.inflateReset(a),s=Se.inflate(a,r);switch(s){case Ie:case Be:case Le:case Ce:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===Fe))if("string"===this.options.to){let t=Bt(a.output,a.next_out),e=a.next_out-t,n=It(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==Ne||0!==o){if(s===Fe)return s=Se.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},He.prototype.onData=function(t){this.chunks.push(t)},He.prototype.onEnd=function(t){t===Ne&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Tt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:Me,deflate:je,deflateRaw:Ke,gzip:Pe}=Vt;var Ye=Me,Ge=B;const Xe=new class{constructor(){this.added=0,this.init()}init(){this.added=0,this.deflate=new Ye,this.deflate.push("[",Ge.Z_NO_FLUSH)}addEvent(t){if(!t)throw new Error("Adding invalid event");const e=this.added>0?",":"";this.deflate.push(e+JSON.stringify(t),Ge.Z_SYNC_FLUSH),this.added++}finish(){if(this.deflate.push("]",Ge.Z_FINISH),this.deflate.err)throw this.deflate.err;const t=this.deflate.result;return this.init(),t}},Je={init:()=>(Xe.init(),""),addEvent:t=>Xe.addEvent(t),finish:()=>Xe.finish()};addEventListener("message",(function(t){const e=t.data.method,a=t.data.id,[i]=t.data.args?JSON.parse(t.data.args):[];if(e in Je&&"function"==typeof Je[e])try{const t=Je[e](i);postMessage({id:a,method:e,success:!0,response:t})}catch(t){postMessage({id:a,method:e,success:!1,response:t.message}),console.error(t)}}));`;
|
|
30097
|
+
function t(t){let e=t.length;for(;--e>=0;)t[e]=0}const e=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),a=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),i=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),n=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=new Array(576);t(s);const r=new Array(60);t(r);const o=new Array(512);t(o);const l=new Array(256);t(l);const h=new Array(29);t(h);const d=new Array(30);function _(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let f,c,u;function w(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}t(d);const m=t=>t<256?o[t]:o[256+(t>>>7)],b=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},g=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<<t.bi_valid&65535,b(t,t.bi_buf),t.bi_buf=e>>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)},p=(t,e,a)=>{g(t,a[2*e],a[2*e+1])},k=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},v=(t,e,a)=>{const i=new Array(16);let n,s,r=0;for(n=1;n<=15;n++)r=r+a[n-1]<<1,i[n]=r;for(s=0;s<=e;s++){let e=t[2*s+1];0!==e&&(t[2*s]=k(i[e]++,e))}},y=t=>{let e;for(e=0;e<286;e++)t.dyn_ltree[2*e]=0;for(e=0;e<30;e++)t.dyn_dtree[2*e]=0;for(e=0;e<19;e++)t.bl_tree[2*e]=0;t.dyn_ltree[512]=1,t.opt_len=t.static_len=0,t.sym_next=t.matches=0},x=t=>{t.bi_valid>8?b(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},z=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[a]},A=(t,e,a)=>{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n<t.heap_len&&z(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!z(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i},E=(t,i,n)=>{let s,r,o,_,f=0;if(0!==t.sym_next)do{s=255&t.pending_buf[t.sym_buf+f++],s+=(255&t.pending_buf[t.sym_buf+f++])<<8,r=t.pending_buf[t.sym_buf+f++],0===s?p(t,r,i):(o=l[r],p(t,o+256+1,i),_=e[o],0!==_&&(r-=h[o],g(t,r,_)),s--,o=m(s),p(t,o,n),_=a[o],0!==_&&(s-=d[o],g(t,s,_)))}while(f<t.sym_next);p(t,256,i)},R=(t,e)=>{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,s=e.stat_desc.elems;let r,o,l,h=-1;for(t.heap_len=0,t.heap_max=573,r=0;r<s;r++)0!==a[2*r]?(t.heap[++t.heap_len]=h=r,t.depth[r]=0):a[2*r+1]=0;for(;t.heap_len<2;)l=t.heap[++t.heap_len]=h<2?++h:0,a[2*l]=1,t.depth[l]=0,t.opt_len--,n&&(t.static_len-=i[2*l+1]);for(e.max_code=h,r=t.heap_len>>1;r>=1;r--)A(t,a,r);l=s;do{r=t.heap[1],t.heap[1]=t.heap[t.heap_len--],A(t,a,1),o=t.heap[1],t.heap[--t.heap_max]=r,t.heap[--t.heap_max]=o,a[2*l]=a[2*r]+a[2*o],t.depth[l]=(t.depth[r]>=t.depth[o]?t.depth[r]:t.depth[o])+1,a[2*r+1]=a[2*o+1]=l,t.heap[1]=l++,A(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,s=e.stat_desc.has_stree,r=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length;let h,d,_,f,c,u,w=0;for(f=0;f<=15;f++)t.bl_count[f]=0;for(a[2*t.heap[t.heap_max]+1]=0,h=t.heap_max+1;h<573;h++)d=t.heap[h],f=a[2*a[2*d+1]+1]+1,f>l&&(f=l,w++),a[2*d+1]=f,d>i||(t.bl_count[f]++,c=0,d>=o&&(c=r[d-o]),u=a[2*d],t.opt_len+=u*(f+c),s&&(t.static_len+=u*(n[2*d+1]+c)));if(0!==w){do{for(f=l-1;0===t.bl_count[f];)f--;t.bl_count[f]--,t.bl_count[f+1]+=2,t.bl_count[l]--,w-=2}while(w>0);for(f=l;0!==f;f--)for(d=t.bl_count[f];0!==d;)_=t.heap[--h],_>i||(a[2*_+1]!==f&&(t.opt_len+=(f-a[2*_+1])*a[2*_],a[2*_+1]=f),d--)}})(t,e),v(a,h,t.bl_count)},Z=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++o<l&&n===r||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==s&&t.bl_tree[2*n]++,t.bl_tree[32]++):o<=10?t.bl_tree[34]++:t.bl_tree[36]++,o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4))},S=(t,e,a)=>{let i,n,s=-1,r=e[1],o=0,l=7,h=4;for(0===r&&(l=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++o<l&&n===r)){if(o<h)do{p(t,n,t.bl_tree)}while(0!=--o);else 0!==n?(n!==s&&(p(t,n,t.bl_tree),o--),p(t,16,t.bl_tree),g(t,o-3,2)):o<=10?(p(t,17,t.bl_tree),g(t,o-3,3)):(p(t,18,t.bl_tree),g(t,o-11,7));o=0,s=n,0===r?(l=138,h=3):n===r?(l=6,h=3):(l=7,h=4)}};let U=!1;const D=(t,e,a,i)=>{g(t,0+(i?1:0),3),x(t),b(t,a),b(t,~a),a&&t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a};var O=(t,e,a,i)=>{let o,l,h=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e<256;e++)if(0!==t.dyn_ltree[2*e])return 1;return 0})(t)),R(t,t.l_desc),R(t,t.d_desc),h=(t=>{let e;for(Z(t,t.dyn_ltree,t.l_desc.max_code),Z(t,t.dyn_dtree,t.d_desc.max_code),R(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*n[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),o=t.opt_len+3+7>>>3,l=t.static_len+3+7>>>3,l<=o&&(o=l)):o=l=a+5,a+4<=o&&-1!==e?D(t,e,a,i):4===t.strategy||l===o?(g(t,2+(i?1:0),3),E(t,s,r)):(g(t,4+(i?1:0),3),((t,e,a,i)=>{let s;for(g(t,e-257,5),g(t,a-1,5),g(t,i-4,4),s=0;s<i;s++)g(t,t.bl_tree[2*n[s]+1],3);S(t,t.dyn_ltree,e-1),S(t,t.dyn_dtree,a-1)})(t,t.l_desc.max_code+1,t.d_desc.max_code+1,h+1),E(t,t.dyn_ltree,t.dyn_dtree)),y(t),i&&x(t)},T={_tr_init:t=>{U||((()=>{let t,n,w,m,b;const g=new Array(16);for(w=0,m=0;m<28;m++)for(h[m]=w,t=0;t<1<<e[m];t++)l[w++]=m;for(l[w-1]=m,b=0,m=0;m<16;m++)for(d[m]=b,t=0;t<1<<a[m];t++)o[b++]=m;for(b>>=7;m<30;m++)for(d[m]=b<<7,t=0;t<1<<a[m]-7;t++)o[256+b++]=m;for(n=0;n<=15;n++)g[n]=0;for(t=0;t<=143;)s[2*t+1]=8,t++,g[8]++;for(;t<=255;)s[2*t+1]=9,t++,g[9]++;for(;t<=279;)s[2*t+1]=7,t++,g[7]++;for(;t<=287;)s[2*t+1]=8,t++,g[8]++;for(v(s,287,g),t=0;t<30;t++)r[2*t+1]=5,r[2*t]=k(t,5);f=new _(s,e,257,286,15),c=new _(r,a,0,30,15),u=new _(new Array(0),i,0,19,7)})(),U=!0),t.l_desc=new w(t.dyn_ltree,f),t.d_desc=new w(t.dyn_dtree,c),t.bl_desc=new w(t.bl_tree,u),t.bi_buf=0,t.bi_valid=0,y(t)},_tr_stored_block:D,_tr_flush_block:O,_tr_tally:(t,e,a)=>(t.pending_buf[t.sym_buf+t.sym_next++]=e,t.pending_buf[t.sym_buf+t.sym_next++]=e>>8,t.pending_buf[t.sym_buf+t.sym_next++]=a,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(l[a]+256+1)]++,t.dyn_dtree[2*m(e)]++),t.sym_next===t.sym_end),_tr_align:t=>{g(t,2,3),p(t,256,s),(t=>{16===t.bi_valid?(b(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var N=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const F=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var L=(t,e,a,i)=>{const n=F,s=i+a;t^=-1;for(let a=i;a<s;a++)t=t>>>8^n[255&(t^e[a])];return-1^t},I={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},B={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:C,_tr_stored_block:H,_tr_flush_block:M,_tr_tally:j,_tr_align:K}=T,{Z_NO_FLUSH:P,Z_PARTIAL_FLUSH:Y,Z_FULL_FLUSH:G,Z_FINISH:X,Z_BLOCK:J,Z_OK:W,Z_STREAM_END:q,Z_STREAM_ERROR:Q,Z_DATA_ERROR:V,Z_BUF_ERROR:$,Z_DEFAULT_COMPRESSION:tt,Z_FILTERED:et,Z_HUFFMAN_ONLY:at,Z_RLE:it,Z_FIXED:nt,Z_DEFAULT_STRATEGY:st,Z_UNKNOWN:rt,Z_DEFLATED:ot}=B,lt=(t,e)=>(t.msg=I[e],e),ht=t=>2*t-(t>4?9:0),dt=t=>{let e=t.length;for(;--e>=0;)t[e]=0},_t=t=>{let e,a,i,n=t.w_size;e=t.hash_size,i=e;do{a=t.head[--i],t.head[i]=a>=n?a-n:0}while(--e);e=n,i=e;do{a=t.prev[--i],t.prev[i]=a>=n?a-n:0}while(--e)};let ft=(t,e,a)=>(e<<t.hash_shift^a)&t.hash_mask;const ct=t=>{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},ut=(t,e)=>{M(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,ct(t.strm)},wt=(t,e)=>{t.pending_buf[t.pending++]=e},mt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},bt=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=N(t.adler,e,n,a):2===t.state.wrap&&(t.adler=L(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},gt=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,o=t.nice_match;const l=t.strstart>t.w_size-262?t.strstart-(t.w_size-262):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+258;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&s<f);if(i=258-(f-s),s=f-258,i>r){if(t.match_start=e,r=i,i>=o)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>l&&0!=--n);return r<=t.lookahead?r:t.lookahead},pt=t=>{const e=t.w_size;let a,i,n;do{if(i=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-262)&&(t.window.set(t.window.subarray(e,e+e-i),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,t.insert>t.strstart&&(t.insert=t.strstart),_t(t),i+=e),0===t.strm.avail_in)break;if(a=bt(t.strm,t.window,t.strstart+t.lookahead,i),t.lookahead+=a,t.lookahead+t.insert>=3)for(n=t.strstart-t.insert,t.ins_h=t.window[n],t.ins_h=ft(t,t.ins_h,t.window[n+1]);t.insert&&(t.ins_h=ft(t,t.ins_h,t.window[n+3-1]),t.prev[n&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=n,n++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead<262&&0!==t.strm.avail_in)},kt=(t,e)=>{let a,i,n,s=t.pending_buf_size-5>t.w_size?t.w_size:t.pending_buf_size-5,r=0,o=t.strm.avail_in;do{if(a=65535,n=t.bi_valid+42>>3,t.strm.avail_out<n)break;if(n=t.strm.avail_out-n,i=t.strstart-t.block_start,a>i+t.strm.avail_in&&(a=i+t.strm.avail_in),a>n&&(a=n),a<s&&(0===a&&e!==X||e===P||a!==i+t.strm.avail_in))break;r=e===X&&a===i+t.strm.avail_in?1:0,H(t,0,0,r),t.pending_buf[t.pending-4]=a,t.pending_buf[t.pending-3]=a>>8,t.pending_buf[t.pending-2]=~a,t.pending_buf[t.pending-1]=~a>>8,ct(t.strm),i&&(i>a&&(i=a),t.strm.output.set(t.window.subarray(t.block_start,t.block_start+i),t.strm.next_out),t.strm.next_out+=i,t.strm.avail_out-=i,t.strm.total_out+=i,t.block_start+=i,a-=i),a&&(bt(t.strm,t.strm.output,t.strm.next_out,a),t.strm.next_out+=a,t.strm.avail_out-=a,t.strm.total_out+=a)}while(0===r);return o-=t.strm.avail_in,o&&(o>=t.w_size?(t.matches=2,t.window.set(t.strm.input.subarray(t.strm.next_in-t.w_size,t.strm.next_in),0),t.strstart=t.w_size,t.insert=t.strstart):(t.window_size-t.strstart<=o&&(t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,t.insert>t.strstart&&(t.insert=t.strstart)),t.window.set(t.strm.input.subarray(t.strm.next_in-o,t.strm.next_in),t.strstart),t.strstart+=o,t.insert+=o>t.w_size-t.insert?t.w_size-t.insert:o),t.block_start=t.strstart),t.high_water<t.strstart&&(t.high_water=t.strstart),r?4:e!==P&&e!==X&&0===t.strm.avail_in&&t.strstart===t.block_start?2:(n=t.window_size-t.strstart,t.strm.avail_in>n&&t.block_start>=t.w_size&&(t.block_start-=t.w_size,t.strstart-=t.w_size,t.window.set(t.window.subarray(t.w_size,t.w_size+t.strstart),0),t.matches<2&&t.matches++,n+=t.w_size,t.insert>t.strstart&&(t.insert=t.strstart)),n>t.strm.avail_in&&(n=t.strm.avail_in),n&&(bt(t.strm,t.window,t.strstart,n),t.strstart+=n,t.insert+=n>t.w_size-t.insert?t.w_size-t.insert:n),t.high_water<t.strstart&&(t.high_water=t.strstart),n=t.bi_valid+42>>3,n=t.pending_buf_size-n>65535?65535:t.pending_buf_size-n,s=n>t.w_size?t.w_size:n,i=t.strstart-t.block_start,(i>=s||(i||e===X)&&e!==P&&0===t.strm.avail_in&&i<=n)&&(a=i>n?n:i,r=e===X&&0===t.strm.avail_in&&a===i?1:0,H(t,t.block_start,a,r),t.block_start+=a,ct(t.strm)),r?3:1)},vt=(t,e)=>{let a,i;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a)),t.match_length>=3)if(i=j(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=ft(t,t.ins_h,t.window[t.strstart+1]);else i=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2},yt=(t,e)=>{let a,i,n;for(;;){if(t.lookahead<262){if(pt(t),t.lookahead<262&&e===P)return 1;if(0===t.lookahead)break}if(a=0,t.lookahead>=3&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-262&&(t.match_length=gt(t,a),t.match_length<=5&&(t.strategy===et||3===t.match_length&&t.strstart-t.match_start>4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=j(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=ft(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(ut(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=j(t,0,t.window[t.strstart-1]),i&&ut(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=j(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2};function xt(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const zt=[new xt(0,0,0,0,kt),new xt(4,4,8,4,vt),new xt(4,5,16,8,vt),new xt(4,6,32,32,vt),new xt(4,4,16,16,yt),new xt(8,16,32,32,yt),new xt(8,16,128,128,yt),new xt(8,32,128,256,yt),new xt(32,128,258,1024,yt),new xt(32,258,258,4096,yt)];function At(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ot,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),dt(this.dyn_ltree),dt(this.dyn_dtree),dt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),dt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),dt(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Et=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||42!==e.status&&57!==e.status&&69!==e.status&&73!==e.status&&91!==e.status&&103!==e.status&&113!==e.status&&666!==e.status?1:0},Rt=t=>{if(Et(t))return lt(t,Q);t.total_in=t.total_out=0,t.data_type=rt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=2===e.wrap?57:e.wrap?42:113,t.adler=2===e.wrap?0:1,e.last_flush=-2,C(e),W},Zt=t=>{const e=Rt(t);var a;return e===W&&((a=t.state).window_size=2*a.w_size,dt(a.head),a.max_lazy_match=zt[a.level].max_lazy,a.good_match=zt[a.level].good_length,a.nice_match=zt[a.level].nice_length,a.max_chain_length=zt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},St=(t,e,a,i,n,s)=>{if(!t)return Q;let r=1;if(e===tt&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==ot||i<8||i>15||e<0||e>9||s<0||s>nt||8===i&&1!==r)return lt(t,Q);8===i&&(i=9);const o=new At;return t.state=o,o.strm=t,o.status=42,o.wrap=r,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+3-1)/3),o.window=new Uint8Array(2*o.w_size),o.head=new Uint16Array(o.hash_size),o.prev=new Uint16Array(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new Uint8Array(o.pending_buf_size),o.sym_buf=o.lit_bufsize,o.sym_end=3*(o.lit_bufsize-1),o.level=e,o.strategy=s,o.method=a,Zt(t)};var Ut={deflateInit:(t,e)=>St(t,e,ot,15,8,st),deflateInit2:St,deflateReset:Zt,deflateResetKeep:Rt,deflateSetHeader:(t,e)=>Et(t)||2!==t.state.wrap?Q:(t.state.gzhead=e,W),deflate:(t,e)=>{if(Et(t)||e>J||e<0)return t?lt(t,Q):Q;const a=t.state;if(!t.output||0!==t.avail_in&&!t.input||666===a.status&&e!==X)return lt(t,0===t.avail_out?$:Q);const i=a.last_flush;if(a.last_flush=e,0!==a.pending){if(ct(t),0===t.avail_out)return a.last_flush=-1,W}else if(0===t.avail_in&&ht(e)<=ht(i)&&e!==X)return lt(t,$);if(666===a.status&&0!==t.avail_in)return lt(t,$);if(42===a.status&&0===a.wrap&&(a.status=113),42===a.status){let e=ot+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=at||a.level<2?0:a.level<6?1:6===a.level?2:3,e|=i<<6,0!==a.strstart&&(e|=32),e+=31-e%31,mt(a,e),0!==a.strstart&&(mt(a,t.adler>>>16),mt(a,65535&t.adler)),t.adler=1,a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W}if(57===a.status)if(t.adler=0,wt(a,31),wt(a,139),wt(a,8),a.gzhead)wt(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),wt(a,255&a.gzhead.time),wt(a,a.gzhead.time>>8&255),wt(a,a.gzhead.time>>16&255),wt(a,a.gzhead.time>>24&255),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(wt(a,255&a.gzhead.extra.length),wt(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(t.adler=L(t.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,0),wt(a,9===a.level?2:a.strategy>=at||a.level<2?4:0),wt(a,3),a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W;if(69===a.status){if(a.gzhead.extra){let e=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let n=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+n),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>e&&(t.adler=L(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex+=n,ct(t),0!==a.pending)return a.last_flush=-1,W;e=0,i-=n}let n=new Uint8Array(a.gzhead.extra);a.pending_buf.set(n.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>e&&(t.adler=L(t.adler,a.pending_buf,a.pending-e,e)),a.gzindex=0}a.status=73}if(73===a.status){if(a.gzhead.name){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,W;i=0}e=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(91===a.status){if(a.gzhead.comment){let e,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i)),ct(t),0!==a.pending)return a.last_flush=-1,W;i=0}e=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,wt(a,e)}while(0!==e);a.gzhead.hcrc&&a.pending>i&&(t.adler=L(t.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(103===a.status){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(ct(t),0!==a.pending))return a.last_flush=-1,W;wt(a,255&t.adler),wt(a,t.adler>>8&255),t.adler=0}if(a.status=113,ct(t),0!==a.pending)return a.last_flush=-1,W}if(0!==t.avail_in||0!==a.lookahead||e!==P&&666!==a.status){let i=0===a.level?kt(a,e):a.strategy===at?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(pt(t),0===t.lookahead)){if(e===P)return 1;break}if(t.match_length=0,a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):a.strategy===it?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=258){if(pt(t),t.lookahead<=258&&e===P)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+258;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&n<s);t.match_length=258-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=j(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=j(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(ut(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===X?(ut(t,!0),0===t.strm.avail_out?3:4):t.sym_next&&(ut(t,!1),0===t.strm.avail_out)?1:2})(a,e):zt[a.level].func(a,e);if(3!==i&&4!==i||(a.status=666),1===i||3===i)return 0===t.avail_out&&(a.last_flush=-1),W;if(2===i&&(e===Y?K(a):e!==J&&(H(a,0,0,!1),e===G&&(dt(a.head),0===a.lookahead&&(a.strstart=0,a.block_start=0,a.insert=0))),ct(t),0===t.avail_out))return a.last_flush=-1,W}return e!==X?W:a.wrap<=0?q:(2===a.wrap?(wt(a,255&t.adler),wt(a,t.adler>>8&255),wt(a,t.adler>>16&255),wt(a,t.adler>>24&255),wt(a,255&t.total_in),wt(a,t.total_in>>8&255),wt(a,t.total_in>>16&255),wt(a,t.total_in>>24&255)):(mt(a,t.adler>>>16),mt(a,65535&t.adler)),ct(t),a.wrap>0&&(a.wrap=-a.wrap),0!==a.pending?W:q)},deflateEnd:t=>{if(Et(t))return Q;const e=t.state.status;return t.state=null,113===e?lt(t,V):W},deflateSetDictionary:(t,e)=>{let a=e.length;if(Et(t))return Q;const i=t.state,n=i.wrap;if(2===n||1===n&&42!==i.status||i.lookahead)return Q;if(1===n&&(t.adler=N(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(dt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,o=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,pt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=ft(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,pt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=o,t.avail_in=s,i.wrap=n,W},deflateInfo:"pako deflate (from Nodeca project)"};const Dt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Ot=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Dt(a,e)&&(t[e]=a[e])}}return t},Tt=t=>{let e=0;for(let a=0,i=t.length;a<i;a++)e+=t[a].length;const a=new Uint8Array(e);for(let e=0,i=0,n=t.length;e<n;e++){let n=t[e];a.set(n,i),i+=n.length}return a};let Nt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){Nt=!1}const Ft=new Uint8Array(256);for(let t=0;t<256;t++)Ft[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Ft[254]=Ft[254]=1;var Lt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,o=0;for(n=0;n<r;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),o+=a<128?1:a<2048?2:a<65536?3:4;for(e=new Uint8Array(o),s=0,n=0;s<o;n++)a=t.charCodeAt(n),55296==(64512&a)&&n+1<r&&(i=t.charCodeAt(n+1),56320==(64512&i)&&(a=65536+(a-55296<<10)+(i-56320),n++)),a<128?e[s++]=a:a<2048?(e[s++]=192|a>>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},It=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i<a;){let e=t[i++];if(e<128){s[n++]=e;continue}let r=Ft[e];if(r>4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i<a;)e=e<<6|63&t[i++],r--;r>1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Nt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a})(s,n)},Bt=(t,e)=>{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Ft[t[a]]>e?a:e};var Ct=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ht=Object.prototype.toString,{Z_NO_FLUSH:Mt,Z_SYNC_FLUSH:jt,Z_FULL_FLUSH:Kt,Z_FINISH:Pt,Z_OK:Yt,Z_STREAM_END:Gt,Z_DEFAULT_COMPRESSION:Xt,Z_DEFAULT_STRATEGY:Jt,Z_DEFLATED:Wt}=B;function qt(t){this.options=Ot({level:Xt,method:Wt,chunkSize:16384,windowBits:15,memLevel:8,strategy:Jt},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Ut.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==Yt)throw new Error(I[a]);if(e.header&&Ut.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?Lt(e.dictionary):"[object ArrayBuffer]"===Ht.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Ut.deflateSetDictionary(this.strm,t),a!==Yt)throw new Error(I[a]);this._dict_set=!0}}function Qt(t,e){const a=new qt(e);if(a.push(t,!0),a.err)throw a.msg||I[a.err];return a.result}qt.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?Pt:Mt,"string"==typeof t?a.input=Lt(t):"[object ArrayBuffer]"===Ht.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===jt||s===Kt)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Ut.deflate(a,s),n===Gt)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Ut.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Yt;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},qt.prototype.onData=function(t){this.chunks.push(t)},qt.prototype.onEnd=function(t){t===Yt&&(this.result=Tt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Vt={Deflate:qt,deflate:Qt,deflateRaw:function(t,e){return(e=e||{}).raw=!0,Qt(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,Qt(t,e)},constants:B};var $t=function(t,e){let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),o=E.dmax,l=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,m=(1<<E.lenbits)-1,b=(1<<E.distbits)-1;t:do{c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=u[f&m];e:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,0===p)A[n++]=65535&g;else{if(!(16&p)){if(0==(64&p)){g=u[(65535&g)+(f&(1<<p)-1)];continue e}if(32&p){E.mode=16191;break t}t.msg="invalid literal/length code",E.mode=16209;break t}k=65535&g,p&=15,p&&(c<p&&(f+=z[a++]<<c,c+=8),k+=f&(1<<p)-1,f>>>=p,c-=p),c<15&&(f+=z[a++]<<c,c+=8,f+=z[a++]<<c,c+=8),g=w[f&b];a:for(;;){if(p=g>>>24,f>>>=p,c-=p,p=g>>>16&255,!(16&p)){if(0==(64&p)){g=w[(65535&g)+(f&(1<<p)-1)];continue a}t.msg="invalid distance code",E.mode=16209;break t}if(v=65535&g,p&=15,c<p&&(f+=z[a++]<<c,c+=8,c<p&&(f+=z[a++]<<c,c+=8)),v+=f&(1<<p)-1,v>o){t.msg="invalid distance too far back",E.mode=16209;break t}if(f>>>=p,c-=p,p=n-s,v>p){if(p=v-p,p>h&&E.sane){t.msg="invalid distance too far back",E.mode=16209;break t}if(y=0,x=_,0===d){if(y+=l-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}else if(d<p){if(y+=l+d-p,p-=d,p<k){k-=p;do{A[n++]=_[y++]}while(--p);if(y=0,d<k){p=d,k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}}}else if(y+=d-p,p<k){k-=p;do{A[n++]=_[y++]}while(--p);y=n-v,x=A}for(;k>2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a<i&&n<r);k=c>>3,a-=k,c-=k<<3,f&=(1<<c)-1,t.next_in=a,t.next_out=n,t.avail_in=a<i?i-a+5:5-(a-i),t.avail_out=n<r?r-n+257:257-(n-r),E.hold=f,E.bits=c};const te=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),ee=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),ae=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),ie=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var ne=(t,e,a,i,n,s,r,o)=>{const l=o.bits;let h,d,_,f,c,u,w=0,m=0,b=0,g=0,p=0,k=0,v=0,y=0,x=0,z=0,A=null;const E=new Uint16Array(16),R=new Uint16Array(16);let Z,S,U,D=null;for(w=0;w<=15;w++)E[w]=0;for(m=0;m<i;m++)E[e[a+m]]++;for(p=l,g=15;g>=1&&0===E[g];g--);if(p>g&&(p=g),0===g)return n[s++]=20971520,n[s++]=20971520,o.bits=1,0;for(b=1;b<g&&0===E[b];b++);for(p<b&&(p=b),y=1,w=1;w<=15;w++)if(y<<=1,y-=E[w],y<0)return-1;if(y>0&&(0===t||1!==g))return-1;for(R[1]=0,w=1;w<15;w++)R[w+1]=R[w]+E[w];for(m=0;m<i;m++)0!==e[a+m]&&(r[R[e[a+m]]++]=m);if(0===t?(A=D=r,u=20):1===t?(A=te,D=ee,u=257):(A=ae,D=ie,u=0),z=0,m=0,w=b,c=s,k=p,v=0,_=-1,x=1<<p,f=x-1,1===t&&x>852||2===t&&x>592)return 1;for(;;){Z=w-v,r[m]+1<u?(S=0,U=r[m]):r[m]>=u?(S=D[r[m]-u],U=A[r[m]-u]):(S=96,U=0),h=1<<w-v,d=1<<k,b=d;do{d-=h,n[c+(z>>v)+d]=Z<<24|S<<16|U|0}while(0!==d);for(h=1<<w-1;z&h;)h>>=1;if(0!==h?(z&=h-1,z+=h):z=0,m++,0==--E[w]){if(w===g)break;w=e[a+r[m]]}if(w>p&&(z&f)!==_){for(0===v&&(v=p),c+=b,k=w-v,y=1<<k;k+v<g&&(y-=E[k+v],!(y<=0));)k++,y<<=1;if(x+=1<<k,1===t&&x>852||2===t&&x>592)return 1;_=z&f,n[_]=p<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),o.bits=p,0};const{Z_FINISH:se,Z_BLOCK:re,Z_TREES:oe,Z_OK:le,Z_STREAM_END:he,Z_NEED_DICT:de,Z_STREAM_ERROR:_e,Z_DATA_ERROR:fe,Z_MEM_ERROR:ce,Z_BUF_ERROR:ue,Z_DEFLATED:we}=B,me=16209,be=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function ge(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const pe=t=>{if(!t)return 1;const e=t.state;return!e||e.strm!==t||e.mode<16180||e.mode>16211?1:0},ke=t=>{if(pe(t))return _e;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=16180,e.last=0,e.havedict=0,e.flags=-1,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,le},ve=t=>{if(pe(t))return _e;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,ke(t)},ye=(t,e)=>{let a;if(pe(t))return _e;const i=t.state;return e<0?(a=0,e=-e):(a=5+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?_e:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,ve(t))},xe=(t,e)=>{if(!t)return _e;const a=new ge;t.state=a,a.strm=t,a.window=null,a.mode=16180;const i=ye(t,e);return i!==le&&(t.state=null),i};let ze,Ae,Ee=!0;const Re=t=>{if(Ee){ze=new Int32Array(512),Ae=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(ne(1,t.lens,0,288,ze,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;ne(2,t.lens,0,32,Ae,0,t.work,{bits:5}),Ee=!1}t.lencode=ze,t.lenbits=9,t.distcode=Ae,t.distbits=5},Ze=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Uint8Array(s.wsize)),i>=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0};var Se={inflateReset:ve,inflateReset2:ye,inflateResetKeep:ke,inflateInit:t=>xe(t,15),inflateInit2:xe,inflate:(t,e)=>{let a,i,n,s,r,o,l,h,d,_,f,c,u,w,m,b,g,p,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(pe(t)||!t.output||!t.input&&0!==t.avail_in)return _e;a=t.state,16191===a.mode&&(a.mode=16192),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,_=o,f=l,x=le;t:for(;;)switch(a.mode){case 16180:if(0===a.wrap){a.mode=16192;break}for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(2&a.wrap&&35615===h){0===a.wbits&&(a.wbits=15),a.check=0,A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0),h=0,d=0,a.mode=16181;break}if(a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=me;break}if((15&h)!==we){t.msg="unknown compression method",a.mode=me;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits&&(a.wbits=y),y>15||y>a.wbits){t.msg="invalid window size",a.mode=me;break}a.dmax=1<<a.wbits,a.flags=0,t.adler=a.check=1,a.mode=512&h?16189:16191,h=0,d=0;break;case 16181:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.flags=h,(255&a.flags)!==we){t.msg="unknown compression method",a.mode=me;break}if(57344&a.flags){t.msg="unknown header flags set",a.mode=me;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0,a.mode=16182;case 16182:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=L(a.check,A,4,0)),h=0,d=0,a.mode=16183;case 16183:for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0,a.mode=16184;case 16184:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&4&a.wrap&&(A[0]=255&h,A[1]=h>>>8&255,a.check=L(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=16185;case 16185:if(1024&a.flags&&(c=a.length,c>o&&(c=o),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=16186;case 16186:if(2048&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=16187;case 16187:if(4096&a.flags){if(0===o)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.comment+=String.fromCharCode(y))}while(y&&c<o);if(512&a.flags&&4&a.wrap&&(a.check=L(a.check,i,c,s)),o-=c,s+=c,y)break t}else a.head&&(a.head.comment=null);a.mode=16188;case 16188:if(512&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(65535&a.check)){t.msg="header crc mismatch",a.mode=me;break}h=0,d=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=16191;break;case 16189:for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}t.adler=a.check=be(h),h=0,d=0,a.mode=16190;case 16190:if(0===a.havedict)return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,de;t.adler=a.check=1,a.mode=16191;case 16191:if(e===re||e===oe)break t;case 16192:if(a.last){h>>>=7&d,d-=7&d,a.mode=16206;break}for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}switch(a.last=1&h,h>>>=1,d-=1,3&h){case 0:a.mode=16193;break;case 1:if(Re(a),a.mode=16199,e===oe){h>>>=2,d-=2;break t}break;case 2:a.mode=16196;break;case 3:t.msg="invalid block type",a.mode=me}h>>>=2,d-=2;break;case 16193:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg="invalid stored block lengths",a.mode=me;break}if(a.length=65535&h,h=0,d=0,a.mode=16194,e===oe)break t;case 16194:a.mode=16195;case 16195:if(c=a.length,c){if(c>o&&(c=o),c>l&&(c=l),0===c)break t;n.set(i.subarray(s,s+c),r),o-=c,s+=c,l-=c,r+=c,a.length-=c;break}a.mode=16191;break;case 16196:for(;d<14;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=me;break}a.have=0,a.mode=16197;case 16197:for(;a.have<a.ncode;){for(;d<3;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.lens[Z[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=ne(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=me;break}a.have=0,a.mode=16198;case 16198:for(;a.have<a.nlen+a.ndist;){for(;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(g<16)h>>>=m,d-=m,a.lens[a.have++]=g;else{if(16===g){for(R=m+2;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(h>>>=m,d-=m,0===a.have){t.msg="invalid bit length repeat",a.mode=me;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===g){for(R=m+3;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=m+7;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=m,d-=m,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=me;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===me)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=me;break}if(a.lenbits=9,E={bits:a.lenbits},x=ne(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=me;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=ne(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=me;break}if(a.mode=16199,e===oe)break t;case 16199:a.mode=16200;case 16200:if(o>=6&&l>=258){t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,$t(t,f),r=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,16191===a.mode&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<<a.lenbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(b&&0==(240&b)){for(p=m,k=b,v=g;z=a.lencode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,a.length=g,0===b){a.mode=16205;break}if(32&b){a.back=-1,a.mode=16191;break}if(64&b){t.msg="invalid literal/length code",a.mode=me;break}a.extra=15&b,a.mode=16201;case 16201:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=16202;case 16202:for(;z=a.distcode[h&(1<<a.distbits)-1],m=z>>>24,b=z>>>16&255,g=65535&z,!(m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(0==(240&b)){for(p=m,k=b,v=g;z=a.distcode[v+((h&(1<<p+k)-1)>>p)],m=z>>>24,b=z>>>16&255,g=65535&z,!(p+m<=d);){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=m,d-=m,a.back+=m,64&b){t.msg="invalid distance code",a.mode=me;break}a.offset=g,a.extra=15&b,a.mode=16203;case 16203:if(a.extra){for(R=a.extra;d<R;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=me;break}a.mode=16204;case 16204:if(0===l)break t;if(c=f-l,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=me;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>l&&(c=l),l-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=16200);break;case 16205:if(0===l)break t;n[r++]=a.length,l--,a.mode=16200;break;case 16206:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[s++]<<d,d+=8}if(f-=l,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?L(a.check,n,f,r-f):N(a.check,n,f,r-f)),f=l,4&a.wrap&&(a.flags?h:be(h))!==a.check){t.msg="incorrect data check",a.mode=me;break}h=0,d=0}a.mode=16207;case 16207:if(a.wrap&&a.flags){for(;d<32;){if(0===o)break t;o--,h+=i[s++]<<d,d+=8}if(4&a.wrap&&h!==(4294967295&a.total)){t.msg="incorrect length check",a.mode=me;break}h=0,d=0}a.mode=16208;case 16208:x=he;break t;case me:x=fe;break t;case 16210:return ce;default:return _e}return t.next_out=r,t.avail_out=l,t.next_in=s,t.avail_in=o,a.hold=h,a.bits=d,(a.wsize||f!==t.avail_out&&a.mode<me&&(a.mode<16206||e!==se))&&Ze(t,t.output,t.next_out,f-t.avail_out),_-=t.avail_in,f-=t.avail_out,t.total_in+=_,t.total_out+=f,a.total+=f,4&a.wrap&&f&&(t.adler=a.check=a.flags?L(a.check,n,f,t.next_out-f):N(a.check,n,f,t.next_out-f)),t.data_type=a.bits+(a.last?64:0)+(16191===a.mode?128:0)+(16199===a.mode||16194===a.mode?256:0),(0===_&&0===f||e===se)&&x===le&&(x=ue),x},inflateEnd:t=>{if(pe(t))return _e;let e=t.state;return e.window&&(e.window=null),t.state=null,le},inflateGetHeader:(t,e)=>{if(pe(t))return _e;const a=t.state;return 0==(2&a.wrap)?_e:(a.head=e,e.done=!1,le)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return pe(t)?_e:(i=t.state,0!==i.wrap&&16190!==i.mode?_e:16190===i.mode&&(n=1,n=N(n,e,a,0),n!==i.check)?fe:(s=Ze(t,e,a,a),s?(i.mode=16210,ce):(i.havedict=1,le)))},inflateInfo:"pako inflate (from Nodeca project)"};var Ue=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const De=Object.prototype.toString,{Z_NO_FLUSH:Oe,Z_FINISH:Te,Z_OK:Ne,Z_STREAM_END:Fe,Z_NEED_DICT:Le,Z_STREAM_ERROR:Ie,Z_DATA_ERROR:Be,Z_MEM_ERROR:Ce}=B;function He(t){this.options=Ot({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ct,this.strm.avail_out=0;let a=Se.inflateInit2(this.strm,e.windowBits);if(a!==Ne)throw new Error(I[a]);if(this.header=new Ue,Se.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=Lt(e.dictionary):"[object ArrayBuffer]"===De.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Se.inflateSetDictionary(this.strm,e.dictionary),a!==Ne)))throw new Error(I[a])}He.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,o;if(this.ended)return!1;for(r=e===~~e?e:!0===e?Te:Oe,"[object ArrayBuffer]"===De.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=Se.inflate(a,r),s===Le&&n&&(s=Se.inflateSetDictionary(a,n),s===Ne?s=Se.inflate(a,r):s===Be&&(s=Le));a.avail_in>0&&s===Fe&&a.state.wrap>0&&0!==t[a.next_in];)Se.inflateReset(a),s=Se.inflate(a,r);switch(s){case Ie:case Be:case Le:case Ce:return this.onEnd(s),this.ended=!0,!1}if(o=a.avail_out,a.next_out&&(0===a.avail_out||s===Fe))if("string"===this.options.to){let t=Bt(a.output,a.next_out),e=a.next_out-t,n=It(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==Ne||0!==o){if(s===Fe)return s=Se.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},He.prototype.onData=function(t){this.chunks.push(t)},He.prototype.onEnd=function(t){t===Ne&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Tt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};const{Deflate:Me,deflate:je,deflateRaw:Ke,gzip:Pe}=Vt;var Ye=Me,Ge=B;const Xe=new class{constructor(){this.added=0,this.init()}init(){this.added=0,this.deflate=new Ye,this.deflate.push("[",Ge.Z_NO_FLUSH)}addEvent(t){if(!t)return;const e=this.added>0?",":"";this.deflate.push(e+JSON.stringify(t),Ge.Z_NO_FLUSH),this.added++}finish(){if(this.deflate.push("]",Ge.Z_FINISH),this.deflate.err)throw this.deflate.err;const t=this.deflate.result;return this.init(),t}},Je={init:()=>(Xe.init(),""),addEvent:t=>(Xe.addEvent(t),""),finish:()=>Xe.finish()};addEventListener("message",(function(t){const e=t.data.method,a=t.data.id,[i]=t.data.args?JSON.parse(t.data.args):[];if(e in Je&&"function"==typeof Je[e])try{const t=Je[e](i);postMessage({id:a,method:e,success:!0,response:t})}catch(t){postMessage({id:a,method:e,success:!1,response:t}),console.error(t)}}));`;
|
|
30055
30098
|
|
|
30056
30099
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
30057
30100
|
|
|
30058
|
-
/**
|
|
30059
|
-
* Create an event buffer for replays.
|
|
30060
|
-
*/
|
|
30061
30101
|
function createEventBuffer({ useCompression }) {
|
|
30062
30102
|
// eslint-disable-next-line no-restricted-globals
|
|
30063
30103
|
if (useCompression && window.Worker) {
|
|
@@ -30088,30 +30128,21 @@ class EventBufferArray {
|
|
|
30088
30128
|
this._events = [];
|
|
30089
30129
|
}
|
|
30090
30130
|
|
|
30091
|
-
get pendingLength() {
|
|
30092
|
-
return this._events.length;
|
|
30093
|
-
}
|
|
30094
|
-
|
|
30095
|
-
/**
|
|
30096
|
-
* Returns the raw events that are buffered. In `EventBufferArray`, this is the
|
|
30097
|
-
* same as `this._events`.
|
|
30098
|
-
*/
|
|
30099
|
-
get pendingEvents() {
|
|
30100
|
-
return this._events;
|
|
30101
|
-
}
|
|
30102
|
-
|
|
30103
30131
|
destroy() {
|
|
30104
30132
|
this._events = [];
|
|
30105
30133
|
}
|
|
30106
30134
|
|
|
30107
|
-
|
|
30135
|
+
get length() {
|
|
30136
|
+
return this._events.length;
|
|
30137
|
+
}
|
|
30138
|
+
|
|
30139
|
+
addEvent(event, isCheckout) {
|
|
30108
30140
|
if (isCheckout) {
|
|
30109
30141
|
this._events = [event];
|
|
30110
30142
|
return;
|
|
30111
30143
|
}
|
|
30112
30144
|
|
|
30113
30145
|
this._events.push(event);
|
|
30114
|
-
return;
|
|
30115
30146
|
}
|
|
30116
30147
|
|
|
30117
30148
|
finish() {
|
|
@@ -30126,44 +30157,16 @@ class EventBufferArray {
|
|
|
30126
30157
|
}
|
|
30127
30158
|
}
|
|
30128
30159
|
|
|
30129
|
-
|
|
30130
|
-
* Event buffer that uses a web worker to compress events.
|
|
30131
|
-
* Exported only for testing.
|
|
30132
|
-
*/
|
|
30160
|
+
// exporting for testing
|
|
30133
30161
|
class EventBufferCompressionWorker {
|
|
30134
|
-
/**
|
|
30135
|
-
* Keeps track of the list of events since the last flush that have not been compressed.
|
|
30136
|
-
* For example, page is reloaded and a flush attempt is made, but
|
|
30137
|
-
* `finish()` (and thus the flush), does not complete.
|
|
30138
|
-
*/
|
|
30139
|
-
__init() {this._pendingEvents = [];}
|
|
30140
30162
|
|
|
30141
|
-
|
|
30142
|
-
|
|
30163
|
+
__init() {this._eventBufferItemLength = 0;}
|
|
30164
|
+
__init2() {this._id = 0;}
|
|
30143
30165
|
|
|
30144
|
-
constructor(worker) {EventBufferCompressionWorker.prototype.__init.call(this);EventBufferCompressionWorker.prototype.__init2.call(this);
|
|
30166
|
+
constructor(worker) {EventBufferCompressionWorker.prototype.__init.call(this);EventBufferCompressionWorker.prototype.__init2.call(this);
|
|
30145
30167
|
this._worker = worker;
|
|
30146
30168
|
}
|
|
30147
30169
|
|
|
30148
|
-
/**
|
|
30149
|
-
* The number of raw events that are buffered. This may not be the same as
|
|
30150
|
-
* the number of events that have been compresed in the worker because
|
|
30151
|
-
* `addEvent` is async.
|
|
30152
|
-
*/
|
|
30153
|
-
get pendingLength() {
|
|
30154
|
-
return this._eventBufferItemLength;
|
|
30155
|
-
}
|
|
30156
|
-
|
|
30157
|
-
/**
|
|
30158
|
-
* Returns a list of the raw recording events that are being compressed.
|
|
30159
|
-
*/
|
|
30160
|
-
get pendingEvents() {
|
|
30161
|
-
return this._pendingEvents;
|
|
30162
|
-
}
|
|
30163
|
-
|
|
30164
|
-
/**
|
|
30165
|
-
* Destroy the event buffer.
|
|
30166
|
-
*/
|
|
30167
30170
|
destroy() {
|
|
30168
30171
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Destroying compression worker');
|
|
30169
30172
|
_optionalChain([this, 'access', _ => _._worker, 'optionalAccess', _2 => _2.terminate, 'call', _3 => _3()]);
|
|
@@ -30171,10 +30174,13 @@ class EventBufferCompressionWorker {
|
|
|
30171
30174
|
}
|
|
30172
30175
|
|
|
30173
30176
|
/**
|
|
30174
|
-
*
|
|
30175
|
-
*
|
|
30176
|
-
* Returns true if event was successfuly received and processed by worker.
|
|
30177
|
+
* Note that this may not reflect what is actually in the event buffer. This
|
|
30178
|
+
* is only a local count of the buffer size since `addEvent` is async.
|
|
30177
30179
|
*/
|
|
30180
|
+
get length() {
|
|
30181
|
+
return this._eventBufferItemLength;
|
|
30182
|
+
}
|
|
30183
|
+
|
|
30178
30184
|
async addEvent(event, isCheckout) {
|
|
30179
30185
|
if (isCheckout) {
|
|
30180
30186
|
// This event is a checkout, make sure worker buffer is cleared before
|
|
@@ -30186,17 +30192,9 @@ class EventBufferCompressionWorker {
|
|
|
30186
30192
|
});
|
|
30187
30193
|
}
|
|
30188
30194
|
|
|
30189
|
-
// Don't store checkout events in `_pendingEvents` because they are too large
|
|
30190
|
-
if (!isCheckout) {
|
|
30191
|
-
this._pendingEvents.push(event);
|
|
30192
|
-
}
|
|
30193
|
-
|
|
30194
30195
|
return this._sendEventToWorker(event);
|
|
30195
30196
|
}
|
|
30196
30197
|
|
|
30197
|
-
/**
|
|
30198
|
-
* Finish the event buffer and return the compressed data.
|
|
30199
|
-
*/
|
|
30200
30198
|
finish() {
|
|
30201
30199
|
return this._finishRequest(this._getAndIncrementId());
|
|
30202
30200
|
}
|
|
@@ -30247,10 +30245,7 @@ class EventBufferCompressionWorker {
|
|
|
30247
30245
|
});
|
|
30248
30246
|
}
|
|
30249
30247
|
|
|
30250
|
-
|
|
30251
|
-
* Send the event to the worker.
|
|
30252
|
-
*/
|
|
30253
|
-
async _sendEventToWorker(event) {
|
|
30248
|
+
_sendEventToWorker(event) {
|
|
30254
30249
|
const promise = this._postMessage({
|
|
30255
30250
|
id: this._getAndIncrementId(),
|
|
30256
30251
|
method: 'addEvent',
|
|
@@ -30263,28 +30258,37 @@ class EventBufferCompressionWorker {
|
|
|
30263
30258
|
return promise;
|
|
30264
30259
|
}
|
|
30265
30260
|
|
|
30266
|
-
/**
|
|
30267
|
-
* Finish the request and return the compressed data from the worker.
|
|
30268
|
-
*/
|
|
30269
30261
|
async _finishRequest(id) {
|
|
30270
30262
|
const promise = this._postMessage({ id, method: 'finish', args: [] });
|
|
30271
30263
|
|
|
30272
30264
|
// XXX: See note in `get length()`
|
|
30273
30265
|
this._eventBufferItemLength = 0;
|
|
30274
30266
|
|
|
30275
|
-
|
|
30276
|
-
|
|
30277
|
-
this._pendingEvents = [];
|
|
30278
|
-
|
|
30279
|
-
return promise;
|
|
30267
|
+
return promise ;
|
|
30280
30268
|
}
|
|
30281
30269
|
|
|
30282
|
-
/** Get the current ID and increment it for the next call. */
|
|
30283
30270
|
_getAndIncrementId() {
|
|
30284
30271
|
return this._id++;
|
|
30285
30272
|
}
|
|
30286
30273
|
}
|
|
30287
30274
|
|
|
30275
|
+
/**
|
|
30276
|
+
* Deletes a session from storage
|
|
30277
|
+
*/
|
|
30278
|
+
function deleteSession() {
|
|
30279
|
+
const hasSessionStorage = 'sessionStorage' in WINDOW;
|
|
30280
|
+
|
|
30281
|
+
if (!hasSessionStorage) {
|
|
30282
|
+
return;
|
|
30283
|
+
}
|
|
30284
|
+
|
|
30285
|
+
try {
|
|
30286
|
+
WINDOW.sessionStorage.removeItem(REPLAY_SESSION_KEY);
|
|
30287
|
+
} catch (e) {
|
|
30288
|
+
// Ignore potential SecurityError exceptions
|
|
30289
|
+
}
|
|
30290
|
+
}
|
|
30291
|
+
|
|
30288
30292
|
/**
|
|
30289
30293
|
* Given an initial timestamp and an expiry duration, checks to see if current
|
|
30290
30294
|
* time should be considered as expired.
|
|
@@ -30320,9 +30324,6 @@ function isSessionExpired(session, idleTimeout, targetTime = +new Date()) {
|
|
|
30320
30324
|
);
|
|
30321
30325
|
}
|
|
30322
30326
|
|
|
30323
|
-
/**
|
|
30324
|
-
* Save a session to session storage.
|
|
30325
|
-
*/
|
|
30326
30327
|
function saveSession(session) {
|
|
30327
30328
|
const hasSessionStorage = 'sessionStorage' in WINDOW;
|
|
30328
30329
|
if (!hasSessionStorage) {
|
|
@@ -30465,153 +30466,64 @@ function getSession({
|
|
|
30465
30466
|
* Create a "span" for the total amount of memory being used by JS objects
|
|
30466
30467
|
* (including v8 internal objects).
|
|
30467
30468
|
*/
|
|
30468
|
-
|
|
30469
|
+
function addMemoryEntry(replay) {
|
|
30469
30470
|
// window.performance.memory is a non-standard API and doesn't work on all browsers, so we try-catch this
|
|
30470
30471
|
try {
|
|
30471
|
-
|
|
30472
|
-
|
|
30473
|
-
|
|
30474
|
-
|
|
30475
|
-
]),
|
|
30476
|
-
);
|
|
30472
|
+
createPerformanceSpans(replay, [
|
|
30473
|
+
// @ts-ignore memory doesn't exist on type Performance as the API is non-standard (we check that it exists above)
|
|
30474
|
+
createMemoryEntry(WINDOW.performance.memory),
|
|
30475
|
+
]);
|
|
30477
30476
|
} catch (error) {
|
|
30478
30477
|
// Do nothing
|
|
30479
|
-
return [];
|
|
30480
|
-
}
|
|
30481
|
-
}
|
|
30482
|
-
|
|
30483
|
-
function createMemoryEntry(memoryEntry) {
|
|
30484
|
-
const { jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize } = memoryEntry;
|
|
30485
|
-
// we don't want to use `getAbsoluteTime` because it adds the event time to the
|
|
30486
|
-
// time origin, so we get the current timestamp instead
|
|
30487
|
-
const time = new Date().getTime() / 1000;
|
|
30488
|
-
return {
|
|
30489
|
-
type: 'memory',
|
|
30490
|
-
name: 'memory',
|
|
30491
|
-
start: time,
|
|
30492
|
-
end: time,
|
|
30493
|
-
data: {
|
|
30494
|
-
memory: {
|
|
30495
|
-
jsHeapSizeLimit,
|
|
30496
|
-
totalJSHeapSize,
|
|
30497
|
-
usedJSHeapSize,
|
|
30498
|
-
},
|
|
30499
|
-
},
|
|
30500
|
-
};
|
|
30501
|
-
}
|
|
30502
|
-
|
|
30503
|
-
// Map entryType -> function to normalize data for event
|
|
30504
|
-
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
30505
|
-
const ENTRY_TYPES = {
|
|
30506
|
-
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
30507
|
-
resource: createResourceEntry,
|
|
30508
|
-
paint: createPaintEntry,
|
|
30509
|
-
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
30510
|
-
navigation: createNavigationEntry,
|
|
30511
|
-
// @ts-ignore TODO: entry type does not fit the create* functions entry type
|
|
30512
|
-
['largest-contentful-paint']: createLargestContentfulPaint,
|
|
30513
|
-
};
|
|
30514
|
-
|
|
30515
|
-
/**
|
|
30516
|
-
* Create replay performance entries from the browser performance entries.
|
|
30517
|
-
*/
|
|
30518
|
-
function createPerformanceEntries(entries) {
|
|
30519
|
-
return entries.map(createPerformanceEntry).filter(Boolean) ;
|
|
30520
|
-
}
|
|
30521
|
-
|
|
30522
|
-
function createPerformanceEntry(entry) {
|
|
30523
|
-
if (ENTRY_TYPES[entry.entryType] === undefined) {
|
|
30524
|
-
return null;
|
|
30525
30478
|
}
|
|
30526
|
-
|
|
30527
|
-
return ENTRY_TYPES[entry.entryType](entry);
|
|
30528
30479
|
}
|
|
30529
30480
|
|
|
30530
|
-
function
|
|
30531
|
-
|
|
30532
|
-
|
|
30533
|
-
return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;
|
|
30534
|
-
}
|
|
30535
|
-
|
|
30536
|
-
// TODO: type definition!
|
|
30537
|
-
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30538
|
-
function createPaintEntry(entry) {
|
|
30539
|
-
const { duration, entryType, name, startTime } = entry;
|
|
30540
|
-
|
|
30541
|
-
const start = getAbsoluteTime(startTime);
|
|
30542
|
-
return {
|
|
30543
|
-
type: entryType,
|
|
30544
|
-
name,
|
|
30545
|
-
start,
|
|
30546
|
-
end: start + duration,
|
|
30547
|
-
};
|
|
30481
|
+
function createPayload({
|
|
30482
|
+
events,
|
|
30483
|
+
headers,
|
|
30548
30484
|
}
|
|
30549
30485
|
|
|
30550
|
-
|
|
30551
|
-
|
|
30552
|
-
function createNavigationEntry(entry) {
|
|
30553
|
-
// TODO: There looks to be some more interesting bits in here (domComplete, domContentLoaded)
|
|
30554
|
-
const { entryType, name, duration, domComplete, startTime, transferSize, type } = entry;
|
|
30555
|
-
|
|
30556
|
-
// Ignore entries with no duration, they do not seem to be useful and cause dupes
|
|
30557
|
-
if (duration === 0) {
|
|
30558
|
-
return null;
|
|
30559
|
-
}
|
|
30560
|
-
|
|
30561
|
-
return {
|
|
30562
|
-
type: `${entryType}.${type}`,
|
|
30563
|
-
start: getAbsoluteTime(startTime),
|
|
30564
|
-
end: getAbsoluteTime(domComplete),
|
|
30565
|
-
name,
|
|
30566
|
-
data: {
|
|
30567
|
-
size: transferSize,
|
|
30568
|
-
duration,
|
|
30569
|
-
},
|
|
30570
|
-
};
|
|
30571
|
-
}
|
|
30486
|
+
) {
|
|
30487
|
+
let payloadWithSequence;
|
|
30572
30488
|
|
|
30573
|
-
//
|
|
30574
|
-
|
|
30575
|
-
|
|
30576
|
-
const { entryType, initiatorType, name, responseEnd, startTime, encodedBodySize, transferSize } = entry;
|
|
30489
|
+
// XXX: newline is needed to separate sequence id from events
|
|
30490
|
+
const replayHeaders = `${JSON.stringify(headers)}
|
|
30491
|
+
`;
|
|
30577
30492
|
|
|
30578
|
-
|
|
30579
|
-
|
|
30580
|
-
|
|
30493
|
+
if (typeof events === 'string') {
|
|
30494
|
+
payloadWithSequence = `${replayHeaders}${events}`;
|
|
30495
|
+
} else {
|
|
30496
|
+
const enc = new TextEncoder();
|
|
30497
|
+
// XXX: newline is needed to separate sequence id from events
|
|
30498
|
+
const sequence = enc.encode(replayHeaders);
|
|
30499
|
+
// Merge the two Uint8Arrays
|
|
30500
|
+
payloadWithSequence = new Uint8Array(sequence.length + events.length);
|
|
30501
|
+
payloadWithSequence.set(sequence);
|
|
30502
|
+
payloadWithSequence.set(events, sequence.length);
|
|
30581
30503
|
}
|
|
30582
30504
|
|
|
30583
|
-
return
|
|
30584
|
-
type: `${entryType}.${initiatorType}`,
|
|
30585
|
-
start: getAbsoluteTime(startTime),
|
|
30586
|
-
end: getAbsoluteTime(responseEnd),
|
|
30587
|
-
name,
|
|
30588
|
-
data: {
|
|
30589
|
-
size: transferSize,
|
|
30590
|
-
encodedBodySize,
|
|
30591
|
-
},
|
|
30592
|
-
};
|
|
30505
|
+
return payloadWithSequence;
|
|
30593
30506
|
}
|
|
30594
30507
|
|
|
30595
|
-
|
|
30596
|
-
|
|
30597
|
-
|
|
30598
|
-
|
|
30599
|
-
|
|
30600
|
-
|
|
30601
|
-
|
|
30602
|
-
|
|
30603
|
-
|
|
30604
|
-
|
|
30605
|
-
|
|
30606
|
-
|
|
30607
|
-
|
|
30608
|
-
|
|
30609
|
-
|
|
30610
|
-
|
|
30611
|
-
|
|
30612
|
-
|
|
30613
|
-
|
|
30614
|
-
};
|
|
30508
|
+
function createReplayEnvelope(
|
|
30509
|
+
replayEvent,
|
|
30510
|
+
recordingData,
|
|
30511
|
+
dsn,
|
|
30512
|
+
tunnel,
|
|
30513
|
+
) {
|
|
30514
|
+
return createEnvelope(
|
|
30515
|
+
createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),
|
|
30516
|
+
[
|
|
30517
|
+
[{ type: 'replay_event' }, replayEvent],
|
|
30518
|
+
[
|
|
30519
|
+
{
|
|
30520
|
+
type: 'replay_recording',
|
|
30521
|
+
length: recordingData.length,
|
|
30522
|
+
},
|
|
30523
|
+
recordingData,
|
|
30524
|
+
],
|
|
30525
|
+
],
|
|
30526
|
+
);
|
|
30615
30527
|
}
|
|
30616
30528
|
|
|
30617
30529
|
/**
|
|
@@ -30677,112 +30589,7 @@ function debounce(func, wait, options) {
|
|
|
30677
30589
|
return debounced;
|
|
30678
30590
|
}
|
|
30679
30591
|
|
|
30680
|
-
|
|
30681
|
-
|
|
30682
|
-
/**
|
|
30683
|
-
* Overwrite the `recordDroppedEvent` method on the client, so we can find out which events were dropped.
|
|
30684
|
-
* */
|
|
30685
|
-
function overwriteRecordDroppedEvent(errorIds) {
|
|
30686
|
-
const client = getCurrentHub().getClient();
|
|
30687
|
-
|
|
30688
|
-
if (!client) {
|
|
30689
|
-
return;
|
|
30690
|
-
}
|
|
30691
|
-
|
|
30692
|
-
const _originalCallback = client.recordDroppedEvent.bind(client);
|
|
30693
|
-
|
|
30694
|
-
const recordDroppedEvent = (
|
|
30695
|
-
reason,
|
|
30696
|
-
category,
|
|
30697
|
-
event,
|
|
30698
|
-
) => {
|
|
30699
|
-
if (event && !event.type && event.event_id) {
|
|
30700
|
-
errorIds.delete(event.event_id);
|
|
30701
|
-
}
|
|
30702
|
-
|
|
30703
|
-
return _originalCallback(reason, category, event);
|
|
30704
|
-
};
|
|
30705
|
-
|
|
30706
|
-
client.recordDroppedEvent = recordDroppedEvent;
|
|
30707
|
-
_originalRecordDroppedEvent = _originalCallback;
|
|
30708
|
-
}
|
|
30709
|
-
|
|
30710
|
-
/**
|
|
30711
|
-
* Restore the original method.
|
|
30712
|
-
* */
|
|
30713
|
-
function restoreRecordDroppedEvent() {
|
|
30714
|
-
const client = getCurrentHub().getClient();
|
|
30715
|
-
|
|
30716
|
-
if (!client || !_originalRecordDroppedEvent) {
|
|
30717
|
-
return;
|
|
30718
|
-
}
|
|
30719
|
-
|
|
30720
|
-
client.recordDroppedEvent = _originalRecordDroppedEvent;
|
|
30721
|
-
}
|
|
30722
|
-
|
|
30723
|
-
/**
|
|
30724
|
-
* Create a replay envelope ready to be sent.
|
|
30725
|
-
* This includes both the replay event, as well as the recording data.
|
|
30726
|
-
*/
|
|
30727
|
-
function createReplayEnvelope(
|
|
30728
|
-
replayEvent,
|
|
30729
|
-
recordingData,
|
|
30730
|
-
dsn,
|
|
30731
|
-
tunnel,
|
|
30732
|
-
) {
|
|
30733
|
-
return createEnvelope(
|
|
30734
|
-
createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),
|
|
30735
|
-
[
|
|
30736
|
-
[{ type: 'replay_event' }, replayEvent],
|
|
30737
|
-
[
|
|
30738
|
-
{
|
|
30739
|
-
type: 'replay_recording',
|
|
30740
|
-
// If string then we need to encode to UTF8, otherwise will have
|
|
30741
|
-
// wrong size. TextEncoder has similar browser support to
|
|
30742
|
-
// MutationObserver, although it does not accept IE11.
|
|
30743
|
-
length:
|
|
30744
|
-
typeof recordingData === 'string' ? new TextEncoder().encode(recordingData).length : recordingData.length,
|
|
30745
|
-
},
|
|
30746
|
-
recordingData,
|
|
30747
|
-
],
|
|
30748
|
-
],
|
|
30749
|
-
);
|
|
30750
|
-
}
|
|
30751
|
-
|
|
30752
|
-
/**
|
|
30753
|
-
* Prepare the recording data ready to be sent.
|
|
30754
|
-
*/
|
|
30755
|
-
function prepareRecordingData({
|
|
30756
|
-
recordingData,
|
|
30757
|
-
headers,
|
|
30758
|
-
}
|
|
30759
|
-
|
|
30760
|
-
) {
|
|
30761
|
-
let payloadWithSequence;
|
|
30762
|
-
|
|
30763
|
-
// XXX: newline is needed to separate sequence id from events
|
|
30764
|
-
const replayHeaders = `${JSON.stringify(headers)}
|
|
30765
|
-
`;
|
|
30766
|
-
|
|
30767
|
-
if (typeof recordingData === 'string') {
|
|
30768
|
-
payloadWithSequence = `${replayHeaders}${recordingData}`;
|
|
30769
|
-
} else {
|
|
30770
|
-
const enc = new TextEncoder();
|
|
30771
|
-
// XXX: newline is needed to separate sequence id from events
|
|
30772
|
-
const sequence = enc.encode(replayHeaders);
|
|
30773
|
-
// Merge the two Uint8Arrays
|
|
30774
|
-
payloadWithSequence = new Uint8Array(sequence.length + recordingData.length);
|
|
30775
|
-
payloadWithSequence.set(sequence);
|
|
30776
|
-
payloadWithSequence.set(recordingData, sequence.length);
|
|
30777
|
-
}
|
|
30778
|
-
|
|
30779
|
-
return payloadWithSequence;
|
|
30780
|
-
}
|
|
30781
|
-
|
|
30782
|
-
/**
|
|
30783
|
-
* Prepare a replay event & enrich it with the SDK metadata.
|
|
30784
|
-
*/
|
|
30785
|
-
async function prepareReplayEvent({
|
|
30592
|
+
async function getReplayEvent({
|
|
30786
30593
|
client,
|
|
30787
30594
|
scope,
|
|
30788
30595
|
replayId: event_id,
|
|
@@ -30808,218 +30615,59 @@ async function prepareReplayEvent({
|
|
|
30808
30615
|
|
|
30809
30616
|
preparedEvent.sdk = {
|
|
30810
30617
|
...preparedEvent.sdk,
|
|
30811
|
-
version: "7.
|
|
30618
|
+
version: "7.29.0",
|
|
30812
30619
|
name,
|
|
30813
30620
|
};
|
|
30814
30621
|
|
|
30815
30622
|
return preparedEvent;
|
|
30816
30623
|
}
|
|
30817
30624
|
|
|
30818
|
-
|
|
30819
|
-
* Send replay attachment using `fetch()`
|
|
30820
|
-
*/
|
|
30821
|
-
async function sendReplayRequest({
|
|
30822
|
-
recordingData,
|
|
30823
|
-
replayId,
|
|
30824
|
-
segmentId: segment_id,
|
|
30825
|
-
includeReplayStartTimestamp,
|
|
30826
|
-
eventContext,
|
|
30827
|
-
timestamp,
|
|
30828
|
-
session,
|
|
30829
|
-
options,
|
|
30830
|
-
}) {
|
|
30831
|
-
const preparedRecordingData = prepareRecordingData({
|
|
30832
|
-
recordingData,
|
|
30833
|
-
headers: {
|
|
30834
|
-
segment_id,
|
|
30835
|
-
},
|
|
30836
|
-
});
|
|
30837
|
-
|
|
30838
|
-
const { urls, errorIds, traceIds, initialTimestamp } = eventContext;
|
|
30625
|
+
let _originalRecordDroppedEvent;
|
|
30839
30626
|
|
|
30840
|
-
|
|
30841
|
-
const client =
|
|
30842
|
-
const scope = hub.getScope();
|
|
30843
|
-
const transport = client && client.getTransport();
|
|
30844
|
-
const dsn = _optionalChain([client, 'optionalAccess', _ => _.getDsn, 'call', _2 => _2()]);
|
|
30627
|
+
function overwriteRecordDroppedEvent(errorIds) {
|
|
30628
|
+
const client = getCurrentHub().getClient();
|
|
30845
30629
|
|
|
30846
|
-
if (!client
|
|
30630
|
+
if (!client) {
|
|
30847
30631
|
return;
|
|
30848
30632
|
}
|
|
30849
30633
|
|
|
30850
|
-
const
|
|
30851
|
-
// @ts-ignore private api
|
|
30852
|
-
type: REPLAY_EVENT_NAME,
|
|
30853
|
-
...(includeReplayStartTimestamp ? { replay_start_timestamp: initialTimestamp / 1000 } : {}),
|
|
30854
|
-
timestamp: timestamp / 1000,
|
|
30855
|
-
error_ids: errorIds,
|
|
30856
|
-
trace_ids: traceIds,
|
|
30857
|
-
urls,
|
|
30858
|
-
replay_id: replayId,
|
|
30859
|
-
segment_id,
|
|
30860
|
-
replay_type: session.sampled,
|
|
30861
|
-
};
|
|
30862
|
-
|
|
30863
|
-
const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });
|
|
30634
|
+
const _originalCallback = client.recordDroppedEvent.bind(client);
|
|
30864
30635
|
|
|
30865
|
-
|
|
30866
|
-
|
|
30867
|
-
|
|
30868
|
-
|
|
30869
|
-
|
|
30870
|
-
|
|
30636
|
+
const recordDroppedEvent = (
|
|
30637
|
+
reason,
|
|
30638
|
+
category,
|
|
30639
|
+
event,
|
|
30640
|
+
) => {
|
|
30641
|
+
if (event && !event.type && event.event_id) {
|
|
30642
|
+
errorIds.delete(event.event_id);
|
|
30643
|
+
}
|
|
30871
30644
|
|
|
30872
|
-
|
|
30873
|
-
...replayEvent.tags,
|
|
30874
|
-
sessionSampleRate: options.sessionSampleRate,
|
|
30875
|
-
errorSampleRate: options.errorSampleRate,
|
|
30645
|
+
return _originalCallback(reason, category, event);
|
|
30876
30646
|
};
|
|
30877
30647
|
|
|
30878
|
-
|
|
30879
|
-
|
|
30880
|
-
{
|
|
30881
|
-
"type": "replay_event",
|
|
30882
|
-
"timestamp": 1670837008.634,
|
|
30883
|
-
"error_ids": [
|
|
30884
|
-
"errorId"
|
|
30885
|
-
],
|
|
30886
|
-
"trace_ids": [
|
|
30887
|
-
"traceId"
|
|
30888
|
-
],
|
|
30889
|
-
"urls": [
|
|
30890
|
-
"https://example.com"
|
|
30891
|
-
],
|
|
30892
|
-
"replay_id": "eventId",
|
|
30893
|
-
"segment_id": 3,
|
|
30894
|
-
"replay_type": "error",
|
|
30895
|
-
"platform": "javascript",
|
|
30896
|
-
"event_id": "eventId",
|
|
30897
|
-
"environment": "production",
|
|
30898
|
-
"sdk": {
|
|
30899
|
-
"integrations": [
|
|
30900
|
-
"BrowserTracing",
|
|
30901
|
-
"Replay"
|
|
30902
|
-
],
|
|
30903
|
-
"name": "sentry.javascript.browser",
|
|
30904
|
-
"version": "7.25.0"
|
|
30905
|
-
},
|
|
30906
|
-
"sdkProcessingMetadata": {},
|
|
30907
|
-
"tags": {
|
|
30908
|
-
"sessionSampleRate": 1,
|
|
30909
|
-
"errorSampleRate": 0,
|
|
30910
|
-
}
|
|
30911
|
-
}
|
|
30912
|
-
*/
|
|
30913
|
-
|
|
30914
|
-
const envelope = createReplayEnvelope(replayEvent, preparedRecordingData, dsn, client.getOptions().tunnel);
|
|
30915
|
-
|
|
30916
|
-
let response;
|
|
30917
|
-
|
|
30918
|
-
try {
|
|
30919
|
-
response = await transport.send(envelope);
|
|
30920
|
-
} catch (e) {
|
|
30921
|
-
throw new Error(UNABLE_TO_SEND_REPLAY);
|
|
30922
|
-
}
|
|
30923
|
-
|
|
30924
|
-
// TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore
|
|
30925
|
-
if (!response) {
|
|
30926
|
-
return response;
|
|
30927
|
-
}
|
|
30928
|
-
|
|
30929
|
-
const rateLimits = updateRateLimits({}, response);
|
|
30930
|
-
if (isRateLimited(rateLimits, 'replay')) {
|
|
30931
|
-
throw new RateLimitError(rateLimits);
|
|
30932
|
-
}
|
|
30933
|
-
|
|
30934
|
-
// If the status code is invalid, we want to immediately stop & not retry
|
|
30935
|
-
if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {
|
|
30936
|
-
throw new TransportStatusCodeError(response.statusCode);
|
|
30937
|
-
}
|
|
30938
|
-
|
|
30939
|
-
return response;
|
|
30940
|
-
}
|
|
30941
|
-
|
|
30942
|
-
/**
|
|
30943
|
-
* This error indicates that we hit a rate limit API error.
|
|
30944
|
-
*/
|
|
30945
|
-
class RateLimitError extends Error {
|
|
30946
|
-
|
|
30947
|
-
constructor(rateLimits) {
|
|
30948
|
-
super('Rate limit hit');
|
|
30949
|
-
this.rateLimits = rateLimits;
|
|
30950
|
-
}
|
|
30951
|
-
}
|
|
30952
|
-
|
|
30953
|
-
/**
|
|
30954
|
-
* This error indicates that the transport returned an invalid status code.
|
|
30955
|
-
*/
|
|
30956
|
-
class TransportStatusCodeError extends Error {
|
|
30957
|
-
constructor(statusCode) {
|
|
30958
|
-
super(`Transport returned status code ${statusCode}`);
|
|
30959
|
-
}
|
|
30648
|
+
client.recordDroppedEvent = recordDroppedEvent;
|
|
30649
|
+
_originalRecordDroppedEvent = _originalCallback;
|
|
30960
30650
|
}
|
|
30961
30651
|
|
|
30962
|
-
|
|
30963
|
-
|
|
30964
|
-
*/
|
|
30965
|
-
async function sendReplay(
|
|
30966
|
-
replayData,
|
|
30967
|
-
retryConfig = {
|
|
30968
|
-
count: 0,
|
|
30969
|
-
interval: RETRY_BASE_INTERVAL,
|
|
30970
|
-
},
|
|
30971
|
-
) {
|
|
30972
|
-
const { recordingData, options } = replayData;
|
|
30652
|
+
function restoreRecordDroppedEvent() {
|
|
30653
|
+
const client = getCurrentHub().getClient();
|
|
30973
30654
|
|
|
30974
|
-
|
|
30975
|
-
if (!recordingData.length) {
|
|
30655
|
+
if (!client || !_originalRecordDroppedEvent) {
|
|
30976
30656
|
return;
|
|
30977
30657
|
}
|
|
30978
30658
|
|
|
30979
|
-
|
|
30980
|
-
await sendReplayRequest(replayData);
|
|
30981
|
-
return true;
|
|
30982
|
-
} catch (err) {
|
|
30983
|
-
if (err instanceof RateLimitError || err instanceof TransportStatusCodeError) {
|
|
30984
|
-
throw err;
|
|
30985
|
-
}
|
|
30986
|
-
|
|
30987
|
-
// Capture error for every failed replay
|
|
30988
|
-
setContext('Replays', {
|
|
30989
|
-
_retryCount: retryConfig.count,
|
|
30990
|
-
});
|
|
30991
|
-
|
|
30992
|
-
if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && options._experiments && options._experiments.captureExceptions) {
|
|
30993
|
-
captureException(err);
|
|
30994
|
-
}
|
|
30995
|
-
|
|
30996
|
-
// If an error happened here, it's likely that uploading the attachment
|
|
30997
|
-
// failed, we'll can retry with the same events payload
|
|
30998
|
-
if (retryConfig.count >= RETRY_MAX_COUNT) {
|
|
30999
|
-
throw new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);
|
|
31000
|
-
}
|
|
31001
|
-
|
|
31002
|
-
// will retry in intervals of 5, 10, 30
|
|
31003
|
-
retryConfig.interval *= ++retryConfig.count;
|
|
31004
|
-
|
|
31005
|
-
return await new Promise((resolve, reject) => {
|
|
31006
|
-
setTimeout(async () => {
|
|
31007
|
-
try {
|
|
31008
|
-
await sendReplay(replayData, retryConfig);
|
|
31009
|
-
resolve(true);
|
|
31010
|
-
} catch (err) {
|
|
31011
|
-
reject(err);
|
|
31012
|
-
}
|
|
31013
|
-
}, retryConfig.interval);
|
|
31014
|
-
});
|
|
31015
|
-
}
|
|
30659
|
+
client.recordDroppedEvent = _originalRecordDroppedEvent;
|
|
31016
30660
|
}
|
|
31017
30661
|
|
|
31018
30662
|
/* eslint-disable max-lines */ // TODO: We might want to split this file up
|
|
31019
30663
|
|
|
31020
30664
|
/**
|
|
31021
|
-
*
|
|
30665
|
+
* Returns true to return control to calling function, otherwise continue with normal batching
|
|
31022
30666
|
*/
|
|
30667
|
+
|
|
30668
|
+
const BASE_RETRY_INTERVAL = 5000;
|
|
30669
|
+
const MAX_RETRY_COUNT = 3;
|
|
30670
|
+
|
|
31023
30671
|
class ReplayContainer {
|
|
31024
30672
|
__init() {this.eventBuffer = null;}
|
|
31025
30673
|
|
|
@@ -31041,37 +30689,40 @@ class ReplayContainer {
|
|
|
31041
30689
|
|
|
31042
30690
|
__init4() {this._performanceObserver = null;}
|
|
31043
30691
|
|
|
31044
|
-
__init5() {this.
|
|
30692
|
+
__init5() {this._retryCount = 0;}
|
|
30693
|
+
__init6() {this._retryInterval = BASE_RETRY_INTERVAL;}
|
|
30694
|
+
|
|
30695
|
+
__init7() {this._flushLock = null;}
|
|
31045
30696
|
|
|
31046
30697
|
/**
|
|
31047
30698
|
* Timestamp of the last user activity. This lives across sessions.
|
|
31048
30699
|
*/
|
|
31049
|
-
|
|
30700
|
+
__init8() {this._lastActivity = new Date().getTime();}
|
|
31050
30701
|
|
|
31051
30702
|
/**
|
|
31052
30703
|
* Is the integration currently active?
|
|
31053
30704
|
*/
|
|
31054
|
-
|
|
30705
|
+
__init9() {this._isEnabled = false;}
|
|
31055
30706
|
|
|
31056
30707
|
/**
|
|
31057
30708
|
* Paused is a state where:
|
|
31058
30709
|
* - DOM Recording is not listening at all
|
|
31059
30710
|
* - Nothing will be added to event buffer (e.g. core SDK events)
|
|
31060
30711
|
*/
|
|
31061
|
-
|
|
30712
|
+
__init10() {this._isPaused = false;}
|
|
31062
30713
|
|
|
31063
30714
|
/**
|
|
31064
30715
|
* Have we attached listeners to the core SDK?
|
|
31065
30716
|
* Note we have to track this as there is no way to remove instrumentation handlers.
|
|
31066
30717
|
*/
|
|
31067
|
-
|
|
30718
|
+
__init11() {this._hasInitializedCoreListeners = false;}
|
|
31068
30719
|
|
|
31069
30720
|
/**
|
|
31070
30721
|
* Function to stop recording
|
|
31071
30722
|
*/
|
|
31072
|
-
|
|
30723
|
+
__init12() {this._stopRecording = null;}
|
|
31073
30724
|
|
|
31074
|
-
|
|
30725
|
+
__init13() {this._context = {
|
|
31075
30726
|
errorIds: new Set(),
|
|
31076
30727
|
traceIds: new Set(),
|
|
31077
30728
|
urls: [],
|
|
@@ -31080,16 +30731,11 @@ class ReplayContainer {
|
|
|
31080
30731
|
initialUrl: '',
|
|
31081
30732
|
};}
|
|
31082
30733
|
|
|
31083
|
-
|
|
31084
|
-
options,
|
|
31085
|
-
recordingOptions,
|
|
31086
|
-
}
|
|
31087
|
-
|
|
31088
|
-
) {ReplayContainer.prototype.__init.call(this);ReplayContainer.prototype.__init2.call(this);ReplayContainer.prototype.__init3.call(this);ReplayContainer.prototype.__init4.call(this);ReplayContainer.prototype.__init5.call(this);ReplayContainer.prototype.__init6.call(this);ReplayContainer.prototype.__init7.call(this);ReplayContainer.prototype.__init8.call(this);ReplayContainer.prototype.__init9.call(this);ReplayContainer.prototype.__init10.call(this);ReplayContainer.prototype.__init11.call(this);ReplayContainer.prototype.__init12.call(this);ReplayContainer.prototype.__init13.call(this);ReplayContainer.prototype.__init14.call(this);ReplayContainer.prototype.__init15.call(this);ReplayContainer.prototype.__init16.call(this);ReplayContainer.prototype.__init17.call(this);
|
|
30734
|
+
constructor({ options, recordingOptions }) {ReplayContainer.prototype.__init.call(this);ReplayContainer.prototype.__init2.call(this);ReplayContainer.prototype.__init3.call(this);ReplayContainer.prototype.__init4.call(this);ReplayContainer.prototype.__init5.call(this);ReplayContainer.prototype.__init6.call(this);ReplayContainer.prototype.__init7.call(this);ReplayContainer.prototype.__init8.call(this);ReplayContainer.prototype.__init9.call(this);ReplayContainer.prototype.__init10.call(this);ReplayContainer.prototype.__init11.call(this);ReplayContainer.prototype.__init12.call(this);ReplayContainer.prototype.__init13.call(this);ReplayContainer.prototype.__init14.call(this);ReplayContainer.prototype.__init15.call(this);ReplayContainer.prototype.__init16.call(this);ReplayContainer.prototype.__init17.call(this);ReplayContainer.prototype.__init18.call(this);ReplayContainer.prototype.__init19.call(this);
|
|
31089
30735
|
this._recordingOptions = recordingOptions;
|
|
31090
30736
|
this._options = options;
|
|
31091
30737
|
|
|
31092
|
-
this._debouncedFlush = debounce(() => this.
|
|
30738
|
+
this._debouncedFlush = debounce(() => this.flush(), this._options.flushMinDelay, {
|
|
31093
30739
|
maxWait: this._options.flushMaxDelay,
|
|
31094
30740
|
});
|
|
31095
30741
|
}
|
|
@@ -31120,14 +30766,14 @@ class ReplayContainer {
|
|
|
31120
30766
|
* Creates or loads a session, attaches listeners to varying events (DOM,
|
|
31121
30767
|
* _performanceObserver, Recording, Sentry SDK, etc)
|
|
31122
30768
|
*/
|
|
31123
|
-
|
|
31124
|
-
this.
|
|
30769
|
+
start() {
|
|
30770
|
+
this.setInitialState();
|
|
31125
30771
|
|
|
31126
|
-
this.
|
|
30772
|
+
this.loadSession({ expiry: SESSION_IDLE_DURATION });
|
|
31127
30773
|
|
|
31128
30774
|
// If there is no session, then something bad has happened - can't continue
|
|
31129
30775
|
if (!this.session) {
|
|
31130
|
-
this.
|
|
30776
|
+
this.handleException(new Error('No session found'));
|
|
31131
30777
|
return;
|
|
31132
30778
|
}
|
|
31133
30779
|
|
|
@@ -31136,21 +30782,23 @@ class ReplayContainer {
|
|
|
31136
30782
|
return;
|
|
31137
30783
|
}
|
|
31138
30784
|
|
|
31139
|
-
//
|
|
31140
|
-
//
|
|
30785
|
+
// Modify recording options to checkoutEveryNthSecond if
|
|
30786
|
+
// sampling for error replay. This is because we don't know
|
|
30787
|
+
// when an error will occur, so we need to keep a buffer of
|
|
30788
|
+
// replay events.
|
|
31141
30789
|
if (this.session.sampled === 'error') {
|
|
31142
30790
|
this.recordingMode = 'error';
|
|
31143
30791
|
}
|
|
31144
30792
|
|
|
31145
30793
|
// setup() is generally called on page load or manually - in both cases we
|
|
31146
30794
|
// should treat it as an activity
|
|
31147
|
-
this.
|
|
30795
|
+
this.updateSessionActivity();
|
|
31148
30796
|
|
|
31149
30797
|
this.eventBuffer = createEventBuffer({
|
|
31150
30798
|
useCompression: Boolean(this._options.useCompression),
|
|
31151
30799
|
});
|
|
31152
30800
|
|
|
31153
|
-
this.
|
|
30801
|
+
this.addListeners();
|
|
31154
30802
|
|
|
31155
30803
|
// Need to set as enabled before we start recording, as `record()` can trigger a flush with a new checkout
|
|
31156
30804
|
this._isEnabled = true;
|
|
@@ -31163,18 +30811,18 @@ class ReplayContainer {
|
|
|
31163
30811
|
*
|
|
31164
30812
|
* Note that this will cause a new DOM checkout
|
|
31165
30813
|
*/
|
|
31166
|
-
|
|
30814
|
+
startRecording() {
|
|
31167
30815
|
try {
|
|
31168
30816
|
this._stopRecording = record({
|
|
31169
30817
|
...this._recordingOptions,
|
|
31170
|
-
// When running in error sampling mode, we need to overwrite `
|
|
30818
|
+
// When running in error sampling mode, we need to overwrite `checkoutEveryNth`
|
|
31171
30819
|
// Without this, it would record forever, until an error happens, which we don't want
|
|
31172
30820
|
// instead, we'll always keep the last 60 seconds of replay before an error happened
|
|
31173
|
-
...(this.recordingMode === 'error' && {
|
|
31174
|
-
emit: this.
|
|
30821
|
+
...(this.recordingMode === 'error' && { checkoutEveryNth: 60000 }),
|
|
30822
|
+
emit: this.handleRecordingEmit,
|
|
31175
30823
|
});
|
|
31176
30824
|
} catch (err) {
|
|
31177
|
-
this.
|
|
30825
|
+
this.handleException(err);
|
|
31178
30826
|
}
|
|
31179
30827
|
}
|
|
31180
30828
|
|
|
@@ -31195,17 +30843,16 @@ class ReplayContainer {
|
|
|
31195
30843
|
* Currently, this needs to be manually called (e.g. for tests). Sentry SDK
|
|
31196
30844
|
* does not support a teardown
|
|
31197
30845
|
*/
|
|
31198
|
-
|
|
30846
|
+
stop() {
|
|
31199
30847
|
try {
|
|
31200
30848
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Stopping Replays');
|
|
31201
30849
|
this._isEnabled = false;
|
|
31202
|
-
this.
|
|
30850
|
+
this.removeListeners();
|
|
31203
30851
|
_optionalChain([this, 'access', _8 => _8._stopRecording, 'optionalCall', _9 => _9()]);
|
|
31204
30852
|
_optionalChain([this, 'access', _10 => _10.eventBuffer, 'optionalAccess', _11 => _11.destroy, 'call', _12 => _12()]);
|
|
31205
30853
|
this.eventBuffer = null;
|
|
31206
|
-
this._debouncedFlush.cancel();
|
|
31207
30854
|
} catch (err) {
|
|
31208
|
-
this.
|
|
30855
|
+
this.handleException(err);
|
|
31209
30856
|
}
|
|
31210
30857
|
}
|
|
31211
30858
|
|
|
@@ -31214,7 +30861,7 @@ class ReplayContainer {
|
|
|
31214
30861
|
* This differs from stop as this only stops DOM recording, it is
|
|
31215
30862
|
* not as thorough of a shutdown as `stop()`.
|
|
31216
30863
|
*/
|
|
31217
|
-
|
|
30864
|
+
pause() {
|
|
31218
30865
|
this._isPaused = true;
|
|
31219
30866
|
try {
|
|
31220
30867
|
if (this._stopRecording) {
|
|
@@ -31222,7 +30869,7 @@ class ReplayContainer {
|
|
|
31222
30869
|
this._stopRecording = undefined;
|
|
31223
30870
|
}
|
|
31224
30871
|
} catch (err) {
|
|
31225
|
-
this.
|
|
30872
|
+
this.handleException(err);
|
|
31226
30873
|
}
|
|
31227
30874
|
}
|
|
31228
30875
|
|
|
@@ -31232,11 +30879,136 @@ class ReplayContainer {
|
|
|
31232
30879
|
* Note that calling `startRecording()` here will cause a
|
|
31233
30880
|
* new DOM checkout.`
|
|
31234
30881
|
*/
|
|
31235
|
-
|
|
30882
|
+
resume() {
|
|
31236
30883
|
this._isPaused = false;
|
|
31237
30884
|
this.startRecording();
|
|
31238
30885
|
}
|
|
31239
30886
|
|
|
30887
|
+
/** A wrapper to conditionally capture exceptions. */
|
|
30888
|
+
handleException(error) {
|
|
30889
|
+
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay]', error);
|
|
30890
|
+
|
|
30891
|
+
if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._options._experiments && this._options._experiments.captureExceptions) {
|
|
30892
|
+
captureException(error);
|
|
30893
|
+
}
|
|
30894
|
+
}
|
|
30895
|
+
|
|
30896
|
+
/** for tests only */
|
|
30897
|
+
clearSession() {
|
|
30898
|
+
try {
|
|
30899
|
+
deleteSession();
|
|
30900
|
+
this.session = undefined;
|
|
30901
|
+
} catch (err) {
|
|
30902
|
+
this.handleException(err);
|
|
30903
|
+
}
|
|
30904
|
+
}
|
|
30905
|
+
|
|
30906
|
+
/**
|
|
30907
|
+
* Loads a session from storage, or creates a new one if it does not exist or
|
|
30908
|
+
* is expired.
|
|
30909
|
+
*/
|
|
30910
|
+
loadSession({ expiry }) {
|
|
30911
|
+
const { type, session } = getSession({
|
|
30912
|
+
expiry,
|
|
30913
|
+
stickySession: Boolean(this._options.stickySession),
|
|
30914
|
+
currentSession: this.session,
|
|
30915
|
+
sessionSampleRate: this._options.sessionSampleRate,
|
|
30916
|
+
errorSampleRate: this._options.errorSampleRate,
|
|
30917
|
+
});
|
|
30918
|
+
|
|
30919
|
+
// If session was newly created (i.e. was not loaded from storage), then
|
|
30920
|
+
// enable flag to create the root replay
|
|
30921
|
+
if (type === 'new') {
|
|
30922
|
+
this.setInitialState();
|
|
30923
|
+
}
|
|
30924
|
+
|
|
30925
|
+
if (session.id !== _optionalChain([this, 'access', _13 => _13.session, 'optionalAccess', _14 => _14.id])) {
|
|
30926
|
+
session.previousSessionId = _optionalChain([this, 'access', _15 => _15.session, 'optionalAccess', _16 => _16.id]);
|
|
30927
|
+
}
|
|
30928
|
+
|
|
30929
|
+
this.session = session;
|
|
30930
|
+
}
|
|
30931
|
+
|
|
30932
|
+
/**
|
|
30933
|
+
* Capture some initial state that can change throughout the lifespan of the
|
|
30934
|
+
* replay. This is required because otherwise they would be captured at the
|
|
30935
|
+
* first flush.
|
|
30936
|
+
*/
|
|
30937
|
+
setInitialState() {
|
|
30938
|
+
const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;
|
|
30939
|
+
const url = `${WINDOW.location.origin}${urlPath}`;
|
|
30940
|
+
|
|
30941
|
+
this.performanceEvents = [];
|
|
30942
|
+
|
|
30943
|
+
// Reset _context as well
|
|
30944
|
+
this.clearContext();
|
|
30945
|
+
|
|
30946
|
+
this._context.initialUrl = url;
|
|
30947
|
+
this._context.initialTimestamp = new Date().getTime();
|
|
30948
|
+
this._context.urls.push(url);
|
|
30949
|
+
}
|
|
30950
|
+
|
|
30951
|
+
/**
|
|
30952
|
+
* Adds listeners to record events for the replay
|
|
30953
|
+
*/
|
|
30954
|
+
addListeners() {
|
|
30955
|
+
try {
|
|
30956
|
+
WINDOW.document.addEventListener('visibilitychange', this.handleVisibilityChange);
|
|
30957
|
+
WINDOW.addEventListener('blur', this.handleWindowBlur);
|
|
30958
|
+
WINDOW.addEventListener('focus', this.handleWindowFocus);
|
|
30959
|
+
|
|
30960
|
+
// We need to filter out dropped events captured by `addGlobalEventProcessor(this.handleGlobalEvent)` below
|
|
30961
|
+
overwriteRecordDroppedEvent(this._context.errorIds);
|
|
30962
|
+
|
|
30963
|
+
// There is no way to remove these listeners, so ensure they are only added once
|
|
30964
|
+
if (!this._hasInitializedCoreListeners) {
|
|
30965
|
+
// Listeners from core SDK //
|
|
30966
|
+
const scope = getCurrentHub().getScope();
|
|
30967
|
+
_optionalChain([scope, 'optionalAccess', _17 => _17.addScopeListener, 'call', _18 => _18(this.handleCoreBreadcrumbListener('scope'))]);
|
|
30968
|
+
addInstrumentationHandler('dom', this.handleCoreBreadcrumbListener('dom'));
|
|
30969
|
+
addInstrumentationHandler('fetch', handleFetchSpanListener(this));
|
|
30970
|
+
addInstrumentationHandler('xhr', handleXhrSpanListener(this));
|
|
30971
|
+
addInstrumentationHandler('history', handleHistorySpanListener(this));
|
|
30972
|
+
|
|
30973
|
+
// Tag all (non replay) events that get sent to Sentry with the current
|
|
30974
|
+
// replay ID so that we can reference them later in the UI
|
|
30975
|
+
addGlobalEventProcessor(handleGlobalEventListener(this));
|
|
30976
|
+
|
|
30977
|
+
this._hasInitializedCoreListeners = true;
|
|
30978
|
+
}
|
|
30979
|
+
} catch (err) {
|
|
30980
|
+
this.handleException(err);
|
|
30981
|
+
}
|
|
30982
|
+
|
|
30983
|
+
// _performanceObserver //
|
|
30984
|
+
if (!('_performanceObserver' in WINDOW)) {
|
|
30985
|
+
return;
|
|
30986
|
+
}
|
|
30987
|
+
|
|
30988
|
+
this._performanceObserver = setupPerformanceObserver(this);
|
|
30989
|
+
}
|
|
30990
|
+
|
|
30991
|
+
/**
|
|
30992
|
+
* Cleans up listeners that were created in `addListeners`
|
|
30993
|
+
*/
|
|
30994
|
+
removeListeners() {
|
|
30995
|
+
try {
|
|
30996
|
+
WINDOW.document.removeEventListener('visibilitychange', this.handleVisibilityChange);
|
|
30997
|
+
|
|
30998
|
+
WINDOW.removeEventListener('blur', this.handleWindowBlur);
|
|
30999
|
+
WINDOW.removeEventListener('focus', this.handleWindowFocus);
|
|
31000
|
+
|
|
31001
|
+
restoreRecordDroppedEvent();
|
|
31002
|
+
|
|
31003
|
+
if (this._performanceObserver) {
|
|
31004
|
+
this._performanceObserver.disconnect();
|
|
31005
|
+
this._performanceObserver = null;
|
|
31006
|
+
}
|
|
31007
|
+
} catch (err) {
|
|
31008
|
+
this.handleException(err);
|
|
31009
|
+
}
|
|
31010
|
+
}
|
|
31011
|
+
|
|
31240
31012
|
/**
|
|
31241
31013
|
* We want to batch uploads of replay events. Save events only if
|
|
31242
31014
|
* `<flushMinDelay>` milliseconds have elapsed since the last event
|
|
@@ -31245,9 +31017,9 @@ class ReplayContainer {
|
|
|
31245
31017
|
* Accepts a callback to perform side-effects and returns true to stop batch
|
|
31246
31018
|
* processing and hand back control to caller.
|
|
31247
31019
|
*/
|
|
31248
|
-
|
|
31020
|
+
addUpdate(cb) {
|
|
31249
31021
|
// We need to always run `cb` (e.g. in the case of `this.recordingMode == 'error'`)
|
|
31250
|
-
const cbResult = _optionalChain([cb, 'optionalCall',
|
|
31022
|
+
const cbResult = _optionalChain([cb, 'optionalCall', _19 => _19()]);
|
|
31251
31023
|
|
|
31252
31024
|
// If this option is turned on then we will only want to call `flush`
|
|
31253
31025
|
// explicitly
|
|
@@ -31266,170 +31038,17 @@ class ReplayContainer {
|
|
|
31266
31038
|
this._debouncedFlush();
|
|
31267
31039
|
}
|
|
31268
31040
|
|
|
31269
|
-
/**
|
|
31270
|
-
* Updates the user activity timestamp and resumes recording. This should be
|
|
31271
|
-
* called in an event handler for a user action that we consider as the user
|
|
31272
|
-
* being "active" (e.g. a mouse click).
|
|
31273
|
-
*/
|
|
31274
|
-
triggerUserActivity() {
|
|
31275
|
-
this._updateUserActivity();
|
|
31276
|
-
|
|
31277
|
-
// This case means that recording was once stopped due to inactivity.
|
|
31278
|
-
// Ensure that recording is resumed.
|
|
31279
|
-
if (!this._stopRecording) {
|
|
31280
|
-
// Create a new session, otherwise when the user action is flushed, it
|
|
31281
|
-
// will get rejected due to an expired session.
|
|
31282
|
-
this._loadSession({ expiry: SESSION_IDLE_DURATION });
|
|
31283
|
-
|
|
31284
|
-
// Note: This will cause a new DOM checkout
|
|
31285
|
-
this.resume();
|
|
31286
|
-
return;
|
|
31287
|
-
}
|
|
31288
|
-
|
|
31289
|
-
// Otherwise... recording was never suspended, continue as normalish
|
|
31290
|
-
this._checkAndHandleExpiredSession();
|
|
31291
|
-
|
|
31292
|
-
this._updateSessionActivity();
|
|
31293
|
-
}
|
|
31294
|
-
|
|
31295
|
-
/**
|
|
31296
|
-
*
|
|
31297
|
-
* Always flush via `_debouncedFlush` so that we do not have flushes triggered
|
|
31298
|
-
* from calling both `flush` and `_debouncedFlush`. Otherwise, there could be
|
|
31299
|
-
* cases of mulitple flushes happening closely together.
|
|
31300
|
-
*/
|
|
31301
|
-
flushImmediate() {
|
|
31302
|
-
this._debouncedFlush();
|
|
31303
|
-
// `.flush` is provided by the debounced function, analogously to lodash.debounce
|
|
31304
|
-
return this._debouncedFlush.flush() ;
|
|
31305
|
-
}
|
|
31306
|
-
|
|
31307
|
-
/** A wrapper to conditionally capture exceptions. */
|
|
31308
|
-
_handleException(error) {
|
|
31309
|
-
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay]', error);
|
|
31310
|
-
|
|
31311
|
-
if ((typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && this._options._experiments && this._options._experiments.captureExceptions) {
|
|
31312
|
-
captureException(error);
|
|
31313
|
-
}
|
|
31314
|
-
}
|
|
31315
|
-
|
|
31316
|
-
/**
|
|
31317
|
-
* Loads a session from storage, or creates a new one if it does not exist or
|
|
31318
|
-
* is expired.
|
|
31319
|
-
*/
|
|
31320
|
-
_loadSession({ expiry }) {
|
|
31321
|
-
const { type, session } = getSession({
|
|
31322
|
-
expiry,
|
|
31323
|
-
stickySession: Boolean(this._options.stickySession),
|
|
31324
|
-
currentSession: this.session,
|
|
31325
|
-
sessionSampleRate: this._options.sessionSampleRate,
|
|
31326
|
-
errorSampleRate: this._options.errorSampleRate,
|
|
31327
|
-
});
|
|
31328
|
-
|
|
31329
|
-
// If session was newly created (i.e. was not loaded from storage), then
|
|
31330
|
-
// enable flag to create the root replay
|
|
31331
|
-
if (type === 'new') {
|
|
31332
|
-
this._setInitialState();
|
|
31333
|
-
}
|
|
31334
|
-
|
|
31335
|
-
if (session.id !== _optionalChain([this, 'access', _14 => _14.session, 'optionalAccess', _15 => _15.id])) {
|
|
31336
|
-
session.previousSessionId = _optionalChain([this, 'access', _16 => _16.session, 'optionalAccess', _17 => _17.id]);
|
|
31337
|
-
}
|
|
31338
|
-
|
|
31339
|
-
this.session = session;
|
|
31340
|
-
}
|
|
31341
|
-
|
|
31342
|
-
/**
|
|
31343
|
-
* Capture some initial state that can change throughout the lifespan of the
|
|
31344
|
-
* replay. This is required because otherwise they would be captured at the
|
|
31345
|
-
* first flush.
|
|
31346
|
-
*/
|
|
31347
|
-
_setInitialState() {
|
|
31348
|
-
const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;
|
|
31349
|
-
const url = `${WINDOW.location.origin}${urlPath}`;
|
|
31350
|
-
|
|
31351
|
-
this.performanceEvents = [];
|
|
31352
|
-
|
|
31353
|
-
// Reset _context as well
|
|
31354
|
-
this._clearContext();
|
|
31355
|
-
|
|
31356
|
-
this._context.initialUrl = url;
|
|
31357
|
-
this._context.initialTimestamp = new Date().getTime();
|
|
31358
|
-
this._context.urls.push(url);
|
|
31359
|
-
}
|
|
31360
|
-
|
|
31361
|
-
/**
|
|
31362
|
-
* Adds listeners to record events for the replay
|
|
31363
|
-
*/
|
|
31364
|
-
_addListeners() {
|
|
31365
|
-
try {
|
|
31366
|
-
WINDOW.document.addEventListener('visibilitychange', this._handleVisibilityChange);
|
|
31367
|
-
WINDOW.addEventListener('blur', this._handleWindowBlur);
|
|
31368
|
-
WINDOW.addEventListener('focus', this._handleWindowFocus);
|
|
31369
|
-
|
|
31370
|
-
// We need to filter out dropped events captured by `addGlobalEventProcessor(this.handleGlobalEvent)` below
|
|
31371
|
-
overwriteRecordDroppedEvent(this._context.errorIds);
|
|
31372
|
-
|
|
31373
|
-
// There is no way to remove these listeners, so ensure they are only added once
|
|
31374
|
-
if (!this._hasInitializedCoreListeners) {
|
|
31375
|
-
// Listeners from core SDK //
|
|
31376
|
-
const scope = getCurrentHub().getScope();
|
|
31377
|
-
_optionalChain([scope, 'optionalAccess', _18 => _18.addScopeListener, 'call', _19 => _19(this._handleCoreBreadcrumbListener('scope'))]);
|
|
31378
|
-
addInstrumentationHandler('dom', this._handleCoreBreadcrumbListener('dom'));
|
|
31379
|
-
addInstrumentationHandler('fetch', handleFetchSpanListener(this));
|
|
31380
|
-
addInstrumentationHandler('xhr', handleXhrSpanListener(this));
|
|
31381
|
-
addInstrumentationHandler('history', handleHistorySpanListener(this));
|
|
31382
|
-
|
|
31383
|
-
// Tag all (non replay) events that get sent to Sentry with the current
|
|
31384
|
-
// replay ID so that we can reference them later in the UI
|
|
31385
|
-
addGlobalEventProcessor(handleGlobalEventListener(this));
|
|
31386
|
-
|
|
31387
|
-
this._hasInitializedCoreListeners = true;
|
|
31388
|
-
}
|
|
31389
|
-
} catch (err) {
|
|
31390
|
-
this._handleException(err);
|
|
31391
|
-
}
|
|
31392
|
-
|
|
31393
|
-
// _performanceObserver //
|
|
31394
|
-
if (!('_performanceObserver' in WINDOW)) {
|
|
31395
|
-
return;
|
|
31396
|
-
}
|
|
31397
|
-
|
|
31398
|
-
this._performanceObserver = setupPerformanceObserver(this);
|
|
31399
|
-
}
|
|
31400
|
-
|
|
31401
|
-
/**
|
|
31402
|
-
* Cleans up listeners that were created in `_addListeners`
|
|
31403
|
-
*/
|
|
31404
|
-
_removeListeners() {
|
|
31405
|
-
try {
|
|
31406
|
-
WINDOW.document.removeEventListener('visibilitychange', this._handleVisibilityChange);
|
|
31407
|
-
|
|
31408
|
-
WINDOW.removeEventListener('blur', this._handleWindowBlur);
|
|
31409
|
-
WINDOW.removeEventListener('focus', this._handleWindowFocus);
|
|
31410
|
-
|
|
31411
|
-
restoreRecordDroppedEvent();
|
|
31412
|
-
|
|
31413
|
-
if (this._performanceObserver) {
|
|
31414
|
-
this._performanceObserver.disconnect();
|
|
31415
|
-
this._performanceObserver = null;
|
|
31416
|
-
}
|
|
31417
|
-
} catch (err) {
|
|
31418
|
-
this._handleException(err);
|
|
31419
|
-
}
|
|
31420
|
-
}
|
|
31421
|
-
|
|
31422
31041
|
/**
|
|
31423
31042
|
* Handler for recording events.
|
|
31424
31043
|
*
|
|
31425
31044
|
* Adds to event buffer, and has varying flushing behaviors if the event was a checkout.
|
|
31426
31045
|
*/
|
|
31427
|
-
|
|
31046
|
+
__init14() {this.handleRecordingEmit = (
|
|
31428
31047
|
event,
|
|
31429
31048
|
isCheckout,
|
|
31430
31049
|
) => {
|
|
31431
31050
|
// If this is false, it means session is expired, create and a new session and wait for checkout
|
|
31432
|
-
if (!this.
|
|
31051
|
+
if (!this.checkAndHandleExpiredSession()) {
|
|
31433
31052
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Received replay event after session expired.');
|
|
31434
31053
|
|
|
31435
31054
|
return;
|
|
@@ -31442,12 +31061,12 @@ class ReplayContainer {
|
|
|
31442
31061
|
// checkout. This needs to happen before `addEvent()` which updates state
|
|
31443
31062
|
// dependent on this reset.
|
|
31444
31063
|
if (this.recordingMode === 'error' && event.type === 2) {
|
|
31445
|
-
this.
|
|
31064
|
+
this.setInitialState();
|
|
31446
31065
|
}
|
|
31447
31066
|
|
|
31448
31067
|
// We need to clear existing events on a checkout, otherwise they are
|
|
31449
31068
|
// incremental event updates and should be appended
|
|
31450
|
-
|
|
31069
|
+
addEvent(this, event, isCheckout);
|
|
31451
31070
|
|
|
31452
31071
|
// Different behavior for full snapshots (type=2), ignore other event types
|
|
31453
31072
|
// See https://github.com/rrweb-io/rrweb/blob/d8f9290ca496712aa1e7d472549480c4e7876594/packages/rrweb/src/types.ts#L16
|
|
@@ -31490,38 +31109,38 @@ class ReplayContainer {
|
|
|
31490
31109
|
* be hidden. Likewise, moving a different window to cover the contents of the
|
|
31491
31110
|
* page will also trigger a change to a hidden state.
|
|
31492
31111
|
*/
|
|
31493
|
-
|
|
31112
|
+
__init15() {this.handleVisibilityChange = () => {
|
|
31494
31113
|
if (WINDOW.document.visibilityState === 'visible') {
|
|
31495
|
-
this.
|
|
31114
|
+
this.doChangeToForegroundTasks();
|
|
31496
31115
|
} else {
|
|
31497
|
-
this.
|
|
31116
|
+
this.doChangeToBackgroundTasks();
|
|
31498
31117
|
}
|
|
31499
31118
|
};}
|
|
31500
31119
|
|
|
31501
31120
|
/**
|
|
31502
31121
|
* Handle when page is blurred
|
|
31503
31122
|
*/
|
|
31504
|
-
|
|
31123
|
+
__init16() {this.handleWindowBlur = () => {
|
|
31505
31124
|
const breadcrumb = createBreadcrumb({
|
|
31506
31125
|
category: 'ui.blur',
|
|
31507
31126
|
});
|
|
31508
31127
|
|
|
31509
31128
|
// Do not count blur as a user action -- it's part of the process of them
|
|
31510
31129
|
// leaving the page
|
|
31511
|
-
this.
|
|
31130
|
+
this.doChangeToBackgroundTasks(breadcrumb);
|
|
31512
31131
|
};}
|
|
31513
31132
|
|
|
31514
31133
|
/**
|
|
31515
31134
|
* Handle when page is focused
|
|
31516
31135
|
*/
|
|
31517
|
-
|
|
31136
|
+
__init17() {this.handleWindowFocus = () => {
|
|
31518
31137
|
const breadcrumb = createBreadcrumb({
|
|
31519
31138
|
category: 'ui.focus',
|
|
31520
31139
|
});
|
|
31521
31140
|
|
|
31522
31141
|
// Do not count focus as a user action -- instead wait until they focus and
|
|
31523
31142
|
// interactive with page
|
|
31524
|
-
this.
|
|
31143
|
+
this.doChangeToForegroundTasks(breadcrumb);
|
|
31525
31144
|
};}
|
|
31526
31145
|
|
|
31527
31146
|
/**
|
|
@@ -31529,7 +31148,7 @@ class ReplayContainer {
|
|
|
31529
31148
|
*
|
|
31530
31149
|
* These events will create breadcrumb-like objects in the recording.
|
|
31531
31150
|
*/
|
|
31532
|
-
|
|
31151
|
+
__init18() {this.handleCoreBreadcrumbListener =
|
|
31533
31152
|
(type) =>
|
|
31534
31153
|
(handlerData) => {
|
|
31535
31154
|
if (!this._isEnabled) {
|
|
@@ -31549,11 +31168,11 @@ class ReplayContainer {
|
|
|
31549
31168
|
if (result.category === 'ui.click') {
|
|
31550
31169
|
this.triggerUserActivity();
|
|
31551
31170
|
} else {
|
|
31552
|
-
this.
|
|
31171
|
+
this.checkAndHandleExpiredSession();
|
|
31553
31172
|
}
|
|
31554
31173
|
|
|
31555
31174
|
this.addUpdate(() => {
|
|
31556
|
-
|
|
31175
|
+
addEvent(this, {
|
|
31557
31176
|
type: EventType.Custom,
|
|
31558
31177
|
// TODO: We were converting from ms to seconds for breadcrumbs, spans,
|
|
31559
31178
|
// but maybe we should just keep them as milliseconds
|
|
@@ -31572,7 +31191,7 @@ class ReplayContainer {
|
|
|
31572
31191
|
/**
|
|
31573
31192
|
* Tasks to run when we consider a page to be hidden (via blurring and/or visibility)
|
|
31574
31193
|
*/
|
|
31575
|
-
|
|
31194
|
+
doChangeToBackgroundTasks(breadcrumb) {
|
|
31576
31195
|
if (!this.session) {
|
|
31577
31196
|
return;
|
|
31578
31197
|
}
|
|
@@ -31580,24 +31199,24 @@ class ReplayContainer {
|
|
|
31580
31199
|
const expired = isSessionExpired(this.session, VISIBILITY_CHANGE_TIMEOUT);
|
|
31581
31200
|
|
|
31582
31201
|
if (breadcrumb && !expired) {
|
|
31583
|
-
this.
|
|
31202
|
+
this.createCustomBreadcrumb(breadcrumb);
|
|
31584
31203
|
}
|
|
31585
31204
|
|
|
31586
31205
|
// Send replay when the page/tab becomes hidden. There is no reason to send
|
|
31587
31206
|
// replay if it becomes visible, since no actions we care about were done
|
|
31588
31207
|
// while it was hidden
|
|
31589
|
-
this.
|
|
31208
|
+
this.conditionalFlush();
|
|
31590
31209
|
}
|
|
31591
31210
|
|
|
31592
31211
|
/**
|
|
31593
31212
|
* Tasks to run when we consider a page to be visible (via focus and/or visibility)
|
|
31594
31213
|
*/
|
|
31595
|
-
|
|
31214
|
+
doChangeToForegroundTasks(breadcrumb) {
|
|
31596
31215
|
if (!this.session) {
|
|
31597
31216
|
return;
|
|
31598
31217
|
}
|
|
31599
31218
|
|
|
31600
|
-
const isSessionActive = this.
|
|
31219
|
+
const isSessionActive = this.checkAndHandleExpiredSession({
|
|
31601
31220
|
expiry: VISIBILITY_CHANGE_TIMEOUT,
|
|
31602
31221
|
});
|
|
31603
31222
|
|
|
@@ -31610,7 +31229,7 @@ class ReplayContainer {
|
|
|
31610
31229
|
}
|
|
31611
31230
|
|
|
31612
31231
|
if (breadcrumb) {
|
|
31613
|
-
this.
|
|
31232
|
+
this.createCustomBreadcrumb(breadcrumb);
|
|
31614
31233
|
}
|
|
31615
31234
|
}
|
|
31616
31235
|
|
|
@@ -31618,7 +31237,7 @@ class ReplayContainer {
|
|
|
31618
31237
|
* Trigger rrweb to take a full snapshot which will cause this plugin to
|
|
31619
31238
|
* create a new Replay event.
|
|
31620
31239
|
*/
|
|
31621
|
-
|
|
31240
|
+
triggerFullSnapshot() {
|
|
31622
31241
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Taking full rrweb snapshot');
|
|
31623
31242
|
record.takeFullSnapshot(true);
|
|
31624
31243
|
}
|
|
@@ -31626,26 +31245,52 @@ class ReplayContainer {
|
|
|
31626
31245
|
/**
|
|
31627
31246
|
* Update user activity (across session lifespans)
|
|
31628
31247
|
*/
|
|
31629
|
-
|
|
31248
|
+
updateUserActivity(_lastActivity = new Date().getTime()) {
|
|
31630
31249
|
this._lastActivity = _lastActivity;
|
|
31631
31250
|
}
|
|
31632
31251
|
|
|
31633
31252
|
/**
|
|
31634
31253
|
* Updates the session's last activity timestamp
|
|
31635
31254
|
*/
|
|
31636
|
-
|
|
31255
|
+
updateSessionActivity(_lastActivity = new Date().getTime()) {
|
|
31637
31256
|
if (this.session) {
|
|
31638
31257
|
this.session.lastActivity = _lastActivity;
|
|
31639
31258
|
this._maybeSaveSession();
|
|
31640
31259
|
}
|
|
31641
31260
|
}
|
|
31642
31261
|
|
|
31262
|
+
/**
|
|
31263
|
+
* Updates the user activity timestamp and resumes recording. This should be
|
|
31264
|
+
* called in an event handler for a user action that we consider as the user
|
|
31265
|
+
* being "active" (e.g. a mouse click).
|
|
31266
|
+
*/
|
|
31267
|
+
triggerUserActivity() {
|
|
31268
|
+
this.updateUserActivity();
|
|
31269
|
+
|
|
31270
|
+
// This case means that recording was once stopped due to inactivity.
|
|
31271
|
+
// Ensure that recording is resumed.
|
|
31272
|
+
if (!this._stopRecording) {
|
|
31273
|
+
// Create a new session, otherwise when the user action is flushed, it
|
|
31274
|
+
// will get rejected due to an expired session.
|
|
31275
|
+
this.loadSession({ expiry: SESSION_IDLE_DURATION });
|
|
31276
|
+
|
|
31277
|
+
// Note: This will cause a new DOM checkout
|
|
31278
|
+
this.resume();
|
|
31279
|
+
return;
|
|
31280
|
+
}
|
|
31281
|
+
|
|
31282
|
+
// Otherwise... recording was never suspended, continue as normalish
|
|
31283
|
+
this.checkAndHandleExpiredSession();
|
|
31284
|
+
|
|
31285
|
+
this.updateSessionActivity();
|
|
31286
|
+
}
|
|
31287
|
+
|
|
31643
31288
|
/**
|
|
31644
31289
|
* Helper to create (and buffer) a replay breadcrumb from a core SDK breadcrumb
|
|
31645
31290
|
*/
|
|
31646
|
-
|
|
31291
|
+
createCustomBreadcrumb(breadcrumb) {
|
|
31647
31292
|
this.addUpdate(() => {
|
|
31648
|
-
|
|
31293
|
+
addEvent(this, {
|
|
31649
31294
|
type: EventType.Custom,
|
|
31650
31295
|
timestamp: breadcrumb.timestamp || 0,
|
|
31651
31296
|
data: {
|
|
@@ -31660,12 +31305,12 @@ class ReplayContainer {
|
|
|
31660
31305
|
* Observed performance events are added to `this.performanceEvents`. These
|
|
31661
31306
|
* are included in the replay event before it is finished and sent to Sentry.
|
|
31662
31307
|
*/
|
|
31663
|
-
|
|
31308
|
+
addPerformanceEntries() {
|
|
31664
31309
|
// Copy and reset entries before processing
|
|
31665
31310
|
const entries = [...this.performanceEvents];
|
|
31666
31311
|
this.performanceEvents = [];
|
|
31667
31312
|
|
|
31668
|
-
|
|
31313
|
+
createPerformanceSpans(this, createPerformanceEntries(entries));
|
|
31669
31314
|
}
|
|
31670
31315
|
|
|
31671
31316
|
/**
|
|
@@ -31675,7 +31320,7 @@ class ReplayContainer {
|
|
|
31675
31320
|
*
|
|
31676
31321
|
* Returns true if session is not expired, false otherwise.
|
|
31677
31322
|
*/
|
|
31678
|
-
|
|
31323
|
+
checkAndHandleExpiredSession({ expiry = SESSION_IDLE_DURATION } = {}) {
|
|
31679
31324
|
const oldSessionId = _optionalChain([this, 'access', _22 => _22.session, 'optionalAccess', _23 => _23.id]);
|
|
31680
31325
|
|
|
31681
31326
|
// Prevent starting a new session if the last user activity is older than
|
|
@@ -31690,7 +31335,7 @@ class ReplayContainer {
|
|
|
31690
31335
|
|
|
31691
31336
|
// --- There is recent user activity --- //
|
|
31692
31337
|
// This will create a new session if expired, based on expiry length
|
|
31693
|
-
this.
|
|
31338
|
+
this.loadSession({ expiry });
|
|
31694
31339
|
|
|
31695
31340
|
// Session was expired if session ids do not match
|
|
31696
31341
|
const expired = oldSessionId !== _optionalChain([this, 'access', _24 => _24.session, 'optionalAccess', _25 => _25.id]);
|
|
@@ -31700,7 +31345,7 @@ class ReplayContainer {
|
|
|
31700
31345
|
}
|
|
31701
31346
|
|
|
31702
31347
|
// Session is expired, trigger a full snapshot (which will create a new session)
|
|
31703
|
-
this.
|
|
31348
|
+
this.triggerFullSnapshot();
|
|
31704
31349
|
|
|
31705
31350
|
return false;
|
|
31706
31351
|
}
|
|
@@ -31708,7 +31353,7 @@ class ReplayContainer {
|
|
|
31708
31353
|
/**
|
|
31709
31354
|
* Only flush if `this.recordingMode === 'session'`
|
|
31710
31355
|
*/
|
|
31711
|
-
|
|
31356
|
+
conditionalFlush() {
|
|
31712
31357
|
if (this.recordingMode === 'error') {
|
|
31713
31358
|
return;
|
|
31714
31359
|
}
|
|
@@ -31719,7 +31364,7 @@ class ReplayContainer {
|
|
|
31719
31364
|
/**
|
|
31720
31365
|
* Clear _context
|
|
31721
31366
|
*/
|
|
31722
|
-
|
|
31367
|
+
clearContext() {
|
|
31723
31368
|
// XXX: `initialTimestamp` and `initialUrl` do not get cleared
|
|
31724
31369
|
this._context.errorIds.clear();
|
|
31725
31370
|
this._context.traceIds.clear();
|
|
@@ -31730,7 +31375,7 @@ class ReplayContainer {
|
|
|
31730
31375
|
/**
|
|
31731
31376
|
* Return and clear _context
|
|
31732
31377
|
*/
|
|
31733
|
-
|
|
31378
|
+
popEventContext() {
|
|
31734
31379
|
if (this._context.earliestEvent && this._context.earliestEvent < this._context.initialTimestamp) {
|
|
31735
31380
|
this._context.initialTimestamp = this._context.earliestEvent;
|
|
31736
31381
|
}
|
|
@@ -31743,7 +31388,7 @@ class ReplayContainer {
|
|
|
31743
31388
|
urls: this._context.urls,
|
|
31744
31389
|
};
|
|
31745
31390
|
|
|
31746
|
-
this.
|
|
31391
|
+
this.clearContext();
|
|
31747
31392
|
|
|
31748
31393
|
return _context;
|
|
31749
31394
|
}
|
|
@@ -31756,15 +31401,15 @@ class ReplayContainer {
|
|
|
31756
31401
|
*
|
|
31757
31402
|
* Should never be called directly, only by `flush`
|
|
31758
31403
|
*/
|
|
31759
|
-
|
|
31404
|
+
async runFlush() {
|
|
31760
31405
|
if (!this.session) {
|
|
31761
31406
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] No session found to flush.');
|
|
31762
31407
|
return;
|
|
31763
31408
|
}
|
|
31764
31409
|
|
|
31765
|
-
await this.
|
|
31410
|
+
await this.addPerformanceEntries();
|
|
31766
31411
|
|
|
31767
|
-
if (!_optionalChain([this, 'access', _26 => _26.eventBuffer, 'optionalAccess', _27 => _27.
|
|
31412
|
+
if (!_optionalChain([this, 'access', _26 => _26.eventBuffer, 'optionalAccess', _27 => _27.length])) {
|
|
31768
31413
|
return;
|
|
31769
31414
|
}
|
|
31770
31415
|
|
|
@@ -31778,32 +31423,20 @@ class ReplayContainer {
|
|
|
31778
31423
|
// NOTE: Copy values from instance members, as it's possible they could
|
|
31779
31424
|
// change before the flush finishes.
|
|
31780
31425
|
const replayId = this.session.id;
|
|
31781
|
-
const eventContext = this.
|
|
31426
|
+
const eventContext = this.popEventContext();
|
|
31782
31427
|
// Always increment segmentId regardless of outcome of sending replay
|
|
31783
31428
|
const segmentId = this.session.segmentId++;
|
|
31784
31429
|
this._maybeSaveSession();
|
|
31785
31430
|
|
|
31786
|
-
await sendReplay({
|
|
31431
|
+
await this.sendReplay({
|
|
31787
31432
|
replayId,
|
|
31788
|
-
recordingData,
|
|
31433
|
+
events: recordingData,
|
|
31789
31434
|
segmentId,
|
|
31790
31435
|
includeReplayStartTimestamp: segmentId === 0,
|
|
31791
31436
|
eventContext,
|
|
31792
|
-
session: this.session,
|
|
31793
|
-
options: this.getOptions(),
|
|
31794
|
-
timestamp: new Date().getTime(),
|
|
31795
31437
|
});
|
|
31796
31438
|
} catch (err) {
|
|
31797
|
-
this.
|
|
31798
|
-
|
|
31799
|
-
if (err instanceof RateLimitError) {
|
|
31800
|
-
this._handleRateLimit(err.rateLimits);
|
|
31801
|
-
return;
|
|
31802
|
-
}
|
|
31803
|
-
|
|
31804
|
-
// This means we retried 3 times, and all of them failed
|
|
31805
|
-
// In this case, we want to completely stop the replay - otherwise, we may get inconsistent segments
|
|
31806
|
-
this.stop();
|
|
31439
|
+
this.handleException(err);
|
|
31807
31440
|
}
|
|
31808
31441
|
}
|
|
31809
31442
|
|
|
@@ -31811,13 +31444,14 @@ class ReplayContainer {
|
|
|
31811
31444
|
* Flush recording data to Sentry. Creates a lock so that only a single flush
|
|
31812
31445
|
* can be active at a time. Do not call this directly.
|
|
31813
31446
|
*/
|
|
31814
|
-
|
|
31447
|
+
__init19() {this.flush = async () => {
|
|
31815
31448
|
if (!this._isEnabled) {
|
|
31816
|
-
// This
|
|
31449
|
+
// This is just a precaution, there should be no listeners that would
|
|
31450
|
+
// cause a flush.
|
|
31817
31451
|
return;
|
|
31818
31452
|
}
|
|
31819
31453
|
|
|
31820
|
-
if (!this.
|
|
31454
|
+
if (!this.checkAndHandleExpiredSession()) {
|
|
31821
31455
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Attempting to finish replay event after session expired.');
|
|
31822
31456
|
return;
|
|
31823
31457
|
}
|
|
@@ -31830,16 +31464,16 @@ class ReplayContainer {
|
|
|
31830
31464
|
// A flush is about to happen, cancel any queued flushes
|
|
31831
31465
|
_optionalChain([this, 'access', _30 => _30._debouncedFlush, 'optionalAccess', _31 => _31.cancel, 'call', _32 => _32()]);
|
|
31832
31466
|
|
|
31833
|
-
// this._flushLock acts as a lock so that future calls to `
|
|
31467
|
+
// this._flushLock acts as a lock so that future calls to `flush()`
|
|
31834
31468
|
// will be blocked until this promise resolves
|
|
31835
31469
|
if (!this._flushLock) {
|
|
31836
|
-
this._flushLock = this.
|
|
31470
|
+
this._flushLock = this.runFlush();
|
|
31837
31471
|
await this._flushLock;
|
|
31838
31472
|
this._flushLock = null;
|
|
31839
31473
|
return;
|
|
31840
31474
|
}
|
|
31841
31475
|
|
|
31842
|
-
// Wait for previous flush to finish, then call the debounced `
|
|
31476
|
+
// Wait for previous flush to finish, then call the debounced `flush()`.
|
|
31843
31477
|
// It's possible there are other flush requests queued and waiting for it
|
|
31844
31478
|
// to resolve. We want to reduce all outstanding requests (as well as any
|
|
31845
31479
|
// new flush requests that occur within a second of the locked flush
|
|
@@ -31854,59 +31488,205 @@ class ReplayContainer {
|
|
|
31854
31488
|
}
|
|
31855
31489
|
};}
|
|
31856
31490
|
|
|
31857
|
-
/**
|
|
31858
|
-
|
|
31859
|
-
|
|
31860
|
-
|
|
31491
|
+
/**
|
|
31492
|
+
*
|
|
31493
|
+
* Always flush via `_debouncedFlush` so that we do not have flushes triggered
|
|
31494
|
+
* from calling both `flush` and `_debouncedFlush`. Otherwise, there could be
|
|
31495
|
+
* cases of mulitple flushes happening closely together.
|
|
31496
|
+
*/
|
|
31497
|
+
flushImmediate() {
|
|
31498
|
+
this._debouncedFlush();
|
|
31499
|
+
// `.flush` is provided by the debounced function, analogously to lodash.debounce
|
|
31500
|
+
return this._debouncedFlush.flush() ;
|
|
31501
|
+
}
|
|
31502
|
+
|
|
31503
|
+
/**
|
|
31504
|
+
* Send replay attachment using `fetch()`
|
|
31505
|
+
*/
|
|
31506
|
+
async sendReplayRequest({
|
|
31507
|
+
events,
|
|
31508
|
+
replayId,
|
|
31509
|
+
segmentId: segment_id,
|
|
31510
|
+
includeReplayStartTimestamp,
|
|
31511
|
+
eventContext,
|
|
31512
|
+
}) {
|
|
31513
|
+
const payloadWithSequence = createPayload({
|
|
31514
|
+
events,
|
|
31515
|
+
headers: {
|
|
31516
|
+
segment_id,
|
|
31517
|
+
},
|
|
31518
|
+
});
|
|
31519
|
+
|
|
31520
|
+
const { urls, errorIds, traceIds, initialTimestamp } = eventContext;
|
|
31521
|
+
|
|
31522
|
+
const currentTimestamp = new Date().getTime();
|
|
31523
|
+
|
|
31524
|
+
const hub = getCurrentHub();
|
|
31525
|
+
const client = hub.getClient();
|
|
31526
|
+
const scope = hub.getScope();
|
|
31527
|
+
const transport = client && client.getTransport();
|
|
31528
|
+
const dsn = _optionalChain([client, 'optionalAccess', _33 => _33.getDsn, 'call', _34 => _34()]);
|
|
31529
|
+
|
|
31530
|
+
if (!client || !scope || !transport || !dsn) {
|
|
31531
|
+
return;
|
|
31861
31532
|
}
|
|
31533
|
+
|
|
31534
|
+
const baseEvent = {
|
|
31535
|
+
// @ts-ignore private api
|
|
31536
|
+
type: REPLAY_EVENT_NAME,
|
|
31537
|
+
...(includeReplayStartTimestamp ? { replay_start_timestamp: initialTimestamp / 1000 } : {}),
|
|
31538
|
+
timestamp: currentTimestamp / 1000,
|
|
31539
|
+
error_ids: errorIds,
|
|
31540
|
+
trace_ids: traceIds,
|
|
31541
|
+
urls,
|
|
31542
|
+
replay_id: replayId,
|
|
31543
|
+
segment_id,
|
|
31544
|
+
};
|
|
31545
|
+
|
|
31546
|
+
const replayEvent = await getReplayEvent({ scope, client, replayId, event: baseEvent });
|
|
31547
|
+
|
|
31548
|
+
if (!replayEvent) {
|
|
31549
|
+
// Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions
|
|
31550
|
+
client.recordDroppedEvent('event_processor', 'replay_event', baseEvent);
|
|
31551
|
+
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('An event processor returned `null`, will not send event.');
|
|
31552
|
+
return;
|
|
31553
|
+
}
|
|
31554
|
+
|
|
31555
|
+
replayEvent.tags = {
|
|
31556
|
+
...replayEvent.tags,
|
|
31557
|
+
sessionSampleRate: this._options.sessionSampleRate,
|
|
31558
|
+
errorSampleRate: this._options.errorSampleRate,
|
|
31559
|
+
replayType: _optionalChain([this, 'access', _35 => _35.session, 'optionalAccess', _36 => _36.sampled]),
|
|
31560
|
+
};
|
|
31561
|
+
|
|
31562
|
+
/*
|
|
31563
|
+
For reference, the fully built event looks something like this:
|
|
31564
|
+
{
|
|
31565
|
+
"type": "replay_event",
|
|
31566
|
+
"timestamp": 1670837008.634,
|
|
31567
|
+
"error_ids": [
|
|
31568
|
+
"errorId"
|
|
31569
|
+
],
|
|
31570
|
+
"trace_ids": [
|
|
31571
|
+
"traceId"
|
|
31572
|
+
],
|
|
31573
|
+
"urls": [
|
|
31574
|
+
"https://example.com"
|
|
31575
|
+
],
|
|
31576
|
+
"replay_id": "eventId",
|
|
31577
|
+
"segment_id": 3,
|
|
31578
|
+
"platform": "javascript",
|
|
31579
|
+
"event_id": "eventId",
|
|
31580
|
+
"environment": "production",
|
|
31581
|
+
"sdk": {
|
|
31582
|
+
"integrations": [
|
|
31583
|
+
"BrowserTracing",
|
|
31584
|
+
"Replay"
|
|
31585
|
+
],
|
|
31586
|
+
"name": "sentry.javascript.browser",
|
|
31587
|
+
"version": "7.25.0"
|
|
31588
|
+
},
|
|
31589
|
+
"sdkProcessingMetadata": {},
|
|
31590
|
+
"tags": {
|
|
31591
|
+
"sessionSampleRate": 1,
|
|
31592
|
+
"errorSampleRate": 0,
|
|
31593
|
+
"replayType": "error"
|
|
31594
|
+
}
|
|
31595
|
+
}
|
|
31596
|
+
*/
|
|
31597
|
+
|
|
31598
|
+
const envelope = createReplayEnvelope(replayEvent, payloadWithSequence, dsn, client.getOptions().tunnel);
|
|
31599
|
+
|
|
31600
|
+
try {
|
|
31601
|
+
return await transport.send(envelope);
|
|
31602
|
+
} catch (e) {
|
|
31603
|
+
throw new Error(UNABLE_TO_SEND_REPLAY);
|
|
31604
|
+
}
|
|
31605
|
+
}
|
|
31606
|
+
|
|
31607
|
+
resetRetries() {
|
|
31608
|
+
this._retryCount = 0;
|
|
31609
|
+
this._retryInterval = BASE_RETRY_INTERVAL;
|
|
31862
31610
|
}
|
|
31863
31611
|
|
|
31864
31612
|
/**
|
|
31865
|
-
*
|
|
31613
|
+
* Finalize and send the current replay event to Sentry
|
|
31866
31614
|
*/
|
|
31867
|
-
|
|
31868
|
-
|
|
31869
|
-
|
|
31870
|
-
|
|
31615
|
+
async sendReplay({
|
|
31616
|
+
replayId,
|
|
31617
|
+
events,
|
|
31618
|
+
segmentId,
|
|
31619
|
+
includeReplayStartTimestamp,
|
|
31620
|
+
eventContext,
|
|
31621
|
+
}) {
|
|
31622
|
+
// short circuit if there's no events to upload (this shouldn't happen as runFlush makes this check)
|
|
31623
|
+
if (!events.length) {
|
|
31871
31624
|
return;
|
|
31872
31625
|
}
|
|
31873
31626
|
|
|
31874
|
-
|
|
31875
|
-
|
|
31627
|
+
try {
|
|
31628
|
+
await this.sendReplayRequest({
|
|
31629
|
+
events,
|
|
31630
|
+
replayId,
|
|
31631
|
+
segmentId,
|
|
31632
|
+
includeReplayStartTimestamp,
|
|
31633
|
+
eventContext,
|
|
31634
|
+
});
|
|
31635
|
+
this.resetRetries();
|
|
31636
|
+
return true;
|
|
31637
|
+
} catch (err) {
|
|
31638
|
+
// Capture error for every failed replay
|
|
31639
|
+
setContext('Replays', {
|
|
31640
|
+
_retryCount: this._retryCount,
|
|
31641
|
+
});
|
|
31642
|
+
this.handleException(err);
|
|
31643
|
+
|
|
31644
|
+
// If an error happened here, it's likely that uploading the attachment
|
|
31645
|
+
// failed, we'll can retry with the same events payload
|
|
31646
|
+
if (this._retryCount >= MAX_RETRY_COUNT) {
|
|
31647
|
+
throw new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);
|
|
31648
|
+
}
|
|
31876
31649
|
|
|
31877
|
-
|
|
31878
|
-
|
|
31879
|
-
this.
|
|
31880
|
-
|
|
31650
|
+
this._retryCount = this._retryCount + 1;
|
|
31651
|
+
// will retry in intervals of 5, 10, 30
|
|
31652
|
+
this._retryInterval = this._retryCount * this._retryInterval;
|
|
31653
|
+
|
|
31654
|
+
return await new Promise((resolve, reject) => {
|
|
31655
|
+
setTimeout(async () => {
|
|
31656
|
+
try {
|
|
31657
|
+
await this.sendReplay({
|
|
31658
|
+
replayId,
|
|
31659
|
+
events,
|
|
31660
|
+
segmentId,
|
|
31661
|
+
includeReplayStartTimestamp,
|
|
31662
|
+
eventContext,
|
|
31663
|
+
});
|
|
31664
|
+
resolve(true);
|
|
31665
|
+
} catch (err) {
|
|
31666
|
+
reject(err);
|
|
31667
|
+
}
|
|
31668
|
+
}, this._retryInterval);
|
|
31669
|
+
});
|
|
31670
|
+
}
|
|
31671
|
+
}
|
|
31881
31672
|
|
|
31882
|
-
|
|
31883
|
-
|
|
31884
|
-
|
|
31885
|
-
|
|
31673
|
+
/** Save the session, if it is sticky */
|
|
31674
|
+
_maybeSaveSession() {
|
|
31675
|
+
if (this.session && this._options.stickySession) {
|
|
31676
|
+
saveSession(this.session);
|
|
31886
31677
|
}
|
|
31887
31678
|
}
|
|
31888
31679
|
}
|
|
31889
31680
|
|
|
31890
|
-
/**
|
|
31891
|
-
* Returns true if we are in the browser.
|
|
31892
|
-
*/
|
|
31893
31681
|
function isBrowser() {
|
|
31894
31682
|
// eslint-disable-next-line no-restricted-globals
|
|
31895
|
-
return typeof window !== 'undefined' &&
|
|
31896
|
-
}
|
|
31897
|
-
|
|
31898
|
-
// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them
|
|
31899
|
-
function isElectronNodeRenderer() {
|
|
31900
|
-
return typeof process !== 'undefined' && (process ).type === 'renderer';
|
|
31683
|
+
return typeof window !== 'undefined' && !isNodeEnv();
|
|
31901
31684
|
}
|
|
31902
31685
|
|
|
31903
31686
|
const MEDIA_SELECTORS = 'img,image,svg,path,rect,area,video,object,picture,embed,map,audio';
|
|
31904
31687
|
|
|
31905
31688
|
let _initialized = false;
|
|
31906
31689
|
|
|
31907
|
-
/**
|
|
31908
|
-
* The main replay integration class, to be passed to `init({ integrations: [] })`.
|
|
31909
|
-
*/
|
|
31910
31690
|
class Replay {
|
|
31911
31691
|
/**
|
|
31912
31692
|
* @inheritDoc
|
|
@@ -31922,7 +31702,15 @@ class Replay {
|
|
|
31922
31702
|
* Options to pass to `rrweb.record()`
|
|
31923
31703
|
*/
|
|
31924
31704
|
|
|
31925
|
-
|
|
31705
|
+
get _isInitialized() {
|
|
31706
|
+
return _initialized;
|
|
31707
|
+
}
|
|
31708
|
+
|
|
31709
|
+
set _isInitialized(value) {
|
|
31710
|
+
_initialized = value;
|
|
31711
|
+
}
|
|
31712
|
+
|
|
31713
|
+
constructor({
|
|
31926
31714
|
flushMinDelay = DEFAULT_FLUSH_MIN_DELAY,
|
|
31927
31715
|
flushMaxDelay = DEFAULT_FLUSH_MAX_DELAY,
|
|
31928
31716
|
initialFlushDelay = INITIAL_FLUSH_DELAY,
|
|
@@ -31939,19 +31727,19 @@ class Replay {
|
|
|
31939
31727
|
ignoreClass = 'sentry-ignore',
|
|
31940
31728
|
maskTextClass = 'sentry-mask',
|
|
31941
31729
|
blockSelector = '[data-sentry-block]',
|
|
31942
|
-
...
|
|
31730
|
+
...recordingOptions
|
|
31943
31731
|
} = {}) {Replay.prototype.__init.call(this);
|
|
31944
|
-
this.
|
|
31732
|
+
this.recordingOptions = {
|
|
31945
31733
|
maskAllInputs,
|
|
31946
31734
|
blockClass,
|
|
31947
31735
|
ignoreClass,
|
|
31948
31736
|
maskTextClass,
|
|
31949
31737
|
maskTextSelector,
|
|
31950
31738
|
blockSelector,
|
|
31951
|
-
...
|
|
31739
|
+
...recordingOptions,
|
|
31952
31740
|
};
|
|
31953
31741
|
|
|
31954
|
-
this.
|
|
31742
|
+
this.options = {
|
|
31955
31743
|
flushMinDelay,
|
|
31956
31744
|
flushMaxDelay,
|
|
31957
31745
|
stickySession,
|
|
@@ -31973,7 +31761,7 @@ Instead, configure \`replaysSessionSampleRate\` directly in the SDK init options
|
|
|
31973
31761
|
Sentry.init({ replaysSessionSampleRate: ${sessionSampleRate} })`,
|
|
31974
31762
|
);
|
|
31975
31763
|
|
|
31976
|
-
this.
|
|
31764
|
+
this.options.sessionSampleRate = sessionSampleRate;
|
|
31977
31765
|
}
|
|
31978
31766
|
|
|
31979
31767
|
if (typeof errorSampleRate === 'number') {
|
|
@@ -31985,41 +31773,31 @@ Instead, configure \`replaysOnErrorSampleRate\` directly in the SDK init options
|
|
|
31985
31773
|
Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
31986
31774
|
);
|
|
31987
31775
|
|
|
31988
|
-
this.
|
|
31776
|
+
this.options.errorSampleRate = errorSampleRate;
|
|
31989
31777
|
}
|
|
31990
31778
|
|
|
31991
|
-
if (this.
|
|
31779
|
+
if (this.options.maskAllText) {
|
|
31992
31780
|
// `maskAllText` is a more user friendly option to configure
|
|
31993
31781
|
// `maskTextSelector`. This means that all nodes will have their text
|
|
31994
31782
|
// content masked.
|
|
31995
|
-
this.
|
|
31783
|
+
this.recordingOptions.maskTextSelector = MASK_ALL_TEXT_SELECTOR;
|
|
31996
31784
|
}
|
|
31997
31785
|
|
|
31998
|
-
if (this.
|
|
31786
|
+
if (this.options.blockAllMedia) {
|
|
31999
31787
|
// `blockAllMedia` is a more user friendly option to configure blocking
|
|
32000
31788
|
// embedded media elements
|
|
32001
|
-
this.
|
|
31789
|
+
this.recordingOptions.blockSelector = !this.recordingOptions.blockSelector
|
|
32002
31790
|
? MEDIA_SELECTORS
|
|
32003
|
-
: `${this.
|
|
31791
|
+
: `${this.recordingOptions.blockSelector},${MEDIA_SELECTORS}`;
|
|
32004
31792
|
}
|
|
32005
31793
|
|
|
32006
|
-
if (this._isInitialized
|
|
31794
|
+
if (isBrowser() && this._isInitialized) {
|
|
32007
31795
|
throw new Error('Multiple Sentry Session Replay instances are not supported');
|
|
32008
31796
|
}
|
|
32009
31797
|
|
|
32010
31798
|
this._isInitialized = true;
|
|
32011
31799
|
}
|
|
32012
31800
|
|
|
32013
|
-
/** If replay has already been initialized */
|
|
32014
|
-
get _isInitialized() {
|
|
32015
|
-
return _initialized;
|
|
32016
|
-
}
|
|
32017
|
-
|
|
32018
|
-
/** Update _isInitialized */
|
|
32019
|
-
set _isInitialized(value) {
|
|
32020
|
-
_initialized = value;
|
|
32021
|
-
}
|
|
32022
|
-
|
|
32023
31801
|
/**
|
|
32024
31802
|
* We previously used to create a transaction in `setupOnce` and it would
|
|
32025
31803
|
* potentially create a transaction before some native SDK integrations have run
|
|
@@ -32030,7 +31808,7 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
32030
31808
|
* global event processors to finish. This is no longer needed, but keeping it
|
|
32031
31809
|
* here to avoid any future issues.
|
|
32032
31810
|
*/
|
|
32033
|
-
|
|
31811
|
+
setupOnce() {
|
|
32034
31812
|
if (!isBrowser()) {
|
|
32035
31813
|
return;
|
|
32036
31814
|
}
|
|
@@ -32047,7 +31825,7 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
32047
31825
|
* Creates or loads a session, attaches listeners to varying events (DOM,
|
|
32048
31826
|
* PerformanceObserver, Recording, Sentry SDK, etc)
|
|
32049
31827
|
*/
|
|
32050
|
-
|
|
31828
|
+
start() {
|
|
32051
31829
|
if (!this._replay) {
|
|
32052
31830
|
return;
|
|
32053
31831
|
}
|
|
@@ -32059,7 +31837,7 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
32059
31837
|
* Currently, this needs to be manually called (e.g. for tests). Sentry SDK
|
|
32060
31838
|
* does not support a teardown
|
|
32061
31839
|
*/
|
|
32062
|
-
|
|
31840
|
+
stop() {
|
|
32063
31841
|
if (!this._replay) {
|
|
32064
31842
|
return;
|
|
32065
31843
|
}
|
|
@@ -32067,14 +31845,13 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
32067
31845
|
this._replay.stop();
|
|
32068
31846
|
}
|
|
32069
31847
|
|
|
32070
|
-
/** Setup the integration. */
|
|
32071
31848
|
_setup() {
|
|
32072
31849
|
// Client is not available in constructor, so we need to wait until setupOnce
|
|
32073
31850
|
this._loadReplayOptionsFromClient();
|
|
32074
31851
|
|
|
32075
31852
|
this._replay = new ReplayContainer({
|
|
32076
|
-
options: this.
|
|
32077
|
-
recordingOptions: this.
|
|
31853
|
+
options: this.options,
|
|
31854
|
+
recordingOptions: this.recordingOptions,
|
|
32078
31855
|
});
|
|
32079
31856
|
}
|
|
32080
31857
|
|
|
@@ -32084,11 +31861,11 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
32084
31861
|
const opt = client && (client.getOptions() );
|
|
32085
31862
|
|
|
32086
31863
|
if (opt && typeof opt.replaysSessionSampleRate === 'number') {
|
|
32087
|
-
this.
|
|
31864
|
+
this.options.sessionSampleRate = opt.replaysSessionSampleRate;
|
|
32088
31865
|
}
|
|
32089
31866
|
|
|
32090
31867
|
if (opt && typeof opt.replaysOnErrorSampleRate === 'number') {
|
|
32091
|
-
this.
|
|
31868
|
+
this.options.errorSampleRate = opt.replaysOnErrorSampleRate;
|
|
32092
31869
|
}
|
|
32093
31870
|
}
|
|
32094
31871
|
} Replay.__initStatic();
|
|
@@ -45632,7 +45409,7 @@ const accWidgetMachine = createMachine({
|
|
|
45632
45409
|
[GUARDS$2.IS_DISCONNECTED]: ({ isConnected }) => !isConnected,
|
|
45633
45410
|
[GUARDS$2.CAN_START_INTERVIEW]: ({ checksState }) => checksState.camera === CAMERA_STATES.READY && checksState.microphone === MICROPHONE_STATES.READY && [INTERNET_STATES.CONNECTED, INTERNET_STATES.SLOW_CONNECTION].includes(checksState.internet),
|
|
45634
45411
|
[GUARDS$2.ARE_ALL_QUESTIONS_UPLOADED]: ({ widgetConfig }) => { var _a, _b; return !!((_b = (_a = widgetConfig.video) === null || _a === void 0 ? void 0 : _a.videos) === null || _b === void 0 ? void 0 : _b.every((video) => video.uploaded)); },
|
|
45635
|
-
[GUARDS$2.SHOULD_SHOW_WELCOME]: ({ widgetConfig }) => !!widgetConfig.config.introVideo,
|
|
45412
|
+
[GUARDS$2.SHOULD_SHOW_WELCOME]: ({ widgetConfig }) => !!widgetConfig.config.introVideo || !!widgetConfig.config.welcomeTitle || !!widgetConfig.config.welcomeText,
|
|
45636
45413
|
[GUARDS$2.IS_NO_SOUND_ERROR]: (_, { data }) => data.code === MICROPHONE_NO_SOUND_ERROR_CODE,
|
|
45637
45414
|
[GUARDS$2.IS_VIDEO_CORRUPTED]: (_, { data }) => !data.size,
|
|
45638
45415
|
[GUARDS$2.IS_AUDIO_ERROR]: (_, { data }) => data.type === TYPES_EXPLANATION.AUDIO || data.type === TYPES_EXPLANATION.VIDEO_AUDIO,
|
|
@@ -45701,14 +45478,19 @@ const WelcomePage = ({ introVideo, welcomeTitle = t$1('welcome.title'), welcomeT
|
|
|
45701
45478
|
const textRefCb = React.useCallback((node) => {
|
|
45702
45479
|
setShouldShowToggle((node === null || node === void 0 ? void 0 : node.scrollHeight) > (node === null || node === void 0 ? void 0 : node.offsetHeight));
|
|
45703
45480
|
}, []);
|
|
45481
|
+
const innerClassNames = classNames({
|
|
45482
|
+
'myinterview-widget-inner': true,
|
|
45483
|
+
'myinterview-widget-inner--welcome-page-state': true,
|
|
45484
|
+
'myinterview-widget-inner--no-snap': true,
|
|
45485
|
+
'myinterview-widget-inner--welcome-hidden': !introVideo,
|
|
45486
|
+
});
|
|
45704
45487
|
const welcomeTextClassNames = classNames({
|
|
45705
45488
|
'myinterview-widget-welcome-page__text': true,
|
|
45706
45489
|
'myinterview-widget--rtl-support': true,
|
|
45707
45490
|
'myinterview-widget-welcome-page__text--closed': !isTextOpened,
|
|
45708
45491
|
});
|
|
45709
45492
|
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
45710
|
-
React__default["default"].createElement("div", { className:
|
|
45711
|
-
React__default["default"].createElement(VideoQuestion, { src: introVideo, isThinkingTime: false, onVideoEnds: () => { }, isWidgetMinimized: isWidgetMinimized })),
|
|
45493
|
+
React__default["default"].createElement("div", { className: innerClassNames }, introVideo && React__default["default"].createElement(VideoQuestion, { src: introVideo, isThinkingTime: false, onVideoEnds: () => { }, isWidgetMinimized: isWidgetMinimized })),
|
|
45712
45494
|
React__default["default"].createElement("div", { className: "myinterview-widget-outer background-color--white myinterview-widget-outer--no-snap" },
|
|
45713
45495
|
React__default["default"].createElement(Header, { logo: logo || '', companyName: company || '', jobTitle: title || '', forDesktopLayout: true }),
|
|
45714
45496
|
React__default["default"].createElement("div", { className: "myinterview-widget-welcome-page myinterview-widget-scroll-indicator" },
|
|
@@ -45844,7 +45626,7 @@ const Main = ({ widgetConfig, setShouldShowWaterMark, myinterviewRef, isWidgetMi
|
|
|
45844
45626
|
isMobile && (React__default["default"].createElement(SliderModal, { isOpen: isSliderModalOpen, onClose: () => setIsSliderModalOpen(false), onRetry: isSetupState ? onRecorderRetry : onReInitRecorder }))));
|
|
45845
45627
|
};
|
|
45846
45628
|
|
|
45847
|
-
var css_248z = "@import url(\"https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600;700&display=swap\");:host,:root,html[data-theme=light]{--color-primary:#5aa4f5;--color-secondary:#5ed0bc;--color-premium:#fac918;--color-special:#6690ff;--color-neutral-10:#f2f2f2;--color-neutral-20:#e6e6e6;--color-neutral-30:#ccc;--color-neutral-40:#aaa;--color-neutral-50:#8d8d8d;--color-neutral-60:#777;--color-neutral-70:#444;--color-neutral-90:#404852;--color-white:#fff;--color-black:#000;--color-success:#5ed0bc;--color-warning:#fac918;--color-error:#f25f5b;--color-info:#404852;--color-malibu:linear-gradient(50.24deg,#135 -146.43%,#557ede -0.68%,#6690ff 75.97%)}html[data-theme=dark]{--color-primary:#5aa4f5;--color-secondary:#5ed0bc;--color-premium:#fac918;--color-special:#6690ff;--color-neutral-10:#f2f2f2;--color-neutral-20:#e6e6e6;--color-neutral-30:#ccc;--color-neutral-40:#aaa;--color-neutral-50:#8d8d8d;--color-neutral-60:#777;--color-neutral-70:#444;--color-neutral-90:#404852;--color-white:#222;--color-black:#ddd;--color-success:#5ed0bc;--color-warning:#fac918;--color-error:#f25f5b;--color-info:#404852;--color-malibu:linear-gradient(135deg,#51beff,#6690ff)}.color--primary{color:var(--color-primary)}.background-color--primary{background-color:var(--color-primary)}.border-color--primary{border-color:var(--color-primary)}.color--secondary{color:var(--color-secondary)}.background-color--secondary{background-color:var(--color-secondary)}.border-color--secondary{border-color:var(--color-secondary)}.color--premium{color:var(--color-premium)}.background-color--premium{background-color:var(--color-premium)}.border-color--premium{border-color:var(--color-premium)}.color--special{color:var(--color-special)}.background-color--special{background-color:var(--color-special)}.border-color--special{border-color:var(--color-special)}.color--neutral-10{color:var(--color-neutral-10)}.background-color--neutral-10{background-color:var(--color-neutral-10)}.border-color--neutral-10{border-color:var(--color-neutral-10)}.color--neutral-20{color:var(--color-neutral-20)}.background-color--neutral-20{background-color:var(--color-neutral-20)}.border-color--neutral-20{border-color:var(--color-neutral-20)}.color--neutral-30{color:var(--color-neutral-30)}.background-color--neutral-30{background-color:var(--color-neutral-30)}.border-color--neutral-30{border-color:var(--color-neutral-30)}.color--neutral-40{color:var(--color-neutral-40)}.background-color--neutral-40{background-color:var(--color-neutral-40)}.border-color--neutral-40{border-color:var(--color-neutral-40)}.color--neutral-50{color:var(--color-neutral-50)}.background-color--neutral-50{background-color:var(--color-neutral-50)}.border-color--neutral-50{border-color:var(--color-neutral-50)}.color--neutral-60{color:var(--color-neutral-60)}.background-color--neutral-60{background-color:var(--color-neutral-60)}.border-color--neutral-60{border-color:var(--color-neutral-60)}.color--neutral-70{color:var(--color-neutral-70)}.background-color--neutral-70{background-color:var(--color-neutral-70)}.border-color--neutral-70{border-color:var(--color-neutral-70)}.color--neutral-90{color:var(--color-neutral-90)}.background-color--neutral-90{background-color:var(--color-neutral-90)}.border-color--neutral-90{border-color:var(--color-neutral-90)}.color--white{color:var(--color-white)}.background-color--white{background-color:var(--color-white)}.border-color--white{border-color:var(--color-white)}.color--black{color:var(--color-black)}.background-color--black{background-color:var(--color-black)}.border-color--black{border-color:var(--color-black)}.color--success{color:var(--color-success)}.background-color--success{background-color:var(--color-success)}.border-color--success{border-color:var(--color-success)}.color--warning{color:var(--color-warning)}.background-color--warning{background-color:var(--color-warning)}.border-color--warning{border-color:var(--color-warning)}.color--error{color:var(--color-error)}.background-color--error{background-color:var(--color-error)}.border-color--error{border-color:var(--color-error)}.color--info{color:var(--color-info)}.background-color--info{background-color:var(--color-info)}.border-color--info{border-color:var(--color-info)}.background-color--malibu{background:var(--color-malibu)}*{box-sizing:border-box;font-family:Nunito Sans,sans-serif;margin:0;outline:none;padding:0}body{background-color:var(--color-white)}@keyframes react-loading-skeleton{to{transform:translateX(100%)}}.react-loading-skeleton{--base-color:#ebebeb;--highlight-color:#f5f5f5;--animation-duration:1.5s;--animation-direction:normal;--pseudo-element-display:block;background-color:var(--base-color);border-radius:.25rem;display:inline-flex;line-height:1;overflow:hidden;position:relative;width:100%;z-index:1}.react-loading-skeleton:after{animation-direction:var(--animation-direction);animation-duration:var(--animation-duration);animation-iteration-count:infinite;animation-name:react-loading-skeleton;animation-timing-function:ease-in-out;background-image:linear-gradient(90deg,var(--base-color),var(--highlight-color),var(--base-color));background-repeat:no-repeat;content:\" \";display:var(--pseudo-element-display);height:100%;left:0;position:absolute;right:0;top:0;transform:translateX(-100%)}.myinterview-button{border:none;border-radius:10px;cursor:pointer;font-weight:700;height:45px;letter-spacing:1px}.myinterview-button:disabled{cursor:unset;opacity:.6;pointer-events:none}.myinterview-button--small{font-size:10px;height:35px;min-width:100px;padding:0 20px}.myinterview-button--medium{font-size:12px;height:45px;min-width:150px;padding:0 30px}.myinterview-button--large{font-size:16px;height:65px;min-width:180px;padding:0 45px}.dropdown{align-items:center;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;padding:15px;white-space:nowrap}.dropdown--standalone{border:.5px solid var(--color-neutral-30);border-radius:10px;border-width:.5px!important;height:50px;position:relative}.dropdown--with-icon{padding-left:10px}.dropdown--with-icon svg{height:22px}.dropdown--with-icon .dropdown__selected-item,.dropdown--with-icon .dropdown__selected-item--placeholder{padding-left:8px}.dropdown--opened{border-radius:10px 10px 0 0;box-shadow:0 0 10px -2px #0000001a}.dropdown--opened .dropdown__options{box-shadow:0 0 10px -2px #0000001a;visibility:visible}.dropdown--opened .dropdown__arrow-wrapper{transform:rotate(-180deg)}.dropdown--upside.dropdown--opened{border-radius:0 0 4px 4px;border-top:0}.dropdown--upside .dropdown__options{border-bottom:0;border-radius:10px 10px 0 0;border-top:.5px solid var(--color-neutral-30);bottom:auto;top:0;transform:translateY(-100%)}.dropdown__selected-item{flex:1;overflow:hidden;text-overflow:ellipsis}.dropdown__selected-item::selection{background-color:initial}.dropdown__selected-item--placeholder{opacity:.5}.dropdown__input{border:0;border-radius:10px;height:100%;left:0;opacity:0;padding:15px 30px 15px 15px;pointer-events:none;position:absolute;top:0;width:100%;z-index:0}.dropdown__input--searchable:focus{opacity:1}.dropdown__input--searchable:focus+.dropdown__selected-item{opacity:0!important}.dropdown__arrow-wrapper,.dropdown__clear-wrapper{align-items:center;display:flex;flex-shrink:0;justify-content:center;margin-left:5px;transition:.2s;width:1em}.dropdown__options{background-color:var(--color-white);border:.5px solid var(--color-neutral-30);border-radius:0 0 4px 4px;border-top:0;bottom:0;left:-.75px;list-style:none;margin:0;max-height:0;overflow:auto;padding:0;position:absolute;transform:translateY(100%);visibility:hidden;width:calc(100% + 1.25px)}.dropdown__item{cursor:pointer;max-width:100%;overflow:hidden;padding:15px;text-overflow:ellipsis}.dropdown__item:not(:last-child){border-bottom:.5px solid var(--color-neutral-30)}.dropdown__item--highlighted,.dropdown__item:hover{background-color:var(--color-primary);color:var(--color-white)}.dropdown__item span{margin-right:5px}.tag{background-color:#dde8f6;border-radius:3px;color:#4a90e2;display:inline-block;font-size:13px;font-weight:500;letter-spacing:.5px;margin:5px 8px 5px 0;padding:4px 11px;text-transform:capitalize}.myinterview-text--XS{font-size:12px;line-height:20px}.myinterview-text--S{font-size:14px;line-height:22px}.myinterview-text--M{font-size:16px;line-height:24px}.myinterview-text--L{font-size:18px;line-height:26px}.myinterview-text--H3{font-size:20px;line-height:28px}.myinterview-text--H2{font-size:24px;line-height:32px}.myinterview-text--H1{font-size:30px;line-height:38px}.myinterview-text--D3{font-size:38px;line-height:46px}.myinterview-text--D2{font-size:48px;line-height:54px}.myinterview-text--D1{font-size:56px;line-height:64px}.myinterview-text--regular{font-weight:400}.myinterview-text--semibold{font-weight:600}.myinterview-text--bold{font-weight:700}.myinterview-text--italic{font-style:italic}.myinterview-text--truncated{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toggle-switch{align-items:center;border-radius:99999px;cursor:pointer;display:flex;position:relative;transition:.2s}.toggle-switch__indicator{border-radius:50%;height:.65em;left:10%;position:absolute;transition:.2s;width:.65em}.toggle-switch__indicator--active{left:90%;transform:translateX(-100%)}.toggle-switch:active .toggle-switch__indicator{height:.5em;width:.5em}.toggle-text{align-items:center;cursor:pointer;display:flex;justify-content:center;width:fit-content}.toggle-text__arrow-wrapepr{align-items:center;display:flex;margin-left:5px;transition:.25s ease-in-out;width:1em}.toggle-text__arrow-wrapepr--opened{transform:rotate(-180deg)}.progress{align-items:center;border-radius:50%;display:flex;height:1em;justify-content:center;width:1em}.progress__fill{border-radius:50%;height:.7em;width:.7em}.input-text{display:flex;flex-direction:column;flex-grow:1}.input-text__field{border:.5px solid var(--color-neutral-30);border-radius:10px;font-size:14px;padding:14px 16px;width:100%}.input-text__field--with-icon{padding:14px 43px!important}.input-text__icon-container{margin:10px 12px;position:absolute}.input-text__icon-container i{vertical-align:-webkit-baseline-middle}.input-text__icon-container i svg{height:22px;width:22px}.input-text--error{border:1px solid var(--color-error)}.input-text__error-msg{color:var(--color-error);margin-top:3px}.dnd-wrapper{border:1px solid var(--color-neutral-30);border-radius:10px;height:50px;max-width:500px;padding:7px 10px;position:relative;transition:.3s ease-in-out;width:100%}.dnd-wrapper__placeholder{color:var(--color-neutral-50);font-size:14px;margin-left:5px}.dnd-wrapper__left-hand{align-items:flex-end;display:flex}.dnd-wrapper--scale{transform:scale(1.1)}.dnd-wrapper--border-solid{border:.5px solid var(--color-neutral-30)}.dnd-wrapper__label{align-items:center;display:flex;font-size:14px;height:100%;justify-content:center}.dnd-wrapper__label svg{height:16px;vertical-align:middle;width:16px}.dnd-wrapper__label--with-icon{justify-content:space-between}.dnd-wrapper__label--with-icon i{color:var(--color-neutral-60)}.dnd-wrapper__label--uploaded,.dnd-wrapper__label--uploading{justify-content:flex-start}.dnd-wrapper__label .progress{height:18px;margin-right:5px;width:18px}.dnd-wrapper__icon{align-items:center;display:flex}.dnd-wrapper__icon--clip{font-size:18px;transform:rotate(10deg) rotateX(180deg)}.dnd-wrapper__icon--close{cursor:pointer;margin-left:auto;z-index:10}.dnd-wrapper__text{margin-left:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dnd-wrapper__input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.dnd-wrapper__input:disabled{cursor:auto}.myinterview-modal-wrapper{border-radius:4px;box-shadow:0 4px 6px -1px #00000014,0 2px 4px -1px #0000000f;left:50%;max-height:90vh;max-width:90vw;overflow:auto;position:fixed;top:50%;transform:translate(-50%,-50%);z-index:30}.myinterview-modal-wrapper--fullscreen{border-radius:0;box-shadow:none;height:100vh;left:0;max-height:100vh;max-width:100vw;padding:0;top:0;transform:none;width:100vw}.myinterview-modal-wrapper__box{height:100%;max-height:100%;max-width:100%;overflow:auto;width:100%}.myinterview-modal-wrapper__close-btn{cursor:pointer;height:16px;position:absolute;right:20px;top:20px;width:16px}.myinterview-modal-wrapper-background{background-color:#0000001a;height:100vh;left:0;position:fixed;top:0;width:100vw}.phone-number{border:.5px solid var(--color-neutral-30);border-radius:10px;display:flex;position:relative}.phone-number--opened{border-radius:10px 10px 0 0!important}.phone-number--opened--up{border-radius:0 0 10px 10px!important}.phone-number .dropdown{border-right:.5px solid var(--color-neutral-20);padding:0 15px;width:75px}.phone-number .dropdown__selected-item{font-size:16px}.phone-number .input-text{border:0;flex:1}.myinterview-logo-wrapper{max-height:400px}.myinterview-checkbox{align-items:center;border-radius:4px;border-style:solid;border-width:1px;display:flex;flex-shrink:0;justify-content:center;position:relative;transition:all .15s ease-out}.myinterview-checkbox__input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.myinterview-checkbox__checkmark{border-radius:50%;display:flex;height:100%;padding:2px;transform:scale(0);transition:.15s ease-out;width:100%}.myinterview-checkbox__checkmark--checked{border-radius:0;transform:scale(1)}.myinterview-checkbox__checkmark svg{height:100%;width:100%}.myinterview-widget-no-select{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.myinterview-widget-scroll-indicator::-webkit-scrollbar{display:initial!important;width:5px}.myinterview-widget-scroll-indicator::-webkit-scrollbar-thumb{background:var(--color-neutral-40)}@keyframes fade-in{0%{opacity:0}}:host{--myinterview-widget-dynamic-overflow:auto;--myitnerview-widget-background-height:calc(40vh - 100px);--myinterview-widget-background-preview-display:none;--myinterview-widget-video-aspect-ratio:0.75;--myinterview-widget-camera-transform:translateZ(0) rotateY(180deg);--myinterview-widget-outer-width:530px;--myinterview-widget-recorder-border-radius:10px;--myinterview-widget-preview-video-border-radius:20px;--myinterview-background-opacity:0}@media (min-width:1200px){:host{--myinterview-widget-recorder-border-radius:20px;--myinterview-widget-preview-video-border-radius:10px}}.myinterview-widget{word-wrap:normal;--myinterview-widget-layout-top:0;--myinterview-widget-layout-right:0;--myinterview-widget-layout-bottom:0;--myinterview-widget-layout-left:0;border-collapse:initial;border-spacing:0;caption-side:top;cursor:auto;direction:ltr;empty-cells:show;font-size:1rem;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;letter-spacing:normal;line-height:normal;list-style-image:none;list-style-position:outside;list-style-type:disc;orphans:2;quotes:initial;tab-size:8;text-align:initial;text-align-last:auto;text-decoration-color:initial;text-indent:0;text-justify:auto;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;widows:2;word-break:normal;word-spacing:normal}.myinterview-widget *,.myinterview-widget :after,.myinterview-widget :before{box-sizing:border-box;font-family:Nunito Sans,sans-serif;margin:0}.myinterview-widget__layout{background-color:var(--color-white);border-radius:0;bottom:0;left:0;padding:20px 20px 0;position:fixed;right:0;top:0;transform:translateZ(0);-webkit-transform:translateZ(0);z-index:2147483000}.myinterview-widget__layout--animated{animation:myinterview-widget-open .4s ease-out;-webkit-animation:myinterview-widget-open .4s ease-out;-moz-animation:myinterview-widget-open .4s ease-out;-o-animation:myinterview-widget-open .4s ease-out}.myinterview-widget__layout--minimized{animation:myinterview-widget-minimize .5s ease-in-out forwards;-webkit-animation:myinterview-widget-minimize .5s ease-in-out forwards;-moz-animation:myinterview-widget-minimize .5s ease-in-out forwards;-o-animation:myinterview-widget-minimize .5s ease-in-out forwards;overflow:hidden}.myinterview-widget__layout--minimized>*{opacity:0;transition:opacity .2s ease-out}@media (min-width:480px){.myinterview-widget__layout{display:grid;grid-template-columns:minmax(20px,1fr) minmax(auto,480px) minmax(20px,1fr);padding:20px 0 0}.myinterview-widget__layout>*{grid-column:2}.myinterview-widget__layout>.full{grid-column:1/-1;padding:0}}@media (min-width:1200px){.myinterview-widget__layout{grid-template-columns:10px 1fr 10px;padding:50px 0}}@keyframes myinterview-widget-open{0%{background-color:var(--color-primary);border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;overflow:hidden;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top)}50%{background-color:var(--color-white)}}@keyframes myinterview-widget-minimize{90%{border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;opacity:1;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top);z-index:2147483000}99%{opacity:0}to{background-color:var(--color-primary);border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;opacity:0;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top);z-index:-1}}.myinterview-widget-icons__play-button{cursor:pointer;position:relative}.myinterview-widget-icons__play-button svg{color:var(--color-primary)}.myinterview-widget-icons__play-button svg path{transition:d .4s ease-out;-webkit-transition:d .4s}.myinterview-widget-icons__play-button svg rect{transition:rx .4s;-webkit-transition:rx .4s}.myinterview-widget-icons__loading{background-color:currentColor;border-radius:50%;height:38px;overflow:hidden;position:relative;transform:translateZ(0);width:38px}.myinterview-widget-icons__loading:after{animation:slide 1s infinite;background:linear-gradient(to right,currentColor,var(--color-neutral-10),currentColor);content:\"\";height:100%;left:-50px;position:absolute;width:100%}.myinterview-widget-icons__no-camera-mic{align-items:center;background-color:#eff6fe;border-radius:50%;display:flex;height:80px;justify-content:center;position:relative;width:80px}.myinterview-widget-icons__no-camera-mic__camera,.myinterview-widget-icons__no-camera-mic__mic{align-items:center;border-radius:4px;display:flex;height:28px;justify-content:center;position:absolute;width:28px}.myinterview-widget-icons__no-camera-mic__camera svg,.myinterview-widget-icons__no-camera-mic__mic svg{height:20px;width:20px}.myinterview-widget-icons__no-camera-mic__camera{background-color:var(--color-primary);color:var(--color-white);transform:translate(-35%,-35%)}.myinterview-widget-icons__no-camera-mic__mic{background-color:var(--color-white);color:var(--color-primary);transform:translate(35%,35%)}.myinterview-widget__wrapper{-ms-overflow-style:none;display:flex;flex-direction:column;height:100%;max-height:100%;overflow:hidden;position:relative;scrollbar-width:none}.myinterview-widget__wrapper ::-webkit-scrollbar,.myinterview-widget__wrapper::-webkit-scrollbar{display:none}.myinterview-widget__wrapper--hide-header .myinterview-widget-header{visibility:hidden}.myinterview-widget__background{background:linear-gradient(50.24deg,var(--color-primary) 0,var(--color-special) 75%);height:var(--myitnerview-widget-background-height);left:0;opacity:var(--myinterview-background-opacity);overflow:hidden;position:absolute;top:0;transition:opacity .5s;width:100%}.myinterview-widget__background:before{border:6vh solid hsla(0,0%,100%,.267);border-radius:50%;content:\"\";height:30vh;position:absolute;right:0;top:0;transform:translate(50%,-50%);width:30vh}.myinterview-widget__background:after{background-color:var(--color-white);border-radius:20px 20px 0 0;bottom:0;content:\"\";display:var(--myinterview-widget-background-preview-display);height:20px;position:absolute;width:100%}@media (min-width:1200px){.myinterview-widget__background:after{display:none}.myinterview-widget__background{height:100vh;left:auto;right:0;width:calc(100% - var(--myinterview-widget-outer-width))}.myinterview-widget__background:before{border:12vh solid hsla(0,0%,100%,.267);height:70vh;width:70vh}}.myinterview-widget__watermark{display:none}@media (min-width:1200px){.myinterview-widget__watermark{bottom:20px;display:flex;height:64px;left:20px;position:absolute}}.myinterview-widget__background-dots{display:none}@media (min-width:1200px){.myinterview-widget__background-dots{background-image:radial-gradient(hsla(0,0%,100%,.467) 15%,#0000 0);background-position:0 0,50px 50px;background-size:20px 20px;bottom:0;display:flex;height:200px;position:absolute;right:0;width:200px}}.myinterview-widget__views{--myinterview-widget-views-margin-top:0px;--myinterview-widget-practice-opacity:1;-webkit-overflow-scrolling:touch;color:var(--color-primary);display:flex;flex:1;flex-direction:column;height:100%;overflow-y:var(--myinterview-widget-dynamic-overflow);scroll-snap-type:y mandatory;z-index:20}.myinterview-widget__views--uploading{gap:0;justify-content:center;margin-bottom:30px}@media (min-width:1200px){.myinterview-widget__views{align-items:start;flex:initial;flex:1;flex-direction:row-reverse;gap:0;justify-content:flex-end;overflow:hidden;padding:0;scroll-snap-type:none}.myinterview-widget__views--uploading{margin-bottom:0}}.myinterview-widget__views--rtl .myinterview-widget--rtl-support{direction:rtl}.myinterview-widget-recording-action-button{margin-bottom:20px;min-height:45px;position:relative;scroll-snap-align:end;z-index:1}@media (min-width:1200px){.myinterview-widget-recording-action-button{display:none}}.myinterview-widget-recording-action-button--video-question:disabled{display:none!important}.myinterview-widget-recording-action-button--stop-recording{border:1px solid var(--color-neutral-40)!important}@media (min-width:1200px){.myinterview-widget-recording-action-button--stop-recording{border:none!important}}.myinterview-widget-rotate-screen{align-items:center;animation:fade-in .3s;background-color:var(--color-white);display:none;height:100%;justify-content:center;left:0;padding:20px!important;position:absolute;top:0;width:100%;z-index:400}.myinterview-widget-rotate-screen svg{flex:0;margin-right:40px;min-width:120px}@media screen and (orientation:landscape){.myinterview-widget-rotate-screen{display:flex}}.myinterview-widget-unsupported-modal{align-items:center;background-color:var(--color-white);display:flex;height:100%;justify-content:center;left:0;padding:20px;position:absolute;top:0;width:100%;z-index:400}.myinterview-widget-unsupported-modal__message{text-align:center}.myinterview-widget-minimize{color:var(--color-white);cursor:pointer;display:none;height:20px;position:fixed;right:30px;top:30px;width:20px;z-index:50}@media (min-width:1024px){.myinterview-widget-minimize{display:flex}}.myinterview-widget-header{display:flex;flex-wrap:wrap;gap:18px;height:fit-content;margin:0 0 20px;max-height:112px;max-width:100%;overflow:hidden;transition:all .2s}.myinterview-widget-header--hidden{height:0;margin:0;overflow:hidden}@media (min-width:1200px){.myinterview-widget-header--hidden{height:fit-content;margin:0 0 20px}}.myinterview-widget-header__logo{height:48px}.myinterview-widget-header__logo img{flex-shrink:1;max-height:100%;max-width:100%;object-fit:contain;overflow:hidden}.myinterview-widget-header__details-wrapper{display:flex;flex-direction:column;flex-shrink:0;justify-content:center;letter-spacing:.2px;max-width:100%;min-width:60%;overflow:hidden}@media (min-width:1200px){.myinterview-widget-header{display:none;max-width:var(--myinterview-widget-outer-width);overflow:visible;padding-left:20px}.myinterview-widget-header__company-name{color:var(--color-neutral-50)}.myinterview-widget-header__job-title{color:var(--color-neutral-90)}}.myinterview-widget-header--desktop-layout{display:none}@media (min-width:1200px){.myinterview-widget-header--desktop-layout{display:flex;min-height:48px}}.myinterview-widget-inner{align-items:center;display:flex;flex-direction:column;margin-bottom:20px;min-height:min((100vw - 40px) * 1/var(--myinterview-widget-video-aspect-ratio),480px * 1/var(--myinterview-widget-video-aspect-ratio));position:relative;scroll-snap-align:start;z-index:1}.myinterview-widget-inner--no-snap{scroll-snap-align:none}@media (min-width:1200px){.myinterview-widget-inner{background-color:var(--color-white);border-radius:var(--myinterview-widget-recorder-border-radius);box-shadow:0 4px 14px -2px #00000026;height:calc((100vw - 20px - var(--myinterview-widget-outer-width))*9/16);margin:auto;max-height:440px;max-width:782.2222222222px;min-height:auto;overflow:hidden;width:100%}}.myinterview-widget-inner--hidden{max-height:0;min-height:0;overflow:hidden;visibility:hidden}.myinterview-widget-inner__content{max-height:100%;max-width:fit-content;min-height:200px;min-width:200px;position:sticky;top:0;width:calc(100% - var(--myinterview-widget-views-margin-top)*var(--myinterview-widget-video-aspect-ratio))}.myinterview-widget-inner__content--full-width{min-width:100%}@media (min-width:1200px){.myinterview-widget-inner__content{border-radius:var(--myinterview-widget-recorder-border-radius);height:100%;max-width:100%;position:static;width:100%}}.myinterview-widget-inner__content--error{display:flex;flex:1;flex-direction:column;height:calc(100% - var(--myinterview-widget-views-margin-top));max-width:100%;min-height:fit-content;width:100%}.myinterview-widget-inner .myinterview-widget-explanation{align-items:center;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);display:flex;flex-direction:column;height:100%;justify-content:center;padding:20px;position:absolute;text-align:center;white-space:pre-line;width:100%;z-index:1}.myinterview-widget-inner .myinterview-widget-explanation__main{margin-bottom:10px}.myinterview-widget-inner .myinterview-widget-recording-action-button{display:none}@media (min-width:1200px){.myinterview-widget-inner .myinterview-widget-recording-action-button{bottom:20px;display:block;left:50%;margin:0;position:absolute;transform:translate(-50%);white-space:nowrap;width:fit-content;z-index:20}}.myinterview-widget-inner--video-question-state,.myinterview-widget-inner--welcome-page-state{min-height:fit-content;min-width:100%}@media (min-width:1200px){.myinterview-widget-inner--video-question-state,.myinterview-widget-inner--welcome-page-state{min-width:auto}.myinterview-widget-inner--video-question-state .myinterview-widget-recording-action-button,.myinterview-widget-inner--welcome-page-state .myinterview-widget-recording-action-button{bottom:70px}}.myinterview-widget-inner--full{flex:1;scroll-snap-align:none}.myinterview-widget-inner--full .myinterview-widget-inner__content{flex:1;height:max-content;max-width:100%;width:100%}@media (min-width:1200px){.myinterview-widget-inner--full{flex:auto}}.myinterview-widget-outer{border-radius:10px;display:flex;flex-direction:column;padding-bottom:20px;scroll-snap-align:end}.myinterview-widget-outer--no-snap{scroll-snap-align:none}.myinterview-widget-outer--hidden{display:none}.myinterview-widget-outer--uploading{flex:0;padding:0}@media (min-width:1200px){.myinterview-widget-outer{background-color:initial;flex:none;height:100%;padding:0 20px 0 0!important;width:var(--myinterview-widget-outer-width)}.myinterview-widget-outer>*{padding:0 20px}.myinterview-widget-outer--hidden{display:flex}.myinterview-widget-outer--uploading{padding:0}}.myinterview-widget-outer .myinterview-widget-question{background-color:#fffffff2;border-radius:10px;margin:0 auto;transition:opacity .25s;width:100%}@media (min-width:1200px){.myinterview-widget-outer .myinterview-widget-question{padding:50px 20px 0}.myinterview-widget-outer .myinterview-widget-question__question{font-size:26px;line-height:36px}}.myinterview-widget-outer--hide-question .myinterview-widget-question{height:0;opacity:0;visibility:hidden}.myinterview-widget-outer__setup{display:flex;flex:1;flex-direction:column}.myinterview-widget-outer__title{margin-bottom:15px}.myinterview-widget-outer__mode-wrapper{background-color:var(--color-white);bottom:0;display:flex;justify-content:space-around;margin-top:15px;padding:10px 0;position:sticky}.myinterview-widget-outer__mode-wrapper:before{background-color:var(--color-white);content:\"\";height:40px;left:0;mask-image:linear-gradient(#0000,var(--color-black));-webkit-mask-image:linear-gradient(#0000,var(--color-black));mask-mode:alpha;position:absolute;top:0;transform:translateY(-100%);width:100%}@media (min-width:1200px){.myinterview-widget-outer__mode-wrapper{background-color:initial;flex-direction:column;justify-content:flex-start;padding:0;position:static;width:65%}.myinterview-widget-outer__mode-wrapper:after,.myinterview-widget-outer__mode-wrapper:before{display:none}}.myinterview-widget-outer__mode-button{letter-spacing:.5px;max-width:42%!important;min-width:100px!important;padding:0 15px!important;width:150px!important}.myinterview-widget-outer__mode-button--start{border:1px solid!important}.myinterview-widget-outer__mode-button--single{background-color:var(--color-special);color:var(--color-white);max-width:100%!important;width:100%!important}@media (min-width:1200px){.myinterview-widget-outer__mode-button{max-width:100%!important;min-width:150px!important;width:100%!important}.myinterview-widget-outer__mode-button:first-child{margin-bottom:20px}}.myinterview-widget-outer__practice-mode-info{margin-bottom:20px}.myinterview-widget-outer .myinterview-widget__countdown-mobile{display:none}.myinterview-widget-video-camera{border-radius:var(--myinterview-widget-recorder-border-radius);display:flex;flex:1;flex-direction:column;max-height:100%;position:relative;width:100%}@media (min-width:1200px){.myinterview-widget-video-camera{transform:translateZ(0) scale(1.005)}}.myinterview-widget-video-camera--hidden{display:none}.myinterview-widget-video-camera video{border-radius:var(--myinterview-widget-recorder-border-radius);object-fit:contain;overflow:hidden;transform:var(--myinterview-widget-camera-transform);-webkit-transform:var(--myinterview-widget-camera-transform);width:100%}.myinterview-widget-video-camera__recording-counter-wrapper{left:10px;position:absolute;top:10px;width:100px;z-index:2}@media (min-width:1200px){.myinterview-widget-video-camera__recording-counter-wrapper{left:25px;top:25px}}.myinterview-widget-video-camera__permissions{align-items:center;animation:fade-in .5s;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);color:var(--color-neutral-90);display:flex;height:100%;justify-content:center;padding:20px;position:absolute;width:100%;z-index:21}.myinterview-widget-video-camera__permissions-close{cursor:pointer;left:25px;position:absolute;top:25px;width:20px}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator{align-items:center;background-color:var(--color-primary);border-radius:50%;bottom:18px;color:var(--color-white);display:flex;height:40px;isolation:isolate;justify-content:center;left:18px;padding:10px;position:absolute;width:40px}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator--hidden{visibility:hidden}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__microphone-indicator{bottom:25px;left:auto;right:25px}}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator:after{background:radial-gradient(#0000 40%,var(--color-primary) 90%);border-radius:50%;content:\"\";height:100%;position:absolute;transform:scale(var(--myinterview-widget-voice-level));transform-origin:center;width:100%;will-change:transform;z-index:-1}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator svg{height:100%;width:100%}.myinterview-widget-video-camera .myinterview-widget__practice-mode{opacity:var(--myinterview-widget-practice-opacity);position:absolute;right:10px;top:10px;transition:opacity .3s}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__practice-mode{opacity:1;right:25px;top:25px}}.myinterview-widget-video-camera .myinterview-widget__question-number{left:15px;top:15px;z-index:1}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__question-number{left:40px;letter-spacing:.5px;top:30px}}.myinterview-widget-video-camera .myinterview-widget__countdown-desktop{display:none}.myinterview-widget-video-camera__watermark{height:50px;left:15px;opacity:.5;position:absolute;top:15px;width:120px}@media (min-width:1200px){.myinterview-widget-video-camera__watermark{left:25px;top:25px}}.myinterview-widget-recorder-modal{align-items:center;animation:fade-in .5s;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);bottom:0;color:var(--color-neutral-90);display:flex;filter:drop-shadow(0 0 0 rgba(0,0,0,.2));justify-content:center;left:0;min-height:100%;overflow:hidden;position:absolute;right:0;text-align:center;top:0;z-index:20}.myinterview-widget-recorder-modal__content-wrapper{align-items:center;display:flex;flex-direction:column;gap:5px;letter-spacing:.5px;max-width:80%}@media (min-width:1200px){.myinterview-widget-recorder-modal__content-wrapper{max-width:700px;padding:20px}}.myinterview-widget-recorder-modal__question{max-width:100%;overflow:hidden;overflow-wrap:break-word;text-align:left}@media (min-width:1200px){.myinterview-widget-recorder-modal__question{text-align:center}.myinterview-widget-recorder-modal__question .myinterview-widget__question-duration{justify-content:center}}.myinterview-widget-checks{display:flex;flex-direction:column}.myinterview-widget-checks__item{align-items:center;display:flex;gap:20px;margin-bottom:20px}.myinterview-widget-checks__icon{align-items:center;display:flex;height:100%;justify-content:center;width:40px}.myinterview-widget-checks__text-wrapper{display:flex;flex-direction:column}.myinterview-widget-checks__retry{background-color:initial;border:0;cursor:pointer;margin-left:10px;text-decoration:underline}.myinterview-widget-preview__container{background-color:var(--color-white);display:flex;flex-direction:column;min-height:100%;padding-top:20px;position:relative;width:100%}@media (min-width:1200px){.myinterview-widget-preview__container{border-radius:20px;max-height:100%;padding:4%}}.myinterview-widget-preview__container .myinterview-widget__question-number{margin-bottom:20px;position:relative}@media (min-width:1200px){.myinterview-widget-preview__container .myinterview-widget__question-number{color:var(--color-neutral-90);margin:0;position:absolute}}.myinterview-widget-preview__container .myinterview-widget-errors{animation:fade-in .3s;background-color:var(--color-white);bottom:0;left:0;padding:20px;position:absolute;right:0;text-align:center;top:0;transform:translateZ(150px);-webkit-transform:translateZ(150px);z-index:150}.myinterview-widget-preview__title{margin-bottom:30px;text-align:center}@media (min-width:1200px){.myinterview-widget-preview__title{color:var(--color-neutral-90);margin-bottom:12px}}.myinterview-widget-preview__background{animation:background-fade-in .3s ease-out;background-color:#000000e6;height:100%;isolation:isolate;left:0;position:fixed;top:0;transform:translateZ(150px);width:100%;z-index:150}@keyframes background-fade-in{0%{background-color:#0000;transform:translateZ(-2px);z-index:-2}}.myinterview-widget-preview__close{background-color:var(--color-neutral-60);border-radius:2.5rem;bottom:1vh;left:50%;padding:3px 8px;position:absolute;transform:translateX(-50%)}.myinterview-widget-preview__main{animation:fade-in .5s;display:flex;height:350px;margin:auto;position:relative;touch-action:pan-y;width:100%;z-index:1}.myinterview-widget-preview__main--hide-overflow{overflow:hidden}.myinterview-widget-preview__items-wrapper{--myinterview-widget-preview-transform-x:0;--myinterview-widget-preview-item-transition:0ms;--myinterview-widget-item-width:100%;box-sizing:initial;display:flex;margin-bottom:10px;position:relative;transition-duration:0ms;transition-property:transform;width:100%;z-index:2}.myinterview-widget-preview__items-wrapper--centered{justify-content:center}.myinterview-widget-preview__item{display:flex;flex-direction:column;flex-shrink:0;height:100%;justify-content:center;padding:2%;position:relative;transition:transform var(--myinterview-widget-preview-item-transition);width:var(--myinterview-widget-item-width);z-index:1}.myinterview-widget-preview__item--current{z-index:2}.myinterview-widget-preview__item--single-take{width:50%}.myinterview-widget-preview__video-wrapper{border:0 solid var(--color-primary);border-radius:var(--myinterview-widget-preview-video-border-radius);display:flex;margin:0 auto;opacity:1;overflow:hidden;position:relative;transition-delay:.29s;z-index:3}.myinterview-widget-preview__video-wrapper--mobile{aspect-ratio:var(--myinterview-widget-video-aspect-ratio);height:100%}@media (min-width:1200px){.myinterview-widget-preview__video-wrapper{border-radius:var(--myinterview-widget-preview-video-border-radius);margin:0}}.myinterview-widget-preview__video-wrapper:before{background-color:rgba(0,0,0,.267);border-radius:var(--myinterview-widget-preview-video-border-radius);content:\"\";height:100%;left:0;pointer-events:none;position:absolute;top:0;transform:translateZ(1px);transition:background-color .3s;width:100%;z-index:1}.myinterview-widget-preview__video-wrapper--current:before,.myinterview-widget-preview__video-wrapper--preview:before,.myinterview-widget-preview__video-wrapper:hover:before{background-color:#0000;pointer-events:none}.myinterview-widget-preview__video-wrapper--preview-mobile{opacity:0}.myinterview-widget-preview__video-wrapper:after{border:0 solid var(--color-primary);border-radius:var(--myinterview-widget-preview-video-border-radius);content:\"\";height:100%;pointer-events:none;position:absolute;transition:.15s;width:100%}@media (min-width:1200px){.myinterview-widget-preview__video-wrapper:after{border-radius:var(--myinterview-widget-preview-video-border-radius)}}.myinterview-widget-preview__video-wrapper--selected:before{background-color:#0000;z-index:-1}.myinterview-widget-preview__video-wrapper--selected:after{border:3px solid var(--color-primary)}.myinterview-widget-preview__video{cursor:pointer;transform:translateZ(0);-webkit-transform:translateZ(0);width:100%}.myinterview-widget-preview__dynamic-video{--myinterview-preview-video-top:50%;--myinterview-preview-video-left:50%;--myinterview-preview-video-width:0%;--myinterview-preview-video-height:0%;border-radius:var(--myinterview-widget-preview-video-border-radius);height:var(--myinterview-preview-video-height);left:var(--myinterview-preview-video-left);position:fixed;top:var(--myinterview-preview-video-top);transform:translateZ(-1px);transition:all .3s ease-out;transition-delay:.01s;visibility:hidden;width:var(--myinterview-preview-video-width);z-index:-1}.myinterview-widget-preview__dynamic-video--preview{border-radius:0;height:100%;left:0;max-height:70vh;top:46%;transform:translate3d(0,-50%,200px);visibility:visible;width:100%;z-index:200}.myinterview-widget-preview__number-wrapper{align-items:center;cursor:pointer;display:flex;gap:5px;margin:7px auto 0;position:relative;width:fit-content}@media (min-width:1200px){.myinterview-widget-preview__number-wrapper{margin:7px 0 0}}.myinterview-widget-preview__selected-check-mark{align-items:center;border:1px solid var(--color-neutral-60);border-radius:50%;display:flex;height:20px;justify-content:center;overflow:hidden;padding:1px;pointer-events:none;position:relative;width:20px}.myinterview-widget-preview__selected-check-mark svg{transform:scale(0);-webkit-transform:scale(0);transition:.15s ease-out}.myinterview-widget-preview__selected-check-mark--selected{border:1px solid var(--color-primary)}.myinterview-widget-preview__selected-check-mark--selected svg{transform:scale(1);-webkit-transform:scale(1)}.myinterview-widget-preview__dots-wrapper{align-items:center;display:flex;height:20px;justify-content:center;width:100%}.myinterview-widget-preview__dot{background-color:var(--color-neutral-20);border-radius:50%;cursor:pointer;height:10px;margin:0 7px;position:relative;transition:.3s ease-out;width:10px}.myinterview-widget-preview__dot--selected{background-color:var(--color-primary);cursor:auto;transform:scale(1.5);-webkit-transform:scale(1.5)}.myinterview-widget-preview__play-container{align-items:center;cursor:pointer;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.myinterview-widget-preview__play-button-wrapper{left:50%;top:50%;transform:translateZ(1px);transition:opacity .3s;width:60px}@media (min-width:1200px){.myinterview-widget-preview__play-button-wrapper{max-width:76px;width:25%}}.myinterview-widget-preview__horizontal-line{display:none}@media (min-width:1200px){.myinterview-widget-preview__horizontal-line{background-color:#bdbdbd;display:block;height:1px;margin:15px auto;width:50%}}.myinterview-widget-preview__preview-buttons{align-items:center;display:flex;flex-direction:column;gap:20px;margin-bottom:10px;margin-top:33px;max-width:100%}@media (min-width:1200px){.myinterview-widget-preview__preview-buttons{gap:10px;margin-bottom:0;margin-top:auto}}.myinterview-widget-preview__preview-buttons-top{display:flex;gap:10px;justify-content:space-evenly;max-width:100%;width:100%}@media (min-width:1200px){.myinterview-widget-preview__preview-buttons-top{justify-content:center;width:auto}}.myinterview-widget-preview__preview-button{max-width:45%;min-width:100px;width:150px}.myinterview-widget-preview__preview-button--retake{align-items:center;border:1px solid var(--color-neutral-30);display:flex;justify-content:center;max-width:100%}.myinterview-widget-preview__preview-button--start-interview{background-color:initial;color:var(--color-primary);font-size:13px;max-height:30px;max-width:max-content;padding:0;width:max-content}@media (min-width:1200px){.myinterview-widget-preview__preview-button{flex:1;max-height:42px;min-width:150px}}.myinterview-widget-preview__retakes-wrapper{max-width:45%;min-width:100px;text-align:center;width:150px}@media (min-width:1200px){.myinterview-widget-preview__retakes-wrapper{max-height:42px;min-width:150px}}.myinterview-widget-preview__retakes-left{color:var(--color-neutral-60)}.myinterview-widget-preview__arrow{align-items:center;animation:fade-in .3s;display:flex;height:100%;justify-content:center;min-width:40px;position:absolute;right:0;z-index:5}@media (min-width:1200px){.myinterview-widget-preview__arrow{min-width:4%;transform:translateX(75%)}.myinterview-widget-preview__arrow:before{background-color:#fff;content:\"\";height:100%;left:0;mask-image:linear-gradient(to right,#0000,var(--color-black));-webkit-mask-image:linear-gradient(to right,#0000,var(--color-black));position:absolute;transform:translateX(5px);width:100%}}.myinterview-widget-preview__arrow--prev{left:0;right:auto;transform:translateZ(5px) rotateY(180deg)}@media (min-width:1200px){.myinterview-widget-preview__arrow--prev{transform:translate3d(-75%,0,5px) rotateY(180deg)}}.myinterview-widget-preview__arrow-icon-wrapper{align-items:center;background-color:var(--color-white);border:1px solid var(--color-neutral-30);border-radius:50%;color:var(--color-neutral-90);cursor:pointer;display:flex;height:36px;justify-content:center;position:relative;transform:translateY(-11px);width:36px}@media (min-width:1200px){.myinterview-widget-preview__arrow-icon-wrapper{box-shadow:0 4px 30px #00000026}}.myinterview-widget-video-question{aspect-ratio:16/9;background-color:var(--color-black);border-radius:var(--myinterview-widget-recorder-border-radius);height:fit-content;isolation:isolate;margin:auto;overflow:hidden;position:relative;width:100%;z-index:1}@media (min-width:1200px){.myinterview-widget-video-question{height:100%}}.myinterview-widget-video-question--hidden{position:absolute;visibility:hidden;z-index:-1}.myinterview-widget-video-question--loading{background-color:hsla(0,0%,100%,.467)}.myinterview-widget-video-question--loading:before{animation:slide 1.5s infinite;background:linear-gradient(to right,#0000,var(--color-neutral-10),#0000);content:\"\";height:100%;left:-100%;position:absolute;top:0;width:100%;z-index:-1}@media (min-width:1200px){.myinterview-widget-video-question--loading{background-color:#ccd7f5}}.myinterview-widget-video-question:after{content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.myinterview-widget-video-question--done:after{background-color:var(--color-black)}.myinterview-widget-video-question__play-button-wrapper{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);transition:transform .2s ease-out,opacity .3s ease-out;width:clamp(50px,15vw,76px);z-index:1}.myinterview-widget-video-question__play-button-wrapper--hidden{opacity:0;pointer-events:none;touch-action:none;transform:translate(-50%,-50%) scale(1.3);-webkit-transform:translate(-50%,-50%) scale(1.3)}.myinterview-widget-video-question__controls{align-items:center;bottom:0;display:flex;justify-content:center;left:0;margin:10px 12px;position:absolute;right:0;transition:opacity .2s,transform .2s;z-index:1}.myinterview-widget-video-question__controls--inactive{opacity:0;pointer-events:none;touch-action:none;transform:translateY(25%)}.myinterview-widget-video-question__controls>:not(:last-child){margin-right:15px}.myinterview-widget-video-question__controls .myinterview-widget-video-question__control-play-button{min-width:40px;width:50px}.myinterview-widget-video-question__controls .myinterview-widget-video-question__control-play-button .myinterview-widget-icons svg{color:var(--color-white)}.myinterview-widget-video-question__timebar-counter-wrapper{width:100%}.myinterview-widget-video-question__counter-wrapper{-webkit-text-stroke-width:.5px;-webkit-text-stroke-color:var(--color-neutral-90);color:var(--color-white);font-size:13px;font-weight:700}.myinterview-widget-video-question__time-bar{background-color:hsla(0,0%,100%,.467);border-radius:2.5rem;cursor:pointer;height:10px;margin-bottom:5px;position:relative;width:100%}.myinterview-widget-video-question__time-bar--disabled{cursor:auto;pointer-events:none}.myinterview-widget-video-question__time-bar:before{content:\"\";height:30px;left:0;position:absolute;top:0;transform:translateY(-30%);width:100%}@media (min-width:1200px){.myinterview-widget-video-question__time-bar:before{display:none}}.myinterview-widget-video-question__time-bar-progress{background-color:var(--color-primary);border-radius:2.5rem;height:100%;position:absolute;transition:width .25s linear}.myinterview-widget-video-question__time-bar-progress:after{background-color:var(--color-primary);border-radius:50%;content:\"\";height:15px;left:100%;pointer-events:none;position:absolute;top:50%;touch-action:none;transform:translate(-50%,-50%);width:15px}.myinterview-widget-video-question__time-bar-progress--changing{transition:none}.myinterview-widget-video-question__time-bar-progress--unchangeable{cursor:auto}.myinterview-widget-video-question__time-bar-progress--unchangeable:after{display:none}.myinterview-widget-video-question__retry-button{margin-top:20px;width:100%;z-index:2}.myinterview-widget-video-question__retry-button--hidden{position:absolute;visibility:hidden;z-index:-1}@media (min-width:1200px){.myinterview-widget-video-question__retry-button{bottom:70px;left:50%;margin:0 auto;position:absolute;transform:translateX(-50%);width:fit-content}}@keyframes slide{50%{opacity:.9}to{left:100%;opacity:1}}.myinterview-widget-device{align-items:center;background-color:var(--color-white);border-radius:50%;color:var(--color-neutral-90);display:flex;height:40px;justify-content:center;position:absolute;right:18px;width:40px}.myinterview-widget-device__mobile{bottom:18px}.myinterview-widget-device__desktop{right:18px;top:18px;z-index:30}@media (min-width:1200px){.myinterview-widget-device__desktop{right:25px;top:25px}}.myinterview-widget-device__menu-button{align-items:center;background-color:initial;border:none;border-radius:50%;cursor:pointer;display:flex;height:100%;justify-content:center;width:100%}.myinterview-widget-device__modal{--myinterview-widget-select-device-height:48px;background-color:var(--color-white);border-radius:20px;bottom:-15px;box-shadow:0 2px 12px -4px #0000001a;max-width:400px;min-width:300px;position:absolute;right:-12px;transform:translateY(100%)}.myinterview-widget-device__modal:before{background-color:var(--color-white);border-radius:5px;content:\"\";height:20px;position:absolute;right:22px;top:-8px;transform:rotate(45deg);width:20px}.myinterview-widget-device__select-wrapper{display:flex;flex-direction:column;overflow:hidden;padding:20px}.myinterview-widget-device__select-group{display:flex;flex-direction:column}.myinterview-widget-device__select-group:not(:last-child):after{background-color:var(--color-neutral-20);content:\"\";height:1px;margin:10px 0;width:100%}.myinterview-widget-device__selected-device{cursor:pointer;display:flex;height:var(--myinterview-widget-select-device-height);width:100%}.myinterview-widget-device__select-icon{align-items:center;display:flex;min-width:40px}.myinterview-widget-device__select-icon svg{height:20px;width:20px}.myinterview-widget-device__selected-title-wrapper{flex:1;overflow:hidden;padding-right:23px}.myinterview-widget-device__selected-title{line-height:var(--myinterview-widget-select-device-height)!important;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.myinterview-widget-device__arrow{align-items:center;display:flex;margin-left:auto;transform:rotate(0);transition:.2s}.myinterview-widget-device__arrow--open{transform:rotate(-180deg)}.myinterview-widget-device__select-list{display:flex;flex-direction:column;max-height:0;overflow:hidden;transition:max-height .2s ease-out}.myinterview-widget-device__select-list--open{max-height:calc(var(--myinterview-widget-select-device-height)*2);overflow:auto;transition:max-height .2s ease-in}.myinterview-widget-device__select-option{border-radius:4px;cursor:pointer;line-height:var(--myinterview-widget-select-device-height)!important;min-height:var(--myinterview-widget-select-device-height);overflow:hidden;padding:0 40px;text-overflow:ellipsis;white-space:nowrap}.myinterview-widget-device__select-option--selected,.myinterview-widget-device__select-option:hover{color:var(--color-primary)!important}.myinterview-widget-device__select-option--selected{background-color:rgba(90,164,245,.051)!important}.myinterview-widget__countdown-mobile{background-color:var(--color-white);border-radius:2.5rem;left:50%;padding:6px 10px;position:absolute;top:10px;transform:translateX(-50%);z-index:30}@media (min-width:1200px){.myinterview-widget__countdown-mobile{display:none}}.myinterview-widget__countdown-desktop{display:none}@media (min-width:1200px){.myinterview-widget__countdown-desktop{--myinterview-widget-p:100;--myinterview-widget-b:5px;--myinterview-widget-w:160px;align-items:center;display:flex;height:var(--myinterview-widget-w);justify-content:center;margin:auto;padding:0;position:relative;transform:rotateY(180deg);width:var(--myinterview-widget-w)}.myinterview-widget__countdown-desktop:after,.myinterview-widget__countdown-desktop:before{border-radius:50%;content:\"\";position:absolute}.myinterview-widget__countdown-desktop:before{background:radial-gradient(farthest-side,var(--color-primary) 100%,#0000) top/var(--myinterview-widget-b) var(--myinterview-widget-b) no-repeat,conic-gradient(var(--color-primary) calc((var(--myinterview-widget-p))*1%),#0000 0);inset:0;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - var(--myinterview-widget-b)),#000 calc(100% - var(--myinterview-widget-b)));mask:radial-gradient(farthest-side,#0000 calc(100% - var(--myinterview-widget-b)),#000 calc(100% - var(--myinterview-widget-b)));transition:all 1s}.myinterview-widget__countdown-desktop:after{background:var(--color-primary);inset:calc(50% - var(--myinterview-widget-b)/2);transform:rotate(calc(var(--myinterview-widget-p)*3.6deg)) translateY(calc(50% - var(--myinterview-widget-w)/2))}}.myinterview-widget__countdown-desktop .myinterview-widget__countdown-desktop-text{align-items:center;border:var(--myinterview-widget-b) solid #edf6fe;border-radius:50%;display:flex;height:100%;justify-content:center;position:absolute;transform:rotateY(180deg);width:100%;z-index:-1}.myinterview-widget-counter{align-items:center;background-color:var(--color-white);border-radius:2.5rem;color:var(--color-neutral-90);display:flex;gap:5px;height:36px;justify-content:center}.myinterview-widget-counter__dot{background-color:var(--color-error);border-radius:50%;height:10px;width:10px}.myinterview-widget-counter__clock{display:flex}.myinterview-widget-counter__timer{transition:color .25s}.myinterview-widget-counter__timer--red{color:#f45b2b}.myinterview-widget-loader{-webkit-animation:fade 1.6s infinite;-moz-animation:fade 1.6s infinite;-o-animation:fade 1.6s infinite;animation:fade 1.6s infinite;margin:auto;width:80px}@keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-o-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-moz-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-webkit-keyframes fade{0%,to{opacity:0}50%{opacity:1}}.myinterview-widget-error{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;margin:auto}.myinterview-widget-error__message{margin-bottom:10px}.myinterview-widget-errors{align-items:center;display:flex;flex-direction:column;justify-content:center}.myinterview-widget-errors__icon{margin-bottom:15px}.myinterview-widget-errors__details,.myinterview-widget-errors__title{margin-bottom:5px}.myinterview-widget-errors__cta{cursor:pointer;position:relative;text-decoration:underline}.myinterview-widget-errors__cta .myinterview-widget-select-native{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.myinterview-widget-slider-modal{animation:close-modal .3s forwards;bottom:0;height:100vh;height:-moz-available;height:-webkit-fill-available;height:stretch;left:0;min-height:100vh;min-height:-moz-available;min-height:-webkit-fill-available;min-height:stretch;overflow:hidden;position:fixed;width:100vw;z-index:50}.myinterview-widget-slider-modal__wrapper{-webkit-overflow-scrolling:touch;height:100%;overflow-y:auto;scroll-snap-type:y mandatory;width:100%}.myinterview-widget-slider-modal__top{min-height:100%;scroll-snap-align:start;touch-action:none}.myinterview-widget-slider-modal__bottom{background-color:var(--color-white);border-radius:20px 20px 0 0;display:flex;flex-direction:column;height:10%;isolation:isolate;min-height:10%;overflow:hidden;position:relative;scroll-snap-align:end;transition:min-height .5s,height .5s;visibility:hidden}.myinterview-widget-slider-modal__pill{background-color:var(--color-neutral-30);border-radius:2.5rem;margin:20px auto 32px;min-height:4px;width:60px}.myinterview-widget-slider-modal--open{animation:none;background-color:#0009;visibility:visible}.myinterview-widget-slider-modal--open .myinterview-widget-slider-modal__bottom{height:80%;min-height:80%;visibility:visible}@keyframes close-modal{0%{background-color:#0009}to{background-color:#0000;visibility:hidden}}.myinterview-widget-permissions__wrapper{display:flex;flex:1;flex-direction:column;margin:0 auto;max-height:100%;max-width:480px;overflow:auto;padding:0 20px 20px;width:100%}@media (min-width:1200px){.myinterview-widget-permissions__wrapper{padding:0 20px}}.myinterview-widget-permissions__icon-wrapper{align-items:center;background-color:#eff6fe;border-radius:50%;color:var(--color-primary);display:flex;justify-content:center;margin:0 auto 20px;min-height:70px;min-width:70px}.myinterview-widget-permissions__icon-wrapper svg{height:32px;width:32px}@media (min-width:1200px){.myinterview-widget-permissions__icon-wrapper{display:none!important}}.myinterview-widget-permissions__title{margin-bottom:20px;text-align:center}@media (min-width:1200px){.myinterview-widget-permissions__title{margin-bottom:15px}}.myinterview-widget-permissions__sub-title{margin-bottom:10px}.myinterview-widget-permissions__steps-wrapper{margin-bottom:15px;padding:0 20px}.myinterview-widget-permissions__step{font-size:14px;list-style:decimal;margin-bottom:10px}.myinterview-widget-permissions__step .text--bold{font-weight:700}.myinterview-widget-permissions__step .safari__key{background-color:var(--color-neutral-20);border-radius:2px;padding:2px 4px}.myinterview-widget-permissions__button{margin-top:auto;min-height:45px}.myinterview-widget-question{position:relative}.myinterview-widget-question:before{color:var(--color-neutral-10);content:attr(data-background-question);font-size:150px;font-weight:700;left:0;position:absolute;top:0;transform:translate(-25%,-25%)}.myinterview-widget-question>*{position:relative;z-index:1}.myinterview-widget-question--inner{position:static}.myinterview-widget-question--inner:before{color:var(--color-neutral-20);top:40%;transform:translate(-25%,-50%)}.myinterview-widget-question__description,.myinterview-widget-question__question{letter-spacing:.5px;margin-bottom:20px}.myinterview-widget-question__duration{display:inline-flex;gap:5px}.myinterview-widget-questions-list{display:none}@media (min-width:1200px){.myinterview-widget-questions-list{display:flex;flex-direction:column;overflow-y:auto;padding:0;position:relative}.myinterview-widget-questions-item{align-items:center;border-radius:0 4px 4px 0;display:flex;gap:20px;letter-spacing:.5px;max-width:100%;min-height:90px;overflow:hidden;padding:20px;position:relative}.myinterview-widget-questions-item__number{align-items:center;background-color:var(--color-neutral-20);border-radius:50%;color:var(--color-neutral-90);display:flex;height:38px;justify-content:center;min-width:38px}.myinterview-widget-questions-item__number--icon{background-color:var(--color-white);color:var(--color-primary)}.myinterview-widget-questions-item__wrapper{flex:1;overflow:hidden}.myinterview-widget-questions-item__question{display:flex;flex-direction:column;gap:2px;overflow:hidden}.myinterview-widget-questions-item__duration-wrapper{align-items:center;color:var(--color-neutral-50);display:flex;font-size:12px;gap:5px;line-height:20px}.myinterview-widget-questions-item__duration-wrapper *{font-size:12px;line-height:20px}.myinterview-widget-questions-item__duration-wrapper svg{width:15px}.myinterview-widget-questions-item--active{background-color:#f7fbff}.myinterview-widget-questions-item--active:before{background-color:var(--color-primary);content:\"\";height:100%;left:0;position:absolute;width:3px}.myinterview-widget-questions-item--active .myinterview-widget-questions-item__number{background-color:var(--color-white);border:1px solid var(--color-primary);color:var(--color-primary)}}.myinterview-widget-upload{align-items:center;background-color:var(--color-white);border-radius:20px;display:flex;flex-direction:column;height:100%;justify-content:center;margin:auto;max-height:500px;overflow:hidden;padding:40px;text-align:center;width:100%}@media (min-width:1200px){.myinterview-widget-upload{margin:0;min-height:360px}}.myinterview-widget-upload__icon{align-items:center;background-color:#5aa4f5;border:12px solid #d7e8fb;border-radius:50%;color:var(--color-white);display:flex;height:110px;justify-content:center;margin-bottom:30px;min-height:110px;position:relative;width:110px}.myinterview-widget-upload__icon:before{background-color:initial;border:12px solid #99c6f8;border-radius:50%;content:\"\";height:100%;position:absolute;width:100%}.myinterview-widget-upload__title{margin-bottom:20px}.myinterview-widget-upload__sub-title{margin-bottom:40px;white-space:pre-line}.myinterview-widget-upload__progress{margin-bottom:10px;width:100%}.myinterview-widget-upload__time-left{align-items:center;color:var(--color-neutral-90);display:flex;gap:10px}.myinterview-widget-top-tips{background-color:var(--color-white);color:var(--color-neutral-90);display:flex;flex-direction:column;padding:50px}.myinterview-widget-top-tips__title{margin-bottom:20px}.myinterview-widget-top-tips__tips{margin-bottom:10px;padding:0 15px}.myinterview-widget-top-tips li{margin-bottom:10px}.myinterview-widget__practice-mode{border-radius:2.5rem;height:36px;padding:5px 15px}.myinterview-widget__practice-mode,.myinterview-widget__recording-button{align-items:center;background-color:var(--color-white);display:flex;justify-content:center}.myinterview-widget__recording-button{border:1px solid var(--color-neutral-30);border-radius:50%;height:64px;width:64px}.myinterview-widget__recording-button-inner{background-color:var(--color-error);border-radius:50%;height:52px;width:52px}.myinterview-widget__recording-button-inner--stop{border-radius:2px;height:16px;width:16px}.myinterview-widget__question-number{position:absolute}.myinterview-widget__question-duration{align-items:center;display:flex;gap:8px}.myinterview-widget__question-duration svg{height:1em;width:1em}.myinterview-widget__progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:2.5rem;height:15px;overflow:hidden;width:100%}.myinterview-widget__progress::-webkit-progress-bar{background-color:#e7f1ef}.myinterview-widget__progress::-webkit-progress-value{background-color:var(--color-success);transition:.3s}.myinterview-widget-welcome-page{display:flex;flex-direction:column;gap:20px;height:100%;margin:30px 0;max-height:100%;overflow:auto;position:relative}@media (min-width:1200px){.myinterview-widget-welcome-page{padding:0 20px}}.myinterview-widget-welcome-page__text-wrapper{display:flex;flex-direction:column;position:relative}.myinterview-widget-welcome-page__text{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;white-space:pre-line}.myinterview-widget-welcome-page__text--closed{-webkit-line-clamp:4;line-clamp:4}.myinterview-widget-welcome-page__toggle{margin-left:auto}.myinterview-widget-welcome-page__action-buttons{display:flex;gap:20px;justify-content:space-between}.myinterview-widget-welcome-page__continue-button{flex:1;max-width:250px;min-width:fit-content}.myinterview-widget-welcome-page__top-tips-button{margin:0 auto}.myinterview-widget-welcome-page__top-tips{align-items:center;display:flex;gap:10px;justify-content:center}.myinterview-modal-wrapper{background-color:var(--color-white);border-radius:0;height:100vh;max-height:100%;max-width:500px;opacity:0;pointer-events:none;top:75%;transition:top .2s ease-out,opacity .2s ease-out;width:100vw}@media (min-width:480px){.myinterview-modal-wrapper{border-radius:10px;height:auto}}.myinterview-modal-wrapper--opened{opacity:1;pointer-events:all;top:50%}.myinterview-modal-wrapper__close-btn{color:var(--color-neutral-90)}";
|
|
45629
|
+
var css_248z = "@import url(\"https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;600;700&display=swap\");:host,:root,html[data-theme=light]{--color-primary:#5aa4f5;--color-secondary:#5ed0bc;--color-premium:#fac918;--color-special:#6690ff;--color-neutral-10:#f2f2f2;--color-neutral-20:#e6e6e6;--color-neutral-30:#ccc;--color-neutral-40:#aaa;--color-neutral-50:#8d8d8d;--color-neutral-60:#777;--color-neutral-70:#444;--color-neutral-90:#404852;--color-white:#fff;--color-black:#000;--color-success:#5ed0bc;--color-warning:#fac918;--color-error:#f25f5b;--color-info:#404852;--color-malibu:linear-gradient(50.24deg,#135 -146.43%,#557ede -0.68%,#6690ff 75.97%)}html[data-theme=dark]{--color-primary:#5aa4f5;--color-secondary:#5ed0bc;--color-premium:#fac918;--color-special:#6690ff;--color-neutral-10:#f2f2f2;--color-neutral-20:#e6e6e6;--color-neutral-30:#ccc;--color-neutral-40:#aaa;--color-neutral-50:#8d8d8d;--color-neutral-60:#777;--color-neutral-70:#444;--color-neutral-90:#404852;--color-white:#222;--color-black:#ddd;--color-success:#5ed0bc;--color-warning:#fac918;--color-error:#f25f5b;--color-info:#404852;--color-malibu:linear-gradient(135deg,#51beff,#6690ff)}.color--primary{color:var(--color-primary)}.background-color--primary{background-color:var(--color-primary)}.border-color--primary{border-color:var(--color-primary)}.color--secondary{color:var(--color-secondary)}.background-color--secondary{background-color:var(--color-secondary)}.border-color--secondary{border-color:var(--color-secondary)}.color--premium{color:var(--color-premium)}.background-color--premium{background-color:var(--color-premium)}.border-color--premium{border-color:var(--color-premium)}.color--special{color:var(--color-special)}.background-color--special{background-color:var(--color-special)}.border-color--special{border-color:var(--color-special)}.color--neutral-10{color:var(--color-neutral-10)}.background-color--neutral-10{background-color:var(--color-neutral-10)}.border-color--neutral-10{border-color:var(--color-neutral-10)}.color--neutral-20{color:var(--color-neutral-20)}.background-color--neutral-20{background-color:var(--color-neutral-20)}.border-color--neutral-20{border-color:var(--color-neutral-20)}.color--neutral-30{color:var(--color-neutral-30)}.background-color--neutral-30{background-color:var(--color-neutral-30)}.border-color--neutral-30{border-color:var(--color-neutral-30)}.color--neutral-40{color:var(--color-neutral-40)}.background-color--neutral-40{background-color:var(--color-neutral-40)}.border-color--neutral-40{border-color:var(--color-neutral-40)}.color--neutral-50{color:var(--color-neutral-50)}.background-color--neutral-50{background-color:var(--color-neutral-50)}.border-color--neutral-50{border-color:var(--color-neutral-50)}.color--neutral-60{color:var(--color-neutral-60)}.background-color--neutral-60{background-color:var(--color-neutral-60)}.border-color--neutral-60{border-color:var(--color-neutral-60)}.color--neutral-70{color:var(--color-neutral-70)}.background-color--neutral-70{background-color:var(--color-neutral-70)}.border-color--neutral-70{border-color:var(--color-neutral-70)}.color--neutral-90{color:var(--color-neutral-90)}.background-color--neutral-90{background-color:var(--color-neutral-90)}.border-color--neutral-90{border-color:var(--color-neutral-90)}.color--white{color:var(--color-white)}.background-color--white{background-color:var(--color-white)}.border-color--white{border-color:var(--color-white)}.color--black{color:var(--color-black)}.background-color--black{background-color:var(--color-black)}.border-color--black{border-color:var(--color-black)}.color--success{color:var(--color-success)}.background-color--success{background-color:var(--color-success)}.border-color--success{border-color:var(--color-success)}.color--warning{color:var(--color-warning)}.background-color--warning{background-color:var(--color-warning)}.border-color--warning{border-color:var(--color-warning)}.color--error{color:var(--color-error)}.background-color--error{background-color:var(--color-error)}.border-color--error{border-color:var(--color-error)}.color--info{color:var(--color-info)}.background-color--info{background-color:var(--color-info)}.border-color--info{border-color:var(--color-info)}.background-color--malibu{background:var(--color-malibu)}*{box-sizing:border-box;font-family:Nunito Sans,sans-serif;margin:0;outline:none;padding:0}body{background-color:var(--color-white)}@keyframes react-loading-skeleton{to{transform:translateX(100%)}}.react-loading-skeleton{--base-color:#ebebeb;--highlight-color:#f5f5f5;--animation-duration:1.5s;--animation-direction:normal;--pseudo-element-display:block;background-color:var(--base-color);border-radius:.25rem;display:inline-flex;line-height:1;overflow:hidden;position:relative;width:100%;z-index:1}.react-loading-skeleton:after{animation-direction:var(--animation-direction);animation-duration:var(--animation-duration);animation-iteration-count:infinite;animation-name:react-loading-skeleton;animation-timing-function:ease-in-out;background-image:linear-gradient(90deg,var(--base-color),var(--highlight-color),var(--base-color));background-repeat:no-repeat;content:\" \";display:var(--pseudo-element-display);height:100%;left:0;position:absolute;right:0;top:0;transform:translateX(-100%)}.myinterview-button{border:none;border-radius:10px;cursor:pointer;font-weight:700;height:45px;letter-spacing:1px}.myinterview-button:disabled{cursor:unset;opacity:.6;pointer-events:none}.myinterview-button--small{font-size:10px;height:35px;min-width:100px;padding:0 20px}.myinterview-button--medium{font-size:12px;height:45px;min-width:150px;padding:0 30px}.myinterview-button--large{font-size:16px;height:65px;min-width:180px;padding:0 45px}.dropdown{align-items:center;cursor:pointer;display:flex;font-size:14px;justify-content:space-between;padding:15px;white-space:nowrap}.dropdown--standalone{border:.5px solid var(--color-neutral-30);border-radius:10px;border-width:.5px!important;height:50px;position:relative}.dropdown--with-icon{padding-left:10px}.dropdown--with-icon svg{height:22px}.dropdown--with-icon .dropdown__selected-item,.dropdown--with-icon .dropdown__selected-item--placeholder{padding-left:8px}.dropdown--opened{border-radius:10px 10px 0 0;box-shadow:0 0 10px -2px #0000001a}.dropdown--opened .dropdown__options{box-shadow:0 0 10px -2px #0000001a;visibility:visible}.dropdown--opened .dropdown__arrow-wrapper{transform:rotate(-180deg)}.dropdown--upside.dropdown--opened{border-radius:0 0 4px 4px;border-top:0}.dropdown--upside .dropdown__options{border-bottom:0;border-radius:10px 10px 0 0;border-top:.5px solid var(--color-neutral-30);bottom:auto;top:0;transform:translateY(-100%)}.dropdown__selected-item{flex:1;overflow:hidden;text-overflow:ellipsis}.dropdown__selected-item::selection{background-color:initial}.dropdown__selected-item--placeholder{opacity:.5}.dropdown__input{border:0;border-radius:10px;height:100%;left:0;opacity:0;padding:15px 30px 15px 15px;pointer-events:none;position:absolute;top:0;width:100%;z-index:0}.dropdown__input--searchable:focus{opacity:1}.dropdown__input--searchable:focus+.dropdown__selected-item{opacity:0!important}.dropdown__arrow-wrapper,.dropdown__clear-wrapper{align-items:center;display:flex;flex-shrink:0;justify-content:center;margin-left:5px;transition:.2s;width:1em}.dropdown__options{background-color:var(--color-white);border:.5px solid var(--color-neutral-30);border-radius:0 0 4px 4px;border-top:0;bottom:0;left:-.75px;list-style:none;margin:0;max-height:0;overflow:auto;padding:0;position:absolute;transform:translateY(100%);visibility:hidden;width:calc(100% + 1.25px)}.dropdown__item{cursor:pointer;max-width:100%;overflow:hidden;padding:15px;text-overflow:ellipsis}.dropdown__item:not(:last-child){border-bottom:.5px solid var(--color-neutral-30)}.dropdown__item--highlighted,.dropdown__item:hover{background-color:var(--color-primary);color:var(--color-white)}.dropdown__item span{margin-right:5px}.tag{background-color:#dde8f6;border-radius:3px;color:#4a90e2;display:inline-block;font-size:13px;font-weight:500;letter-spacing:.5px;margin:5px 8px 5px 0;padding:4px 11px;text-transform:capitalize}.myinterview-text--XS{font-size:12px;line-height:20px}.myinterview-text--S{font-size:14px;line-height:22px}.myinterview-text--M{font-size:16px;line-height:24px}.myinterview-text--L{font-size:18px;line-height:26px}.myinterview-text--H3{font-size:20px;line-height:28px}.myinterview-text--H2{font-size:24px;line-height:32px}.myinterview-text--H1{font-size:30px;line-height:38px}.myinterview-text--D3{font-size:38px;line-height:46px}.myinterview-text--D2{font-size:48px;line-height:54px}.myinterview-text--D1{font-size:56px;line-height:64px}.myinterview-text--regular{font-weight:400}.myinterview-text--semibold{font-weight:600}.myinterview-text--bold{font-weight:700}.myinterview-text--italic{font-style:italic}.myinterview-text--truncated{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toggle-switch{align-items:center;border-radius:99999px;cursor:pointer;display:flex;position:relative;transition:.2s}.toggle-switch__indicator{border-radius:50%;height:.65em;left:10%;position:absolute;transition:.2s;width:.65em}.toggle-switch__indicator--active{left:90%;transform:translateX(-100%)}.toggle-switch:active .toggle-switch__indicator{height:.5em;width:.5em}.toggle-text{align-items:center;cursor:pointer;display:flex;justify-content:center;width:fit-content}.toggle-text__arrow-wrapepr{align-items:center;display:flex;margin-left:5px;transition:.25s ease-in-out;width:1em}.toggle-text__arrow-wrapepr--opened{transform:rotate(-180deg)}.progress{align-items:center;border-radius:50%;display:flex;height:1em;justify-content:center;width:1em}.progress__fill{border-radius:50%;height:.7em;width:.7em}.input-text{display:flex;flex-direction:column;flex-grow:1}.input-text__field{border:.5px solid var(--color-neutral-30);border-radius:10px;font-size:14px;padding:14px 16px;width:100%}.input-text__field--with-icon{padding:14px 43px!important}.input-text__icon-container{margin:10px 12px;position:absolute}.input-text__icon-container i{vertical-align:-webkit-baseline-middle}.input-text__icon-container i svg{height:22px;width:22px}.input-text--error{border:1px solid var(--color-error)}.input-text__error-msg{color:var(--color-error);margin-top:3px}.dnd-wrapper{border:1px solid var(--color-neutral-30);border-radius:10px;height:50px;max-width:500px;padding:7px 10px;position:relative;transition:.3s ease-in-out;width:100%}.dnd-wrapper__placeholder{color:var(--color-neutral-50);font-size:14px;margin-left:5px}.dnd-wrapper__left-hand{align-items:flex-end;display:flex}.dnd-wrapper--scale{transform:scale(1.1)}.dnd-wrapper--border-solid{border:.5px solid var(--color-neutral-30)}.dnd-wrapper__label{align-items:center;display:flex;font-size:14px;height:100%;justify-content:center}.dnd-wrapper__label svg{height:16px;vertical-align:middle;width:16px}.dnd-wrapper__label--with-icon{justify-content:space-between}.dnd-wrapper__label--with-icon i{color:var(--color-neutral-60)}.dnd-wrapper__label--uploaded,.dnd-wrapper__label--uploading{justify-content:flex-start}.dnd-wrapper__label .progress{height:18px;margin-right:5px;width:18px}.dnd-wrapper__icon{align-items:center;display:flex}.dnd-wrapper__icon--clip{font-size:18px;transform:rotate(10deg) rotateX(180deg)}.dnd-wrapper__icon--close{cursor:pointer;margin-left:auto;z-index:10}.dnd-wrapper__text{margin-left:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dnd-wrapper__input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.dnd-wrapper__input:disabled{cursor:auto}.myinterview-modal-wrapper{border-radius:4px;box-shadow:0 4px 6px -1px #00000014,0 2px 4px -1px #0000000f;left:50%;max-height:90vh;max-width:90vw;overflow:auto;position:fixed;top:50%;transform:translate(-50%,-50%);z-index:30}.myinterview-modal-wrapper--fullscreen{border-radius:0;box-shadow:none;height:100vh;left:0;max-height:100vh;max-width:100vw;padding:0;top:0;transform:none;width:100vw}.myinterview-modal-wrapper__box{height:100%;max-height:100%;max-width:100%;overflow:auto;width:100%}.myinterview-modal-wrapper__close-btn{cursor:pointer;height:16px;position:absolute;right:20px;top:20px;width:16px}.myinterview-modal-wrapper-background{background-color:#0000001a;height:100vh;left:0;position:fixed;top:0;width:100vw}.phone-number{border:.5px solid var(--color-neutral-30);border-radius:10px;display:flex;position:relative}.phone-number--opened{border-radius:10px 10px 0 0!important}.phone-number--opened--up{border-radius:0 0 10px 10px!important}.phone-number .dropdown{border-right:.5px solid var(--color-neutral-20);padding:0 15px;width:75px}.phone-number .dropdown__selected-item{font-size:16px}.phone-number .input-text{border:0;flex:1}.myinterview-logo-wrapper{max-height:400px}.myinterview-checkbox{align-items:center;border-radius:4px;border-style:solid;border-width:1px;display:flex;flex-shrink:0;justify-content:center;position:relative;transition:all .15s ease-out}.myinterview-checkbox__input{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:1}.myinterview-checkbox__checkmark{border-radius:50%;display:flex;height:100%;padding:2px;transform:scale(0);transition:.15s ease-out;width:100%}.myinterview-checkbox__checkmark--checked{border-radius:0;transform:scale(1)}.myinterview-checkbox__checkmark svg{height:100%;width:100%}.myinterview-widget-no-select{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.myinterview-widget-scroll-indicator::-webkit-scrollbar{display:initial!important;width:5px}.myinterview-widget-scroll-indicator::-webkit-scrollbar-thumb{background:var(--color-neutral-40)}@keyframes fade-in{0%{opacity:0}}:host{--myinterview-widget-dynamic-overflow:auto;--myitnerview-widget-background-height:calc(40vh - 100px);--myinterview-widget-background-preview-display:none;--myinterview-widget-video-aspect-ratio:0.75;--myinterview-widget-camera-transform:translateZ(0) rotateY(180deg);--myinterview-widget-outer-width:530px;--myinterview-widget-recorder-border-radius:10px;--myinterview-widget-preview-video-border-radius:20px;--myinterview-background-opacity:0}@media (min-width:1200px){:host{--myinterview-widget-recorder-border-radius:20px;--myinterview-widget-preview-video-border-radius:10px}}.myinterview-widget{word-wrap:normal;--myinterview-widget-layout-top:0;--myinterview-widget-layout-right:0;--myinterview-widget-layout-bottom:0;--myinterview-widget-layout-left:0;border-collapse:initial;border-spacing:0;caption-side:top;cursor:auto;direction:ltr;empty-cells:show;font-size:1rem;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:400;letter-spacing:normal;line-height:normal;list-style-image:none;list-style-position:outside;list-style-type:disc;orphans:2;quotes:initial;tab-size:8;text-align:initial;text-align-last:auto;text-decoration-color:initial;text-indent:0;text-justify:auto;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;widows:2;word-break:normal;word-spacing:normal}.myinterview-widget *,.myinterview-widget :after,.myinterview-widget :before{box-sizing:border-box;font-family:Nunito Sans,sans-serif;margin:0}.myinterview-widget__layout{background-color:var(--color-white);border-radius:0;bottom:0;left:0;padding:20px 20px 0;position:fixed;right:0;top:0;transform:translateZ(0);-webkit-transform:translateZ(0);z-index:2147483000}.myinterview-widget__layout--animated{animation:myinterview-widget-open .4s ease-out;-webkit-animation:myinterview-widget-open .4s ease-out;-moz-animation:myinterview-widget-open .4s ease-out;-o-animation:myinterview-widget-open .4s ease-out}.myinterview-widget__layout--minimized{animation:myinterview-widget-minimize .5s ease-in-out forwards;-webkit-animation:myinterview-widget-minimize .5s ease-in-out forwards;-moz-animation:myinterview-widget-minimize .5s ease-in-out forwards;-o-animation:myinterview-widget-minimize .5s ease-in-out forwards;overflow:hidden}.myinterview-widget__layout--minimized>*{opacity:0;transition:opacity .2s ease-out}@media (min-width:480px){.myinterview-widget__layout{display:grid;grid-template-columns:minmax(20px,1fr) minmax(auto,480px) minmax(20px,1fr);padding:20px 0 0}.myinterview-widget__layout>*{grid-column:2}.myinterview-widget__layout>.full{grid-column:1/-1;padding:0}}@media (min-width:1200px){.myinterview-widget__layout{grid-template-columns:10px 1fr 10px;padding:50px 0}}@keyframes myinterview-widget-open{0%{background-color:var(--color-primary);border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;overflow:hidden;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top)}50%{background-color:var(--color-white)}}@keyframes myinterview-widget-minimize{90%{border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;opacity:1;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top);z-index:2147483000}99%{opacity:0}to{background-color:var(--color-primary);border-radius:10px;bottom:var(--myinterview-widget-layout-bottom);left:var(--myinterview-widget-layout-left);min-height:45px;opacity:0;padding:0;right:var(--myinterview-widget-layout-right);top:var(--myinterview-widget-layout-top);z-index:-1}}.myinterview-widget-icons__play-button{cursor:pointer;position:relative}.myinterview-widget-icons__play-button svg{color:var(--color-primary)}.myinterview-widget-icons__play-button svg path{transition:d .4s ease-out;-webkit-transition:d .4s}.myinterview-widget-icons__play-button svg rect{transition:rx .4s;-webkit-transition:rx .4s}.myinterview-widget-icons__loading{background-color:currentColor;border-radius:50%;height:38px;overflow:hidden;position:relative;transform:translateZ(0);width:38px}.myinterview-widget-icons__loading:after{animation:slide 1s infinite;background:linear-gradient(to right,currentColor,var(--color-neutral-10),currentColor);content:\"\";height:100%;left:-50px;position:absolute;width:100%}.myinterview-widget-icons__no-camera-mic{align-items:center;background-color:#eff6fe;border-radius:50%;display:flex;height:80px;justify-content:center;position:relative;width:80px}.myinterview-widget-icons__no-camera-mic__camera,.myinterview-widget-icons__no-camera-mic__mic{align-items:center;border-radius:4px;display:flex;height:28px;justify-content:center;position:absolute;width:28px}.myinterview-widget-icons__no-camera-mic__camera svg,.myinterview-widget-icons__no-camera-mic__mic svg{height:20px;width:20px}.myinterview-widget-icons__no-camera-mic__camera{background-color:var(--color-primary);color:var(--color-white);transform:translate(-35%,-35%)}.myinterview-widget-icons__no-camera-mic__mic{background-color:var(--color-white);color:var(--color-primary);transform:translate(35%,35%)}.myinterview-widget__wrapper{-ms-overflow-style:none;display:flex;flex-direction:column;height:100%;max-height:100%;overflow:hidden;position:relative;scrollbar-width:none}.myinterview-widget__wrapper ::-webkit-scrollbar,.myinterview-widget__wrapper::-webkit-scrollbar{display:none}.myinterview-widget__wrapper--hide-header .myinterview-widget-header{visibility:hidden}.myinterview-widget__background{background:linear-gradient(50.24deg,var(--color-primary) 0,var(--color-special) 75%);height:var(--myitnerview-widget-background-height);left:0;opacity:var(--myinterview-background-opacity);overflow:hidden;position:absolute;top:0;transition:opacity .5s;width:100%}.myinterview-widget__background:before{border:6vh solid hsla(0,0%,100%,.267);border-radius:50%;content:\"\";height:30vh;position:absolute;right:0;top:0;transform:translate(50%,-50%);width:30vh}.myinterview-widget__background:after{background-color:var(--color-white);border-radius:20px 20px 0 0;bottom:0;content:\"\";display:var(--myinterview-widget-background-preview-display);height:20px;position:absolute;width:100%}@media (min-width:1200px){.myinterview-widget__background:after{display:none}.myinterview-widget__background{height:100vh;left:auto;right:0;width:calc(100% - var(--myinterview-widget-outer-width))}.myinterview-widget__background:before{border:12vh solid hsla(0,0%,100%,.267);height:70vh;width:70vh}}.myinterview-widget__watermark{display:none}@media (min-width:1200px){.myinterview-widget__watermark{bottom:20px;display:flex;height:64px;left:20px;position:absolute}}.myinterview-widget__background-dots{display:none}@media (min-width:1200px){.myinterview-widget__background-dots{background-image:radial-gradient(hsla(0,0%,100%,.467) 15%,#0000 0);background-position:0 0,50px 50px;background-size:20px 20px;bottom:0;display:flex;height:200px;position:absolute;right:0;width:200px}}.myinterview-widget__views{--myinterview-widget-views-margin-top:0px;--myinterview-widget-practice-opacity:1;-webkit-overflow-scrolling:touch;color:var(--color-primary);display:flex;flex:1;flex-direction:column;height:100%;overflow-y:var(--myinterview-widget-dynamic-overflow);scroll-snap-type:y mandatory;z-index:20}.myinterview-widget__views--uploading{gap:0;justify-content:center;margin-bottom:30px}@media (min-width:1200px){.myinterview-widget__views{align-items:start;flex:initial;flex:1;flex-direction:row-reverse;gap:0;justify-content:flex-end;overflow:hidden;padding:0;scroll-snap-type:none}.myinterview-widget__views--uploading{margin-bottom:0}}.myinterview-widget__views--rtl .myinterview-widget--rtl-support{direction:rtl}.myinterview-widget-recording-action-button{margin-bottom:20px;min-height:45px;position:relative;scroll-snap-align:end;z-index:1}@media (min-width:1200px){.myinterview-widget-recording-action-button{display:none}}.myinterview-widget-recording-action-button--video-question:disabled{display:none!important}.myinterview-widget-recording-action-button--stop-recording{border:1px solid var(--color-neutral-40)!important}@media (min-width:1200px){.myinterview-widget-recording-action-button--stop-recording{border:none!important}}.myinterview-widget-rotate-screen{align-items:center;animation:fade-in .3s;background-color:var(--color-white);display:none;height:100%;justify-content:center;left:0;padding:20px!important;position:absolute;top:0;width:100%;z-index:400}.myinterview-widget-rotate-screen svg{flex:0;margin-right:40px;min-width:120px}@media screen and (orientation:landscape){.myinterview-widget-rotate-screen{display:flex}}.myinterview-widget-unsupported-modal{align-items:center;background-color:var(--color-white);display:flex;height:100%;justify-content:center;left:0;padding:20px;position:absolute;top:0;width:100%;z-index:400}.myinterview-widget-unsupported-modal__message{text-align:center}.myinterview-widget-minimize{color:var(--color-white);cursor:pointer;display:none;height:20px;position:fixed;right:30px;top:30px;width:20px;z-index:50}@media (min-width:1024px){.myinterview-widget-minimize{display:flex}}.myinterview-widget-header{display:flex;flex-wrap:wrap;gap:18px;height:fit-content;margin:0 0 20px;max-height:112px;max-width:100%;overflow:hidden;transition:all .2s}.myinterview-widget-header--hidden{height:0;margin:0;overflow:hidden}@media (min-width:1200px){.myinterview-widget-header--hidden{height:fit-content;margin:0 0 20px}}.myinterview-widget-header__logo{height:48px}.myinterview-widget-header__logo img{flex-shrink:1;max-height:100%;max-width:100%;object-fit:contain;overflow:hidden}.myinterview-widget-header__details-wrapper{display:flex;flex-direction:column;flex-shrink:0;justify-content:center;letter-spacing:.2px;max-width:100%;min-width:60%;overflow:hidden}@media (min-width:1200px){.myinterview-widget-header{display:none;max-width:var(--myinterview-widget-outer-width);overflow:visible;padding-left:20px}.myinterview-widget-header__company-name{color:var(--color-neutral-50)}.myinterview-widget-header__job-title{color:var(--color-neutral-90)}}.myinterview-widget-header--desktop-layout{display:none}@media (min-width:1200px){.myinterview-widget-header--desktop-layout{display:flex;min-height:48px}}.myinterview-widget-inner{align-items:center;display:flex;flex-direction:column;margin-bottom:20px;min-height:min((100vw - 40px) * 1/var(--myinterview-widget-video-aspect-ratio),480px * 1/var(--myinterview-widget-video-aspect-ratio));position:relative;scroll-snap-align:start;z-index:1}.myinterview-widget-inner--no-snap{scroll-snap-align:none}@media (min-width:1200px){.myinterview-widget-inner{background-color:var(--color-white);border-radius:var(--myinterview-widget-recorder-border-radius);box-shadow:0 4px 14px -2px #00000026;height:calc((100vw - 20px - var(--myinterview-widget-outer-width))*9/16);margin:auto;max-height:440px;max-width:782.2222222222px;min-height:auto;overflow:hidden;width:100%}}.myinterview-widget-inner--hidden{max-height:0;min-height:0;overflow:hidden;visibility:hidden}.myinterview-widget-inner--welcome-hidden{aspect-ratio:16/9;visibility:hidden;width:100%}.myinterview-widget-inner__content{max-height:100%;max-width:fit-content;min-height:200px;min-width:200px;position:sticky;top:0;width:calc(100% - var(--myinterview-widget-views-margin-top)*var(--myinterview-widget-video-aspect-ratio))}.myinterview-widget-inner__content--full-width{min-width:100%}@media (min-width:1200px){.myinterview-widget-inner__content{border-radius:var(--myinterview-widget-recorder-border-radius);height:100%;max-width:100%;position:static;width:100%}}.myinterview-widget-inner__content--error{display:flex;flex:1;flex-direction:column;height:calc(100% - var(--myinterview-widget-views-margin-top));max-width:100%;min-height:fit-content;width:100%}.myinterview-widget-inner .myinterview-widget-explanation{align-items:center;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);display:flex;flex-direction:column;height:100%;justify-content:center;padding:20px;position:absolute;text-align:center;white-space:pre-line;width:100%;z-index:1}.myinterview-widget-inner .myinterview-widget-explanation__main{margin-bottom:10px}.myinterview-widget-inner .myinterview-widget-recording-action-button{display:none}@media (min-width:1200px){.myinterview-widget-inner .myinterview-widget-recording-action-button{bottom:20px;display:block;left:50%;margin:0;position:absolute;transform:translate(-50%);white-space:nowrap;width:fit-content;z-index:20}}.myinterview-widget-inner--video-question-state,.myinterview-widget-inner--welcome-page-state{min-height:fit-content;min-width:100%}@media (min-width:1200px){.myinterview-widget-inner--video-question-state,.myinterview-widget-inner--welcome-page-state{min-width:auto}.myinterview-widget-inner--video-question-state .myinterview-widget-recording-action-button,.myinterview-widget-inner--welcome-page-state .myinterview-widget-recording-action-button{bottom:70px}}.myinterview-widget-inner--full{flex:1;scroll-snap-align:none}.myinterview-widget-inner--full .myinterview-widget-inner__content{flex:1;height:max-content;max-width:100%;width:100%}@media (min-width:1200px){.myinterview-widget-inner--full{flex:auto}}.myinterview-widget-outer{border-radius:10px;display:flex;flex-direction:column;padding-bottom:20px;scroll-snap-align:end}.myinterview-widget-outer--no-snap{scroll-snap-align:none}.myinterview-widget-outer--hidden{display:none}.myinterview-widget-outer--uploading{flex:0;padding:0}@media (min-width:1200px){.myinterview-widget-outer{background-color:initial;flex:none;height:100%;padding:0 20px 0 0!important;width:var(--myinterview-widget-outer-width)}.myinterview-widget-outer>*{padding:0 20px}.myinterview-widget-outer--hidden{display:flex}.myinterview-widget-outer--uploading{padding:0}}.myinterview-widget-outer .myinterview-widget-question{background-color:#fffffff2;border-radius:10px;margin:0 auto;transition:opacity .25s;width:100%}@media (min-width:1200px){.myinterview-widget-outer .myinterview-widget-question{padding:50px 20px 0}.myinterview-widget-outer .myinterview-widget-question__question{font-size:26px;line-height:36px}}.myinterview-widget-outer--hide-question .myinterview-widget-question{height:0;opacity:0;visibility:hidden}.myinterview-widget-outer__setup{display:flex;flex:1;flex-direction:column}.myinterview-widget-outer__title{margin-bottom:15px}.myinterview-widget-outer__mode-wrapper{background-color:var(--color-white);bottom:0;display:flex;justify-content:space-around;margin-top:15px;padding:10px 0;position:sticky}.myinterview-widget-outer__mode-wrapper:before{background-color:var(--color-white);content:\"\";height:40px;left:0;mask-image:linear-gradient(#0000,var(--color-black));-webkit-mask-image:linear-gradient(#0000,var(--color-black));mask-mode:alpha;position:absolute;top:0;transform:translateY(-100%);width:100%}@media (min-width:1200px){.myinterview-widget-outer__mode-wrapper{background-color:initial;flex-direction:column;justify-content:flex-start;padding:0;position:static;width:65%}.myinterview-widget-outer__mode-wrapper:after,.myinterview-widget-outer__mode-wrapper:before{display:none}}.myinterview-widget-outer__mode-button{letter-spacing:.5px;max-width:42%!important;min-width:100px!important;padding:0 15px!important;width:150px!important}.myinterview-widget-outer__mode-button--start{border:1px solid!important}.myinterview-widget-outer__mode-button--single{background-color:var(--color-special);color:var(--color-white);max-width:100%!important;width:100%!important}@media (min-width:1200px){.myinterview-widget-outer__mode-button{max-width:100%!important;min-width:150px!important;width:100%!important}.myinterview-widget-outer__mode-button:first-child{margin-bottom:20px}}.myinterview-widget-outer__practice-mode-info{margin-bottom:20px}.myinterview-widget-outer .myinterview-widget__countdown-mobile{display:none}.myinterview-widget-video-camera{border-radius:var(--myinterview-widget-recorder-border-radius);display:flex;flex:1;flex-direction:column;max-height:100%;position:relative;width:100%}@media (min-width:1200px){.myinterview-widget-video-camera{transform:translateZ(0) scale(1.005)}}.myinterview-widget-video-camera--hidden{display:none}.myinterview-widget-video-camera video{border-radius:var(--myinterview-widget-recorder-border-radius);object-fit:contain;overflow:hidden;transform:var(--myinterview-widget-camera-transform);-webkit-transform:var(--myinterview-widget-camera-transform);width:100%}.myinterview-widget-video-camera__recording-counter-wrapper{left:10px;position:absolute;top:10px;width:100px;z-index:2}@media (min-width:1200px){.myinterview-widget-video-camera__recording-counter-wrapper{left:25px;top:25px}}.myinterview-widget-video-camera__permissions{align-items:center;animation:fade-in .5s;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);color:var(--color-neutral-90);display:flex;height:100%;justify-content:center;padding:20px;position:absolute;width:100%;z-index:21}.myinterview-widget-video-camera__permissions-close{cursor:pointer;left:25px;position:absolute;top:25px;width:20px}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator{align-items:center;background-color:var(--color-primary);border-radius:50%;bottom:18px;color:var(--color-white);display:flex;height:40px;isolation:isolate;justify-content:center;left:18px;padding:10px;position:absolute;width:40px}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator--hidden{visibility:hidden}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__microphone-indicator{bottom:25px;left:auto;right:25px}}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator:after{background:radial-gradient(#0000 40%,var(--color-primary) 90%);border-radius:50%;content:\"\";height:100%;position:absolute;transform:scale(var(--myinterview-widget-voice-level));transform-origin:center;width:100%;will-change:transform;z-index:-1}.myinterview-widget-video-camera .myinterview-widget__microphone-indicator svg{height:100%;width:100%}.myinterview-widget-video-camera .myinterview-widget__practice-mode{opacity:var(--myinterview-widget-practice-opacity);position:absolute;right:10px;top:10px;transition:opacity .3s}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__practice-mode{opacity:1;right:25px;top:25px}}.myinterview-widget-video-camera .myinterview-widget__question-number{left:15px;top:15px;z-index:1}@media (min-width:1200px){.myinterview-widget-video-camera .myinterview-widget__question-number{left:40px;letter-spacing:.5px;top:30px}}.myinterview-widget-video-camera .myinterview-widget__countdown-desktop{display:none}.myinterview-widget-video-camera__watermark{height:50px;left:15px;opacity:.5;position:absolute;top:15px;width:120px}@media (min-width:1200px){.myinterview-widget-video-camera__watermark{left:25px;top:25px}}.myinterview-widget-recorder-modal{align-items:center;animation:fade-in .5s;background-color:#fffffff2;border-radius:var(--myinterview-widget-recorder-border-radius);bottom:0;color:var(--color-neutral-90);display:flex;filter:drop-shadow(0 0 0 rgba(0,0,0,.2));justify-content:center;left:0;min-height:100%;overflow:hidden;position:absolute;right:0;text-align:center;top:0;z-index:20}.myinterview-widget-recorder-modal__content-wrapper{align-items:center;display:flex;flex-direction:column;gap:5px;letter-spacing:.5px;max-width:80%}@media (min-width:1200px){.myinterview-widget-recorder-modal__content-wrapper{max-width:700px;padding:20px}}.myinterview-widget-recorder-modal__question{max-width:100%;overflow:hidden;overflow-wrap:break-word;text-align:left}@media (min-width:1200px){.myinterview-widget-recorder-modal__question{text-align:center}.myinterview-widget-recorder-modal__question .myinterview-widget__question-duration{justify-content:center}}.myinterview-widget-checks{display:flex;flex-direction:column}.myinterview-widget-checks__item{align-items:center;display:flex;gap:20px;margin-bottom:20px}.myinterview-widget-checks__icon{align-items:center;display:flex;height:100%;justify-content:center;width:40px}.myinterview-widget-checks__text-wrapper{display:flex;flex-direction:column}.myinterview-widget-checks__retry{background-color:initial;border:0;cursor:pointer;margin-left:10px;text-decoration:underline}.myinterview-widget-preview__container{background-color:var(--color-white);display:flex;flex-direction:column;min-height:100%;padding-top:20px;position:relative;width:100%}@media (min-width:1200px){.myinterview-widget-preview__container{border-radius:20px;max-height:100%;padding:4%}}.myinterview-widget-preview__container .myinterview-widget__question-number{margin-bottom:20px;position:relative}@media (min-width:1200px){.myinterview-widget-preview__container .myinterview-widget__question-number{color:var(--color-neutral-90);margin:0;position:absolute}}.myinterview-widget-preview__container .myinterview-widget-errors{animation:fade-in .3s;background-color:var(--color-white);bottom:0;left:0;padding:20px;position:absolute;right:0;text-align:center;top:0;transform:translateZ(150px);-webkit-transform:translateZ(150px);z-index:150}.myinterview-widget-preview__title{margin-bottom:30px;text-align:center}@media (min-width:1200px){.myinterview-widget-preview__title{color:var(--color-neutral-90);margin-bottom:12px}}.myinterview-widget-preview__background{animation:background-fade-in .3s ease-out;background-color:#000000e6;height:100%;isolation:isolate;left:0;position:fixed;top:0;transform:translateZ(150px);width:100%;z-index:150}@keyframes background-fade-in{0%{background-color:#0000;transform:translateZ(-2px);z-index:-2}}.myinterview-widget-preview__close{background-color:var(--color-neutral-60);border-radius:2.5rem;bottom:1vh;left:50%;padding:3px 8px;position:absolute;transform:translateX(-50%)}.myinterview-widget-preview__main{animation:fade-in .5s;display:flex;height:350px;margin:auto;position:relative;touch-action:pan-y;width:100%;z-index:1}.myinterview-widget-preview__main--hide-overflow{overflow:hidden}.myinterview-widget-preview__items-wrapper{--myinterview-widget-preview-transform-x:0;--myinterview-widget-preview-item-transition:0ms;--myinterview-widget-item-width:100%;box-sizing:initial;display:flex;margin-bottom:10px;position:relative;transition-duration:0ms;transition-property:transform;width:100%;z-index:2}.myinterview-widget-preview__items-wrapper--centered{justify-content:center}.myinterview-widget-preview__item{display:flex;flex-direction:column;flex-shrink:0;height:100%;justify-content:center;padding:2%;position:relative;transition:transform var(--myinterview-widget-preview-item-transition);width:var(--myinterview-widget-item-width);z-index:1}.myinterview-widget-preview__item--current{z-index:2}.myinterview-widget-preview__item--single-take{width:50%}.myinterview-widget-preview__video-wrapper{border:0 solid var(--color-primary);border-radius:var(--myinterview-widget-preview-video-border-radius);display:flex;margin:0 auto;opacity:1;overflow:hidden;position:relative;transition-delay:.29s;z-index:3}.myinterview-widget-preview__video-wrapper--mobile{aspect-ratio:var(--myinterview-widget-video-aspect-ratio);height:100%}@media (min-width:1200px){.myinterview-widget-preview__video-wrapper{border-radius:var(--myinterview-widget-preview-video-border-radius);margin:0}}.myinterview-widget-preview__video-wrapper:before{background-color:rgba(0,0,0,.267);border-radius:var(--myinterview-widget-preview-video-border-radius);content:\"\";height:100%;left:0;pointer-events:none;position:absolute;top:0;transform:translateZ(1px);transition:background-color .3s;width:100%;z-index:1}.myinterview-widget-preview__video-wrapper--current:before,.myinterview-widget-preview__video-wrapper--preview:before,.myinterview-widget-preview__video-wrapper:hover:before{background-color:#0000;pointer-events:none}.myinterview-widget-preview__video-wrapper--preview-mobile{opacity:0}.myinterview-widget-preview__video-wrapper:after{border:0 solid var(--color-primary);border-radius:var(--myinterview-widget-preview-video-border-radius);content:\"\";height:100%;pointer-events:none;position:absolute;transition:.15s;width:100%}@media (min-width:1200px){.myinterview-widget-preview__video-wrapper:after{border-radius:var(--myinterview-widget-preview-video-border-radius)}}.myinterview-widget-preview__video-wrapper--selected:before{background-color:#0000;z-index:-1}.myinterview-widget-preview__video-wrapper--selected:after{border:3px solid var(--color-primary)}.myinterview-widget-preview__video{cursor:pointer;transform:translateZ(0);-webkit-transform:translateZ(0);width:100%}.myinterview-widget-preview__dynamic-video{--myinterview-preview-video-top:50%;--myinterview-preview-video-left:50%;--myinterview-preview-video-width:0%;--myinterview-preview-video-height:0%;border-radius:var(--myinterview-widget-preview-video-border-radius);height:var(--myinterview-preview-video-height);left:var(--myinterview-preview-video-left);position:fixed;top:var(--myinterview-preview-video-top);transform:translateZ(-1px);transition:all .3s ease-out;transition-delay:.01s;visibility:hidden;width:var(--myinterview-preview-video-width);z-index:-1}.myinterview-widget-preview__dynamic-video--preview{border-radius:0;height:100%;left:0;max-height:70vh;top:46%;transform:translate3d(0,-50%,200px);visibility:visible;width:100%;z-index:200}.myinterview-widget-preview__number-wrapper{align-items:center;cursor:pointer;display:flex;gap:5px;margin:7px auto 0;position:relative;width:fit-content}@media (min-width:1200px){.myinterview-widget-preview__number-wrapper{margin:7px 0 0}}.myinterview-widget-preview__selected-check-mark{align-items:center;border:1px solid var(--color-neutral-60);border-radius:50%;display:flex;height:20px;justify-content:center;overflow:hidden;padding:1px;pointer-events:none;position:relative;width:20px}.myinterview-widget-preview__selected-check-mark svg{transform:scale(0);-webkit-transform:scale(0);transition:.15s ease-out}.myinterview-widget-preview__selected-check-mark--selected{border:1px solid var(--color-primary)}.myinterview-widget-preview__selected-check-mark--selected svg{transform:scale(1);-webkit-transform:scale(1)}.myinterview-widget-preview__dots-wrapper{align-items:center;display:flex;height:20px;justify-content:center;width:100%}.myinterview-widget-preview__dot{background-color:var(--color-neutral-20);border-radius:50%;cursor:pointer;height:10px;margin:0 7px;position:relative;transition:.3s ease-out;width:10px}.myinterview-widget-preview__dot--selected{background-color:var(--color-primary);cursor:auto;transform:scale(1.5);-webkit-transform:scale(1.5)}.myinterview-widget-preview__play-container{align-items:center;cursor:pointer;display:flex;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}.myinterview-widget-preview__play-button-wrapper{left:50%;top:50%;transform:translateZ(1px);transition:opacity .3s;width:60px}@media (min-width:1200px){.myinterview-widget-preview__play-button-wrapper{max-width:76px;width:25%}}.myinterview-widget-preview__horizontal-line{display:none}@media (min-width:1200px){.myinterview-widget-preview__horizontal-line{background-color:#bdbdbd;display:block;height:1px;margin:15px auto;width:50%}}.myinterview-widget-preview__preview-buttons{align-items:center;display:flex;flex-direction:column;gap:20px;margin-bottom:10px;margin-top:33px;max-width:100%}@media (min-width:1200px){.myinterview-widget-preview__preview-buttons{gap:10px;margin-bottom:0;margin-top:auto}}.myinterview-widget-preview__preview-buttons-top{display:flex;gap:10px;justify-content:space-evenly;max-width:100%;width:100%}@media (min-width:1200px){.myinterview-widget-preview__preview-buttons-top{justify-content:center;width:auto}}.myinterview-widget-preview__preview-button{max-width:45%;min-width:100px;width:150px}.myinterview-widget-preview__preview-button--retake{align-items:center;border:1px solid var(--color-neutral-30);display:flex;justify-content:center;max-width:100%}.myinterview-widget-preview__preview-button--start-interview{background-color:initial;color:var(--color-primary);font-size:13px;max-height:30px;max-width:max-content;padding:0;width:max-content}@media (min-width:1200px){.myinterview-widget-preview__preview-button{flex:1;max-height:42px;min-width:150px}}.myinterview-widget-preview__retakes-wrapper{max-width:45%;min-width:100px;text-align:center;width:150px}@media (min-width:1200px){.myinterview-widget-preview__retakes-wrapper{max-height:42px;min-width:150px}}.myinterview-widget-preview__retakes-left{color:var(--color-neutral-60)}.myinterview-widget-preview__arrow{align-items:center;animation:fade-in .3s;display:flex;height:100%;justify-content:center;min-width:40px;position:absolute;right:0;z-index:5}@media (min-width:1200px){.myinterview-widget-preview__arrow{min-width:4%;transform:translateX(75%)}.myinterview-widget-preview__arrow:before{background-color:#fff;content:\"\";height:100%;left:0;mask-image:linear-gradient(to right,#0000,var(--color-black));-webkit-mask-image:linear-gradient(to right,#0000,var(--color-black));position:absolute;transform:translateX(5px);width:100%}}.myinterview-widget-preview__arrow--prev{left:0;right:auto;transform:translateZ(5px) rotateY(180deg)}@media (min-width:1200px){.myinterview-widget-preview__arrow--prev{transform:translate3d(-75%,0,5px) rotateY(180deg)}}.myinterview-widget-preview__arrow-icon-wrapper{align-items:center;background-color:var(--color-white);border:1px solid var(--color-neutral-30);border-radius:50%;color:var(--color-neutral-90);cursor:pointer;display:flex;height:36px;justify-content:center;position:relative;transform:translateY(-11px);width:36px}@media (min-width:1200px){.myinterview-widget-preview__arrow-icon-wrapper{box-shadow:0 4px 30px #00000026}}.myinterview-widget-video-question{aspect-ratio:16/9;background-color:var(--color-black);border-radius:var(--myinterview-widget-recorder-border-radius);height:fit-content;isolation:isolate;margin:auto;overflow:hidden;position:relative;width:100%;z-index:1}@media (min-width:1200px){.myinterview-widget-video-question{height:100%}}.myinterview-widget-video-question--hidden{position:absolute;visibility:hidden;z-index:-1}.myinterview-widget-video-question--loading{background-color:hsla(0,0%,100%,.467)}.myinterview-widget-video-question--loading:before{animation:slide 1.5s infinite;background:linear-gradient(to right,#0000,var(--color-neutral-10),#0000);content:\"\";height:100%;left:-100%;position:absolute;top:0;width:100%;z-index:-1}@media (min-width:1200px){.myinterview-widget-video-question--loading{background-color:#ccd7f5}}.myinterview-widget-video-question:after{content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.myinterview-widget-video-question--done:after{background-color:var(--color-black)}.myinterview-widget-video-question__play-button-wrapper{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);-webkit-transform:translate(-50%,-50%);transition:transform .2s ease-out,opacity .3s ease-out;width:clamp(50px,15vw,76px);z-index:1}.myinterview-widget-video-question__play-button-wrapper--hidden{opacity:0;pointer-events:none;touch-action:none;transform:translate(-50%,-50%) scale(1.3);-webkit-transform:translate(-50%,-50%) scale(1.3)}.myinterview-widget-video-question__controls{align-items:center;bottom:0;display:flex;justify-content:center;left:0;margin:10px 12px;position:absolute;right:0;transition:opacity .2s,transform .2s;z-index:1}.myinterview-widget-video-question__controls--inactive{opacity:0;pointer-events:none;touch-action:none;transform:translateY(25%)}.myinterview-widget-video-question__controls>:not(:last-child){margin-right:15px}.myinterview-widget-video-question__controls .myinterview-widget-video-question__control-play-button{min-width:40px;width:50px}.myinterview-widget-video-question__controls .myinterview-widget-video-question__control-play-button .myinterview-widget-icons svg{color:var(--color-white)}.myinterview-widget-video-question__timebar-counter-wrapper{width:100%}.myinterview-widget-video-question__counter-wrapper{-webkit-text-stroke-width:.5px;-webkit-text-stroke-color:var(--color-neutral-90);color:var(--color-white);font-size:13px;font-weight:700}.myinterview-widget-video-question__time-bar{background-color:hsla(0,0%,100%,.467);border-radius:2.5rem;cursor:pointer;height:10px;margin-bottom:5px;position:relative;width:100%}.myinterview-widget-video-question__time-bar--disabled{cursor:auto;pointer-events:none}.myinterview-widget-video-question__time-bar:before{content:\"\";height:30px;left:0;position:absolute;top:0;transform:translateY(-30%);width:100%}@media (min-width:1200px){.myinterview-widget-video-question__time-bar:before{display:none}}.myinterview-widget-video-question__time-bar-progress{background-color:var(--color-primary);border-radius:2.5rem;height:100%;position:absolute;transition:width .25s linear}.myinterview-widget-video-question__time-bar-progress:after{background-color:var(--color-primary);border-radius:50%;content:\"\";height:15px;left:100%;pointer-events:none;position:absolute;top:50%;touch-action:none;transform:translate(-50%,-50%);width:15px}.myinterview-widget-video-question__time-bar-progress--changing{transition:none}.myinterview-widget-video-question__time-bar-progress--unchangeable{cursor:auto}.myinterview-widget-video-question__time-bar-progress--unchangeable:after{display:none}.myinterview-widget-video-question__retry-button{margin-top:20px;width:100%;z-index:2}.myinterview-widget-video-question__retry-button--hidden{position:absolute;visibility:hidden;z-index:-1}@media (min-width:1200px){.myinterview-widget-video-question__retry-button{bottom:70px;left:50%;margin:0 auto;position:absolute;transform:translateX(-50%);width:fit-content}}@keyframes slide{50%{opacity:.9}to{left:100%;opacity:1}}.myinterview-widget-device{align-items:center;background-color:var(--color-white);border-radius:50%;color:var(--color-neutral-90);display:flex;height:40px;justify-content:center;position:absolute;right:18px;width:40px}.myinterview-widget-device__mobile{bottom:18px}.myinterview-widget-device__desktop{right:18px;top:18px;z-index:30}@media (min-width:1200px){.myinterview-widget-device__desktop{right:25px;top:25px}}.myinterview-widget-device__menu-button{align-items:center;background-color:initial;border:none;border-radius:50%;cursor:pointer;display:flex;height:100%;justify-content:center;width:100%}.myinterview-widget-device__modal{--myinterview-widget-select-device-height:48px;background-color:var(--color-white);border-radius:20px;bottom:-15px;box-shadow:0 2px 12px -4px #0000001a;max-width:400px;min-width:300px;position:absolute;right:-12px;transform:translateY(100%)}.myinterview-widget-device__modal:before{background-color:var(--color-white);border-radius:5px;content:\"\";height:20px;position:absolute;right:22px;top:-8px;transform:rotate(45deg);width:20px}.myinterview-widget-device__select-wrapper{display:flex;flex-direction:column;overflow:hidden;padding:20px}.myinterview-widget-device__select-group{display:flex;flex-direction:column}.myinterview-widget-device__select-group:not(:last-child):after{background-color:var(--color-neutral-20);content:\"\";height:1px;margin:10px 0;width:100%}.myinterview-widget-device__selected-device{cursor:pointer;display:flex;height:var(--myinterview-widget-select-device-height);width:100%}.myinterview-widget-device__select-icon{align-items:center;display:flex;min-width:40px}.myinterview-widget-device__select-icon svg{height:20px;width:20px}.myinterview-widget-device__selected-title-wrapper{flex:1;overflow:hidden;padding-right:23px}.myinterview-widget-device__selected-title{line-height:var(--myinterview-widget-select-device-height)!important;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.myinterview-widget-device__arrow{align-items:center;display:flex;margin-left:auto;transform:rotate(0);transition:.2s}.myinterview-widget-device__arrow--open{transform:rotate(-180deg)}.myinterview-widget-device__select-list{display:flex;flex-direction:column;max-height:0;overflow:hidden;transition:max-height .2s ease-out}.myinterview-widget-device__select-list--open{max-height:calc(var(--myinterview-widget-select-device-height)*2);overflow:auto;transition:max-height .2s ease-in}.myinterview-widget-device__select-option{border-radius:4px;cursor:pointer;line-height:var(--myinterview-widget-select-device-height)!important;min-height:var(--myinterview-widget-select-device-height);overflow:hidden;padding:0 40px;text-overflow:ellipsis;white-space:nowrap}.myinterview-widget-device__select-option--selected,.myinterview-widget-device__select-option:hover{color:var(--color-primary)!important}.myinterview-widget-device__select-option--selected{background-color:rgba(90,164,245,.051)!important}.myinterview-widget__countdown-mobile{background-color:var(--color-white);border-radius:2.5rem;left:50%;padding:6px 10px;position:absolute;top:10px;transform:translateX(-50%);z-index:30}@media (min-width:1200px){.myinterview-widget__countdown-mobile{display:none}}.myinterview-widget__countdown-desktop{display:none}@media (min-width:1200px){.myinterview-widget__countdown-desktop{--myinterview-widget-p:100;--myinterview-widget-b:5px;--myinterview-widget-w:160px;align-items:center;display:flex;height:var(--myinterview-widget-w);justify-content:center;margin:auto;padding:0;position:relative;transform:rotateY(180deg);width:var(--myinterview-widget-w)}.myinterview-widget__countdown-desktop:after,.myinterview-widget__countdown-desktop:before{border-radius:50%;content:\"\";position:absolute}.myinterview-widget__countdown-desktop:before{background:radial-gradient(farthest-side,var(--color-primary) 100%,#0000) top/var(--myinterview-widget-b) var(--myinterview-widget-b) no-repeat,conic-gradient(var(--color-primary) calc((var(--myinterview-widget-p))*1%),#0000 0);inset:0;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - var(--myinterview-widget-b)),#000 calc(100% - var(--myinterview-widget-b)));mask:radial-gradient(farthest-side,#0000 calc(100% - var(--myinterview-widget-b)),#000 calc(100% - var(--myinterview-widget-b)));transition:all 1s}.myinterview-widget__countdown-desktop:after{background:var(--color-primary);inset:calc(50% - var(--myinterview-widget-b)/2);transform:rotate(calc(var(--myinterview-widget-p)*3.6deg)) translateY(calc(50% - var(--myinterview-widget-w)/2))}}.myinterview-widget__countdown-desktop .myinterview-widget__countdown-desktop-text{align-items:center;border:var(--myinterview-widget-b) solid #edf6fe;border-radius:50%;display:flex;height:100%;justify-content:center;position:absolute;transform:rotateY(180deg);width:100%;z-index:-1}.myinterview-widget-counter{align-items:center;background-color:var(--color-white);border-radius:2.5rem;color:var(--color-neutral-90);display:flex;gap:5px;height:36px;justify-content:center}.myinterview-widget-counter__dot{background-color:var(--color-error);border-radius:50%;height:10px;width:10px}.myinterview-widget-counter__clock{display:flex}.myinterview-widget-counter__timer{transition:color .25s}.myinterview-widget-counter__timer--red{color:#f45b2b}.myinterview-widget-loader{-webkit-animation:fade 1.6s infinite;-moz-animation:fade 1.6s infinite;-o-animation:fade 1.6s infinite;animation:fade 1.6s infinite;margin:auto;width:80px}@keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-o-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-moz-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@-webkit-keyframes fade{0%,to{opacity:0}50%{opacity:1}}.myinterview-widget-error{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;margin:auto}.myinterview-widget-error__message{margin-bottom:10px}.myinterview-widget-errors{align-items:center;display:flex;flex-direction:column;justify-content:center}.myinterview-widget-errors__icon{margin-bottom:15px}.myinterview-widget-errors__details,.myinterview-widget-errors__title{margin-bottom:5px}.myinterview-widget-errors__cta{cursor:pointer;position:relative;text-decoration:underline}.myinterview-widget-errors__cta .myinterview-widget-select-native{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.myinterview-widget-slider-modal{animation:close-modal .3s forwards;bottom:0;height:100vh;height:-moz-available;height:-webkit-fill-available;height:stretch;left:0;min-height:100vh;min-height:-moz-available;min-height:-webkit-fill-available;min-height:stretch;overflow:hidden;position:fixed;width:100vw;z-index:50}.myinterview-widget-slider-modal__wrapper{-webkit-overflow-scrolling:touch;height:100%;overflow-y:auto;scroll-snap-type:y mandatory;width:100%}.myinterview-widget-slider-modal__top{min-height:100%;scroll-snap-align:start;touch-action:none}.myinterview-widget-slider-modal__bottom{background-color:var(--color-white);border-radius:20px 20px 0 0;display:flex;flex-direction:column;height:10%;isolation:isolate;min-height:10%;overflow:hidden;position:relative;scroll-snap-align:end;transition:min-height .5s,height .5s;visibility:hidden}.myinterview-widget-slider-modal__pill{background-color:var(--color-neutral-30);border-radius:2.5rem;margin:20px auto 32px;min-height:4px;width:60px}.myinterview-widget-slider-modal--open{animation:none;background-color:#0009;visibility:visible}.myinterview-widget-slider-modal--open .myinterview-widget-slider-modal__bottom{height:80%;min-height:80%;visibility:visible}@keyframes close-modal{0%{background-color:#0009}to{background-color:#0000;visibility:hidden}}.myinterview-widget-permissions__wrapper{display:flex;flex:1;flex-direction:column;margin:0 auto;max-height:100%;max-width:480px;overflow:auto;padding:0 20px 20px;width:100%}@media (min-width:1200px){.myinterview-widget-permissions__wrapper{padding:0 20px}}.myinterview-widget-permissions__icon-wrapper{align-items:center;background-color:#eff6fe;border-radius:50%;color:var(--color-primary);display:flex;justify-content:center;margin:0 auto 20px;min-height:70px;min-width:70px}.myinterview-widget-permissions__icon-wrapper svg{height:32px;width:32px}@media (min-width:1200px){.myinterview-widget-permissions__icon-wrapper{display:none!important}}.myinterview-widget-permissions__title{margin-bottom:20px;text-align:center}@media (min-width:1200px){.myinterview-widget-permissions__title{margin-bottom:15px}}.myinterview-widget-permissions__sub-title{margin-bottom:10px}.myinterview-widget-permissions__steps-wrapper{margin-bottom:15px;padding:0 20px}.myinterview-widget-permissions__step{font-size:14px;list-style:decimal;margin-bottom:10px}.myinterview-widget-permissions__step .text--bold{font-weight:700}.myinterview-widget-permissions__step .safari__key{background-color:var(--color-neutral-20);border-radius:2px;padding:2px 4px}.myinterview-widget-permissions__button{margin-top:auto;min-height:45px}.myinterview-widget-question{position:relative}.myinterview-widget-question:before{color:var(--color-neutral-10);content:attr(data-background-question);font-size:150px;font-weight:700;left:0;position:absolute;top:0;transform:translate(-25%,-25%)}.myinterview-widget-question>*{position:relative;z-index:1}.myinterview-widget-question--inner{position:static}.myinterview-widget-question--inner:before{color:var(--color-neutral-20);top:40%;transform:translate(-25%,-50%)}.myinterview-widget-question__description,.myinterview-widget-question__question{letter-spacing:.5px;margin-bottom:20px}.myinterview-widget-question__duration{display:inline-flex;gap:5px}.myinterview-widget-questions-list{display:none}@media (min-width:1200px){.myinterview-widget-questions-list{display:flex;flex-direction:column;overflow-y:auto;padding:0;position:relative}.myinterview-widget-questions-item{align-items:center;border-radius:0 4px 4px 0;display:flex;gap:20px;letter-spacing:.5px;max-width:100%;min-height:90px;overflow:hidden;padding:20px;position:relative}.myinterview-widget-questions-item__number{align-items:center;background-color:var(--color-neutral-20);border-radius:50%;color:var(--color-neutral-90);display:flex;height:38px;justify-content:center;min-width:38px}.myinterview-widget-questions-item__number--icon{background-color:var(--color-white);color:var(--color-primary)}.myinterview-widget-questions-item__wrapper{flex:1;overflow:hidden}.myinterview-widget-questions-item__question{display:flex;flex-direction:column;gap:2px;overflow:hidden}.myinterview-widget-questions-item__duration-wrapper{align-items:center;color:var(--color-neutral-50);display:flex;font-size:12px;gap:5px;line-height:20px}.myinterview-widget-questions-item__duration-wrapper *{font-size:12px;line-height:20px}.myinterview-widget-questions-item__duration-wrapper svg{width:15px}.myinterview-widget-questions-item--active{background-color:#f7fbff}.myinterview-widget-questions-item--active:before{background-color:var(--color-primary);content:\"\";height:100%;left:0;position:absolute;width:3px}.myinterview-widget-questions-item--active .myinterview-widget-questions-item__number{background-color:var(--color-white);border:1px solid var(--color-primary);color:var(--color-primary)}}.myinterview-widget-upload{align-items:center;background-color:var(--color-white);border-radius:20px;display:flex;flex-direction:column;height:100%;justify-content:center;margin:auto;max-height:500px;overflow:hidden;padding:40px;text-align:center;width:100%}@media (min-width:1200px){.myinterview-widget-upload{margin:0;min-height:360px}}.myinterview-widget-upload__icon{align-items:center;background-color:#5aa4f5;border:12px solid #d7e8fb;border-radius:50%;color:var(--color-white);display:flex;height:110px;justify-content:center;margin-bottom:30px;min-height:110px;position:relative;width:110px}.myinterview-widget-upload__icon:before{background-color:initial;border:12px solid #99c6f8;border-radius:50%;content:\"\";height:100%;position:absolute;width:100%}.myinterview-widget-upload__title{margin-bottom:20px}.myinterview-widget-upload__sub-title{margin-bottom:40px;white-space:pre-line}.myinterview-widget-upload__progress{margin-bottom:10px;width:100%}.myinterview-widget-upload__time-left{align-items:center;color:var(--color-neutral-90);display:flex;gap:10px}.myinterview-widget-top-tips{background-color:var(--color-white);color:var(--color-neutral-90);display:flex;flex-direction:column;padding:50px}.myinterview-widget-top-tips__title{margin-bottom:20px}.myinterview-widget-top-tips__tips{margin-bottom:10px;padding:0 15px}.myinterview-widget-top-tips li{margin-bottom:10px}.myinterview-widget__practice-mode{border-radius:2.5rem;height:36px;padding:5px 15px}.myinterview-widget__practice-mode,.myinterview-widget__recording-button{align-items:center;background-color:var(--color-white);display:flex;justify-content:center}.myinterview-widget__recording-button{border:1px solid var(--color-neutral-30);border-radius:50%;height:64px;width:64px}.myinterview-widget__recording-button-inner{background-color:var(--color-error);border-radius:50%;height:52px;width:52px}.myinterview-widget__recording-button-inner--stop{border-radius:2px;height:16px;width:16px}.myinterview-widget__question-number{position:absolute}.myinterview-widget__question-duration{align-items:center;display:flex;gap:8px}.myinterview-widget__question-duration svg{height:1em;width:1em}.myinterview-widget__progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:2.5rem;height:15px;overflow:hidden;width:100%}.myinterview-widget__progress::-webkit-progress-bar{background-color:#e7f1ef}.myinterview-widget__progress::-webkit-progress-value{background-color:var(--color-success);transition:.3s}.myinterview-widget-welcome-page{display:flex;flex-direction:column;gap:20px;height:100%;margin:30px 0;max-height:100%;overflow:auto;position:relative}@media (min-width:1200px){.myinterview-widget-welcome-page{padding:0 20px}}.myinterview-widget-welcome-page__text-wrapper{display:flex;flex-direction:column;position:relative}.myinterview-widget-welcome-page__text{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;white-space:pre-line}.myinterview-widget-welcome-page__text--closed{-webkit-line-clamp:4;line-clamp:4}.myinterview-widget-welcome-page__toggle{margin-left:auto}.myinterview-widget-welcome-page__action-buttons{display:flex;gap:20px;justify-content:space-between}.myinterview-widget-welcome-page__continue-button{flex:1;max-width:250px;min-width:fit-content}.myinterview-widget-welcome-page__top-tips-button{margin:0 auto}.myinterview-widget-welcome-page__top-tips{align-items:center;display:flex;gap:10px;justify-content:center}.myinterview-modal-wrapper{background-color:var(--color-white);border-radius:0;height:100vh;max-height:100%;max-width:500px;opacity:0;pointer-events:none;top:75%;transition:top .2s ease-out,opacity .2s ease-out;width:100vw}@media (min-width:480px){.myinterview-modal-wrapper{border-radius:10px;height:auto}}.myinterview-modal-wrapper--opened{opacity:1;pointer-events:all;top:50%}.myinterview-modal-wrapper__close-btn{color:var(--color-neutral-90)}";
|
|
45848
45630
|
|
|
45849
45631
|
const RotateScreenIcon = () => (React__default["default"].createElement("svg", { width: "824", height: "800", viewBox: "0 0 824 800", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
45850
45632
|
React__default["default"].createElement("rect", { x: "2.5", y: "2.5", width: "385", height: "795", rx: "37.5", stroke: "currentColor", strokeWidth: "5" }),
|