@myinterview/widget-react 1.0.57-ada6b21 → 1.0.58-beta-dc3e080
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 +979 -721
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/microphoneInterface.d.ts +1 -0
- package/dist/cjs/utils/sentry.utils.d.ts +2 -0
- package/dist/esm/index.js +979 -721
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/microphoneInterface.d.ts +1 -0
- package/dist/esm/utils/sentry.utils.d.ts +2 -0
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -1244,7 +1244,7 @@ function l$1(d,e){var t={};for(var n in d)Object.prototype.hasOwnProperty.call(d
|
|
|
1244
1244
|
Copyright (c) 2018 Jed Watson.
|
|
1245
1245
|
Licensed under the MIT License (MIT), see
|
|
1246
1246
|
http://jedwatson.github.io/classnames
|
|
1247
|
-
*/m=y,function(){var d={}.hasOwnProperty;function e(){for(var t=[],n=0;n<arguments.length;n++){var r=arguments[n];if(r){var o=typeof r;if("string"===o||"number"===o)t.push(r);else if(Array.isArray(r)){if(r.length){var a=e.apply(null,r);a&&t.push(a);}}else if("object"===o){if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]")){t.push(r.toString());continue}for(var i in r)d.call(r,i)&&r[i]&&t.push(i);}}}return t.join(" ")}m.exports?(e.default=e,m.exports=e):window.classNames=e;}();var v$1=y.exports;const C=React__default["default"].forwardRef(((e,t)=>{var{children:n="BUTTON",size:r="medium",
|
|
1247
|
+
*/m=y,function(){var d={}.hasOwnProperty;function e(){for(var t=[],n=0;n<arguments.length;n++){var r=arguments[n];if(r){var o=typeof r;if("string"===o||"number"===o)t.push(r);else if(Array.isArray(r)){if(r.length){var a=e.apply(null,r);a&&t.push(a);}}else if("object"===o){if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]")){t.push(r.toString());continue}for(var i in r)d.call(r,i)&&r[i]&&t.push(i);}}}return t.join(" ")}m.exports?(e.default=e,m.exports=e):window.classNames=e;}();var v$1=y.exports;const C=React__default["default"].forwardRef(((e,t)=>{var{children:n="BUTTON",size:r="medium",color:o="white",backgroundColor:a="primary"}=e,i=l$1(e,["children","size","color","backgroundColor"]);const c=v$1({[i.className||""]:!0,"myinterview-button":!0,[`color--${o}`]:!0,[`background-color--${a}`]:!0,[`myinterview-button--${r}`]:r});return React__default["default"].createElement("button",Object.assign({type:"button"},i,{ref:t,className:c}),n)}));var b,E={exports:{}},S={};var x$1,M={};
|
|
1248
1248
|
/**
|
|
1249
1249
|
* @license React
|
|
1250
1250
|
* react-is.development.js
|
|
@@ -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.getSnapshot();
|
|
7660
7660
|
}, [service]);
|
|
7661
7661
|
var isEqual = React.useCallback(function (prevState, nextState) {
|
|
7662
7662
|
if (service.status === InterpreterStatus.NotStarted) {
|
|
@@ -7688,6 +7688,42 @@ 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
|
+
|
|
7691
7727
|
function isActorWithState(actorRef) {
|
|
7692
7728
|
return 'state' in actorRef;
|
|
7693
7729
|
}
|
|
@@ -7696,7 +7732,9 @@ function isDeferredActor(actorRef) {
|
|
|
7696
7732
|
}
|
|
7697
7733
|
function defaultGetSnapshot(actorRef) {
|
|
7698
7734
|
return 'getSnapshot' in actorRef
|
|
7699
|
-
? actorRef
|
|
7735
|
+
? isService(actorRef)
|
|
7736
|
+
? getServiceSnapshot(actorRef)
|
|
7737
|
+
: actorRef.getSnapshot()
|
|
7700
7738
|
: isActorWithState(actorRef)
|
|
7701
7739
|
? actorRef.state
|
|
7702
7740
|
: undefined;
|
|
@@ -7745,34 +7783,6 @@ function useActor(actorRef, getSnapshot) {
|
|
|
7745
7783
|
return [storeSnapshot, send];
|
|
7746
7784
|
}
|
|
7747
7785
|
|
|
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
|
-
|
|
7776
7786
|
var SPEED_TEST_LEVEL;
|
|
7777
7787
|
(function (SPEED_TEST_LEVEL) {
|
|
7778
7788
|
SPEED_TEST_LEVEL[SPEED_TEST_LEVEL["LOW"] = 0] = "LOW";
|
|
@@ -15547,7 +15557,7 @@ function truncate(str, max = 0) {
|
|
|
15547
15557
|
if (typeof str !== 'string' || max === 0) {
|
|
15548
15558
|
return str;
|
|
15549
15559
|
}
|
|
15550
|
-
return str.length <= max ? str : `${str.
|
|
15560
|
+
return str.length <= max ? str : `${str.slice(0, max)}...`;
|
|
15551
15561
|
}
|
|
15552
15562
|
|
|
15553
15563
|
/**
|
|
@@ -15714,9 +15724,7 @@ function urlEncode(object) {
|
|
|
15714
15724
|
* @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor
|
|
15715
15725
|
* an Error.
|
|
15716
15726
|
*/
|
|
15717
|
-
function convertToPlainObject(
|
|
15718
|
-
value,
|
|
15719
|
-
)
|
|
15727
|
+
function convertToPlainObject(value)
|
|
15720
15728
|
|
|
15721
15729
|
{
|
|
15722
15730
|
if (isError(value)) {
|
|
@@ -15909,6 +15917,14 @@ function createStackParser(...parsers) {
|
|
|
15909
15917
|
const frames = [];
|
|
15910
15918
|
|
|
15911
15919
|
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
|
+
|
|
15912
15928
|
// https://github.com/getsentry/sentry-javascript/issues/5459
|
|
15913
15929
|
// Remove webpack (error: *) wrappers
|
|
15914
15930
|
const cleanedLine = line.replace(/\(error: (.*)\)/, '$1');
|
|
@@ -17634,6 +17650,9 @@ function forEachEnvelopeItem(
|
|
|
17634
17650
|
});
|
|
17635
17651
|
}
|
|
17636
17652
|
|
|
17653
|
+
/**
|
|
17654
|
+
* Encode a string to UTF8.
|
|
17655
|
+
*/
|
|
17637
17656
|
function encodeUTF8(input, textEncoder) {
|
|
17638
17657
|
const utf8 = textEncoder || new TextEncoder();
|
|
17639
17658
|
return utf8.encode(input);
|
|
@@ -17812,7 +17831,11 @@ function parseRetryAfterHeader(header, now = Date.now()) {
|
|
|
17812
17831
|
}
|
|
17813
17832
|
|
|
17814
17833
|
/**
|
|
17815
|
-
* Gets the time that given category is disabled until for rate limiting
|
|
17834
|
+
* Gets the time that the given category is disabled until for rate limiting.
|
|
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.
|
|
17816
17839
|
*/
|
|
17817
17840
|
function disabledUntil(limits, category) {
|
|
17818
17841
|
return limits[category] || limits.all || 0;
|
|
@@ -17827,7 +17850,8 @@ function isRateLimited(limits, category, now = Date.now()) {
|
|
|
17827
17850
|
|
|
17828
17851
|
/**
|
|
17829
17852
|
* Update ratelimits from incoming headers.
|
|
17830
|
-
*
|
|
17853
|
+
*
|
|
17854
|
+
* @return the updated RateLimits object.
|
|
17831
17855
|
*/
|
|
17832
17856
|
function updateRateLimits(
|
|
17833
17857
|
limits,
|
|
@@ -18743,7 +18767,7 @@ class Hub {
|
|
|
18743
18767
|
*/
|
|
18744
18768
|
captureEvent(event, hint) {
|
|
18745
18769
|
const eventId = hint && hint.event_id ? hint.event_id : uuid4();
|
|
18746
|
-
if (event.type
|
|
18770
|
+
if (!event.type) {
|
|
18747
18771
|
this._lastEventId = eventId;
|
|
18748
18772
|
}
|
|
18749
18773
|
|
|
@@ -18768,7 +18792,6 @@ class Hub {
|
|
|
18768
18792
|
|
|
18769
18793
|
if (!scope || !client) return;
|
|
18770
18794
|
|
|
18771
|
-
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
18772
18795
|
const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =
|
|
18773
18796
|
(client.getOptions && client.getOptions()) || {};
|
|
18774
18797
|
|
|
@@ -19262,7 +19285,15 @@ function createEventEnvelope(
|
|
|
19262
19285
|
tunnel,
|
|
19263
19286
|
) {
|
|
19264
19287
|
const sdkInfo = getSdkMetadataForEnvelopeHeader(metadata);
|
|
19265
|
-
|
|
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';
|
|
19266
19297
|
|
|
19267
19298
|
enhanceEventWithSdkInfo(event, metadata && metadata.sdk);
|
|
19268
19299
|
|
|
@@ -19290,18 +19321,23 @@ function setupIntegrations(integrations) {
|
|
|
19290
19321
|
const integrationIndex = {};
|
|
19291
19322
|
|
|
19292
19323
|
integrations.forEach(integration => {
|
|
19293
|
-
|
|
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
|
-
}
|
|
19324
|
+
setupIntegration(integration, integrationIndex);
|
|
19300
19325
|
});
|
|
19301
19326
|
|
|
19302
19327
|
return integrationIndex;
|
|
19303
19328
|
}
|
|
19304
19329
|
|
|
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
|
+
|
|
19305
19341
|
/**
|
|
19306
19342
|
* Adds common information to events.
|
|
19307
19343
|
*
|
|
@@ -19735,6 +19771,13 @@ class BaseClient {
|
|
|
19735
19771
|
}
|
|
19736
19772
|
}
|
|
19737
19773
|
|
|
19774
|
+
/**
|
|
19775
|
+
* @inheritDoc
|
|
19776
|
+
*/
|
|
19777
|
+
addIntegration(integration) {
|
|
19778
|
+
setupIntegration(integration, this._integrations);
|
|
19779
|
+
}
|
|
19780
|
+
|
|
19738
19781
|
/**
|
|
19739
19782
|
* @inheritDoc
|
|
19740
19783
|
*/
|
|
@@ -20126,7 +20169,9 @@ const DEFAULT_TRANSPORT_BUFFER_SIZE = 30;
|
|
|
20126
20169
|
function createTransport(
|
|
20127
20170
|
options,
|
|
20128
20171
|
makeRequest,
|
|
20129
|
-
buffer = makePromiseBuffer(
|
|
20172
|
+
buffer = makePromiseBuffer(
|
|
20173
|
+
options.bufferSize || DEFAULT_TRANSPORT_BUFFER_SIZE,
|
|
20174
|
+
),
|
|
20130
20175
|
) {
|
|
20131
20176
|
let rateLimits = {};
|
|
20132
20177
|
|
|
@@ -20171,10 +20216,11 @@ function createTransport(
|
|
|
20171
20216
|
}
|
|
20172
20217
|
|
|
20173
20218
|
rateLimits = updateRateLimits(rateLimits, response);
|
|
20219
|
+
return response;
|
|
20174
20220
|
},
|
|
20175
20221
|
error => {
|
|
20176
|
-
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('Failed while sending event:', error);
|
|
20177
20222
|
recordEnvelopeLoss('network_error');
|
|
20223
|
+
throw error;
|
|
20178
20224
|
},
|
|
20179
20225
|
);
|
|
20180
20226
|
|
|
@@ -20206,7 +20252,7 @@ function getEventForEnvelopeItem(item, type) {
|
|
|
20206
20252
|
return Array.isArray(item) ? (item )[1] : undefined;
|
|
20207
20253
|
}
|
|
20208
20254
|
|
|
20209
|
-
const SDK_VERSION = '7.
|
|
20255
|
+
const SDK_VERSION = '7.31.0';
|
|
20210
20256
|
|
|
20211
20257
|
let originalFunctionToString;
|
|
20212
20258
|
|
|
@@ -22158,7 +22204,7 @@ class HttpContext {constructor() { HttpContext.prototype.__init.call(this); }
|
|
|
22158
22204
|
...(referrer && { Referer: referrer }),
|
|
22159
22205
|
...(userAgent && { 'User-Agent': userAgent }),
|
|
22160
22206
|
};
|
|
22161
|
-
const request = { ...(url && { url }), headers };
|
|
22207
|
+
const request = { ...event.request, ...(url && { url }), headers };
|
|
22162
22208
|
|
|
22163
22209
|
return { ...event, request };
|
|
22164
22210
|
}
|
|
@@ -22422,6 +22468,9 @@ const DEFAULT_FLUSH_MIN_DELAY = 5000;
|
|
|
22422
22468
|
const DEFAULT_FLUSH_MAX_DELAY = 15000;
|
|
22423
22469
|
const INITIAL_FLUSH_DELAY = 5000;
|
|
22424
22470
|
|
|
22471
|
+
const RETRY_BASE_INTERVAL = 5000;
|
|
22472
|
+
const RETRY_MAX_COUNT = 3;
|
|
22473
|
+
|
|
22425
22474
|
/*! *****************************************************************************
|
|
22426
22475
|
Copyright (c) Microsoft Corporation.
|
|
22427
22476
|
|
|
@@ -29428,6 +29477,9 @@ var fdt = new u8(32);
|
|
|
29428
29477
|
for (var i = 0; i < 32; ++i)
|
|
29429
29478
|
fdt[i] = 5;
|
|
29430
29479
|
|
|
29480
|
+
/**
|
|
29481
|
+
* Create a breadcrumb for a replay.
|
|
29482
|
+
*/
|
|
29431
29483
|
function createBreadcrumb(
|
|
29432
29484
|
breadcrumb,
|
|
29433
29485
|
) {
|
|
@@ -29438,6 +29490,9 @@ function createBreadcrumb(
|
|
|
29438
29490
|
};
|
|
29439
29491
|
}
|
|
29440
29492
|
|
|
29493
|
+
/**
|
|
29494
|
+
* An event handler to react to DOM events.
|
|
29495
|
+
*/
|
|
29441
29496
|
function handleDom(handlerData) {
|
|
29442
29497
|
// Taken from https://github.com/getsentry/sentry-javascript/blob/master/packages/browser/src/integrations/breadcrumbs.ts#L112
|
|
29443
29498
|
let target;
|
|
@@ -29480,6 +29535,9 @@ function isEventWithTarget(event) {
|
|
|
29480
29535
|
|
|
29481
29536
|
let _LAST_BREADCRUMB = null;
|
|
29482
29537
|
|
|
29538
|
+
/**
|
|
29539
|
+
* An event handler to handle scope changes.
|
|
29540
|
+
*/
|
|
29483
29541
|
function handleScope(scope) {
|
|
29484
29542
|
const newBreadcrumb = scope.getLastBreadcrumb();
|
|
29485
29543
|
|
|
@@ -29502,6 +29560,9 @@ function handleScope(scope) {
|
|
|
29502
29560
|
return createBreadcrumb(newBreadcrumb);
|
|
29503
29561
|
}
|
|
29504
29562
|
|
|
29563
|
+
/**
|
|
29564
|
+
* An event handler to react to breadcrumbs.
|
|
29565
|
+
*/
|
|
29505
29566
|
function breadcrumbHandler(type, handlerData) {
|
|
29506
29567
|
if (type === 'scope') {
|
|
29507
29568
|
return handleScope(handlerData );
|
|
@@ -29513,15 +29574,19 @@ function breadcrumbHandler(type, handlerData) {
|
|
|
29513
29574
|
/**
|
|
29514
29575
|
* Add an event to the event buffer
|
|
29515
29576
|
*/
|
|
29516
|
-
function addEvent(
|
|
29577
|
+
async function addEvent(
|
|
29578
|
+
replay,
|
|
29579
|
+
event,
|
|
29580
|
+
isCheckout,
|
|
29581
|
+
) {
|
|
29517
29582
|
if (!replay.eventBuffer) {
|
|
29518
29583
|
// This implies that `_isEnabled` is false
|
|
29519
|
-
return;
|
|
29584
|
+
return null;
|
|
29520
29585
|
}
|
|
29521
29586
|
|
|
29522
29587
|
if (replay.isPaused()) {
|
|
29523
29588
|
// Do not add to event buffer when recording is paused
|
|
29524
|
-
return;
|
|
29589
|
+
return null;
|
|
29525
29590
|
}
|
|
29526
29591
|
|
|
29527
29592
|
// TODO: sadness -- we will want to normalize timestamps to be in ms -
|
|
@@ -29534,7 +29599,7 @@ function addEvent(replay, event, isCheckout) {
|
|
|
29534
29599
|
// comes back to trigger a new session. The performance entries rely on
|
|
29535
29600
|
// `performance.timeOrigin`, which is when the page first opened.
|
|
29536
29601
|
if (timestampInMs + SESSION_IDLE_DURATION < new Date().getTime()) {
|
|
29537
|
-
return;
|
|
29602
|
+
return null;
|
|
29538
29603
|
}
|
|
29539
29604
|
|
|
29540
29605
|
// Only record earliest event if a new session was created, otherwise it
|
|
@@ -29544,14 +29609,17 @@ function addEvent(replay, event, isCheckout) {
|
|
|
29544
29609
|
replay.getContext().earliestEvent = timestampInMs;
|
|
29545
29610
|
}
|
|
29546
29611
|
|
|
29547
|
-
replay.eventBuffer.addEvent(event, isCheckout);
|
|
29612
|
+
return replay.eventBuffer.addEvent(event, isCheckout);
|
|
29548
29613
|
}
|
|
29549
29614
|
|
|
29550
29615
|
/**
|
|
29551
29616
|
* Create a "span" for each performance entry. The parent transaction is `this.replayEvent`.
|
|
29552
29617
|
*/
|
|
29553
|
-
function createPerformanceSpans(
|
|
29554
|
-
|
|
29618
|
+
function createPerformanceSpans(
|
|
29619
|
+
replay,
|
|
29620
|
+
entries,
|
|
29621
|
+
) {
|
|
29622
|
+
return entries.map(({ type, start, end, name, data }) =>
|
|
29555
29623
|
addEvent(replay, {
|
|
29556
29624
|
type: EventType.Custom,
|
|
29557
29625
|
timestamp: start,
|
|
@@ -29638,6 +29706,9 @@ function handleFetchSpanListener(replay) {
|
|
|
29638
29706
|
};
|
|
29639
29707
|
}
|
|
29640
29708
|
|
|
29709
|
+
/**
|
|
29710
|
+
* Returns true if we think the given event is an error originating inside of rrweb.
|
|
29711
|
+
*/
|
|
29641
29712
|
function isRrwebError(event) {
|
|
29642
29713
|
if (event.type || !_optionalChain([event, 'access', _ => _.exception, 'optionalAccess', _2 => _2.values, 'optionalAccess', _3 => _3.length])) {
|
|
29643
29714
|
return false;
|
|
@@ -29659,10 +29730,7 @@ function isRrwebError(event) {
|
|
|
29659
29730
|
function handleGlobalEventListener(replay) {
|
|
29660
29731
|
return (event) => {
|
|
29661
29732
|
// Do not apply replayId to the root event
|
|
29662
|
-
if (
|
|
29663
|
-
// @ts-ignore new event type
|
|
29664
|
-
event.type === REPLAY_EVENT_NAME
|
|
29665
|
-
) {
|
|
29733
|
+
if (event.type === REPLAY_EVENT_NAME) {
|
|
29666
29734
|
// Replays have separate set of breadcrumbs, do not include breadcrumbs
|
|
29667
29735
|
// from core SDK
|
|
29668
29736
|
delete event.breadcrumbs;
|
|
@@ -29678,7 +29746,7 @@ function handleGlobalEventListener(replay) {
|
|
|
29678
29746
|
|
|
29679
29747
|
// Only tag transactions with replayId if not waiting for an error
|
|
29680
29748
|
// @ts-ignore private
|
|
29681
|
-
if (event.type
|
|
29749
|
+
if (!event.type || replay.recordingMode === 'session') {
|
|
29682
29750
|
event.tags = { ...event.tags, replayId: _optionalChain([replay, 'access', _5 => _5.session, 'optionalAccess', _6 => _6.id]) };
|
|
29683
29751
|
}
|
|
29684
29752
|
|
|
@@ -29982,122 +30050,14 @@ function setupPerformanceObserver(replay) {
|
|
|
29982
30050
|
return performanceObserver;
|
|
29983
30051
|
}
|
|
29984
30052
|
|
|
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
|
-
|
|
30096
30053
|
const workerString = `/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */
|
|
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)}}));`;
|
|
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)}}));`;
|
|
30098
30055
|
|
|
30099
30056
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
30100
30057
|
|
|
30058
|
+
/**
|
|
30059
|
+
* Create an event buffer for replays.
|
|
30060
|
+
*/
|
|
30101
30061
|
function createEventBuffer({ useCompression }) {
|
|
30102
30062
|
// eslint-disable-next-line no-restricted-globals
|
|
30103
30063
|
if (useCompression && window.Worker) {
|
|
@@ -30128,21 +30088,30 @@ class EventBufferArray {
|
|
|
30128
30088
|
this._events = [];
|
|
30129
30089
|
}
|
|
30130
30090
|
|
|
30131
|
-
|
|
30132
|
-
this._events
|
|
30091
|
+
get pendingLength() {
|
|
30092
|
+
return this._events.length;
|
|
30133
30093
|
}
|
|
30134
30094
|
|
|
30135
|
-
|
|
30136
|
-
|
|
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
|
+
destroy() {
|
|
30104
|
+
this._events = [];
|
|
30137
30105
|
}
|
|
30138
30106
|
|
|
30139
|
-
addEvent(event, isCheckout) {
|
|
30107
|
+
async addEvent(event, isCheckout) {
|
|
30140
30108
|
if (isCheckout) {
|
|
30141
30109
|
this._events = [event];
|
|
30142
30110
|
return;
|
|
30143
30111
|
}
|
|
30144
30112
|
|
|
30145
30113
|
this._events.push(event);
|
|
30114
|
+
return;
|
|
30146
30115
|
}
|
|
30147
30116
|
|
|
30148
30117
|
finish() {
|
|
@@ -30157,16 +30126,44 @@ class EventBufferArray {
|
|
|
30157
30126
|
}
|
|
30158
30127
|
}
|
|
30159
30128
|
|
|
30160
|
-
|
|
30129
|
+
/**
|
|
30130
|
+
* Event buffer that uses a web worker to compress events.
|
|
30131
|
+
* Exported only for testing.
|
|
30132
|
+
*/
|
|
30161
30133
|
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 = [];}
|
|
30162
30140
|
|
|
30163
|
-
|
|
30164
|
-
|
|
30141
|
+
__init2() {this._eventBufferItemLength = 0;}
|
|
30142
|
+
__init3() {this._id = 0;}
|
|
30165
30143
|
|
|
30166
|
-
constructor(worker) {EventBufferCompressionWorker.prototype.__init.call(this);EventBufferCompressionWorker.prototype.__init2.call(this);
|
|
30144
|
+
constructor(worker) {EventBufferCompressionWorker.prototype.__init.call(this);EventBufferCompressionWorker.prototype.__init2.call(this);EventBufferCompressionWorker.prototype.__init3.call(this);
|
|
30167
30145
|
this._worker = worker;
|
|
30168
30146
|
}
|
|
30169
30147
|
|
|
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
|
+
*/
|
|
30170
30167
|
destroy() {
|
|
30171
30168
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Destroying compression worker');
|
|
30172
30169
|
_optionalChain([this, 'access', _ => _._worker, 'optionalAccess', _2 => _2.terminate, 'call', _3 => _3()]);
|
|
@@ -30174,13 +30171,10 @@ class EventBufferCompressionWorker {
|
|
|
30174
30171
|
}
|
|
30175
30172
|
|
|
30176
30173
|
/**
|
|
30177
|
-
*
|
|
30178
|
-
*
|
|
30174
|
+
* Add an event to the event buffer.
|
|
30175
|
+
*
|
|
30176
|
+
* Returns true if event was successfuly received and processed by worker.
|
|
30179
30177
|
*/
|
|
30180
|
-
get length() {
|
|
30181
|
-
return this._eventBufferItemLength;
|
|
30182
|
-
}
|
|
30183
|
-
|
|
30184
30178
|
async addEvent(event, isCheckout) {
|
|
30185
30179
|
if (isCheckout) {
|
|
30186
30180
|
// This event is a checkout, make sure worker buffer is cleared before
|
|
@@ -30192,9 +30186,17 @@ class EventBufferCompressionWorker {
|
|
|
30192
30186
|
});
|
|
30193
30187
|
}
|
|
30194
30188
|
|
|
30189
|
+
// Don't store checkout events in `_pendingEvents` because they are too large
|
|
30190
|
+
if (!isCheckout) {
|
|
30191
|
+
this._pendingEvents.push(event);
|
|
30192
|
+
}
|
|
30193
|
+
|
|
30195
30194
|
return this._sendEventToWorker(event);
|
|
30196
30195
|
}
|
|
30197
30196
|
|
|
30197
|
+
/**
|
|
30198
|
+
* Finish the event buffer and return the compressed data.
|
|
30199
|
+
*/
|
|
30198
30200
|
finish() {
|
|
30199
30201
|
return this._finishRequest(this._getAndIncrementId());
|
|
30200
30202
|
}
|
|
@@ -30245,7 +30247,10 @@ class EventBufferCompressionWorker {
|
|
|
30245
30247
|
});
|
|
30246
30248
|
}
|
|
30247
30249
|
|
|
30248
|
-
|
|
30250
|
+
/**
|
|
30251
|
+
* Send the event to the worker.
|
|
30252
|
+
*/
|
|
30253
|
+
async _sendEventToWorker(event) {
|
|
30249
30254
|
const promise = this._postMessage({
|
|
30250
30255
|
id: this._getAndIncrementId(),
|
|
30251
30256
|
method: 'addEvent',
|
|
@@ -30258,34 +30263,25 @@ class EventBufferCompressionWorker {
|
|
|
30258
30263
|
return promise;
|
|
30259
30264
|
}
|
|
30260
30265
|
|
|
30266
|
+
/**
|
|
30267
|
+
* Finish the request and return the compressed data from the worker.
|
|
30268
|
+
*/
|
|
30261
30269
|
async _finishRequest(id) {
|
|
30262
30270
|
const promise = this._postMessage({ id, method: 'finish', args: [] });
|
|
30263
30271
|
|
|
30264
30272
|
// XXX: See note in `get length()`
|
|
30265
30273
|
this._eventBufferItemLength = 0;
|
|
30266
30274
|
|
|
30267
|
-
|
|
30268
|
-
}
|
|
30275
|
+
await promise;
|
|
30269
30276
|
|
|
30270
|
-
|
|
30271
|
-
return this._id++;
|
|
30272
|
-
}
|
|
30273
|
-
}
|
|
30274
|
-
|
|
30275
|
-
/**
|
|
30276
|
-
* Deletes a session from storage
|
|
30277
|
-
*/
|
|
30278
|
-
function deleteSession() {
|
|
30279
|
-
const hasSessionStorage = 'sessionStorage' in WINDOW;
|
|
30277
|
+
this._pendingEvents = [];
|
|
30280
30278
|
|
|
30281
|
-
|
|
30282
|
-
return;
|
|
30279
|
+
return promise;
|
|
30283
30280
|
}
|
|
30284
30281
|
|
|
30285
|
-
|
|
30286
|
-
|
|
30287
|
-
|
|
30288
|
-
// Ignore potential SecurityError exceptions
|
|
30282
|
+
/** Get the current ID and increment it for the next call. */
|
|
30283
|
+
_getAndIncrementId() {
|
|
30284
|
+
return this._id++;
|
|
30289
30285
|
}
|
|
30290
30286
|
}
|
|
30291
30287
|
|
|
@@ -30324,6 +30320,9 @@ function isSessionExpired(session, idleTimeout, targetTime = +new Date()) {
|
|
|
30324
30320
|
);
|
|
30325
30321
|
}
|
|
30326
30322
|
|
|
30323
|
+
/**
|
|
30324
|
+
* Save a session to session storage.
|
|
30325
|
+
*/
|
|
30327
30326
|
function saveSession(session) {
|
|
30328
30327
|
const hasSessionStorage = 'sessionStorage' in WINDOW;
|
|
30329
30328
|
if (!hasSessionStorage) {
|
|
@@ -30466,64 +30465,153 @@ function getSession({
|
|
|
30466
30465
|
* Create a "span" for the total amount of memory being used by JS objects
|
|
30467
30466
|
* (including v8 internal objects).
|
|
30468
30467
|
*/
|
|
30469
|
-
function addMemoryEntry(replay) {
|
|
30468
|
+
async function addMemoryEntry(replay) {
|
|
30470
30469
|
// window.performance.memory is a non-standard API and doesn't work on all browsers, so we try-catch this
|
|
30471
30470
|
try {
|
|
30472
|
-
|
|
30473
|
-
|
|
30474
|
-
|
|
30475
|
-
|
|
30471
|
+
return Promise.all(
|
|
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
|
+
]),
|
|
30476
|
+
);
|
|
30476
30477
|
} catch (error) {
|
|
30477
30478
|
// Do nothing
|
|
30479
|
+
return [];
|
|
30478
30480
|
}
|
|
30479
30481
|
}
|
|
30480
30482
|
|
|
30481
|
-
function
|
|
30482
|
-
|
|
30483
|
-
|
|
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
|
+
};
|
|
30484
30501
|
}
|
|
30485
30502
|
|
|
30486
|
-
|
|
30487
|
-
|
|
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
|
+
};
|
|
30488
30514
|
|
|
30489
|
-
|
|
30490
|
-
|
|
30491
|
-
|
|
30515
|
+
/**
|
|
30516
|
+
* Create replay performance entries from the browser performance entries.
|
|
30517
|
+
*/
|
|
30518
|
+
function createPerformanceEntries(entries) {
|
|
30519
|
+
return entries.map(createPerformanceEntry).filter(Boolean) ;
|
|
30520
|
+
}
|
|
30492
30521
|
|
|
30493
|
-
|
|
30494
|
-
|
|
30495
|
-
|
|
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);
|
|
30522
|
+
function createPerformanceEntry(entry) {
|
|
30523
|
+
if (ENTRY_TYPES[entry.entryType] === undefined) {
|
|
30524
|
+
return null;
|
|
30503
30525
|
}
|
|
30504
30526
|
|
|
30505
|
-
return
|
|
30527
|
+
return ENTRY_TYPES[entry.entryType](entry);
|
|
30506
30528
|
}
|
|
30507
30529
|
|
|
30508
|
-
function
|
|
30509
|
-
|
|
30510
|
-
|
|
30511
|
-
|
|
30512
|
-
|
|
30513
|
-
|
|
30514
|
-
|
|
30515
|
-
|
|
30516
|
-
|
|
30517
|
-
|
|
30518
|
-
|
|
30519
|
-
|
|
30520
|
-
|
|
30521
|
-
|
|
30522
|
-
|
|
30523
|
-
|
|
30524
|
-
|
|
30525
|
-
|
|
30526
|
-
|
|
30530
|
+
function getAbsoluteTime(time) {
|
|
30531
|
+
// browserPerformanceTimeOrigin can be undefined if `performance` or
|
|
30532
|
+
// `performance.now` doesn't exist, but this is already checked by this integration
|
|
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
|
+
};
|
|
30548
|
+
}
|
|
30549
|
+
|
|
30550
|
+
// TODO: type definition!
|
|
30551
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
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
|
+
}
|
|
30572
|
+
|
|
30573
|
+
// TODO: type definition!
|
|
30574
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30575
|
+
function createResourceEntry(entry) {
|
|
30576
|
+
const { entryType, initiatorType, name, responseEnd, startTime, encodedBodySize, transferSize } = entry;
|
|
30577
|
+
|
|
30578
|
+
// Core SDK handles these
|
|
30579
|
+
if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {
|
|
30580
|
+
return null;
|
|
30581
|
+
}
|
|
30582
|
+
|
|
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
|
+
};
|
|
30593
|
+
}
|
|
30594
|
+
|
|
30595
|
+
// TODO: type definition!
|
|
30596
|
+
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
30597
|
+
function createLargestContentfulPaint(entry) {
|
|
30598
|
+
const { duration, entryType, startTime, size } = entry;
|
|
30599
|
+
|
|
30600
|
+
const start = getAbsoluteTime(startTime);
|
|
30601
|
+
|
|
30602
|
+
return {
|
|
30603
|
+
type: entryType,
|
|
30604
|
+
name: entryType,
|
|
30605
|
+
start,
|
|
30606
|
+
end: start + duration,
|
|
30607
|
+
data: {
|
|
30608
|
+
duration,
|
|
30609
|
+
size,
|
|
30610
|
+
// Not sure why this errors, Node should be correct (Argument of type 'Node' is not assignable to parameter of type 'INode')
|
|
30611
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30612
|
+
nodeId: record.mirror.getId(entry.element ),
|
|
30613
|
+
},
|
|
30614
|
+
};
|
|
30527
30615
|
}
|
|
30528
30616
|
|
|
30529
30617
|
/**
|
|
@@ -30589,7 +30677,112 @@ function debounce(func, wait, options) {
|
|
|
30589
30677
|
return debounced;
|
|
30590
30678
|
}
|
|
30591
30679
|
|
|
30592
|
-
|
|
30680
|
+
let _originalRecordDroppedEvent;
|
|
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({
|
|
30593
30786
|
client,
|
|
30594
30787
|
scope,
|
|
30595
30788
|
replayId: event_id,
|
|
@@ -30615,59 +30808,218 @@ async function getReplayEvent({
|
|
|
30615
30808
|
|
|
30616
30809
|
preparedEvent.sdk = {
|
|
30617
30810
|
...preparedEvent.sdk,
|
|
30618
|
-
version: "7.
|
|
30811
|
+
version: "7.31.0",
|
|
30619
30812
|
name,
|
|
30620
30813
|
};
|
|
30621
30814
|
|
|
30622
30815
|
return preparedEvent;
|
|
30623
30816
|
}
|
|
30624
30817
|
|
|
30625
|
-
|
|
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
|
+
});
|
|
30626
30837
|
|
|
30627
|
-
|
|
30628
|
-
const client = getCurrentHub().getClient();
|
|
30838
|
+
const { urls, errorIds, traceIds, initialTimestamp } = eventContext;
|
|
30629
30839
|
|
|
30630
|
-
|
|
30840
|
+
const hub = getCurrentHub();
|
|
30841
|
+
const client = hub.getClient();
|
|
30842
|
+
const scope = hub.getScope();
|
|
30843
|
+
const transport = client && client.getTransport();
|
|
30844
|
+
const dsn = _optionalChain([client, 'optionalAccess', _ => _.getDsn, 'call', _2 => _2()]);
|
|
30845
|
+
|
|
30846
|
+
if (!client || !scope || !transport || !dsn || !session.sampled) {
|
|
30631
30847
|
return;
|
|
30632
30848
|
}
|
|
30633
30849
|
|
|
30634
|
-
const
|
|
30850
|
+
const baseEvent = {
|
|
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
|
+
};
|
|
30635
30862
|
|
|
30636
|
-
const
|
|
30637
|
-
reason,
|
|
30638
|
-
category,
|
|
30639
|
-
event,
|
|
30640
|
-
) => {
|
|
30641
|
-
if (event && !event.type && event.event_id) {
|
|
30642
|
-
errorIds.delete(event.event_id);
|
|
30643
|
-
}
|
|
30863
|
+
const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });
|
|
30644
30864
|
|
|
30645
|
-
|
|
30865
|
+
if (!replayEvent) {
|
|
30866
|
+
// Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions
|
|
30867
|
+
client.recordDroppedEvent('event_processor', 'replay_event', baseEvent);
|
|
30868
|
+
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('An event processor returned `null`, will not send event.');
|
|
30869
|
+
return;
|
|
30870
|
+
}
|
|
30871
|
+
|
|
30872
|
+
replayEvent.tags = {
|
|
30873
|
+
...replayEvent.tags,
|
|
30874
|
+
sessionSampleRate: options.sessionSampleRate,
|
|
30875
|
+
errorSampleRate: options.errorSampleRate,
|
|
30646
30876
|
};
|
|
30647
30877
|
|
|
30648
|
-
|
|
30649
|
-
|
|
30878
|
+
/*
|
|
30879
|
+
For reference, the fully built event looks something like this:
|
|
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;
|
|
30650
30940
|
}
|
|
30651
30941
|
|
|
30652
|
-
|
|
30653
|
-
|
|
30942
|
+
/**
|
|
30943
|
+
* This error indicates that we hit a rate limit API error.
|
|
30944
|
+
*/
|
|
30945
|
+
class RateLimitError extends Error {
|
|
30654
30946
|
|
|
30655
|
-
|
|
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
|
+
}
|
|
30960
|
+
}
|
|
30961
|
+
|
|
30962
|
+
/**
|
|
30963
|
+
* Finalize and send the current replay event to Sentry
|
|
30964
|
+
*/
|
|
30965
|
+
async function sendReplay(
|
|
30966
|
+
replayData,
|
|
30967
|
+
retryConfig = {
|
|
30968
|
+
count: 0,
|
|
30969
|
+
interval: RETRY_BASE_INTERVAL,
|
|
30970
|
+
},
|
|
30971
|
+
) {
|
|
30972
|
+
const { recordingData, options } = replayData;
|
|
30973
|
+
|
|
30974
|
+
// short circuit if there's no events to upload (this shouldn't happen as _runFlush makes this check)
|
|
30975
|
+
if (!recordingData.length) {
|
|
30656
30976
|
return;
|
|
30657
30977
|
}
|
|
30658
30978
|
|
|
30659
|
-
|
|
30979
|
+
try {
|
|
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
|
+
}
|
|
30660
31016
|
}
|
|
30661
31017
|
|
|
30662
31018
|
/* eslint-disable max-lines */ // TODO: We might want to split this file up
|
|
30663
31019
|
|
|
30664
31020
|
/**
|
|
30665
|
-
*
|
|
31021
|
+
* The main replay container class, which holds all the state and methods for recording and sending replays.
|
|
30666
31022
|
*/
|
|
30667
|
-
|
|
30668
|
-
const BASE_RETRY_INTERVAL = 5000;
|
|
30669
|
-
const MAX_RETRY_COUNT = 3;
|
|
30670
|
-
|
|
30671
31023
|
class ReplayContainer {
|
|
30672
31024
|
__init() {this.eventBuffer = null;}
|
|
30673
31025
|
|
|
@@ -30689,40 +31041,37 @@ class ReplayContainer {
|
|
|
30689
31041
|
|
|
30690
31042
|
__init4() {this._performanceObserver = null;}
|
|
30691
31043
|
|
|
30692
|
-
__init5() {this.
|
|
30693
|
-
__init6() {this._retryInterval = BASE_RETRY_INTERVAL;}
|
|
30694
|
-
|
|
30695
|
-
__init7() {this._flushLock = null;}
|
|
31044
|
+
__init5() {this._flushLock = null;}
|
|
30696
31045
|
|
|
30697
31046
|
/**
|
|
30698
31047
|
* Timestamp of the last user activity. This lives across sessions.
|
|
30699
31048
|
*/
|
|
30700
|
-
|
|
31049
|
+
__init6() {this._lastActivity = new Date().getTime();}
|
|
30701
31050
|
|
|
30702
31051
|
/**
|
|
30703
31052
|
* Is the integration currently active?
|
|
30704
31053
|
*/
|
|
30705
|
-
|
|
31054
|
+
__init7() {this._isEnabled = false;}
|
|
30706
31055
|
|
|
30707
31056
|
/**
|
|
30708
31057
|
* Paused is a state where:
|
|
30709
31058
|
* - DOM Recording is not listening at all
|
|
30710
31059
|
* - Nothing will be added to event buffer (e.g. core SDK events)
|
|
30711
31060
|
*/
|
|
30712
|
-
|
|
31061
|
+
__init8() {this._isPaused = false;}
|
|
30713
31062
|
|
|
30714
31063
|
/**
|
|
30715
31064
|
* Have we attached listeners to the core SDK?
|
|
30716
31065
|
* Note we have to track this as there is no way to remove instrumentation handlers.
|
|
30717
31066
|
*/
|
|
30718
|
-
|
|
31067
|
+
__init9() {this._hasInitializedCoreListeners = false;}
|
|
30719
31068
|
|
|
30720
31069
|
/**
|
|
30721
31070
|
* Function to stop recording
|
|
30722
31071
|
*/
|
|
30723
|
-
|
|
31072
|
+
__init10() {this._stopRecording = null;}
|
|
30724
31073
|
|
|
30725
|
-
|
|
31074
|
+
__init11() {this._context = {
|
|
30726
31075
|
errorIds: new Set(),
|
|
30727
31076
|
traceIds: new Set(),
|
|
30728
31077
|
urls: [],
|
|
@@ -30731,11 +31080,16 @@ class ReplayContainer {
|
|
|
30731
31080
|
initialUrl: '',
|
|
30732
31081
|
};}
|
|
30733
31082
|
|
|
30734
|
-
|
|
31083
|
+
constructor({
|
|
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);
|
|
30735
31089
|
this._recordingOptions = recordingOptions;
|
|
30736
31090
|
this._options = options;
|
|
30737
31091
|
|
|
30738
|
-
this._debouncedFlush = debounce(() => this.
|
|
31092
|
+
this._debouncedFlush = debounce(() => this._flush(), this._options.flushMinDelay, {
|
|
30739
31093
|
maxWait: this._options.flushMaxDelay,
|
|
30740
31094
|
});
|
|
30741
31095
|
}
|
|
@@ -30766,14 +31120,14 @@ class ReplayContainer {
|
|
|
30766
31120
|
* Creates or loads a session, attaches listeners to varying events (DOM,
|
|
30767
31121
|
* _performanceObserver, Recording, Sentry SDK, etc)
|
|
30768
31122
|
*/
|
|
30769
|
-
|
|
30770
|
-
this.
|
|
31123
|
+
start() {
|
|
31124
|
+
this._setInitialState();
|
|
30771
31125
|
|
|
30772
|
-
this.
|
|
31126
|
+
this._loadSession({ expiry: SESSION_IDLE_DURATION });
|
|
30773
31127
|
|
|
30774
31128
|
// If there is no session, then something bad has happened - can't continue
|
|
30775
31129
|
if (!this.session) {
|
|
30776
|
-
this.
|
|
31130
|
+
this._handleException(new Error('No session found'));
|
|
30777
31131
|
return;
|
|
30778
31132
|
}
|
|
30779
31133
|
|
|
@@ -30782,23 +31136,21 @@ class ReplayContainer {
|
|
|
30782
31136
|
return;
|
|
30783
31137
|
}
|
|
30784
31138
|
|
|
30785
|
-
//
|
|
30786
|
-
//
|
|
30787
|
-
// when an error will occur, so we need to keep a buffer of
|
|
30788
|
-
// replay events.
|
|
31139
|
+
// If session is sampled for errors, then we need to set the recordingMode
|
|
31140
|
+
// to 'error', which will configure recording with different options.
|
|
30789
31141
|
if (this.session.sampled === 'error') {
|
|
30790
31142
|
this.recordingMode = 'error';
|
|
30791
31143
|
}
|
|
30792
31144
|
|
|
30793
31145
|
// setup() is generally called on page load or manually - in both cases we
|
|
30794
31146
|
// should treat it as an activity
|
|
30795
|
-
this.
|
|
31147
|
+
this._updateSessionActivity();
|
|
30796
31148
|
|
|
30797
31149
|
this.eventBuffer = createEventBuffer({
|
|
30798
31150
|
useCompression: Boolean(this._options.useCompression),
|
|
30799
31151
|
});
|
|
30800
31152
|
|
|
30801
|
-
this.
|
|
31153
|
+
this._addListeners();
|
|
30802
31154
|
|
|
30803
31155
|
// Need to set as enabled before we start recording, as `record()` can trigger a flush with a new checkout
|
|
30804
31156
|
this._isEnabled = true;
|
|
@@ -30811,18 +31163,18 @@ class ReplayContainer {
|
|
|
30811
31163
|
*
|
|
30812
31164
|
* Note that this will cause a new DOM checkout
|
|
30813
31165
|
*/
|
|
30814
|
-
|
|
31166
|
+
startRecording() {
|
|
30815
31167
|
try {
|
|
30816
31168
|
this._stopRecording = record({
|
|
30817
31169
|
...this._recordingOptions,
|
|
30818
|
-
// When running in error sampling mode, we need to overwrite `
|
|
31170
|
+
// When running in error sampling mode, we need to overwrite `checkoutEveryNms`
|
|
30819
31171
|
// Without this, it would record forever, until an error happens, which we don't want
|
|
30820
31172
|
// instead, we'll always keep the last 60 seconds of replay before an error happened
|
|
30821
|
-
...(this.recordingMode === 'error' && {
|
|
30822
|
-
emit: this.
|
|
31173
|
+
...(this.recordingMode === 'error' && { checkoutEveryNms: 60000 }),
|
|
31174
|
+
emit: this._handleRecordingEmit,
|
|
30823
31175
|
});
|
|
30824
31176
|
} catch (err) {
|
|
30825
|
-
this.
|
|
31177
|
+
this._handleException(err);
|
|
30826
31178
|
}
|
|
30827
31179
|
}
|
|
30828
31180
|
|
|
@@ -30843,16 +31195,17 @@ class ReplayContainer {
|
|
|
30843
31195
|
* Currently, this needs to be manually called (e.g. for tests). Sentry SDK
|
|
30844
31196
|
* does not support a teardown
|
|
30845
31197
|
*/
|
|
30846
|
-
|
|
31198
|
+
stop() {
|
|
30847
31199
|
try {
|
|
30848
31200
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Stopping Replays');
|
|
30849
31201
|
this._isEnabled = false;
|
|
30850
|
-
this.
|
|
31202
|
+
this._removeListeners();
|
|
30851
31203
|
_optionalChain([this, 'access', _8 => _8._stopRecording, 'optionalCall', _9 => _9()]);
|
|
30852
31204
|
_optionalChain([this, 'access', _10 => _10.eventBuffer, 'optionalAccess', _11 => _11.destroy, 'call', _12 => _12()]);
|
|
30853
31205
|
this.eventBuffer = null;
|
|
31206
|
+
this._debouncedFlush.cancel();
|
|
30854
31207
|
} catch (err) {
|
|
30855
|
-
this.
|
|
31208
|
+
this._handleException(err);
|
|
30856
31209
|
}
|
|
30857
31210
|
}
|
|
30858
31211
|
|
|
@@ -30861,7 +31214,7 @@ class ReplayContainer {
|
|
|
30861
31214
|
* This differs from stop as this only stops DOM recording, it is
|
|
30862
31215
|
* not as thorough of a shutdown as `stop()`.
|
|
30863
31216
|
*/
|
|
30864
|
-
|
|
31217
|
+
pause() {
|
|
30865
31218
|
this._isPaused = true;
|
|
30866
31219
|
try {
|
|
30867
31220
|
if (this._stopRecording) {
|
|
@@ -30869,7 +31222,7 @@ class ReplayContainer {
|
|
|
30869
31222
|
this._stopRecording = undefined;
|
|
30870
31223
|
}
|
|
30871
31224
|
} catch (err) {
|
|
30872
|
-
this.
|
|
31225
|
+
this._handleException(err);
|
|
30873
31226
|
}
|
|
30874
31227
|
}
|
|
30875
31228
|
|
|
@@ -30879,136 +31232,11 @@ class ReplayContainer {
|
|
|
30879
31232
|
* Note that calling `startRecording()` here will cause a
|
|
30880
31233
|
* new DOM checkout.`
|
|
30881
31234
|
*/
|
|
30882
|
-
|
|
31235
|
+
resume() {
|
|
30883
31236
|
this._isPaused = false;
|
|
30884
31237
|
this.startRecording();
|
|
30885
31238
|
}
|
|
30886
31239
|
|
|
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
|
-
|
|
31012
31240
|
/**
|
|
31013
31241
|
* We want to batch uploads of replay events. Save events only if
|
|
31014
31242
|
* `<flushMinDelay>` milliseconds have elapsed since the last event
|
|
@@ -31017,9 +31245,9 @@ class ReplayContainer {
|
|
|
31017
31245
|
* Accepts a callback to perform side-effects and returns true to stop batch
|
|
31018
31246
|
* processing and hand back control to caller.
|
|
31019
31247
|
*/
|
|
31020
|
-
|
|
31248
|
+
addUpdate(cb) {
|
|
31021
31249
|
// We need to always run `cb` (e.g. in the case of `this.recordingMode == 'error'`)
|
|
31022
|
-
const cbResult = _optionalChain([cb, 'optionalCall',
|
|
31250
|
+
const cbResult = _optionalChain([cb, 'optionalCall', _13 => _13()]);
|
|
31023
31251
|
|
|
31024
31252
|
// If this option is turned on then we will only want to call `flush`
|
|
31025
31253
|
// explicitly
|
|
@@ -31038,17 +31266,170 @@ class ReplayContainer {
|
|
|
31038
31266
|
this._debouncedFlush();
|
|
31039
31267
|
}
|
|
31040
31268
|
|
|
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
|
+
|
|
31041
31422
|
/**
|
|
31042
31423
|
* Handler for recording events.
|
|
31043
31424
|
*
|
|
31044
31425
|
* Adds to event buffer, and has varying flushing behaviors if the event was a checkout.
|
|
31045
31426
|
*/
|
|
31046
|
-
|
|
31427
|
+
__init12() {this._handleRecordingEmit = (
|
|
31047
31428
|
event,
|
|
31048
31429
|
isCheckout,
|
|
31049
31430
|
) => {
|
|
31050
31431
|
// If this is false, it means session is expired, create and a new session and wait for checkout
|
|
31051
|
-
if (!this.
|
|
31432
|
+
if (!this._checkAndHandleExpiredSession()) {
|
|
31052
31433
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Received replay event after session expired.');
|
|
31053
31434
|
|
|
31054
31435
|
return;
|
|
@@ -31061,12 +31442,12 @@ class ReplayContainer {
|
|
|
31061
31442
|
// checkout. This needs to happen before `addEvent()` which updates state
|
|
31062
31443
|
// dependent on this reset.
|
|
31063
31444
|
if (this.recordingMode === 'error' && event.type === 2) {
|
|
31064
|
-
this.
|
|
31445
|
+
this._setInitialState();
|
|
31065
31446
|
}
|
|
31066
31447
|
|
|
31067
31448
|
// We need to clear existing events on a checkout, otherwise they are
|
|
31068
31449
|
// incremental event updates and should be appended
|
|
31069
|
-
addEvent(this, event, isCheckout);
|
|
31450
|
+
void addEvent(this, event, isCheckout);
|
|
31070
31451
|
|
|
31071
31452
|
// Different behavior for full snapshots (type=2), ignore other event types
|
|
31072
31453
|
// See https://github.com/rrweb-io/rrweb/blob/d8f9290ca496712aa1e7d472549480c4e7876594/packages/rrweb/src/types.ts#L16
|
|
@@ -31109,38 +31490,38 @@ class ReplayContainer {
|
|
|
31109
31490
|
* be hidden. Likewise, moving a different window to cover the contents of the
|
|
31110
31491
|
* page will also trigger a change to a hidden state.
|
|
31111
31492
|
*/
|
|
31112
|
-
|
|
31493
|
+
__init13() {this._handleVisibilityChange = () => {
|
|
31113
31494
|
if (WINDOW.document.visibilityState === 'visible') {
|
|
31114
|
-
this.
|
|
31495
|
+
this._doChangeToForegroundTasks();
|
|
31115
31496
|
} else {
|
|
31116
|
-
this.
|
|
31497
|
+
this._doChangeToBackgroundTasks();
|
|
31117
31498
|
}
|
|
31118
31499
|
};}
|
|
31119
31500
|
|
|
31120
31501
|
/**
|
|
31121
31502
|
* Handle when page is blurred
|
|
31122
31503
|
*/
|
|
31123
|
-
|
|
31504
|
+
__init14() {this._handleWindowBlur = () => {
|
|
31124
31505
|
const breadcrumb = createBreadcrumb({
|
|
31125
31506
|
category: 'ui.blur',
|
|
31126
31507
|
});
|
|
31127
31508
|
|
|
31128
31509
|
// Do not count blur as a user action -- it's part of the process of them
|
|
31129
31510
|
// leaving the page
|
|
31130
|
-
this.
|
|
31511
|
+
this._doChangeToBackgroundTasks(breadcrumb);
|
|
31131
31512
|
};}
|
|
31132
31513
|
|
|
31133
31514
|
/**
|
|
31134
31515
|
* Handle when page is focused
|
|
31135
31516
|
*/
|
|
31136
|
-
|
|
31517
|
+
__init15() {this._handleWindowFocus = () => {
|
|
31137
31518
|
const breadcrumb = createBreadcrumb({
|
|
31138
31519
|
category: 'ui.focus',
|
|
31139
31520
|
});
|
|
31140
31521
|
|
|
31141
31522
|
// Do not count focus as a user action -- instead wait until they focus and
|
|
31142
31523
|
// interactive with page
|
|
31143
|
-
this.
|
|
31524
|
+
this._doChangeToForegroundTasks(breadcrumb);
|
|
31144
31525
|
};}
|
|
31145
31526
|
|
|
31146
31527
|
/**
|
|
@@ -31148,7 +31529,7 @@ class ReplayContainer {
|
|
|
31148
31529
|
*
|
|
31149
31530
|
* These events will create breadcrumb-like objects in the recording.
|
|
31150
31531
|
*/
|
|
31151
|
-
|
|
31532
|
+
__init16() {this._handleCoreBreadcrumbListener =
|
|
31152
31533
|
(type) =>
|
|
31153
31534
|
(handlerData) => {
|
|
31154
31535
|
if (!this._isEnabled) {
|
|
@@ -31168,11 +31549,11 @@ class ReplayContainer {
|
|
|
31168
31549
|
if (result.category === 'ui.click') {
|
|
31169
31550
|
this.triggerUserActivity();
|
|
31170
31551
|
} else {
|
|
31171
|
-
this.
|
|
31552
|
+
this._checkAndHandleExpiredSession();
|
|
31172
31553
|
}
|
|
31173
31554
|
|
|
31174
31555
|
this.addUpdate(() => {
|
|
31175
|
-
addEvent(this, {
|
|
31556
|
+
void addEvent(this, {
|
|
31176
31557
|
type: EventType.Custom,
|
|
31177
31558
|
// TODO: We were converting from ms to seconds for breadcrumbs, spans,
|
|
31178
31559
|
// but maybe we should just keep them as milliseconds
|
|
@@ -31191,7 +31572,7 @@ class ReplayContainer {
|
|
|
31191
31572
|
/**
|
|
31192
31573
|
* Tasks to run when we consider a page to be hidden (via blurring and/or visibility)
|
|
31193
31574
|
*/
|
|
31194
|
-
|
|
31575
|
+
_doChangeToBackgroundTasks(breadcrumb) {
|
|
31195
31576
|
if (!this.session) {
|
|
31196
31577
|
return;
|
|
31197
31578
|
}
|
|
@@ -31199,24 +31580,24 @@ class ReplayContainer {
|
|
|
31199
31580
|
const expired = isSessionExpired(this.session, VISIBILITY_CHANGE_TIMEOUT);
|
|
31200
31581
|
|
|
31201
31582
|
if (breadcrumb && !expired) {
|
|
31202
|
-
this.
|
|
31583
|
+
this._createCustomBreadcrumb(breadcrumb);
|
|
31203
31584
|
}
|
|
31204
31585
|
|
|
31205
31586
|
// Send replay when the page/tab becomes hidden. There is no reason to send
|
|
31206
31587
|
// replay if it becomes visible, since no actions we care about were done
|
|
31207
31588
|
// while it was hidden
|
|
31208
|
-
this.
|
|
31589
|
+
this._conditionalFlush();
|
|
31209
31590
|
}
|
|
31210
31591
|
|
|
31211
31592
|
/**
|
|
31212
31593
|
* Tasks to run when we consider a page to be visible (via focus and/or visibility)
|
|
31213
31594
|
*/
|
|
31214
|
-
|
|
31595
|
+
_doChangeToForegroundTasks(breadcrumb) {
|
|
31215
31596
|
if (!this.session) {
|
|
31216
31597
|
return;
|
|
31217
31598
|
}
|
|
31218
31599
|
|
|
31219
|
-
const isSessionActive = this.
|
|
31600
|
+
const isSessionActive = this._checkAndHandleExpiredSession({
|
|
31220
31601
|
expiry: VISIBILITY_CHANGE_TIMEOUT,
|
|
31221
31602
|
});
|
|
31222
31603
|
|
|
@@ -31229,7 +31610,7 @@ class ReplayContainer {
|
|
|
31229
31610
|
}
|
|
31230
31611
|
|
|
31231
31612
|
if (breadcrumb) {
|
|
31232
|
-
this.
|
|
31613
|
+
this._createCustomBreadcrumb(breadcrumb);
|
|
31233
31614
|
}
|
|
31234
31615
|
}
|
|
31235
31616
|
|
|
@@ -31237,7 +31618,7 @@ class ReplayContainer {
|
|
|
31237
31618
|
* Trigger rrweb to take a full snapshot which will cause this plugin to
|
|
31238
31619
|
* create a new Replay event.
|
|
31239
31620
|
*/
|
|
31240
|
-
|
|
31621
|
+
_triggerFullSnapshot() {
|
|
31241
31622
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.log('[Replay] Taking full rrweb snapshot');
|
|
31242
31623
|
record.takeFullSnapshot(true);
|
|
31243
31624
|
}
|
|
@@ -31245,52 +31626,26 @@ class ReplayContainer {
|
|
|
31245
31626
|
/**
|
|
31246
31627
|
* Update user activity (across session lifespans)
|
|
31247
31628
|
*/
|
|
31248
|
-
|
|
31629
|
+
_updateUserActivity(_lastActivity = new Date().getTime()) {
|
|
31249
31630
|
this._lastActivity = _lastActivity;
|
|
31250
31631
|
}
|
|
31251
31632
|
|
|
31252
31633
|
/**
|
|
31253
31634
|
* Updates the session's last activity timestamp
|
|
31254
31635
|
*/
|
|
31255
|
-
|
|
31636
|
+
_updateSessionActivity(_lastActivity = new Date().getTime()) {
|
|
31256
31637
|
if (this.session) {
|
|
31257
31638
|
this.session.lastActivity = _lastActivity;
|
|
31258
31639
|
this._maybeSaveSession();
|
|
31259
31640
|
}
|
|
31260
31641
|
}
|
|
31261
31642
|
|
|
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
|
-
|
|
31288
31643
|
/**
|
|
31289
31644
|
* Helper to create (and buffer) a replay breadcrumb from a core SDK breadcrumb
|
|
31290
31645
|
*/
|
|
31291
|
-
|
|
31646
|
+
_createCustomBreadcrumb(breadcrumb) {
|
|
31292
31647
|
this.addUpdate(() => {
|
|
31293
|
-
addEvent(this, {
|
|
31648
|
+
void addEvent(this, {
|
|
31294
31649
|
type: EventType.Custom,
|
|
31295
31650
|
timestamp: breadcrumb.timestamp || 0,
|
|
31296
31651
|
data: {
|
|
@@ -31305,12 +31660,12 @@ class ReplayContainer {
|
|
|
31305
31660
|
* Observed performance events are added to `this.performanceEvents`. These
|
|
31306
31661
|
* are included in the replay event before it is finished and sent to Sentry.
|
|
31307
31662
|
*/
|
|
31308
|
-
|
|
31663
|
+
_addPerformanceEntries() {
|
|
31309
31664
|
// Copy and reset entries before processing
|
|
31310
31665
|
const entries = [...this.performanceEvents];
|
|
31311
31666
|
this.performanceEvents = [];
|
|
31312
31667
|
|
|
31313
|
-
createPerformanceSpans(this, createPerformanceEntries(entries));
|
|
31668
|
+
return Promise.all(createPerformanceSpans(this, createPerformanceEntries(entries)));
|
|
31314
31669
|
}
|
|
31315
31670
|
|
|
31316
31671
|
/**
|
|
@@ -31320,7 +31675,7 @@ class ReplayContainer {
|
|
|
31320
31675
|
*
|
|
31321
31676
|
* Returns true if session is not expired, false otherwise.
|
|
31322
31677
|
*/
|
|
31323
|
-
|
|
31678
|
+
_checkAndHandleExpiredSession({ expiry = SESSION_IDLE_DURATION } = {}) {
|
|
31324
31679
|
const oldSessionId = _optionalChain([this, 'access', _22 => _22.session, 'optionalAccess', _23 => _23.id]);
|
|
31325
31680
|
|
|
31326
31681
|
// Prevent starting a new session if the last user activity is older than
|
|
@@ -31335,7 +31690,7 @@ class ReplayContainer {
|
|
|
31335
31690
|
|
|
31336
31691
|
// --- There is recent user activity --- //
|
|
31337
31692
|
// This will create a new session if expired, based on expiry length
|
|
31338
|
-
this.
|
|
31693
|
+
this._loadSession({ expiry });
|
|
31339
31694
|
|
|
31340
31695
|
// Session was expired if session ids do not match
|
|
31341
31696
|
const expired = oldSessionId !== _optionalChain([this, 'access', _24 => _24.session, 'optionalAccess', _25 => _25.id]);
|
|
@@ -31345,7 +31700,7 @@ class ReplayContainer {
|
|
|
31345
31700
|
}
|
|
31346
31701
|
|
|
31347
31702
|
// Session is expired, trigger a full snapshot (which will create a new session)
|
|
31348
|
-
this.
|
|
31703
|
+
this._triggerFullSnapshot();
|
|
31349
31704
|
|
|
31350
31705
|
return false;
|
|
31351
31706
|
}
|
|
@@ -31353,7 +31708,7 @@ class ReplayContainer {
|
|
|
31353
31708
|
/**
|
|
31354
31709
|
* Only flush if `this.recordingMode === 'session'`
|
|
31355
31710
|
*/
|
|
31356
|
-
|
|
31711
|
+
_conditionalFlush() {
|
|
31357
31712
|
if (this.recordingMode === 'error') {
|
|
31358
31713
|
return;
|
|
31359
31714
|
}
|
|
@@ -31364,7 +31719,7 @@ class ReplayContainer {
|
|
|
31364
31719
|
/**
|
|
31365
31720
|
* Clear _context
|
|
31366
31721
|
*/
|
|
31367
|
-
|
|
31722
|
+
_clearContext() {
|
|
31368
31723
|
// XXX: `initialTimestamp` and `initialUrl` do not get cleared
|
|
31369
31724
|
this._context.errorIds.clear();
|
|
31370
31725
|
this._context.traceIds.clear();
|
|
@@ -31375,7 +31730,7 @@ class ReplayContainer {
|
|
|
31375
31730
|
/**
|
|
31376
31731
|
* Return and clear _context
|
|
31377
31732
|
*/
|
|
31378
|
-
|
|
31733
|
+
_popEventContext() {
|
|
31379
31734
|
if (this._context.earliestEvent && this._context.earliestEvent < this._context.initialTimestamp) {
|
|
31380
31735
|
this._context.initialTimestamp = this._context.earliestEvent;
|
|
31381
31736
|
}
|
|
@@ -31388,7 +31743,7 @@ class ReplayContainer {
|
|
|
31388
31743
|
urls: this._context.urls,
|
|
31389
31744
|
};
|
|
31390
31745
|
|
|
31391
|
-
this.
|
|
31746
|
+
this._clearContext();
|
|
31392
31747
|
|
|
31393
31748
|
return _context;
|
|
31394
31749
|
}
|
|
@@ -31401,15 +31756,15 @@ class ReplayContainer {
|
|
|
31401
31756
|
*
|
|
31402
31757
|
* Should never be called directly, only by `flush`
|
|
31403
31758
|
*/
|
|
31404
|
-
|
|
31759
|
+
async _runFlush() {
|
|
31405
31760
|
if (!this.session) {
|
|
31406
31761
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] No session found to flush.');
|
|
31407
31762
|
return;
|
|
31408
31763
|
}
|
|
31409
31764
|
|
|
31410
|
-
await this.
|
|
31765
|
+
await this._addPerformanceEntries();
|
|
31411
31766
|
|
|
31412
|
-
if (!_optionalChain([this, 'access', _26 => _26.eventBuffer, 'optionalAccess', _27 => _27.
|
|
31767
|
+
if (!_optionalChain([this, 'access', _26 => _26.eventBuffer, 'optionalAccess', _27 => _27.pendingLength])) {
|
|
31413
31768
|
return;
|
|
31414
31769
|
}
|
|
31415
31770
|
|
|
@@ -31423,20 +31778,32 @@ class ReplayContainer {
|
|
|
31423
31778
|
// NOTE: Copy values from instance members, as it's possible they could
|
|
31424
31779
|
// change before the flush finishes.
|
|
31425
31780
|
const replayId = this.session.id;
|
|
31426
|
-
const eventContext = this.
|
|
31781
|
+
const eventContext = this._popEventContext();
|
|
31427
31782
|
// Always increment segmentId regardless of outcome of sending replay
|
|
31428
31783
|
const segmentId = this.session.segmentId++;
|
|
31429
31784
|
this._maybeSaveSession();
|
|
31430
31785
|
|
|
31431
|
-
await
|
|
31786
|
+
await sendReplay({
|
|
31432
31787
|
replayId,
|
|
31433
|
-
|
|
31788
|
+
recordingData,
|
|
31434
31789
|
segmentId,
|
|
31435
31790
|
includeReplayStartTimestamp: segmentId === 0,
|
|
31436
31791
|
eventContext,
|
|
31792
|
+
session: this.session,
|
|
31793
|
+
options: this.getOptions(),
|
|
31794
|
+
timestamp: new Date().getTime(),
|
|
31437
31795
|
});
|
|
31438
31796
|
} catch (err) {
|
|
31439
|
-
this.
|
|
31797
|
+
this._handleException(err);
|
|
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();
|
|
31440
31807
|
}
|
|
31441
31808
|
}
|
|
31442
31809
|
|
|
@@ -31444,14 +31811,13 @@ class ReplayContainer {
|
|
|
31444
31811
|
* Flush recording data to Sentry. Creates a lock so that only a single flush
|
|
31445
31812
|
* can be active at a time. Do not call this directly.
|
|
31446
31813
|
*/
|
|
31447
|
-
|
|
31814
|
+
__init17() {this._flush = async () => {
|
|
31448
31815
|
if (!this._isEnabled) {
|
|
31449
|
-
// This
|
|
31450
|
-
// cause a flush.
|
|
31816
|
+
// This can happen if e.g. the replay was stopped because of exceeding the retry limit
|
|
31451
31817
|
return;
|
|
31452
31818
|
}
|
|
31453
31819
|
|
|
31454
|
-
if (!this.
|
|
31820
|
+
if (!this._checkAndHandleExpiredSession()) {
|
|
31455
31821
|
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.error('[Replay] Attempting to finish replay event after session expired.');
|
|
31456
31822
|
return;
|
|
31457
31823
|
}
|
|
@@ -31464,16 +31830,16 @@ class ReplayContainer {
|
|
|
31464
31830
|
// A flush is about to happen, cancel any queued flushes
|
|
31465
31831
|
_optionalChain([this, 'access', _30 => _30._debouncedFlush, 'optionalAccess', _31 => _31.cancel, 'call', _32 => _32()]);
|
|
31466
31832
|
|
|
31467
|
-
// this._flushLock acts as a lock so that future calls to `
|
|
31833
|
+
// this._flushLock acts as a lock so that future calls to `_flush()`
|
|
31468
31834
|
// will be blocked until this promise resolves
|
|
31469
31835
|
if (!this._flushLock) {
|
|
31470
|
-
this._flushLock = this.
|
|
31836
|
+
this._flushLock = this._runFlush();
|
|
31471
31837
|
await this._flushLock;
|
|
31472
31838
|
this._flushLock = null;
|
|
31473
31839
|
return;
|
|
31474
31840
|
}
|
|
31475
31841
|
|
|
31476
|
-
// Wait for previous flush to finish, then call the debounced `
|
|
31842
|
+
// Wait for previous flush to finish, then call the debounced `_flush()`.
|
|
31477
31843
|
// It's possible there are other flush requests queued and waiting for it
|
|
31478
31844
|
// to resolve. We want to reduce all outstanding requests (as well as any
|
|
31479
31845
|
// new flush requests that occur within a second of the locked flush
|
|
@@ -31488,205 +31854,59 @@ class ReplayContainer {
|
|
|
31488
31854
|
}
|
|
31489
31855
|
};}
|
|
31490
31856
|
|
|
31491
|
-
/**
|
|
31492
|
-
|
|
31493
|
-
|
|
31494
|
-
|
|
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;
|
|
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);
|
|
31857
|
+
/** Save the session, if it is sticky */
|
|
31858
|
+
_maybeSaveSession() {
|
|
31859
|
+
if (this.session && this._options.stickySession) {
|
|
31860
|
+
saveSession(this.session);
|
|
31604
31861
|
}
|
|
31605
31862
|
}
|
|
31606
31863
|
|
|
31607
|
-
resetRetries() {
|
|
31608
|
-
this._retryCount = 0;
|
|
31609
|
-
this._retryInterval = BASE_RETRY_INTERVAL;
|
|
31610
|
-
}
|
|
31611
|
-
|
|
31612
31864
|
/**
|
|
31613
|
-
*
|
|
31865
|
+
* Pauses the replay and resumes it after the rate-limit duration is over.
|
|
31614
31866
|
*/
|
|
31615
|
-
|
|
31616
|
-
|
|
31617
|
-
|
|
31618
|
-
|
|
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) {
|
|
31867
|
+
_handleRateLimit(rateLimits) {
|
|
31868
|
+
// in case recording is already paused, we don't need to do anything, as we might have already paused because of a
|
|
31869
|
+
// rate limit
|
|
31870
|
+
if (this.isPaused()) {
|
|
31624
31871
|
return;
|
|
31625
31872
|
}
|
|
31626
31873
|
|
|
31627
|
-
|
|
31628
|
-
|
|
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);
|
|
31874
|
+
const rateLimitEnd = disabledUntil(rateLimits, 'replay');
|
|
31875
|
+
const rateLimitDuration = rateLimitEnd - Date.now();
|
|
31643
31876
|
|
|
31644
|
-
|
|
31645
|
-
|
|
31646
|
-
|
|
31647
|
-
|
|
31648
|
-
}
|
|
31649
|
-
|
|
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
|
-
}
|
|
31877
|
+
if (rateLimitDuration > 0) {
|
|
31878
|
+
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.warn('[Replay]', `Rate limit hit, pausing replay for ${rateLimitDuration}ms`);
|
|
31879
|
+
this.pause();
|
|
31880
|
+
this._debouncedFlush.cancel();
|
|
31672
31881
|
|
|
31673
|
-
|
|
31674
|
-
|
|
31675
|
-
|
|
31676
|
-
|
|
31882
|
+
setTimeout(() => {
|
|
31883
|
+
(typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__) && logger.info('[Replay]', 'Resuming replay after rate limit');
|
|
31884
|
+
this.resume();
|
|
31885
|
+
}, rateLimitDuration);
|
|
31677
31886
|
}
|
|
31678
31887
|
}
|
|
31679
31888
|
}
|
|
31680
31889
|
|
|
31890
|
+
/**
|
|
31891
|
+
* Returns true if we are in the browser.
|
|
31892
|
+
*/
|
|
31681
31893
|
function isBrowser() {
|
|
31682
31894
|
// eslint-disable-next-line no-restricted-globals
|
|
31683
|
-
return typeof window !== 'undefined' && !isNodeEnv();
|
|
31895
|
+
return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());
|
|
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';
|
|
31684
31901
|
}
|
|
31685
31902
|
|
|
31686
31903
|
const MEDIA_SELECTORS = 'img,image,svg,path,rect,area,video,object,picture,embed,map,audio';
|
|
31687
31904
|
|
|
31688
31905
|
let _initialized = false;
|
|
31689
31906
|
|
|
31907
|
+
/**
|
|
31908
|
+
* The main replay integration class, to be passed to `init({ integrations: [] })`.
|
|
31909
|
+
*/
|
|
31690
31910
|
class Replay {
|
|
31691
31911
|
/**
|
|
31692
31912
|
* @inheritDoc
|
|
@@ -31702,15 +31922,7 @@ class Replay {
|
|
|
31702
31922
|
* Options to pass to `rrweb.record()`
|
|
31703
31923
|
*/
|
|
31704
31924
|
|
|
31705
|
-
|
|
31706
|
-
return _initialized;
|
|
31707
|
-
}
|
|
31708
|
-
|
|
31709
|
-
set _isInitialized(value) {
|
|
31710
|
-
_initialized = value;
|
|
31711
|
-
}
|
|
31712
|
-
|
|
31713
|
-
constructor({
|
|
31925
|
+
constructor({
|
|
31714
31926
|
flushMinDelay = DEFAULT_FLUSH_MIN_DELAY,
|
|
31715
31927
|
flushMaxDelay = DEFAULT_FLUSH_MAX_DELAY,
|
|
31716
31928
|
initialFlushDelay = INITIAL_FLUSH_DELAY,
|
|
@@ -31727,19 +31939,19 @@ class Replay {
|
|
|
31727
31939
|
ignoreClass = 'sentry-ignore',
|
|
31728
31940
|
maskTextClass = 'sentry-mask',
|
|
31729
31941
|
blockSelector = '[data-sentry-block]',
|
|
31730
|
-
...
|
|
31942
|
+
..._recordingOptions
|
|
31731
31943
|
} = {}) {Replay.prototype.__init.call(this);
|
|
31732
|
-
this.
|
|
31944
|
+
this._recordingOptions = {
|
|
31733
31945
|
maskAllInputs,
|
|
31734
31946
|
blockClass,
|
|
31735
31947
|
ignoreClass,
|
|
31736
31948
|
maskTextClass,
|
|
31737
31949
|
maskTextSelector,
|
|
31738
31950
|
blockSelector,
|
|
31739
|
-
...
|
|
31951
|
+
..._recordingOptions,
|
|
31740
31952
|
};
|
|
31741
31953
|
|
|
31742
|
-
this.
|
|
31954
|
+
this._options = {
|
|
31743
31955
|
flushMinDelay,
|
|
31744
31956
|
flushMaxDelay,
|
|
31745
31957
|
stickySession,
|
|
@@ -31761,7 +31973,7 @@ Instead, configure \`replaysSessionSampleRate\` directly in the SDK init options
|
|
|
31761
31973
|
Sentry.init({ replaysSessionSampleRate: ${sessionSampleRate} })`,
|
|
31762
31974
|
);
|
|
31763
31975
|
|
|
31764
|
-
this.
|
|
31976
|
+
this._options.sessionSampleRate = sessionSampleRate;
|
|
31765
31977
|
}
|
|
31766
31978
|
|
|
31767
31979
|
if (typeof errorSampleRate === 'number') {
|
|
@@ -31773,31 +31985,41 @@ Instead, configure \`replaysOnErrorSampleRate\` directly in the SDK init options
|
|
|
31773
31985
|
Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
31774
31986
|
);
|
|
31775
31987
|
|
|
31776
|
-
this.
|
|
31988
|
+
this._options.errorSampleRate = errorSampleRate;
|
|
31777
31989
|
}
|
|
31778
31990
|
|
|
31779
|
-
if (this.
|
|
31991
|
+
if (this._options.maskAllText) {
|
|
31780
31992
|
// `maskAllText` is a more user friendly option to configure
|
|
31781
31993
|
// `maskTextSelector`. This means that all nodes will have their text
|
|
31782
31994
|
// content masked.
|
|
31783
|
-
this.
|
|
31995
|
+
this._recordingOptions.maskTextSelector = MASK_ALL_TEXT_SELECTOR;
|
|
31784
31996
|
}
|
|
31785
31997
|
|
|
31786
|
-
if (this.
|
|
31998
|
+
if (this._options.blockAllMedia) {
|
|
31787
31999
|
// `blockAllMedia` is a more user friendly option to configure blocking
|
|
31788
32000
|
// embedded media elements
|
|
31789
|
-
this.
|
|
32001
|
+
this._recordingOptions.blockSelector = !this._recordingOptions.blockSelector
|
|
31790
32002
|
? MEDIA_SELECTORS
|
|
31791
|
-
: `${this.
|
|
32003
|
+
: `${this._recordingOptions.blockSelector},${MEDIA_SELECTORS}`;
|
|
31792
32004
|
}
|
|
31793
32005
|
|
|
31794
|
-
if (
|
|
32006
|
+
if (this._isInitialized && isBrowser()) {
|
|
31795
32007
|
throw new Error('Multiple Sentry Session Replay instances are not supported');
|
|
31796
32008
|
}
|
|
31797
32009
|
|
|
31798
32010
|
this._isInitialized = true;
|
|
31799
32011
|
}
|
|
31800
32012
|
|
|
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
|
+
|
|
31801
32023
|
/**
|
|
31802
32024
|
* We previously used to create a transaction in `setupOnce` and it would
|
|
31803
32025
|
* potentially create a transaction before some native SDK integrations have run
|
|
@@ -31808,7 +32030,7 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
31808
32030
|
* global event processors to finish. This is no longer needed, but keeping it
|
|
31809
32031
|
* here to avoid any future issues.
|
|
31810
32032
|
*/
|
|
31811
|
-
|
|
32033
|
+
setupOnce() {
|
|
31812
32034
|
if (!isBrowser()) {
|
|
31813
32035
|
return;
|
|
31814
32036
|
}
|
|
@@ -31825,7 +32047,7 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
31825
32047
|
* Creates or loads a session, attaches listeners to varying events (DOM,
|
|
31826
32048
|
* PerformanceObserver, Recording, Sentry SDK, etc)
|
|
31827
32049
|
*/
|
|
31828
|
-
|
|
32050
|
+
start() {
|
|
31829
32051
|
if (!this._replay) {
|
|
31830
32052
|
return;
|
|
31831
32053
|
}
|
|
@@ -31837,7 +32059,7 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
31837
32059
|
* Currently, this needs to be manually called (e.g. for tests). Sentry SDK
|
|
31838
32060
|
* does not support a teardown
|
|
31839
32061
|
*/
|
|
31840
|
-
|
|
32062
|
+
stop() {
|
|
31841
32063
|
if (!this._replay) {
|
|
31842
32064
|
return;
|
|
31843
32065
|
}
|
|
@@ -31845,13 +32067,14 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
31845
32067
|
this._replay.stop();
|
|
31846
32068
|
}
|
|
31847
32069
|
|
|
32070
|
+
/** Setup the integration. */
|
|
31848
32071
|
_setup() {
|
|
31849
32072
|
// Client is not available in constructor, so we need to wait until setupOnce
|
|
31850
32073
|
this._loadReplayOptionsFromClient();
|
|
31851
32074
|
|
|
31852
32075
|
this._replay = new ReplayContainer({
|
|
31853
|
-
options: this.
|
|
31854
|
-
recordingOptions: this.
|
|
32076
|
+
options: this._options,
|
|
32077
|
+
recordingOptions: this._recordingOptions,
|
|
31855
32078
|
});
|
|
31856
32079
|
}
|
|
31857
32080
|
|
|
@@ -31861,11 +32084,11 @@ Sentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,
|
|
|
31861
32084
|
const opt = client && (client.getOptions() );
|
|
31862
32085
|
|
|
31863
32086
|
if (opt && typeof opt.replaysSessionSampleRate === 'number') {
|
|
31864
|
-
this.
|
|
32087
|
+
this._options.sessionSampleRate = opt.replaysSessionSampleRate;
|
|
31865
32088
|
}
|
|
31866
32089
|
|
|
31867
32090
|
if (opt && typeof opt.replaysOnErrorSampleRate === 'number') {
|
|
31868
|
-
this.
|
|
32091
|
+
this._options.errorSampleRate = opt.replaysOnErrorSampleRate;
|
|
31869
32092
|
}
|
|
31870
32093
|
}
|
|
31871
32094
|
} Replay.__initStatic();
|
|
@@ -32072,6 +32295,16 @@ const SentryTrackingFn = (event, context, name, level) => {
|
|
|
32072
32295
|
SentryHub.captureMessage(name, level);
|
|
32073
32296
|
});
|
|
32074
32297
|
};
|
|
32298
|
+
const SentryBreadcrumb = ({ type, level, event_id, category, message, data }) => {
|
|
32299
|
+
SentryHub.addBreadcrumb({
|
|
32300
|
+
type,
|
|
32301
|
+
level,
|
|
32302
|
+
event_id,
|
|
32303
|
+
category,
|
|
32304
|
+
message,
|
|
32305
|
+
data,
|
|
32306
|
+
});
|
|
32307
|
+
};
|
|
32075
32308
|
|
|
32076
32309
|
const PlayIcon = ({ playing }) => (React__default["default"].createElement("div", { className: "myinterview-widget-icons__play-button" },
|
|
32077
32310
|
React__default["default"].createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: "100%", height: "100%", fill: "currentColor", viewBox: "0 0 50 50" },
|
|
@@ -43234,6 +43467,7 @@ var STATES$3;
|
|
|
43234
43467
|
})(STATES$3 || (STATES$3 = {}));
|
|
43235
43468
|
var ACTIONS$3;
|
|
43236
43469
|
(function (ACTIONS) {
|
|
43470
|
+
ACTIONS["COLLECT_BREADCRUMB"] = "collectBreadcrumb";
|
|
43237
43471
|
ACTIONS["INIT_WEB_WORKER"] = "initWebWorker";
|
|
43238
43472
|
ACTIONS["CONSOLE_LOG"] = "consoleLog";
|
|
43239
43473
|
ACTIONS["SET_MEDIA_STREAM"] = "setMediaStream";
|
|
@@ -43395,7 +43629,7 @@ const microphoneMachine = createMachine({
|
|
|
43395
43629
|
},
|
|
43396
43630
|
},
|
|
43397
43631
|
[STATES$3.NOT_RECEIVING_DATA]: {
|
|
43398
|
-
entry: [
|
|
43632
|
+
entry: [ACTIONS$3.COLLECT_BREADCRUMB,
|
|
43399
43633
|
sendParent((context, event) => ({
|
|
43400
43634
|
data: recorderErrors.NoSoundError,
|
|
43401
43635
|
type: EVENTS$5.RECORDER_DEVICE_ERROR,
|
|
@@ -43426,6 +43660,22 @@ const microphoneMachine = createMachine({
|
|
|
43426
43660
|
},
|
|
43427
43661
|
}, {
|
|
43428
43662
|
actions: {
|
|
43663
|
+
[ACTIONS$3.COLLECT_BREADCRUMB]: (context) => {
|
|
43664
|
+
var _a, _b, _c;
|
|
43665
|
+
SentryBreadcrumb({
|
|
43666
|
+
type: 'debug',
|
|
43667
|
+
level: 'warning',
|
|
43668
|
+
category: 'mic',
|
|
43669
|
+
message: 'mic is inactive, this is the status of audioTrack',
|
|
43670
|
+
data: {
|
|
43671
|
+
audioTrack: {
|
|
43672
|
+
enabled: (_a = context === null || context === void 0 ? void 0 : context.mediaStream) === null || _a === void 0 ? void 0 : _a.getAudioTracks()[0].enabled,
|
|
43673
|
+
label: (_b = context === null || context === void 0 ? void 0 : context.mediaStream) === null || _b === void 0 ? void 0 : _b.getAudioTracks()[0].label,
|
|
43674
|
+
muted: (_c = context === null || context === void 0 ? void 0 : context.mediaStream) === null || _c === void 0 ? void 0 : _c.getAudioTracks()[0].muted,
|
|
43675
|
+
},
|
|
43676
|
+
},
|
|
43677
|
+
});
|
|
43678
|
+
},
|
|
43429
43679
|
[ACTIONS$3.INIT_WEB_WORKER]: assign({
|
|
43430
43680
|
webWorker: (context, _event) => (context.mediaStream ? new Builder(Worker$1) : null),
|
|
43431
43681
|
}),
|
|
@@ -43490,6 +43740,14 @@ const microphoneMachine = createMachine({
|
|
|
43490
43740
|
};
|
|
43491
43741
|
}
|
|
43492
43742
|
getVolume(0);
|
|
43743
|
+
ctx.onstatechange = () => {
|
|
43744
|
+
var _a, _b;
|
|
43745
|
+
if (ctx.state === 'suspended') {
|
|
43746
|
+
SentryTrackingFn({ type: 'status === suspended', data: ctx.state }, { label: (_a = context === null || context === void 0 ? void 0 : context.mediaStream) === null || _a === void 0 ? void 0 : _a.getAudioTracks()[0].label,
|
|
43747
|
+
muted: (_b = context === null || context === void 0 ? void 0 : context.mediaStream) === null || _b === void 0 ? void 0 : _b.getAudioTracks()[0].muted,
|
|
43748
|
+
status: ctx.state }, 'mic onstatechange', 'fatal');
|
|
43749
|
+
}
|
|
43750
|
+
};
|
|
43493
43751
|
return () => {
|
|
43494
43752
|
var _a;
|
|
43495
43753
|
mic = null;
|
|
@@ -44279,7 +44537,7 @@ const recorderMachineV2 = createMachine({
|
|
|
44279
44537
|
// errors
|
|
44280
44538
|
[GUARDS$3.NO_SOUND_FROM_MIC_MACHINE]: (context, event) => [ERROR_ENUM.NoSoundError].includes(event.data.name),
|
|
44281
44539
|
[GUARDS$3.IS_NOT_ALLOWED_ERROR]: (context, event) => [ERROR_ENUM.NotAllowedError].includes(event.data.name),
|
|
44282
|
-
[GUARDS$3.IS_ERROR_WITH_WRONG_PARAMS]: (context, event) => [ERROR_ENUM.OverconstrainedError
|
|
44540
|
+
[GUARDS$3.IS_ERROR_WITH_WRONG_PARAMS]: (context, event) => [ERROR_ENUM.OverconstrainedError].includes(event.data.name),
|
|
44283
44541
|
[GUARDS$3.IS_VIDEO_CORRUPTED]: (_, { data }) => !data.size,
|
|
44284
44542
|
},
|
|
44285
44543
|
});
|
|
@@ -45586,7 +45844,7 @@ const Main = ({ widgetConfig, setShouldShowWaterMark, myinterviewRef, isWidgetMi
|
|
|
45586
45844
|
isMobile && (React__default["default"].createElement(SliderModal, { isOpen: isSliderModalOpen, onClose: () => setIsSliderModalOpen(false), onRetry: isSetupState ? onRecorderRetry : onReInitRecorder }))));
|
|
45587
45845
|
};
|
|
45588
45846
|
|
|
45589
|
-
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;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)}";
|
|
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)}";
|
|
45590
45848
|
|
|
45591
45849
|
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" },
|
|
45592
45850
|
React__default["default"].createElement("rect", { x: "2.5", y: "2.5", width: "385", height: "795", rx: "37.5", stroke: "currentColor", strokeWidth: "5" }),
|