@opendesign-plus-test/plugins 0.0.1-rc.1

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.
@@ -0,0 +1,1939 @@
1
+ import { unref as hi, toRaw as fi } from "vue";
2
+ var Ri = (i) => {
3
+ throw TypeError(i);
4
+ }, Je = (i, e, t) => e.has(i) || Ri("Cannot " + t), h = (i, e, t) => (Je(i, e, "read from private field"), t ? t.call(i) : e.get(i)), I = (i, e, t) => e.has(i) ? Ri("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(i) : e.set(i, t), S = (i, e, t, n) => (Je(i, e, "write to private field"), e.set(i, t), t), N = (i, e, t) => (Je(i, e, "access private method"), t);
5
+ const P = [];
6
+ for (let i = 0; i < 256; ++i)
7
+ P.push((i + 256).toString(16).slice(1));
8
+ function Xi(i, e = 0) {
9
+ return (P[i[e + 0]] + P[i[e + 1]] + P[i[e + 2]] + P[i[e + 3]] + "-" + P[i[e + 4]] + P[i[e + 5]] + "-" + P[i[e + 6]] + P[i[e + 7]] + "-" + P[i[e + 8]] + P[i[e + 9]] + "-" + P[i[e + 10]] + P[i[e + 11]] + P[i[e + 12]] + P[i[e + 13]] + P[i[e + 14]] + P[i[e + 15]]).toLowerCase();
10
+ }
11
+ let je;
12
+ const Ki = new Uint8Array(16);
13
+ function Gi() {
14
+ if (!je) {
15
+ if (typeof crypto > "u" || !crypto.getRandomValues)
16
+ throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
17
+ je = crypto.getRandomValues.bind(crypto);
18
+ }
19
+ return je(Ki);
20
+ }
21
+ const Zi = typeof crypto < "u" && crypto.randomUUID && crypto.randomUUID.bind(crypto), bi = { randomUUID: Zi };
22
+ function Ji(i, e, t) {
23
+ var n, r, d;
24
+ if (bi.randomUUID && !i)
25
+ return bi.randomUUID();
26
+ i = i || {};
27
+ const u = (d = (r = i.random) != null ? r : (n = i.rng) == null ? void 0 : n.call(i)) != null ? d : Gi();
28
+ if (u.length < 16)
29
+ throw new Error("Random bytes length must be >= 16");
30
+ return u[6] = u[6] & 15 | 64, u[8] = u[8] & 63 | 128, Xi(u);
31
+ }
32
+ function wi() {
33
+ return Ji();
34
+ }
35
+ function W(i) {
36
+ return typeof i == "function";
37
+ }
38
+ function Qi(i) {
39
+ return i !== null && typeof i == "object";
40
+ }
41
+ const Yi = (i) => Qi(i) && W(i.then) && W(i.catch);
42
+ function et(i) {
43
+ document.readyState !== "loading" ? i() : document.addEventListener("DOMContentLoaded", () => i());
44
+ }
45
+ const it = typeof window < "u";
46
+ class tt {
47
+ constructor(e, t) {
48
+ this.store = e, this.checkExpiration = W(t == null ? void 0 : t.checkExpiration) ? t == null ? void 0 : t.checkExpiration : (n) => Date.now() > n;
49
+ }
50
+ set(e, t, n) {
51
+ const { once: r, expire: d } = n || {}, u = {
52
+ expire: d,
53
+ value: t,
54
+ once: r
55
+ };
56
+ this.store.setItem(e, JSON.stringify(u));
57
+ }
58
+ remove(e) {
59
+ this.store.removeItem(e);
60
+ }
61
+ setExpire(e, t) {
62
+ const { value: n } = this.get(e);
63
+ this.set(e, n, {
64
+ expire: t
65
+ });
66
+ }
67
+ get(e, {
68
+ checkExpiration: t,
69
+ onValid: n
70
+ } = {}) {
71
+ const r = this.store.getItem(e);
72
+ if (!r)
73
+ return {
74
+ value: void 0
75
+ };
76
+ try {
77
+ const { once: d, expire: u, value: b } = JSON.parse(r);
78
+ return (W(t) ? t : this.checkExpiration)(u) ? {
79
+ value: void 0
80
+ } : (d && this.remove(e), W(n) && n(b, u), { expire: u, value: b });
81
+ } catch {
82
+ return {
83
+ value: void 0
84
+ };
85
+ }
86
+ }
87
+ getAlways(e, {
88
+ defaultValue: t,
89
+ setOption: n,
90
+ onValid: r,
91
+ checkExpiration: d,
92
+ save: u = !0
93
+ }) {
94
+ let { value: b } = this.get(e, { checkExpiration: d, onValid: r });
95
+ return b === void 0 && (b = t(), u && this.set(e, b, n)), {
96
+ value: b,
97
+ expire: n == null ? void 0 : n.expire
98
+ };
99
+ }
100
+ }
101
+ const G = {
102
+ OA_PREFIX: "oa",
103
+ // 本地存储key的前缀
104
+ SESSION_EXPIRE_TIME: 1800 * 1e3,
105
+ // 会话标识有效期
106
+ CLIENT_EXPIRE_TIME: 4320 * 60 * 60 * 1e3,
107
+ // 设备标识有效期
108
+ DEFAULT_REQUEST_INTERVAL: 5 * 1e3,
109
+ // 默认上报间隔
110
+ MAX_EVENTS: 500
111
+ // 本地最大存储事件数 150k~
112
+ }, j = {
113
+ PV: "$PageView",
114
+ PageBasePerformance: "$PageBasePerformance",
115
+ LCP: "$LCP",
116
+ INP: "$INP",
117
+ PageClick: "$PageClick"
118
+ }, nt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
119
+ __proto__: null,
120
+ OpenEventKeys: j
121
+ }, Symbol.toStringTag, { value: "Module" }));
122
+ var Xe, Ci = -1, ce = function(i) {
123
+ addEventListener("pageshow", function(e) {
124
+ e.persisted && (Ci = e.timeStamp, i(e));
125
+ }, !0);
126
+ }, Qe = function() {
127
+ return window.performance && performance.getEntriesByType && performance.getEntriesByType("navigation")[0];
128
+ }, Oe = function() {
129
+ var i = Qe();
130
+ return i && i.activationStart || 0;
131
+ }, F = function(i, e) {
132
+ var t = Qe(), n = "navigate";
133
+ return Ci >= 0 ? n = "back-forward-cache" : t && (document.prerendering || Oe() > 0 ? n = "prerender" : document.wasDiscarded ? n = "restore" : t.type && (n = t.type.replace(/_/g, "-"))), { name: i, value: e === void 0 ? -1 : e, rating: "good", delta: 0, entries: [], id: "v3-".concat(Date.now(), "-").concat(Math.floor(8999999999999 * Math.random()) + 1e12), navigationType: n };
134
+ }, Ie = function(i, e, t) {
135
+ try {
136
+ if (PerformanceObserver.supportedEntryTypes.includes(i)) {
137
+ var n = new PerformanceObserver(function(r) {
138
+ Promise.resolve().then(function() {
139
+ e(r.getEntries());
140
+ });
141
+ });
142
+ return n.observe(Object.assign({ type: i, buffered: !0 }, t || {})), n;
143
+ }
144
+ } catch {
145
+ }
146
+ }, H = function(i, e, t, n) {
147
+ var r, d;
148
+ return function(u) {
149
+ e.value >= 0 && (u || n) && ((d = e.value - (r || 0)) || r === void 0) && (r = e.value, e.delta = d, e.rating = (function(b, g) {
150
+ return b > g[1] ? "poor" : b > g[0] ? "needs-improvement" : "good";
151
+ })(e.value, t), i(e));
152
+ };
153
+ }, Ni = function(i) {
154
+ requestAnimationFrame(function() {
155
+ return requestAnimationFrame(function() {
156
+ return i();
157
+ });
158
+ });
159
+ }, $i = function(i) {
160
+ var e = function(t) {
161
+ t.type !== "pagehide" && document.visibilityState !== "hidden" || i(t);
162
+ };
163
+ addEventListener("visibilitychange", e, !0), addEventListener("pagehide", e, !0);
164
+ }, ot = function(i) {
165
+ var e = !1;
166
+ return function(t) {
167
+ e || (i(t), e = !0);
168
+ };
169
+ }, Q = -1, pi = function() {
170
+ return document.visibilityState !== "hidden" || document.prerendering ? 1 / 0 : 0;
171
+ }, Ee = function(i) {
172
+ document.visibilityState === "hidden" && Q > -1 && (Q = i.type === "visibilitychange" ? i.timeStamp : 0, rt());
173
+ }, mi = function() {
174
+ addEventListener("visibilitychange", Ee, !0), addEventListener("prerenderingchange", Ee, !0);
175
+ }, rt = function() {
176
+ removeEventListener("visibilitychange", Ee, !0), removeEventListener("prerenderingchange", Ee, !0);
177
+ }, Vi = function() {
178
+ return Q < 0 && (Q = pi(), mi(), ce(function() {
179
+ setTimeout(function() {
180
+ Q = pi(), mi();
181
+ }, 0);
182
+ })), { get firstHiddenTime() {
183
+ return Q;
184
+ } };
185
+ }, Ae = function(i) {
186
+ document.prerendering ? addEventListener("prerenderingchange", function() {
187
+ return i();
188
+ }, !0) : i();
189
+ }, vi = [1800, 3e3], at = function(i, e) {
190
+ e = e || {}, Ae(function() {
191
+ var t, n = Vi(), r = F("FCP"), d = Ie("paint", function(u) {
192
+ u.forEach(function(b) {
193
+ b.name === "first-contentful-paint" && (d.disconnect(), b.startTime < n.firstHiddenTime && (r.value = Math.max(b.startTime - Oe(), 0), r.entries.push(b), t(!0)));
194
+ });
195
+ });
196
+ d && (t = H(i, r, vi, e.reportAllChanges), ce(function(u) {
197
+ r = F("FCP"), t = H(i, r, vi, e.reportAllChanges), Ni(function() {
198
+ r.value = performance.now() - u.timeStamp, t(!0);
199
+ });
200
+ }));
201
+ });
202
+ }, Li = 0, De = 1 / 0, ve = 0, st = function(i) {
203
+ i.forEach(function(e) {
204
+ e.interactionId && (De = Math.min(De, e.interactionId), ve = Math.max(ve, e.interactionId), Li = ve ? (ve - De) / 7 + 1 : 0);
205
+ });
206
+ }, Ui = function() {
207
+ return Xe ? Li : performance.interactionCount || 0;
208
+ }, ct = function() {
209
+ "interactionCount" in performance || Xe || (Xe = Ie("event", st, { type: "event", buffered: !0, durationThreshold: 0 }));
210
+ }, gi = [200, 500], qi = 0, yi = function() {
211
+ return Ui() - qi;
212
+ }, q = [], ze = {}, ki = function(i) {
213
+ var e = q[q.length - 1], t = ze[i.interactionId];
214
+ if (t || q.length < 10 || i.duration > e.latency) {
215
+ if (t) t.entries.push(i), t.latency = Math.max(t.latency, i.duration);
216
+ else {
217
+ var n = { id: i.interactionId, latency: i.duration, entries: [i] };
218
+ ze[n.id] = n, q.push(n);
219
+ }
220
+ q.sort(function(r, d) {
221
+ return d.latency - r.latency;
222
+ }), q.splice(10).forEach(function(r) {
223
+ delete ze[r.id];
224
+ });
225
+ }
226
+ }, lt = function(i, e) {
227
+ e = e || {}, Ae(function() {
228
+ var t;
229
+ ct();
230
+ var n, r = F("INP"), d = function(b) {
231
+ b.forEach(function(x) {
232
+ x.interactionId && ki(x), x.entryType === "first-input" && !q.some(function(X) {
233
+ return X.entries.some(function(o) {
234
+ return x.duration === o.duration && x.startTime === o.startTime;
235
+ });
236
+ }) && ki(x);
237
+ });
238
+ var g, y = (g = Math.min(q.length - 1, Math.floor(yi() / 50)), q[g]);
239
+ y && y.latency !== r.value && (r.value = y.latency, r.entries = y.entries, n());
240
+ }, u = Ie("event", d, { durationThreshold: (t = e.durationThreshold) !== null && t !== void 0 ? t : 40 });
241
+ n = H(i, r, gi, e.reportAllChanges), u && ("PerformanceEventTiming" in window && "interactionId" in PerformanceEventTiming.prototype && u.observe({ type: "first-input", buffered: !0 }), $i(function() {
242
+ d(u.takeRecords()), r.value < 0 && yi() > 0 && (r.value = 0, r.entries = []), n(!0);
243
+ }), ce(function() {
244
+ q = [], qi = Ui(), r = F("INP"), n = H(i, r, gi, e.reportAllChanges);
245
+ }));
246
+ });
247
+ }, _i = [2500, 4e3], Be = {}, ut = function(i, e) {
248
+ e = e || {}, Ae(function() {
249
+ var t, n = Vi(), r = F("LCP"), d = function(g) {
250
+ var y = g[g.length - 1];
251
+ y && y.startTime < n.firstHiddenTime && (r.value = Math.max(y.startTime - Oe(), 0), r.entries = [y], t());
252
+ }, u = Ie("largest-contentful-paint", d);
253
+ if (u) {
254
+ t = H(i, r, _i, e.reportAllChanges);
255
+ var b = ot(function() {
256
+ Be[r.id] || (d(u.takeRecords()), u.disconnect(), Be[r.id] = !0, t(!0));
257
+ });
258
+ ["keydown", "click"].forEach(function(g) {
259
+ addEventListener(g, function() {
260
+ return setTimeout(b, 0);
261
+ }, !0);
262
+ }), $i(b), ce(function(g) {
263
+ r = F("LCP"), t = H(i, r, _i, e.reportAllChanges), Ni(function() {
264
+ r.value = performance.now() - g.timeStamp, Be[r.id] = !0, t(!0);
265
+ });
266
+ });
267
+ }
268
+ });
269
+ }, Ei = [800, 1800], dt = function i(e) {
270
+ document.prerendering ? Ae(function() {
271
+ return i(e);
272
+ }) : document.readyState !== "complete" ? addEventListener("load", function() {
273
+ return i(e);
274
+ }, !0) : setTimeout(e, 0);
275
+ }, ht = function(i, e) {
276
+ e = e || {};
277
+ var t = F("TTFB"), n = H(i, t, Ei, e.reportAllChanges);
278
+ dt(function() {
279
+ var r = Qe();
280
+ if (r) {
281
+ var d = r.responseStart;
282
+ if (d <= 0 || d > performance.now()) return;
283
+ t.value = Math.max(d - Oe(), 0), t.entries = [r], n(!0), ce(function() {
284
+ t = F("TTFB", 0), (n = H(i, t, Ei, e.reportAllChanges))(!0);
285
+ });
286
+ }
287
+ });
288
+ };
289
+ const ft = {
290
+ event: j.INP,
291
+ collector: (i) => {
292
+ lt((e) => {
293
+ i({
294
+ $url: window.location.href,
295
+ $inp: e.value
296
+ });
297
+ });
298
+ }
299
+ }, bt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
300
+ __proto__: null,
301
+ default: ft
302
+ }, Symbol.toStringTag, { value: "Module" })), wt = {
303
+ event: j.LCP,
304
+ collector: (i) => {
305
+ ut((e) => {
306
+ i({
307
+ $url: window.location.href,
308
+ $lcp: e.value
309
+ });
310
+ });
311
+ }
312
+ }, pt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
313
+ __proto__: null,
314
+ default: wt
315
+ }, Symbol.toStringTag, { value: "Module" }));
316
+ function mt(i) {
317
+ const { pageX: e, pageY: t } = i, { scrollLeft: n, scrollTop: r } = document.scrollingElement || document.documentElement;
318
+ return {
319
+ $url: window.location.href,
320
+ $pageX: e,
321
+ $pageY: t,
322
+ $documentScrollLeft: n,
323
+ $documentScrollTop: r
324
+ };
325
+ }
326
+ const vt = {
327
+ event: j.PageClick,
328
+ collector: (i, e) => {
329
+ const { delay: t = 800 } = e || {};
330
+ let n = 0;
331
+ window.addEventListener(
332
+ "click",
333
+ (r) => {
334
+ clearTimeout(n), n = globalThis.setTimeout(async () => {
335
+ const d = mt(r);
336
+ i == null || i(d, r);
337
+ }, t);
338
+ },
339
+ {
340
+ capture: !0
341
+ }
342
+ );
343
+ }
344
+ }, gt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
345
+ __proto__: null,
346
+ default: vt
347
+ }, Symbol.toStringTag, { value: "Module" }));
348
+ function yt() {
349
+ const { connection: i } = window.navigator;
350
+ return {
351
+ downlink: (i == null ? void 0 : i.downlink) || 0,
352
+ effectiveType: (i == null ? void 0 : i.effectiveType) || "unknown",
353
+ rtt: (i == null ? void 0 : i.rtt) || 0,
354
+ type: (i == null ? void 0 : i.type) || "unknown"
355
+ };
356
+ }
357
+ const kt = {
358
+ event: j.PageBasePerformance,
359
+ collector: (i) => {
360
+ const e = {
361
+ $url: window.location.href,
362
+ $fcp: -1,
363
+ $ttfb: -1,
364
+ $load: -1,
365
+ $connection: yt()
366
+ };
367
+ let t = !1, n = !1, r;
368
+ const d = () => {
369
+ t && n && i(e, r);
370
+ };
371
+ at((u) => {
372
+ e.$fcp = u.value, t = !0, d();
373
+ }), ht((u) => {
374
+ n = !0, r = u.entries[0], e.$ttfb = u.value, e.$navigationEntry = r, e.$load = r.domComplete - r.startTime, d();
375
+ });
376
+ }
377
+ }, _t = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
378
+ __proto__: null,
379
+ default: kt
380
+ }, Symbol.toStringTag, { value: "Module" })), Et = {
381
+ event: j.PV,
382
+ collector: (i) => {
383
+ i({
384
+ $url: window.location.href,
385
+ $path: window.location.pathname,
386
+ $hash: window.location.hash,
387
+ $search: window.location.search,
388
+ $title: document.title,
389
+ $referrer: document.referrer
390
+ });
391
+ }
392
+ }, xt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
393
+ __proto__: null,
394
+ default: Et
395
+ }, Symbol.toStringTag, { value: "Module" })), xi = /* @__PURE__ */ Object.assign({
396
+ "./_keys.ts": nt,
397
+ "./inp.ts": bt,
398
+ "./lcp.ts": pt,
399
+ "./page-click.ts": gt,
400
+ "./performance.ts": _t,
401
+ "./pv.ts": xt
402
+ }), Ye = /* @__PURE__ */ new Map();
403
+ for (const i in xi) {
404
+ const e = xi[i].default;
405
+ e && Ye.set(e.event, e);
406
+ }
407
+ function Tt(i) {
408
+ return Ye.has(i);
409
+ }
410
+ async function St(i, e, t) {
411
+ const n = Ye.get(i);
412
+ n == null || n.collector(e, t);
413
+ }
414
+ const Pt = "1.0.1", Ot = {
415
+ version: Pt
416
+ };
417
+ class It {
418
+ constructor(e = "") {
419
+ this.appPrefix = e ? `${e}-` : "", this.client = this.getKey("client"), this.session = this.getKey("session"), this.events = this.getKey("events");
420
+ }
421
+ getKey(e) {
422
+ return `${G.OA_PREFIX}-${this.appPrefix}${e}`;
423
+ }
424
+ }
425
+ function At() {
426
+ if (it)
427
+ return globalThis.localStorage;
428
+ const i = {};
429
+ return {
430
+ setItem(e, t) {
431
+ i[e] = t;
432
+ },
433
+ getItem(e) {
434
+ return i[e];
435
+ },
436
+ removeItem(e) {
437
+ delete i[e];
438
+ }
439
+ };
440
+ }
441
+ var O, B, re, ae, M, xe, ge, ye, U, A, ke, Te, Se, R, ji, Ke, Ge, Pe, ne;
442
+ class We {
443
+ /**
444
+ * 构造函数
445
+ * @param params {OpenAnalyticsParams}
446
+ */
447
+ constructor(e) {
448
+ I(this, R), I(this, O), I(this, B), I(this, re), I(this, ae), I(this, M), I(this, xe), I(this, ge, ""), I(this, ye, ""), I(this, U), I(this, A), I(this, ke), I(this, Te), I(this, Se);
449
+ var t, n, r, d, u;
450
+ S(this, O, new tt(At())), S(this, ae, e.request), S(this, xe, (t = e.immediate) != null ? t : !1), S(this, ye, (n = e.appKey) != null ? n : ""), S(this, A, new It(e.appKey)), S(this, Te, (r = e.requestInterval) != null ? r : G.DEFAULT_REQUEST_INTERVAL), S(this, B, null), S(this, Se, (d = e.maxEvents) != null ? d : G.MAX_EVENTS), S(this, re, !0), S(this, M, h(this, O).getAlways(h(this, A).events, {
451
+ defaultValue: () => [],
452
+ save: !1
453
+ }).value), S(this, U, {
454
+ env: (u = e.env) != null ? u : "production"
455
+ }), this.enabled = !1;
456
+ }
457
+ /**
458
+ * 设置header
459
+ */
460
+ setHeader(e) {
461
+ Object.assign(h(this, U), e);
462
+ }
463
+ /**
464
+ * 设置运行环境
465
+ */
466
+ setEnvironment(e) {
467
+ h(this, U).env !== e && N(this, R, Pe).call(this, !0), Object.assign(h(this, U), {
468
+ env: e
469
+ });
470
+ }
471
+ /**
472
+ * 设置user id
473
+ */
474
+ setUserId(e) {
475
+ Object.assign(h(this, U), {
476
+ uId: e
477
+ });
478
+ }
479
+ /**
480
+ * 控制是否发送数据上报
481
+ * @param enabled
482
+ */
483
+ enableReporting(e = !0) {
484
+ this.enabled !== e && (this.enabled = e), this.enabled ? (S(this, U, Object.assign(N(this, R, ji).call(this, h(this, A), h(this, ye)), h(this, U))), S(this, ge, N(this, R, Ke).call(this, h(this, A).session)), h(this, M).forEach((t) => {
485
+ t.sId === "" && (t.sId = h(this, ge));
486
+ }), h(this, O).set(h(this, A).events, h(this, M)), N(this, R, Pe).call(this)) : h(this, B) && (clearTimeout(h(this, B)), S(this, B, 0), S(this, M, []), h(this, O).remove(h(this, A).events), h(this, O).remove(h(this, A).client), h(this, O).remove(h(this, A).session));
487
+ }
488
+ /**
489
+ * 采集数据
490
+ * @param event 事件名
491
+ * @param data 事件数据,如果是内部事件,则会在内部事件触发时执行
492
+ * @param options 配置
493
+ */
494
+ async report(e, t, n) {
495
+ if (!e)
496
+ return;
497
+ const r = this.enabled ? N(this, R, Ke).call(this, h(this, A).session) : "";
498
+ if (!Tt(e)) {
499
+ const d = W(t) ? await t() : {};
500
+ N(this, R, Ge).call(this, {
501
+ sId: r,
502
+ event: e,
503
+ time: Date.now(),
504
+ properties: d
505
+ }, n == null ? void 0 : n.immediate);
506
+ return;
507
+ }
508
+ St(
509
+ e,
510
+ async (d, u) => {
511
+ const b = W(t) ? await t(u) : {};
512
+ N(this, R, Ge).call(this, {
513
+ sId: r,
514
+ event: e,
515
+ time: Date.now(),
516
+ properties: Object.assign(d, b)
517
+ }, n == null ? void 0 : n.immediate);
518
+ },
519
+ n == null ? void 0 : n.eventOptions
520
+ );
521
+ }
522
+ }
523
+ O = /* @__PURE__ */ new WeakMap(), B = /* @__PURE__ */ new WeakMap(), re = /* @__PURE__ */ new WeakMap(), ae = /* @__PURE__ */ new WeakMap(), M = /* @__PURE__ */ new WeakMap(), xe = /* @__PURE__ */ new WeakMap(), ge = /* @__PURE__ */ new WeakMap(), ye = /* @__PURE__ */ new WeakMap(), U = /* @__PURE__ */ new WeakMap(), A = /* @__PURE__ */ new WeakMap(), ke = /* @__PURE__ */ new WeakMap(), Te = /* @__PURE__ */ new WeakMap(), Se = /* @__PURE__ */ new WeakMap(), R = /* @__PURE__ */ new WeakSet(), /**
524
+ * 初始化通用数据
525
+ * @param keys {string}
526
+ * @param appId {string}
527
+ */
528
+ ji = function(i, e) {
529
+ const t = i.client;
530
+ return {
531
+ uId: "",
532
+ cId: h(this, O).getAlways(t, {
533
+ defaultValue: () => ({
534
+ id: wi()
535
+ }),
536
+ setOption: {
537
+ expire: Date.now() + G.CLIENT_EXPIRE_TIME
538
+ },
539
+ onValid: () => {
540
+ h(this, O).setExpire(t, Date.now() + G.CLIENT_EXPIRE_TIME);
541
+ }
542
+ }).value.id,
543
+ aId: e,
544
+ oa_version: Ot.version,
545
+ viewport_width: window.innerWidth,
546
+ viewport_height: window.innerHeight,
547
+ screen_width: window.screen.width || window.innerWidth,
548
+ screen_height: window.screen.height || window.innerHeight
549
+ };
550
+ }, /**
551
+ * 获取会话id,每次获取,延长有效期
552
+ * @param sKey session key
553
+ */
554
+ Ke = function(i) {
555
+ return h(this, O).getAlways(i, {
556
+ defaultValue: () => ({
557
+ id: wi()
558
+ }),
559
+ setOption: {
560
+ expire: Date.now() + G.SESSION_EXPIRE_TIME
561
+ },
562
+ onValid: () => {
563
+ h(this, O).setExpire(i, Date.now() + G.SESSION_EXPIRE_TIME);
564
+ }
565
+ }).value.id;
566
+ }, /**
567
+ * 搜集数据
568
+ */
569
+ Ge = function(i, e) {
570
+ h(this, M).push(i), h(this, M).length > h(this, Se) && h(this, M).shift(), this.enabled && (h(this, O).set(h(this, A).events, h(this, M)), N(this, R, Pe).call(this, e));
571
+ }, /**
572
+ * 执行上报策略
573
+ * @param immediate
574
+ */
575
+ Pe = function(i) {
576
+ if (i || h(this, xe))
577
+ N(this, R, ne).call(this);
578
+ else if (h(this, re))
579
+ S(this, re, !1), et(() => N(this, R, ne).call(this));
580
+ else if (W(h(this, ke)))
581
+ h(this, ke).call(this, N(this, R, ne));
582
+ else {
583
+ const e = () => {
584
+ S(this, B, window.setTimeout(() => {
585
+ N(this, R, ne).call(this), e();
586
+ }, h(this, Te)));
587
+ };
588
+ h(this, B) || e();
589
+ }
590
+ }, /**
591
+ * 发起数据上报
592
+ */
593
+ ne = function() {
594
+ if (!h(this, ae) || !this.enabled || h(this, M).length === 0)
595
+ return;
596
+ const i = {
597
+ header: h(this, U),
598
+ body: h(this, M)
599
+ }, e = h(this, ae).call(this, i);
600
+ Yi(e) ? e.then((t) => {
601
+ t && (S(this, M, []), h(this, O).set(h(this, A).events, []));
602
+ }) : (S(this, M, []), h(this, O).set(h(this, A).events, []));
603
+ };
604
+ var Mt = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {}, Ze = { exports: {} };
605
+ (function(i, e) {
606
+ (function(t, n) {
607
+ var r = "1.0.37", d = "", u = "?", b = "function", g = "undefined", y = "object", x = "string", X = "major", o = "model", c = "name", a = "type", s = "vendor", l = "version", $ = "architecture", Y = "console", p = "mobile", m = "tablet", C = "smarttv", Z = "wearable", Me = "embedded", Re = 500, le = "Amazon", ee = "Apple", ei = "ASUS", ii = "BlackBerry", K = "Browser", ue = "Chrome", Bi = "Edge", de = "Firefox", he = "Google", ti = "Huawei", Ce = "LG", Ne = "Microsoft", ni = "Motorola", fe = "Opera", be = "Samsung", oi = "Sharp", we = "Sony", $e = "Xiaomi", Ve = "Zebra", ri = "Facebook", ai = "Chromium OS", si = "Mac OS", Wi = function(v, _) {
608
+ var w = {};
609
+ for (var E in v)
610
+ _[E] && _[E].length % 2 === 0 ? w[E] = _[E].concat(v[E]) : w[E] = v[E];
611
+ return w;
612
+ }, pe = function(v) {
613
+ for (var _ = {}, w = 0; w < v.length; w++)
614
+ _[v[w].toUpperCase()] = v[w];
615
+ return _;
616
+ }, ci = function(v, _) {
617
+ return typeof v === x ? ie(_).indexOf(ie(v)) !== -1 : !1;
618
+ }, ie = function(v) {
619
+ return v.toLowerCase();
620
+ }, Fi = function(v) {
621
+ return typeof v === x ? v.replace(/[^\d\.]/g, d).split(".")[0] : n;
622
+ }, Le = function(v, _) {
623
+ if (typeof v === x)
624
+ return v = v.replace(/^\s\s*/, d), typeof _ === g ? v : v.substring(0, Re);
625
+ }, te = function(v, _) {
626
+ for (var w = 0, E, z, L, k, f, D; w < _.length && !f; ) {
627
+ var qe = _[w], di = _[w + 1];
628
+ for (E = z = 0; E < qe.length && !f && qe[E]; )
629
+ if (f = qe[E++].exec(v), f)
630
+ for (L = 0; L < di.length; L++)
631
+ D = f[++z], k = di[L], typeof k === y && k.length > 0 ? k.length === 2 ? typeof k[1] == b ? this[k[0]] = k[1].call(this, D) : this[k[0]] = k[1] : k.length === 3 ? typeof k[1] === b && !(k[1].exec && k[1].test) ? this[k[0]] = D ? k[1].call(this, D, k[2]) : n : this[k[0]] = D ? D.replace(k[1], k[2]) : n : k.length === 4 && (this[k[0]] = D ? k[3].call(this, D.replace(k[1], k[2])) : n) : this[k] = D || n;
632
+ w += 2;
633
+ }
634
+ }, Ue = function(v, _) {
635
+ for (var w in _)
636
+ if (typeof _[w] === y && _[w].length > 0) {
637
+ for (var E = 0; E < _[w].length; E++)
638
+ if (ci(_[w][E], v))
639
+ return w === u ? n : w;
640
+ } else if (ci(_[w], v))
641
+ return w === u ? n : w;
642
+ return v;
643
+ }, Hi = {
644
+ "1.0": "/8",
645
+ "1.2": "/1",
646
+ "1.3": "/3",
647
+ "2.0": "/412",
648
+ "2.0.2": "/416",
649
+ "2.0.3": "/417",
650
+ "2.0.4": "/419",
651
+ "?": "/"
652
+ }, li = {
653
+ ME: "4.90",
654
+ "NT 3.11": "NT3.51",
655
+ "NT 4.0": "NT4.0",
656
+ 2e3: "NT 5.0",
657
+ XP: ["NT 5.1", "NT 5.2"],
658
+ Vista: "NT 6.0",
659
+ 7: "NT 6.1",
660
+ 8: "NT 6.2",
661
+ "8.1": "NT 6.3",
662
+ 10: ["NT 6.4", "NT 10.0"],
663
+ RT: "ARM"
664
+ }, ui = {
665
+ browser: [
666
+ [
667
+ /\b(?:crmo|crios)\/([\w\.]+)/i
668
+ // Chrome for Android/iOS
669
+ ],
670
+ [l, [c, "Chrome"]],
671
+ [
672
+ /edg(?:e|ios|a)?\/([\w\.]+)/i
673
+ // Microsoft Edge
674
+ ],
675
+ [l, [c, "Edge"]],
676
+ [
677
+ // Presto based
678
+ /(opera mini)\/([-\w\.]+)/i,
679
+ // Opera Mini
680
+ /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,
681
+ // Opera Mobi/Tablet
682
+ /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i
683
+ // Opera
684
+ ],
685
+ [c, l],
686
+ [
687
+ /opios[\/ ]+([\w\.]+)/i
688
+ // Opera mini on iphone >= 8.0
689
+ ],
690
+ [l, [c, fe + " Mini"]],
691
+ [
692
+ /\bopr\/([\w\.]+)/i
693
+ // Opera Webkit
694
+ ],
695
+ [l, [c, fe]],
696
+ [
697
+ // Mixed
698
+ /\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i
699
+ // Baidu
700
+ ],
701
+ [l, [c, "Baidu"]],
702
+ [
703
+ /(kindle)\/([\w\.]+)/i,
704
+ // Kindle
705
+ /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,
706
+ // Lunascape/Maxthon/Netfront/Jasmine/Blazer
707
+ // Trident based
708
+ /(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,
709
+ // Avant/IEMobile/SlimBrowser
710
+ /(?:ms|\()(ie) ([\w\.]+)/i,
711
+ // Internet Explorer
712
+ // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
713
+ /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
714
+ // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
715
+ /(heytap|ovi)browser\/([\d\.]+)/i,
716
+ // Heytap/Ovi
717
+ /(weibo)__([\d\.]+)/i
718
+ // Weibo
719
+ ],
720
+ [c, l],
721
+ [
722
+ /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i
723
+ // UCBrowser
724
+ ],
725
+ [l, [c, "UC" + K]],
726
+ [
727
+ /microm.+\bqbcore\/([\w\.]+)/i,
728
+ // WeChat Desktop for Windows Built-in Browser
729
+ /\bqbcore\/([\w\.]+).+microm/i,
730
+ /micromessenger\/([\w\.]+)/i
731
+ // WeChat
732
+ ],
733
+ [l, [c, "WeChat"]],
734
+ [
735
+ /konqueror\/([\w\.]+)/i
736
+ // Konqueror
737
+ ],
738
+ [l, [c, "Konqueror"]],
739
+ [
740
+ /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i
741
+ // IE11
742
+ ],
743
+ [l, [c, "IE"]],
744
+ [
745
+ /ya(?:search)?browser\/([\w\.]+)/i
746
+ // Yandex
747
+ ],
748
+ [l, [c, "Yandex"]],
749
+ [
750
+ /slbrowser\/([\w\.]+)/i
751
+ // Smart Lenovo Browser
752
+ ],
753
+ [l, [c, "Smart Lenovo " + K]],
754
+ [
755
+ /(avast|avg)\/([\w\.]+)/i
756
+ // Avast/AVG Secure Browser
757
+ ],
758
+ [[c, /(.+)/, "$1 Secure " + K], l],
759
+ [
760
+ /\bfocus\/([\w\.]+)/i
761
+ // Firefox Focus
762
+ ],
763
+ [l, [c, de + " Focus"]],
764
+ [
765
+ /\bopt\/([\w\.]+)/i
766
+ // Opera Touch
767
+ ],
768
+ [l, [c, fe + " Touch"]],
769
+ [
770
+ /coc_coc\w+\/([\w\.]+)/i
771
+ // Coc Coc Browser
772
+ ],
773
+ [l, [c, "Coc Coc"]],
774
+ [
775
+ /dolfin\/([\w\.]+)/i
776
+ // Dolphin
777
+ ],
778
+ [l, [c, "Dolphin"]],
779
+ [
780
+ /coast\/([\w\.]+)/i
781
+ // Opera Coast
782
+ ],
783
+ [l, [c, fe + " Coast"]],
784
+ [
785
+ /miuibrowser\/([\w\.]+)/i
786
+ // MIUI Browser
787
+ ],
788
+ [l, [c, "MIUI " + K]],
789
+ [
790
+ /fxios\/([-\w\.]+)/i
791
+ // Firefox for iOS
792
+ ],
793
+ [l, [c, de]],
794
+ [
795
+ /\bqihu|(qi?ho?o?|360)browser/i
796
+ // 360
797
+ ],
798
+ [[c, "360 " + K]],
799
+ [
800
+ /(oculus|sailfish|huawei|vivo)browser\/([\w\.]+)/i
801
+ ],
802
+ [[c, /(.+)/, "$1 " + K], l],
803
+ [
804
+ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser
805
+ /samsungbrowser\/([\w\.]+)/i
806
+ // Samsung Internet
807
+ ],
808
+ [l, [c, be + " Internet"]],
809
+ [
810
+ /(comodo_dragon)\/([\w\.]+)/i
811
+ // Comodo Dragon
812
+ ],
813
+ [[c, /_/g, " "], l],
814
+ [
815
+ /metasr[\/ ]?([\d\.]+)/i
816
+ // Sogou Explorer
817
+ ],
818
+ [l, [c, "Sogou Explorer"]],
819
+ [
820
+ /(sogou)mo\w+\/([\d\.]+)/i
821
+ // Sogou Mobile
822
+ ],
823
+ [[c, "Sogou Mobile"], l],
824
+ [
825
+ /(electron)\/([\w\.]+) safari/i,
826
+ // Electron-based App
827
+ /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,
828
+ // Tesla
829
+ /m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i
830
+ // QQBrowser/2345 Browser
831
+ ],
832
+ [c, l],
833
+ [
834
+ /(lbbrowser)/i,
835
+ // LieBao Browser
836
+ /\[(linkedin)app\]/i
837
+ // LinkedIn App for iOS & Android
838
+ ],
839
+ [c],
840
+ [
841
+ // WebView
842
+ /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i
843
+ // Facebook App for iOS & Android
844
+ ],
845
+ [[c, ri], l],
846
+ [
847
+ /(Klarna)\/([\w\.]+)/i,
848
+ // Klarna Shopping Browser for iOS & Android
849
+ /(kakao(?:talk|story))[\/ ]([\w\.]+)/i,
850
+ // Kakao App
851
+ /(naver)\(.*?(\d+\.[\w\.]+).*\)/i,
852
+ // Naver InApp
853
+ /safari (line)\/([\w\.]+)/i,
854
+ // Line App for iOS
855
+ /\b(line)\/([\w\.]+)\/iab/i,
856
+ // Line App for Android
857
+ /(alipay)client\/([\w\.]+)/i,
858
+ // Alipay
859
+ /(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i
860
+ // Chromium/Instagram/Snapchat
861
+ ],
862
+ [c, l],
863
+ [
864
+ /\bgsa\/([\w\.]+) .*safari\//i
865
+ // Google Search Appliance on iOS
866
+ ],
867
+ [l, [c, "GSA"]],
868
+ [
869
+ /musical_ly(?:.+app_?version\/|_)([\w\.]+)/i
870
+ // TikTok
871
+ ],
872
+ [l, [c, "TikTok"]],
873
+ [
874
+ /headlesschrome(?:\/([\w\.]+)| )/i
875
+ // Chrome Headless
876
+ ],
877
+ [l, [c, ue + " Headless"]],
878
+ [
879
+ / wv\).+(chrome)\/([\w\.]+)/i
880
+ // Chrome WebView
881
+ ],
882
+ [[c, ue + " WebView"], l],
883
+ [
884
+ /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i
885
+ // Android Browser
886
+ ],
887
+ [l, [c, "Android " + K]],
888
+ [
889
+ /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i
890
+ // Chrome/OmniWeb/Arora/Tizen/Nokia
891
+ ],
892
+ [c, l],
893
+ [
894
+ /version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i
895
+ // Mobile Safari
896
+ ],
897
+ [l, [c, "Mobile Safari"]],
898
+ [
899
+ /version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i
900
+ // Safari & Safari Mobile
901
+ ],
902
+ [l, c],
903
+ [
904
+ /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i
905
+ // Safari < 3.0
906
+ ],
907
+ [c, [l, Ue, Hi]],
908
+ [
909
+ /(webkit|khtml)\/([\w\.]+)/i
910
+ ],
911
+ [c, l],
912
+ [
913
+ // Gecko based
914
+ /(navigator|netscape\d?)\/([-\w\.]+)/i
915
+ // Netscape
916
+ ],
917
+ [[c, "Netscape"], l],
918
+ [
919
+ /mobile vr; rv:([\w\.]+)\).+firefox/i
920
+ // Firefox Reality
921
+ ],
922
+ [l, [c, de + " Reality"]],
923
+ [
924
+ /ekiohf.+(flow)\/([\w\.]+)/i,
925
+ // Flow
926
+ /(swiftfox)/i,
927
+ // Swiftfox
928
+ /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,
929
+ // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar
930
+ /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
931
+ // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
932
+ /(firefox)\/([\w\.]+)/i,
933
+ // Other Firefox-based
934
+ /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,
935
+ // Mozilla
936
+ // Other
937
+ /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
938
+ // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
939
+ /(links) \(([\w\.]+)/i,
940
+ // Links
941
+ /panasonic;(viera)/i
942
+ // Panasonic Viera
943
+ ],
944
+ [c, l],
945
+ [
946
+ /(cobalt)\/([\w\.]+)/i
947
+ // Cobalt
948
+ ],
949
+ [c, [l, /master.|lts./, ""]]
950
+ ],
951
+ cpu: [
952
+ [
953
+ /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i
954
+ // AMD64 (x64)
955
+ ],
956
+ [[$, "amd64"]],
957
+ [
958
+ /(ia32(?=;))/i
959
+ // IA32 (quicktime)
960
+ ],
961
+ [[$, ie]],
962
+ [
963
+ /((?:i[346]|x)86)[;\)]/i
964
+ // IA32 (x86)
965
+ ],
966
+ [[$, "ia32"]],
967
+ [
968
+ /\b(aarch64|arm(v?8e?l?|_?64))\b/i
969
+ // ARM64
970
+ ],
971
+ [[$, "arm64"]],
972
+ [
973
+ /\b(arm(?:v[67])?ht?n?[fl]p?)\b/i
974
+ // ARMHF
975
+ ],
976
+ [[$, "armhf"]],
977
+ [
978
+ // PocketPC mistakenly identified as PowerPC
979
+ /windows (ce|mobile); ppc;/i
980
+ ],
981
+ [[$, "arm"]],
982
+ [
983
+ /((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i
984
+ // PowerPC
985
+ ],
986
+ [[$, /ower/, d, ie]],
987
+ [
988
+ /(sun4\w)[;\)]/i
989
+ // SPARC
990
+ ],
991
+ [[$, "sparc"]],
992
+ [
993
+ /((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i
994
+ // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
995
+ ],
996
+ [[$, ie]]
997
+ ],
998
+ device: [
999
+ [
1000
+ //////////////////////////
1001
+ // MOBILES & TABLETS
1002
+ /////////////////////////
1003
+ // Samsung
1004
+ /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
1005
+ ],
1006
+ [o, [s, be], [a, m]],
1007
+ [
1008
+ /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
1009
+ /samsung[- ]([-\w]+)/i,
1010
+ /sec-(sgh\w+)/i
1011
+ ],
1012
+ [o, [s, be], [a, p]],
1013
+ [
1014
+ // Apple
1015
+ /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i
1016
+ // iPod/iPhone
1017
+ ],
1018
+ [o, [s, ee], [a, p]],
1019
+ [
1020
+ /\((ipad);[-\w\),; ]+apple/i,
1021
+ // iPad
1022
+ /applecoremedia\/[\w\.]+ \((ipad)/i,
1023
+ /\b(ipad)\d\d?,\d\d?[;\]].+ios/i
1024
+ ],
1025
+ [o, [s, ee], [a, m]],
1026
+ [
1027
+ /(macintosh);/i
1028
+ ],
1029
+ [o, [s, ee]],
1030
+ [
1031
+ // Sharp
1032
+ /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
1033
+ ],
1034
+ [o, [s, oi], [a, p]],
1035
+ [
1036
+ // Huawei
1037
+ /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
1038
+ ],
1039
+ [o, [s, ti], [a, m]],
1040
+ [
1041
+ /(?:huawei|honor)([-\w ]+)[;\)]/i,
1042
+ /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
1043
+ ],
1044
+ [o, [s, ti], [a, p]],
1045
+ [
1046
+ // Xiaomi
1047
+ /\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,
1048
+ // Xiaomi POCO
1049
+ /\b; (\w+) build\/hm\1/i,
1050
+ // Xiaomi Hongmi 'numeric' models
1051
+ /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,
1052
+ // Xiaomi Hongmi
1053
+ /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,
1054
+ // Xiaomi Redmi
1055
+ /oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,
1056
+ // Xiaomi Redmi 'numeric' models
1057
+ /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i
1058
+ // Xiaomi Mi
1059
+ ],
1060
+ [[o, /_/g, " "], [s, $e], [a, p]],
1061
+ [
1062
+ /oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,
1063
+ // Redmi Pad
1064
+ /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i
1065
+ // Mi Pad tablets
1066
+ ],
1067
+ [[o, /_/g, " "], [s, $e], [a, m]],
1068
+ [
1069
+ // OPPO
1070
+ /; (\w+) bui.+ oppo/i,
1071
+ /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
1072
+ ],
1073
+ [o, [s, "OPPO"], [a, p]],
1074
+ [
1075
+ // Vivo
1076
+ /vivo (\w+)(?: bui|\))/i,
1077
+ /\b(v[12]\d{3}\w?[at])(?: bui|;)/i
1078
+ ],
1079
+ [o, [s, "Vivo"], [a, p]],
1080
+ [
1081
+ // Realme
1082
+ /\b(rmx[1-3]\d{3})(?: bui|;|\))/i
1083
+ ],
1084
+ [o, [s, "Realme"], [a, p]],
1085
+ [
1086
+ // Motorola
1087
+ /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
1088
+ /\bmot(?:orola)?[- ](\w*)/i,
1089
+ /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
1090
+ ],
1091
+ [o, [s, ni], [a, p]],
1092
+ [
1093
+ /\b(mz60\d|xoom[2 ]{0,2}) build\//i
1094
+ ],
1095
+ [o, [s, ni], [a, m]],
1096
+ [
1097
+ // LG
1098
+ /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
1099
+ ],
1100
+ [o, [s, Ce], [a, m]],
1101
+ [
1102
+ /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
1103
+ /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,
1104
+ /\blg-?([\d\w]+) bui/i
1105
+ ],
1106
+ [o, [s, Ce], [a, p]],
1107
+ [
1108
+ // Lenovo
1109
+ /(ideatab[-\w ]+)/i,
1110
+ /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i
1111
+ ],
1112
+ [o, [s, "Lenovo"], [a, m]],
1113
+ [
1114
+ // Nokia
1115
+ /(?:maemo|nokia).*(n900|lumia \d+)/i,
1116
+ /nokia[-_ ]?([-\w\.]*)/i
1117
+ ],
1118
+ [[o, /_/g, " "], [s, "Nokia"], [a, p]],
1119
+ [
1120
+ // Google
1121
+ /(pixel c)\b/i
1122
+ // Google Pixel C
1123
+ ],
1124
+ [o, [s, he], [a, m]],
1125
+ [
1126
+ /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i
1127
+ // Google Pixel
1128
+ ],
1129
+ [o, [s, he], [a, p]],
1130
+ [
1131
+ // Sony
1132
+ /droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
1133
+ ],
1134
+ [o, [s, we], [a, p]],
1135
+ [
1136
+ /sony tablet [ps]/i,
1137
+ /\b(?:sony)?sgp\w+(?: bui|\))/i
1138
+ ],
1139
+ [[o, "Xperia Tablet"], [s, we], [a, m]],
1140
+ [
1141
+ // OnePlus
1142
+ / (kb2005|in20[12]5|be20[12][59])\b/i,
1143
+ /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
1144
+ ],
1145
+ [o, [s, "OnePlus"], [a, p]],
1146
+ [
1147
+ // Amazon
1148
+ /(alexa)webm/i,
1149
+ /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,
1150
+ // Kindle Fire without Silk / Echo Show
1151
+ /(kf[a-z]+)( bui|\)).+silk\//i
1152
+ // Kindle Fire HD
1153
+ ],
1154
+ [o, [s, le], [a, m]],
1155
+ [
1156
+ /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i
1157
+ // Fire Phone
1158
+ ],
1159
+ [[o, /(.+)/g, "Fire Phone $1"], [s, le], [a, p]],
1160
+ [
1161
+ // BlackBerry
1162
+ /(playbook);[-\w\),; ]+(rim)/i
1163
+ // BlackBerry PlayBook
1164
+ ],
1165
+ [o, s, [a, m]],
1166
+ [
1167
+ /\b((?:bb[a-f]|st[hv])100-\d)/i,
1168
+ /\(bb10; (\w+)/i
1169
+ // BlackBerry 10
1170
+ ],
1171
+ [o, [s, ii], [a, p]],
1172
+ [
1173
+ // Asus
1174
+ /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
1175
+ ],
1176
+ [o, [s, ei], [a, m]],
1177
+ [
1178
+ / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
1179
+ ],
1180
+ [o, [s, ei], [a, p]],
1181
+ [
1182
+ // HTC
1183
+ /(nexus 9)/i
1184
+ // HTC Nexus 9
1185
+ ],
1186
+ [o, [s, "HTC"], [a, m]],
1187
+ [
1188
+ /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
1189
+ // HTC
1190
+ // ZTE
1191
+ /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
1192
+ /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i
1193
+ // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
1194
+ ],
1195
+ [s, [o, /_/g, " "], [a, p]],
1196
+ [
1197
+ // Acer
1198
+ /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
1199
+ ],
1200
+ [o, [s, "Acer"], [a, m]],
1201
+ [
1202
+ // Meizu
1203
+ /droid.+; (m[1-5] note) bui/i,
1204
+ /\bmz-([-\w]{2,})/i
1205
+ ],
1206
+ [o, [s, "Meizu"], [a, p]],
1207
+ [
1208
+ // Ulefone
1209
+ /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
1210
+ ],
1211
+ [o, [s, "Ulefone"], [a, p]],
1212
+ [
1213
+ // MIXED
1214
+ /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
1215
+ // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
1216
+ /(hp) ([\w ]+\w)/i,
1217
+ // HP iPAQ
1218
+ /(asus)-?(\w+)/i,
1219
+ // Asus
1220
+ /(microsoft); (lumia[\w ]+)/i,
1221
+ // Microsoft Lumia
1222
+ /(lenovo)[-_ ]?([-\w]+)/i,
1223
+ // Lenovo
1224
+ /(jolla)/i,
1225
+ // Jolla
1226
+ /(oppo) ?([\w ]+) bui/i
1227
+ // OPPO
1228
+ ],
1229
+ [s, o, [a, p]],
1230
+ [
1231
+ /(kobo)\s(ereader|touch)/i,
1232
+ // Kobo
1233
+ /(archos) (gamepad2?)/i,
1234
+ // Archos
1235
+ /(hp).+(touchpad(?!.+tablet)|tablet)/i,
1236
+ // HP TouchPad
1237
+ /(kindle)\/([\w\.]+)/i,
1238
+ // Kindle
1239
+ /(nook)[\w ]+build\/(\w+)/i,
1240
+ // Nook
1241
+ /(dell) (strea[kpr\d ]*[\dko])/i,
1242
+ // Dell Streak
1243
+ /(le[- ]+pan)[- ]+(\w{1,9}) bui/i,
1244
+ // Le Pan Tablets
1245
+ /(trinity)[- ]*(t\d{3}) bui/i,
1246
+ // Trinity Tablets
1247
+ /(gigaset)[- ]+(q\w{1,9}) bui/i,
1248
+ // Gigaset Tablets
1249
+ /(vodafone) ([\w ]+)(?:\)| bui)/i
1250
+ // Vodafone
1251
+ ],
1252
+ [s, o, [a, m]],
1253
+ [
1254
+ /(surface duo)/i
1255
+ // Surface Duo
1256
+ ],
1257
+ [o, [s, Ne], [a, m]],
1258
+ [
1259
+ /droid [\d\.]+; (fp\du?)(?: b|\))/i
1260
+ // Fairphone
1261
+ ],
1262
+ [o, [s, "Fairphone"], [a, p]],
1263
+ [
1264
+ /(u304aa)/i
1265
+ // AT&T
1266
+ ],
1267
+ [o, [s, "AT&T"], [a, p]],
1268
+ [
1269
+ /\bsie-(\w*)/i
1270
+ // Siemens
1271
+ ],
1272
+ [o, [s, "Siemens"], [a, p]],
1273
+ [
1274
+ /\b(rct\w+) b/i
1275
+ // RCA Tablets
1276
+ ],
1277
+ [o, [s, "RCA"], [a, m]],
1278
+ [
1279
+ /\b(venue[\d ]{2,7}) b/i
1280
+ // Dell Venue Tablets
1281
+ ],
1282
+ [o, [s, "Dell"], [a, m]],
1283
+ [
1284
+ /\b(q(?:mv|ta)\w+) b/i
1285
+ // Verizon Tablet
1286
+ ],
1287
+ [o, [s, "Verizon"], [a, m]],
1288
+ [
1289
+ /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i
1290
+ // Barnes & Noble Tablet
1291
+ ],
1292
+ [o, [s, "Barnes & Noble"], [a, m]],
1293
+ [
1294
+ /\b(tm\d{3}\w+) b/i
1295
+ ],
1296
+ [o, [s, "NuVision"], [a, m]],
1297
+ [
1298
+ /\b(k88) b/i
1299
+ // ZTE K Series Tablet
1300
+ ],
1301
+ [o, [s, "ZTE"], [a, m]],
1302
+ [
1303
+ /\b(nx\d{3}j) b/i
1304
+ // ZTE Nubia
1305
+ ],
1306
+ [o, [s, "ZTE"], [a, p]],
1307
+ [
1308
+ /\b(gen\d{3}) b.+49h/i
1309
+ // Swiss GEN Mobile
1310
+ ],
1311
+ [o, [s, "Swiss"], [a, p]],
1312
+ [
1313
+ /\b(zur\d{3}) b/i
1314
+ // Swiss ZUR Tablet
1315
+ ],
1316
+ [o, [s, "Swiss"], [a, m]],
1317
+ [
1318
+ /\b((zeki)?tb.*\b) b/i
1319
+ // Zeki Tablets
1320
+ ],
1321
+ [o, [s, "Zeki"], [a, m]],
1322
+ [
1323
+ /\b([yr]\d{2}) b/i,
1324
+ /\b(dragon[- ]+touch |dt)(\w{5}) b/i
1325
+ // Dragon Touch Tablet
1326
+ ],
1327
+ [[s, "Dragon Touch"], o, [a, m]],
1328
+ [
1329
+ /\b(ns-?\w{0,9}) b/i
1330
+ // Insignia Tablets
1331
+ ],
1332
+ [o, [s, "Insignia"], [a, m]],
1333
+ [
1334
+ /\b((nxa|next)-?\w{0,9}) b/i
1335
+ // NextBook Tablets
1336
+ ],
1337
+ [o, [s, "NextBook"], [a, m]],
1338
+ [
1339
+ /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i
1340
+ // Voice Xtreme Phones
1341
+ ],
1342
+ [[s, "Voice"], o, [a, p]],
1343
+ [
1344
+ /\b(lvtel\-)?(v1[12]) b/i
1345
+ // LvTel Phones
1346
+ ],
1347
+ [[s, "LvTel"], o, [a, p]],
1348
+ [
1349
+ /\b(ph-1) /i
1350
+ // Essential PH-1
1351
+ ],
1352
+ [o, [s, "Essential"], [a, p]],
1353
+ [
1354
+ /\b(v(100md|700na|7011|917g).*\b) b/i
1355
+ // Envizen Tablets
1356
+ ],
1357
+ [o, [s, "Envizen"], [a, m]],
1358
+ [
1359
+ /\b(trio[-\w\. ]+) b/i
1360
+ // MachSpeed Tablets
1361
+ ],
1362
+ [o, [s, "MachSpeed"], [a, m]],
1363
+ [
1364
+ /\btu_(1491) b/i
1365
+ // Rotor Tablets
1366
+ ],
1367
+ [o, [s, "Rotor"], [a, m]],
1368
+ [
1369
+ /(shield[\w ]+) b/i
1370
+ // Nvidia Shield Tablets
1371
+ ],
1372
+ [o, [s, "Nvidia"], [a, m]],
1373
+ [
1374
+ /(sprint) (\w+)/i
1375
+ // Sprint Phones
1376
+ ],
1377
+ [s, o, [a, p]],
1378
+ [
1379
+ /(kin\.[onetw]{3})/i
1380
+ // Microsoft Kin
1381
+ ],
1382
+ [[o, /\./g, " "], [s, Ne], [a, p]],
1383
+ [
1384
+ /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i
1385
+ // Zebra
1386
+ ],
1387
+ [o, [s, Ve], [a, m]],
1388
+ [
1389
+ /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
1390
+ ],
1391
+ [o, [s, Ve], [a, p]],
1392
+ [
1393
+ ///////////////////
1394
+ // SMARTTVS
1395
+ ///////////////////
1396
+ /smart-tv.+(samsung)/i
1397
+ // Samsung
1398
+ ],
1399
+ [s, [a, C]],
1400
+ [
1401
+ /hbbtv.+maple;(\d+)/i
1402
+ ],
1403
+ [[o, /^/, "SmartTV"], [s, be], [a, C]],
1404
+ [
1405
+ /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
1406
+ // LG SmartTV
1407
+ ],
1408
+ [[s, Ce], [a, C]],
1409
+ [
1410
+ /(apple) ?tv/i
1411
+ // Apple TV
1412
+ ],
1413
+ [s, [o, ee + " TV"], [a, C]],
1414
+ [
1415
+ /crkey/i
1416
+ // Google Chromecast
1417
+ ],
1418
+ [[o, ue + "cast"], [s, he], [a, C]],
1419
+ [
1420
+ /droid.+aft(\w+)( bui|\))/i
1421
+ // Fire TV
1422
+ ],
1423
+ [o, [s, le], [a, C]],
1424
+ [
1425
+ /\(dtv[\);].+(aquos)/i,
1426
+ /(aquos-tv[\w ]+)\)/i
1427
+ // Sharp
1428
+ ],
1429
+ [o, [s, oi], [a, C]],
1430
+ [
1431
+ /(bravia[\w ]+)( bui|\))/i
1432
+ // Sony
1433
+ ],
1434
+ [o, [s, we], [a, C]],
1435
+ [
1436
+ /(mitv-\w{5}) bui/i
1437
+ // Xiaomi
1438
+ ],
1439
+ [o, [s, $e], [a, C]],
1440
+ [
1441
+ /Hbbtv.*(technisat) (.*);/i
1442
+ // TechniSAT
1443
+ ],
1444
+ [s, o, [a, C]],
1445
+ [
1446
+ /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,
1447
+ // Roku
1448
+ /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i
1449
+ // HbbTV devices
1450
+ ],
1451
+ [[s, Le], [o, Le], [a, C]],
1452
+ [
1453
+ /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i
1454
+ // SmartTV from Unidentified Vendors
1455
+ ],
1456
+ [[a, C]],
1457
+ [
1458
+ ///////////////////
1459
+ // CONSOLES
1460
+ ///////////////////
1461
+ /(ouya)/i,
1462
+ // Ouya
1463
+ /(nintendo) ([wids3utch]+)/i
1464
+ // Nintendo
1465
+ ],
1466
+ [s, o, [a, Y]],
1467
+ [
1468
+ /droid.+; (shield) bui/i
1469
+ // Nvidia
1470
+ ],
1471
+ [o, [s, "Nvidia"], [a, Y]],
1472
+ [
1473
+ /(playstation [345portablevi]+)/i
1474
+ // Playstation
1475
+ ],
1476
+ [o, [s, we], [a, Y]],
1477
+ [
1478
+ /\b(xbox(?: one)?(?!; xbox))[\); ]/i
1479
+ // Microsoft Xbox
1480
+ ],
1481
+ [o, [s, Ne], [a, Y]],
1482
+ [
1483
+ ///////////////////
1484
+ // WEARABLES
1485
+ ///////////////////
1486
+ /((pebble))app/i
1487
+ // Pebble
1488
+ ],
1489
+ [s, o, [a, Z]],
1490
+ [
1491
+ /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i
1492
+ // Apple Watch
1493
+ ],
1494
+ [o, [s, ee], [a, Z]],
1495
+ [
1496
+ /droid.+; (glass) \d/i
1497
+ // Google Glass
1498
+ ],
1499
+ [o, [s, he], [a, Z]],
1500
+ [
1501
+ /droid.+; (wt63?0{2,3})\)/i
1502
+ ],
1503
+ [o, [s, Ve], [a, Z]],
1504
+ [
1505
+ /(quest( 2| pro)?)/i
1506
+ // Oculus Quest
1507
+ ],
1508
+ [o, [s, ri], [a, Z]],
1509
+ [
1510
+ ///////////////////
1511
+ // EMBEDDED
1512
+ ///////////////////
1513
+ /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i
1514
+ // Tesla
1515
+ ],
1516
+ [s, [a, Me]],
1517
+ [
1518
+ /(aeobc)\b/i
1519
+ // Echo Dot
1520
+ ],
1521
+ [o, [s, le], [a, Me]],
1522
+ [
1523
+ ////////////////////
1524
+ // MIXED (GENERIC)
1525
+ ///////////////////
1526
+ /droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i
1527
+ // Android Phones from Unidentified Vendors
1528
+ ],
1529
+ [o, [a, p]],
1530
+ [
1531
+ /droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i
1532
+ // Android Tablets from Unidentified Vendors
1533
+ ],
1534
+ [o, [a, m]],
1535
+ [
1536
+ /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i
1537
+ // Unidentifiable Tablet
1538
+ ],
1539
+ [[a, m]],
1540
+ [
1541
+ /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i
1542
+ // Unidentifiable Mobile
1543
+ ],
1544
+ [[a, p]],
1545
+ [
1546
+ /(android[-\w\. ]{0,9});.+buil/i
1547
+ // Generic Android Device
1548
+ ],
1549
+ [o, [s, "Generic"]]
1550
+ ],
1551
+ engine: [
1552
+ [
1553
+ /windows.+ edge\/([\w\.]+)/i
1554
+ // EdgeHTML
1555
+ ],
1556
+ [l, [c, Bi + "HTML"]],
1557
+ [
1558
+ /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i
1559
+ // Blink
1560
+ ],
1561
+ [l, [c, "Blink"]],
1562
+ [
1563
+ /(presto)\/([\w\.]+)/i,
1564
+ // Presto
1565
+ /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,
1566
+ // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
1567
+ /ekioh(flow)\/([\w\.]+)/i,
1568
+ // Flow
1569
+ /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,
1570
+ // KHTML/Tasman/Links
1571
+ /(icab)[\/ ]([23]\.[\d\.]+)/i,
1572
+ // iCab
1573
+ /\b(libweb)/i
1574
+ ],
1575
+ [c, l],
1576
+ [
1577
+ /rv\:([\w\.]{1,9})\b.+(gecko)/i
1578
+ // Gecko
1579
+ ],
1580
+ [l, c]
1581
+ ],
1582
+ os: [
1583
+ [
1584
+ // Windows
1585
+ /microsoft (windows) (vista|xp)/i
1586
+ // Windows (iTunes)
1587
+ ],
1588
+ [c, l],
1589
+ [
1590
+ /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i
1591
+ // Windows Phone
1592
+ ],
1593
+ [c, [l, Ue, li]],
1594
+ [
1595
+ /windows nt 6\.2; (arm)/i,
1596
+ // Windows RT
1597
+ /windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,
1598
+ /(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i
1599
+ ],
1600
+ [[l, Ue, li], [c, "Windows"]],
1601
+ [
1602
+ // iOS/macOS
1603
+ /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,
1604
+ // iOS
1605
+ /(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,
1606
+ /cfnetwork\/.+darwin/i
1607
+ ],
1608
+ [[l, /_/g, "."], [c, "iOS"]],
1609
+ [
1610
+ /(mac os x) ?([\w\. ]*)/i,
1611
+ /(macintosh|mac_powerpc\b)(?!.+haiku)/i
1612
+ // Mac OS
1613
+ ],
1614
+ [[c, si], [l, /_/g, "."]],
1615
+ [
1616
+ // Mobile OSes
1617
+ /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i
1618
+ // Android-x86/HarmonyOS
1619
+ ],
1620
+ [l, c],
1621
+ [
1622
+ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
1623
+ /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
1624
+ /(blackberry)\w*\/([\w\.]*)/i,
1625
+ // Blackberry
1626
+ /(tizen|kaios)[\/ ]([\w\.]+)/i,
1627
+ // Tizen/KaiOS
1628
+ /\((series40);/i
1629
+ // Series 40
1630
+ ],
1631
+ [c, l],
1632
+ [
1633
+ /\(bb(10);/i
1634
+ // BlackBerry 10
1635
+ ],
1636
+ [l, [c, ii]],
1637
+ [
1638
+ /(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i
1639
+ // Symbian
1640
+ ],
1641
+ [l, [c, "Symbian"]],
1642
+ [
1643
+ /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i
1644
+ // Firefox OS
1645
+ ],
1646
+ [l, [c, de + " OS"]],
1647
+ [
1648
+ /web0s;.+rt(tv)/i,
1649
+ /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i
1650
+ // WebOS
1651
+ ],
1652
+ [l, [c, "webOS"]],
1653
+ [
1654
+ /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i
1655
+ // watchOS
1656
+ ],
1657
+ [l, [c, "watchOS"]],
1658
+ [
1659
+ // Google Chromecast
1660
+ /crkey\/([\d\.]+)/i
1661
+ // Google Chromecast
1662
+ ],
1663
+ [l, [c, ue + "cast"]],
1664
+ [
1665
+ /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i
1666
+ // Chromium OS
1667
+ ],
1668
+ [[c, ai], l],
1669
+ [
1670
+ // Smart TVs
1671
+ /panasonic;(viera)/i,
1672
+ // Panasonic Viera
1673
+ /(netrange)mmh/i,
1674
+ // Netrange
1675
+ /(nettv)\/(\d+\.[\w\.]+)/i,
1676
+ // NetTV
1677
+ // Console
1678
+ /(nintendo|playstation) ([wids345portablevuch]+)/i,
1679
+ // Nintendo/Playstation
1680
+ /(xbox); +xbox ([^\);]+)/i,
1681
+ // Microsoft Xbox (360, One, X, S, Series X, Series S)
1682
+ // Other
1683
+ /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
1684
+ // Joli/Palm
1685
+ /(mint)[\/\(\) ]?(\w*)/i,
1686
+ // Mint
1687
+ /(mageia|vectorlinux)[; ]/i,
1688
+ // Mageia/VectorLinux
1689
+ /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
1690
+ // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
1691
+ /(hurd|linux) ?([\w\.]*)/i,
1692
+ // Hurd/Linux
1693
+ /(gnu) ?([\w\.]*)/i,
1694
+ // GNU
1695
+ /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
1696
+ // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
1697
+ /(haiku) (\w+)/i
1698
+ // Haiku
1699
+ ],
1700
+ [c, l],
1701
+ [
1702
+ /(sunos) ?([\w\.\d]*)/i
1703
+ // Solaris
1704
+ ],
1705
+ [[c, "Solaris"], l],
1706
+ [
1707
+ /((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
1708
+ // Solaris
1709
+ /(aix) ((\d)(?=\.|\)| )[\w\.])*/i,
1710
+ // AIX
1711
+ /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,
1712
+ // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
1713
+ /(unix) ?([\w\.]*)/i
1714
+ // UNIX
1715
+ ],
1716
+ [c, l]
1717
+ ]
1718
+ }, V = function(v, _) {
1719
+ if (typeof v === y && (_ = v, v = n), !(this instanceof V))
1720
+ return new V(v, _).getResult();
1721
+ var w = typeof t !== g && t.navigator ? t.navigator : n, E = v || (w && w.userAgent ? w.userAgent : d), z = w && w.userAgentData ? w.userAgentData : n, L = _ ? Wi(ui, _) : ui, k = w && w.userAgent == E;
1722
+ return this.getBrowser = function() {
1723
+ var f = {};
1724
+ return f[c] = n, f[l] = n, te.call(f, E, L.browser), f[X] = Fi(f[l]), k && w && w.brave && typeof w.brave.isBrave == b && (f[c] = "Brave"), f;
1725
+ }, this.getCPU = function() {
1726
+ var f = {};
1727
+ return f[$] = n, te.call(f, E, L.cpu), f;
1728
+ }, this.getDevice = function() {
1729
+ var f = {};
1730
+ return f[s] = n, f[o] = n, f[a] = n, te.call(f, E, L.device), k && !f[a] && z && z.mobile && (f[a] = p), k && f[o] == "Macintosh" && w && typeof w.standalone !== g && w.maxTouchPoints && w.maxTouchPoints > 2 && (f[o] = "iPad", f[a] = m), f;
1731
+ }, this.getEngine = function() {
1732
+ var f = {};
1733
+ return f[c] = n, f[l] = n, te.call(f, E, L.engine), f;
1734
+ }, this.getOS = function() {
1735
+ var f = {};
1736
+ return f[c] = n, f[l] = n, te.call(f, E, L.os), k && !f[c] && z && z.platform != "Unknown" && (f[c] = z.platform.replace(/chrome os/i, ai).replace(/macos/i, si)), f;
1737
+ }, this.getResult = function() {
1738
+ return {
1739
+ ua: this.getUA(),
1740
+ browser: this.getBrowser(),
1741
+ engine: this.getEngine(),
1742
+ os: this.getOS(),
1743
+ device: this.getDevice(),
1744
+ cpu: this.getCPU()
1745
+ };
1746
+ }, this.getUA = function() {
1747
+ return E;
1748
+ }, this.setUA = function(f) {
1749
+ return E = typeof f === x && f.length > Re ? Le(f, Re) : f, this;
1750
+ }, this.setUA(E), this;
1751
+ };
1752
+ V.VERSION = r, V.BROWSER = pe([c, l, X]), V.CPU = pe([$]), V.DEVICE = pe([o, s, a, Y, p, C, m, Z, Me]), V.ENGINE = V.OS = pe([c, l]), i.exports && (e = i.exports = V), e.UAParser = V;
1753
+ var J = typeof t !== g && (t.jQuery || t.Zepto);
1754
+ if (J && !J.ua) {
1755
+ var me = new V();
1756
+ J.ua = me.getResult(), J.ua.get = function() {
1757
+ return me.getUA();
1758
+ }, J.ua.set = function(v) {
1759
+ me.setUA(v);
1760
+ var _ = me.getResult();
1761
+ for (var w in _)
1762
+ J.ua[w] = _[w];
1763
+ };
1764
+ }
1765
+ })(typeof window == "object" ? window : Mt);
1766
+ })(Ze, Ze.exports);
1767
+ var Rt = Ze.exports;
1768
+ function Ct(i = window.navigator.userAgent) {
1769
+ const { browser: e, os: t, device: n } = Rt.UAParser(i);
1770
+ return { browser: e, os: t, device: n };
1771
+ }
1772
+ function Nt() {
1773
+ var i, e, t, n, r, d, u;
1774
+ const { browser: b, os: g, device: y } = Ct();
1775
+ return {
1776
+ os: (i = g.name) != null ? i : "",
1777
+ os_version: (e = g.version) != null ? e : "",
1778
+ browser: (t = b.name) != null ? t : "",
1779
+ browser_version: (n = b.version) != null ? n : "",
1780
+ device: (r = y.model) != null ? r : "",
1781
+ device_type: (d = y.type) != null ? d : "",
1782
+ device_vendor: (u = y.vendor) != null ? u : ""
1783
+ };
1784
+ }
1785
+ const Ti = () => {
1786
+ var i;
1787
+ return ((i = document.cookie.match(/\bagreed-cookiepolicy=(.+?);?/)) == null ? void 0 : i[1]) === "1";
1788
+ };
1789
+ function $t(i) {
1790
+ const e = Object.getOwnPropertyDescriptor(Document.prototype, "cookie");
1791
+ Object.defineProperty(Document.prototype, "cookie", {
1792
+ ...e,
1793
+ set(t) {
1794
+ var n;
1795
+ (n = e.set) == null || n.call(this, t), i();
1796
+ }
1797
+ });
1798
+ }
1799
+ function Vt(i) {
1800
+ let e;
1801
+ ["replaceState", "pushState"].forEach((t) => {
1802
+ const n = History.prototype[t];
1803
+ History.prototype[t] = function(r, d, u) {
1804
+ var b, g;
1805
+ try {
1806
+ if ((b = window.__OA_INSTANCE__) != null && b.enabled) {
1807
+ const y = location.pathname;
1808
+ n.call(this, r, d, u);
1809
+ const x = location.pathname;
1810
+ y !== x && ((g = window.__OA_REPORT_PV__) == null || g.call(window, { $referrer: e, ...i ? i(y, x) : {} }));
1811
+ } else
1812
+ n.call(this, r, d, u);
1813
+ } catch {
1814
+ n.call(this, r, d, u);
1815
+ } finally {
1816
+ e = location.href;
1817
+ }
1818
+ };
1819
+ }), window.addEventListener("popstate", () => {
1820
+ var n;
1821
+ const t = new URL(e).pathname;
1822
+ t !== location.pathname && ((n = window.__OA_REPORT_PV__) == null || n.call(window, { $referrer: e, ...i ? i(t, new URL(location.href).pathname) : {} })), e = location.href;
1823
+ });
1824
+ }
1825
+ const Di = Symbol("fromBubble"), Si = (i) => typeof i == "object" && i !== null, Pi = (i) => i instanceof CustomEvent && i.detail[Di], oe = /* @__PURE__ */ new WeakMap(), Oi = /* @__PURE__ */ new WeakSet(), Ii = (i, e) => {
1826
+ var n;
1827
+ const t = (n = oe.get(i)) == null ? void 0 : n[e];
1828
+ if (t)
1829
+ return t;
1830
+ }, Lt = (i, e, t) => {
1831
+ i.dispatchEvent(
1832
+ new CustomEvent(e, {
1833
+ detail: { data: t, [Di]: !0 },
1834
+ bubbles: !0
1835
+ })
1836
+ );
1837
+ }, Ut = {
1838
+ mounted(i, e) {
1839
+ const t = e.arg || "click", n = e.modifiers.bubble, r = n || e.modifiers.catchBubble ? `_v-analytics_${t}` : t;
1840
+ n && !e.modifiers.noTrigger && i.addEventListener(t, (u) => {
1841
+ if (Oi.has(u))
1842
+ return;
1843
+ Oi.add(u);
1844
+ const b = Ii(i, r), g = typeof b == "function" ? b(u) : b;
1845
+ if (!Si(g))
1846
+ return;
1847
+ const y = { ...hi(fi(g)) };
1848
+ e.modifiers.addUrl && (y.$url = location.href);
1849
+ const x = u.currentTarget.parentElement;
1850
+ x && Lt(x, r, y);
1851
+ }), i.addEventListener(r, (u) => {
1852
+ var x, X;
1853
+ const b = Ii(i, r), g = typeof b == "function" ? b(u) : b;
1854
+ if (!Si(g))
1855
+ return;
1856
+ const y = { ...hi(fi(g)) };
1857
+ if (e.modifiers.addUrl && (y.properties ? y.properties.$url = location.href : y.$url = location.href), n)
1858
+ Pi(u) && Object.assign(u.detail.data, y);
1859
+ else if (e.modifiers.catchBubble) {
1860
+ if (Pi(u)) {
1861
+ const o = {
1862
+ ...y,
1863
+ properties: {
1864
+ ...y.properties,
1865
+ ...u.detail.data
1866
+ }
1867
+ };
1868
+ (x = window.__OA_REPORT__) == null || x.call(window, o.event || t, o.properties, o.service);
1869
+ }
1870
+ } else
1871
+ (X = window.__OA_REPORT__) == null || X.call(window, g.event || t, g.properties, g.service);
1872
+ });
1873
+ const d = oe.get(i);
1874
+ d ? d[r] = e.value : oe.set(i, { [r]: e.value });
1875
+ },
1876
+ updated(i, e) {
1877
+ const t = e.arg || "click", n = e.modifiers.bubble || e.modifiers.catchBubble ? `_v-analytics_${t}` : t, r = oe.get(i);
1878
+ r ? r[n] = e.value : oe.set(i, { [n]: e.value });
1879
+ }
1880
+ };
1881
+ let zi = "portal", _e, T = null;
1882
+ const Ai = () => {
1883
+ T == null || T.setHeader(Nt()), T == null || T.enableReporting(!0);
1884
+ }, Fe = () => {
1885
+ T == null || T.enableReporting(!1), [`oa-${_e}-client`, `oa-${_e}-events`, `oa-${_e}-session`].forEach((i) => {
1886
+ localStorage.removeItem(i);
1887
+ });
1888
+ }, He = (i) => {
1889
+ se(j.PV, i || null);
1890
+ }, Mi = () => {
1891
+ se(j.LCP), se(j.INP), se(j.PageBasePerformance);
1892
+ };
1893
+ function se(i, e, t = zi, n) {
1894
+ return T == null ? void 0 : T.report(
1895
+ i,
1896
+ async (...r) => ({
1897
+ $service: t,
1898
+ ...typeof e == "function" ? await e(...r) : e
1899
+ }),
1900
+ n
1901
+ );
1902
+ }
1903
+ const jt = (i, e) => {
1904
+ var n;
1905
+ if (_e = e.appKey, e.service && (zi = e.service), T = new We({
1906
+ appKey: e.appKey,
1907
+ request: (r) => {
1908
+ if (!Ti()) {
1909
+ Fe();
1910
+ return;
1911
+ }
1912
+ typeof e.request == "string" ? fetch(e.request, { body: JSON.stringify(r), method: "POST", headers: { "Content-Type": "application/json" } }) : typeof e.request == "function" && e.request(r);
1913
+ }
1914
+ }), typeof e.onEnable == "function" || typeof e.onDisable == "function") {
1915
+ const r = We.prototype.enableReporting;
1916
+ We.prototype.enableReporting = function(d) {
1917
+ var u, b;
1918
+ try {
1919
+ d ? (u = e.onEnable) == null || u.call(e) : (b = e.onDisable) == null || b.call(e);
1920
+ } finally {
1921
+ r.call(this, d);
1922
+ }
1923
+ };
1924
+ }
1925
+ const t = typeof e.isCookieAgreed == "function" ? e.isCookieAgreed : Ti;
1926
+ typeof window < "u" && typeof document < "u" && (t() ? (Ai(), He(((n = e.onPageView) == null ? void 0 : n.call(e, "/", location.pathname)) || void 0), Mi()) : Fe(), $t(() => {
1927
+ var r;
1928
+ if (t()) {
1929
+ if (T != null && T.enabled) return;
1930
+ Ai(), He(((r = e.onPageView) == null ? void 0 : r.call(e, "/", location.pathname)) || void 0), Mi();
1931
+ } else
1932
+ T != null && T.enabled && Fe();
1933
+ }), Vt(e.onPageView), window.__OA_INSTANCE__ = T, window.__OA_REPORT__ = se, window.__OA_REPORT_PV__ = He), i.directive("analytics", Ut);
1934
+ };
1935
+ export {
1936
+ jt as initOpenDesignAnalytics,
1937
+ se as oaReport,
1938
+ Ut as vAnalytics
1939
+ };