UNPKG

hc-web-log-mon

Version:

基于 JS 跨平台插件,为前端项目提供【 行为、性能、异常、请求、资源、路由、曝光、录屏 】监控手段

1,615 lines (1,614 loc) 63.8 kB
// @ts-nocheck /** * 获取设备id * 在用户未登录的情况下最大限度标明用户唯一身份 * 注:此文件为 fingerprintjs[https://github.com/fingerprintjs/fingerprintjs] v3.4.1 离线版本 */ /** * FingerprintJS v3.4.1 - Copyright (c) FingerprintJS, Inc, 2023 (https://fingerprint.com) * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. * * This software contains code from open-source projects: * MurmurHash3 by Karan Lyons (https://github.com/karanlyons/murmurHash3.js) */ let e = function () { return ( (e = Object.assign || function (e) { for (var n, t = 1, r = arguments.length; t < r; t++) for (const o in (n = arguments[t])) Object.prototype.hasOwnProperty.call(n, o) && (e[o] = n[o]) return e }), e.apply(this, arguments) ) } function n(e, n, t, r) { return new (t || (t = Promise))(function (o, a) { function i(e) { try { u(r.next(e)) } catch (n) { a(n) } } function c(e) { try { u(r.throw(e)) } catch (n) { a(n) } } function u(e) { let n e.done ? o(e.value) : ((n = e.value), n instanceof t ? n : new t(function (e) { e(n) })).then(i, c) } u((r = r.apply(e, n || [])).next()) }) } function t(e, n) { let t, r, o, a, i = { label: 0, sent: function () { if (1 & o[0]) throw o[1] return o[1] }, trys: [], ops: [] } return ( (a = { next: c(0), throw: c(1), return: c(2) }), 'function' == typeof Symbol && (a[Symbol.iterator] = function () { return this }), a ) function c(c) { return function (u) { return (function (c) { if (t) throw new TypeError('Generator is already executing.') for (; a && ((a = 0), c[0] && (i = 0)), i; ) try { if ( ((t = 1), r && (o = 2 & c[0] ? r.return : c[0] ? r.throw || ((o = r.return) && o.call(r), 0) : r.next) && !(o = o.call(r, c[1])).done) ) return o switch (((r = 0), o && (c = [2 & c[0], o.value]), c[0])) { case 0: case 1: o = c break case 4: return i.label++, { value: c[1], done: !1 } case 5: i.label++, (r = c[1]), (c = [0]) continue case 7: ;(c = i.ops.pop()), i.trys.pop() continue default: if ( !((o = i.trys), (o = o.length > 0 && o[o.length - 1]) || (6 !== c[0] && 2 !== c[0])) ) { i = 0 continue } if (3 === c[0] && (!o || (c[1] > o[0] && c[1] < o[3]))) { i.label = c[1] break } if (6 === c[0] && i.label < o[1]) { ;(i.label = o[1]), (o = c) break } if (o && i.label < o[2]) { ;(i.label = o[2]), i.ops.push(c) break } o[2] && i.ops.pop(), i.trys.pop() continue } c = n.call(e, i) } catch (u) { ;(c = [6, u]), (r = 0) } finally { t = o = 0 } if (5 & c[0]) throw c[1] return { value: c[0] ? c[1] : void 0, done: !0 } })([c, u]) } } } function r(e, n, t) { if (t || 2 === arguments.length) for (var r, o = 0, a = n.length; o < a; o++) (!r && o in n) || (r || (r = Array.prototype.slice.call(n, 0, o)), (r[o] = n[o])) return e.concat(r || Array.prototype.slice.call(n)) } function o(e, n) { return new Promise(function (t) { return setTimeout(t, e, n) }) } function a(e) { return !!e && 'function' == typeof e.then } function i(e, n) { try { const t = e() a(t) ? t.then( function (e) { return n(!0, e) }, function (e) { return n(!1, e) } ) : n(!0, t) } catch (r) { n(!1, r) } } function c(e, r, a) { return ( void 0 === a && (a = 16), n(this, void 0, void 0, function () { let n, i, c return t(this, function (t) { switch (t.label) { case 0: ;(n = Date.now()), (i = 0), (t.label = 1) case 1: return i < e.length ? (r(e[i], i), (c = Date.now()) >= n + a ? ((n = c), [4, o(0)]) : [3, 3]) : [3, 4] case 2: t.sent(), (t.label = 3) case 3: return ++i, [3, 1] case 4: return [2] } }) }) ) } function u(e) { e.then(void 0, function () {}) } function l(e, n) { ;(e = [e[0] >>> 16, 65535 & e[0], e[1] >>> 16, 65535 & e[1]]), (n = [n[0] >>> 16, 65535 & n[0], n[1] >>> 16, 65535 & n[1]]) const t = [0, 0, 0, 0] return ( (t[3] += e[3] + n[3]), (t[2] += t[3] >>> 16), (t[3] &= 65535), (t[2] += e[2] + n[2]), (t[1] += t[2] >>> 16), (t[2] &= 65535), (t[1] += e[1] + n[1]), (t[0] += t[1] >>> 16), (t[1] &= 65535), (t[0] += e[0] + n[0]), (t[0] &= 65535), [(t[0] << 16) | t[1], (t[2] << 16) | t[3]] ) } function s(e, n) { ;(e = [e[0] >>> 16, 65535 & e[0], e[1] >>> 16, 65535 & e[1]]), (n = [n[0] >>> 16, 65535 & n[0], n[1] >>> 16, 65535 & n[1]]) const t = [0, 0, 0, 0] return ( (t[3] += e[3] * n[3]), (t[2] += t[3] >>> 16), (t[3] &= 65535), (t[2] += e[2] * n[3]), (t[1] += t[2] >>> 16), (t[2] &= 65535), (t[2] += e[3] * n[2]), (t[1] += t[2] >>> 16), (t[2] &= 65535), (t[1] += e[1] * n[3]), (t[0] += t[1] >>> 16), (t[1] &= 65535), (t[1] += e[2] * n[2]), (t[0] += t[1] >>> 16), (t[1] &= 65535), (t[1] += e[3] * n[1]), (t[0] += t[1] >>> 16), (t[1] &= 65535), (t[0] += e[0] * n[3] + e[1] * n[2] + e[2] * n[1] + e[3] * n[0]), (t[0] &= 65535), [(t[0] << 16) | t[1], (t[2] << 16) | t[3]] ) } function d(e, n) { return 32 === (n %= 64) ? [e[1], e[0]] : n < 32 ? [(e[0] << n) | (e[1] >>> (32 - n)), (e[1] << n) | (e[0] >>> (32 - n))] : ((n -= 32), [(e[1] << n) | (e[0] >>> (32 - n)), (e[0] << n) | (e[1] >>> (32 - n))]) } function m(e, n) { return 0 === (n %= 64) ? e : n < 32 ? [(e[0] << n) | (e[1] >>> (32 - n)), e[1] << n] : [e[1] << (n - 32), 0] } function f(e, n) { return [e[0] ^ n[0], e[1] ^ n[1]] } function v(e) { return ( (e = f(e, [0, e[0] >>> 1])), (e = f((e = s(e, [4283543511, 3981806797])), [0, e[0] >>> 1])), (e = f((e = s(e, [3301882366, 444984403])), [0, e[0] >>> 1])) ) } function h(e, n) { n = n || 0 let t, r = (e = e || '').length % 16, o = e.length - r, a = [0, n], i = [0, n], c = [0, 0], u = [0, 0], h = [2277735313, 289559509], b = [1291169091, 658871167] for (t = 0; t < o; t += 16) (c = [ (255 & e.charCodeAt(t + 4)) | ((255 & e.charCodeAt(t + 5)) << 8) | ((255 & e.charCodeAt(t + 6)) << 16) | ((255 & e.charCodeAt(t + 7)) << 24), (255 & e.charCodeAt(t)) | ((255 & e.charCodeAt(t + 1)) << 8) | ((255 & e.charCodeAt(t + 2)) << 16) | ((255 & e.charCodeAt(t + 3)) << 24) ]), (u = [ (255 & e.charCodeAt(t + 12)) | ((255 & e.charCodeAt(t + 13)) << 8) | ((255 & e.charCodeAt(t + 14)) << 16) | ((255 & e.charCodeAt(t + 15)) << 24), (255 & e.charCodeAt(t + 8)) | ((255 & e.charCodeAt(t + 9)) << 8) | ((255 & e.charCodeAt(t + 10)) << 16) | ((255 & e.charCodeAt(t + 11)) << 24) ]), (c = d((c = s(c, h)), 31)), (a = l((a = d((a = f(a, (c = s(c, b)))), 27)), i)), (a = l(s(a, [0, 5]), [0, 1390208809])), (u = d((u = s(u, b)), 33)), (i = l((i = d((i = f(i, (u = s(u, h)))), 31)), a)), (i = l(s(i, [0, 5]), [0, 944331445])) switch (((c = [0, 0]), (u = [0, 0]), r)) { case 15: u = f(u, m([0, e.charCodeAt(t + 14)], 48)) case 14: u = f(u, m([0, e.charCodeAt(t + 13)], 40)) case 13: u = f(u, m([0, e.charCodeAt(t + 12)], 32)) case 12: u = f(u, m([0, e.charCodeAt(t + 11)], 24)) case 11: u = f(u, m([0, e.charCodeAt(t + 10)], 16)) case 10: u = f(u, m([0, e.charCodeAt(t + 9)], 8)) case 9: ;(u = s((u = f(u, [0, e.charCodeAt(t + 8)])), b)), (i = f(i, (u = s((u = d(u, 33)), h)))) case 8: c = f(c, m([0, e.charCodeAt(t + 7)], 56)) case 7: c = f(c, m([0, e.charCodeAt(t + 6)], 48)) case 6: c = f(c, m([0, e.charCodeAt(t + 5)], 40)) case 5: c = f(c, m([0, e.charCodeAt(t + 4)], 32)) case 4: c = f(c, m([0, e.charCodeAt(t + 3)], 24)) case 3: c = f(c, m([0, e.charCodeAt(t + 2)], 16)) case 2: c = f(c, m([0, e.charCodeAt(t + 1)], 8)) case 1: ;(c = s((c = f(c, [0, e.charCodeAt(t)])), h)), (a = f(a, (c = s((c = d(c, 31)), b)))) } return ( (a = l((a = f(a, [0, e.length])), (i = f(i, [0, e.length])))), (i = l(i, a)), (a = l((a = v(a)), (i = v(i)))), (i = l(i, a)), ('00000000' + (a[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (a[1] >>> 0).toString(16)).slice(-8) + ('00000000' + (i[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (i[1] >>> 0).toString(16)).slice(-8) ) } function b(e) { return parseInt(e) } function p(e) { return parseFloat(e) } function y(e, n) { return 'number' == typeof e && isNaN(e) ? n : e } function g(e) { return e.reduce(function (e, n) { return e + (n ? 1 : 0) }, 0) } function w(e, n) { if ((void 0 === n && (n = 1), Math.abs(n) >= 1)) return Math.round(e / n) * n const t = 1 / n return Math.round(e * t) / t } function L(e) { return e && 'object' == typeof e && 'message' in e ? e : { message: e } } function k(e) { return 'function' != typeof e } function V(e, r, a) { const l = Object.keys(e).filter(function (e) { return !(function (e, n) { for (let t = 0, r = e.length; t < r; ++t) if (e[t] === n) return !0 return !1 })(a, e) }), s = Array(l.length) return ( c(l, function (n, t) { s[t] = (function (e, n) { const t = new Promise(function (t) { const r = Date.now() i(e.bind(null, n), function () { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n] const o = Date.now() - r if (!e[0]) return t(function () { return { error: L(e[1]), duration: o } }) const a = e[1] if (k(a)) return t(function () { return { value: a, duration: o } }) t(function () { return new Promise(function (e) { const n = Date.now() i(a, function () { for (var t = [], r = 0; r < arguments.length; r++) t[r] = arguments[r] const a = o + Date.now() - n if (!t[0]) return e({ error: L(t[1]), duration: a }) e({ value: t[1], duration: a }) }) }) }) }) }) return ( u(t), function () { return t.then(function (e) { return e() }) } ) })(e[n], r) }), function () { return n(this, void 0, void 0, function () { let e, n, r, a, i, d return t(this, function (m) { switch (m.label) { case 0: for (e = {}, n = 0, r = l; n < r.length; n++) (a = r[n]), (e[a] = void 0) ;(i = Array(l.length)), (d = function () { let n return t(this, function (t) { switch (t.label) { case 0: return ( (n = !0), [ 4, c(l, function (t, r) { if (!i[r]) if (s[r]) { const o = s[r]().then(function (n) { return (e[t] = n) }) u(o), (i[r] = o) } else n = !1 }) ] ) case 1: return t.sent(), n ? [2, 'break'] : [4, o(1)] case 2: return t.sent(), [2] } }) }), (m.label = 1) case 1: return [5, d()] case 2: if ('break' === m.sent()) return [3, 4] m.label = 3 case 3: return [3, 1] case 4: return [4, Promise.all(i)] case 5: return m.sent(), [2, e] } }) }) } ) } function W(e, n) { const t = function (e) { return k(e) ? n(e) : function () { const t = e() return a(t) ? t.then(n) : n(t) } } return function (n) { const r = e(n) return a(r) ? r.then(t) : t(r) } } function Z() { const e = window, n = navigator return ( g([ 'MSCSSMatrix' in e, 'msSetImmediate' in e, 'msIndexedDB' in e, 'msMaxTouchPoints' in n, 'msPointerEnabled' in n ]) >= 4 ) } function S() { const e = window, n = navigator return ( g([ 'msWriteProfilerMark' in e, 'MSStream' in e, 'msLaunchUri' in n, 'msSaveBlob' in n ]) >= 3 && !Z() ) } function X() { const e = window, n = navigator return ( g([ 'webkitPersistentStorage' in n, 'webkitTemporaryStorage' in n, 0 === n.vendor.indexOf('Google'), 'webkitResolveLocalFileSystemURL' in e, 'BatteryManager' in e, 'webkitMediaStream' in e, 'webkitSpeechGrammar' in e ]) >= 5 ) } function x() { const e = window, n = navigator return ( g([ 'ApplePayError' in e, 'CSSPrimitiveValue' in e, 'Counter' in e, 0 === n.vendor.indexOf('Apple'), 'getStorageUpdates' in n, 'WebKitMediaKeys' in e ]) >= 4 ) } function F() { const e = window return ( g([ 'safari' in e, !('DeviceMotionEvent' in e), !('ongestureend' in e), !('standalone' in navigator) ]) >= 3 ) } function Y() { let e, n, t = window return ( g([ 'buildID' in navigator, 'MozAppearance' in (null !== (n = null === (e = document.documentElement) || void 0 === e ? void 0 : e.style) && void 0 !== n ? n : {}), 'onmozfullscreenchange' in t, 'mozInnerScreenX' in t, 'CSSMozDocumentRule' in t, 'CanvasCaptureMediaStream' in t ]) >= 4 ) } function C() { const e = document return ( e.fullscreenElement || e.msFullscreenElement || e.mozFullScreenElement || e.webkitFullscreenElement || null ) } function R() { const e = X(), n = Y() if (!e && !n) return !1 const t = window return ( g([ 'onorientationchange' in t, 'orientation' in t, e && !('SharedWorker' in t), n && /android/i.test(navigator.appVersion) ]) >= 2 ) } function G(e) { const n = new Error(e) return (n.name = e), n } function M(e, r, a) { let i, c, u return ( void 0 === a && (a = 50), n(this, void 0, void 0, function () { let n, l return t(this, function (t) { switch (t.label) { case 0: ;(n = document), (t.label = 1) case 1: return n.body ? [3, 3] : [4, o(a)] case 2: return t.sent(), [3, 1] case 3: ;(l = n.createElement('iframe')), (t.label = 4) case 4: return ( t.trys.push([4, , 10, 11]), [ 4, new Promise(function (e, t) { let o = !1, a = function () { ;(o = !0), e() } ;(l.onload = a), (l.onerror = function (e) { ;(o = !0), t(e) }) const i = l.style i.setProperty('display', 'block', 'important'), (i.position = 'absolute'), (i.top = '0'), (i.left = '0'), (i.visibility = 'hidden'), r && 'srcdoc' in l ? (l.srcdoc = r) : (l.src = 'about:blank'), n.body.appendChild(l) const c = function () { let e, n o || ('complete' === (null === (n = null === (e = l.contentWindow) || void 0 === e ? void 0 : e.document) || void 0 === n ? void 0 : n.readyState) ? a() : setTimeout(c, 10)) } c() }) ] ) case 5: t.sent(), (t.label = 6) case 6: return ( null === (c = null === (i = l.contentWindow) || void 0 === i ? void 0 : i.document) || void 0 === c ? void 0 : c.body ) ? [3, 8] : [4, o(a)] case 7: return t.sent(), [3, 6] case 8: return [4, e(l, l.contentWindow)] case 9: return [2, t.sent()] case 10: return ( null === (u = l.parentNode) || void 0 === u || u.removeChild(l), [7] ) case 11: return [2] } }) }) ) } function I(e) { for ( var n = (function (e) { for ( var n, t, r = "Unexpected syntax '".concat(e, "'"), o = /^\s*([a-z-]*)(.*)$/i.exec(e), a = o[1] || void 0, i = {}, c = /([.:#][\w-]+|\[.+?\])/gi, u = function (e, n) { ;(i[e] = i[e] || []), i[e].push(n) }; ; ) { const l = c.exec(o[2]) if (!l) break const s = l[0] switch (s[0]) { case '.': u('class', s.slice(1)) break case '#': u('id', s.slice(1)) break case '[': var d = /^\[([\w-]+)([~|^$*]?=("(.*?)"|([\w-]+)))?(\s+[is])?\]$/.exec(s) if (!d) throw new Error(r) u( d[1], null !== (t = null !== (n = d[4]) && void 0 !== n ? n : d[5]) && void 0 !== t ? t : '' ) break default: throw new Error(r) } } return [a, i] })(e), t = n[0], r = n[1], o = document.createElement(null != t ? t : 'div'), a = 0, i = Object.keys(r); a < i.length; a++ ) { const c = i[a], u = r[c].join(' ') 'style' === c ? j(o.style, u) : o.setAttribute(c, u) } return o } function j(e, n) { for (let t = 0, r = n.split(';'); t < r.length; t++) { const o = r[t], a = /^\s*([\w-]+)\s*:\s*(.+?)(\s*!([\w-]+))?\s*$/.exec(o) if (a) { const i = a[1], c = a[2], u = a[4] e.setProperty(i, c, u || '') } } } const A = ['monospace', 'sans-serif', 'serif'], J = [ 'sans-serif-thin', 'ARNO PRO', 'Agency FB', 'Arabic Typesetting', 'Arial Unicode MS', 'AvantGarde Bk BT', 'BankGothic Md BT', 'Batang', 'Bitstream Vera Sans Mono', 'Calibri', 'Century', 'Century Gothic', 'Clarendon', 'EUROSTILE', 'Franklin Gothic', 'Futura Bk BT', 'Futura Md BT', 'GOTHAM', 'Gill Sans', 'HELV', 'Haettenschweiler', 'Helvetica Neue', 'Humanst521 BT', 'Leelawadee', 'Letter Gothic', 'Levenim MT', 'Lucida Bright', 'Lucida Sans', 'Menlo', 'MS Mincho', 'MS Outlook', 'MS Reference Specialty', 'MS UI Gothic', 'MT Extra', 'MYRIAD PRO', 'Marlett', 'Meiryo UI', 'Microsoft Uighur', 'Minion Pro', 'Monotype Corsiva', 'PMingLiU', 'Pristina', 'SCRIPTINA', 'Segoe UI Light', 'Serifa', 'SimHei', 'Small Fonts', 'Staccato222 BT', 'TRAJAN PRO', 'Univers CE 55 Medium', 'Vrinda', 'ZWAdobeF' ] function H(e) { return e.toDataURL() } let N, P function z() { const e = this return ( (function () { if (void 0 === P) { const e = function () { const n = D() E(n) ? (P = setTimeout(e, 2500)) : ((N = n), (P = void 0)) } e() } })(), function () { return n(e, void 0, void 0, function () { let e return t(this, function (n) { switch (n.label) { case 0: return E((e = D())) ? N ? [2, r([], N, !0)] : C() ? [ 4, ((t = document), ( t.exitFullscreen || t.msExitFullscreen || t.mozCancelFullScreen || t.webkitExitFullscreen ).call(t)) ] : [3, 2] : [3, 2] case 1: n.sent(), (e = D()), (n.label = 2) case 2: return E(e) || (N = e), [2, e] } let t }) }) } ) } function D() { const e = screen return [ y(p(e.availTop), null), y(p(e.width) - p(e.availWidth) - y(p(e.availLeft), 0), null), y(p(e.height) - p(e.availHeight) - y(p(e.availTop), 0), null), y(p(e.availLeft), null) ] } function E(e) { for (let n = 0; n < 4; ++n) if (e[n]) return !1 return !0 } function B(e) { let r return n(this, void 0, void 0, function () { let n, a, i, c, u, l, s return t(this, function (t) { switch (t.label) { case 0: for ( n = document, a = n.createElement('div'), i = new Array(e.length), c = {}, T(a), s = 0; s < e.length; ++s ) (u = I(e[s])), T((l = n.createElement('div'))), l.appendChild(u), a.appendChild(l), (i[s] = u) t.label = 1 case 1: return n.body ? [3, 3] : [4, o(50)] case 2: return t.sent(), [3, 1] case 3: n.body.appendChild(a) try { for (s = 0; s < e.length; ++s) i[s].offsetParent || (c[e[s]] = !0) } finally { null === (r = a.parentNode) || void 0 === r || r.removeChild(a) } return [2, c] } }) }) } function T(e) { e.style.setProperty('display', 'block', 'important') } function O(e) { return matchMedia('(inverted-colors: '.concat(e, ')')).matches } function _(e) { return matchMedia('(forced-colors: '.concat(e, ')')).matches } function Q(e) { return matchMedia('(prefers-contrast: '.concat(e, ')')).matches } function U(e) { return matchMedia('(prefers-reduced-motion: '.concat(e, ')')).matches } function K(e) { return matchMedia('(dynamic-range: '.concat(e, ')')).matches } const q = Math, $ = function () { return 0 } const ee = { default: [], apple: [{ font: '-apple-system-body' }], serif: [{ fontFamily: 'serif' }], sans: [{ fontFamily: 'sans-serif' }], mono: [{ fontFamily: 'monospace' }], min: [{ fontSize: '1px' }], system: [{ fontFamily: 'system-ui' }] } const ne = { fonts: function () { return M(function (e, n) { const t = n.document, r = t.body r.style.fontSize = '48px' const o = t.createElement('div'), a = {}, i = {}, c = function (e) { const n = t.createElement('span'), r = n.style return ( (r.position = 'absolute'), (r.top = '0'), (r.left = '0'), (r.fontFamily = e), (n.textContent = 'mmMwWLliI0O&1'), o.appendChild(n), n ) }, u = A.map(c), l = (function () { for ( var e = {}, n = function (n) { e[n] = A.map(function (e) { return (function (e, n) { return c("'".concat(e, "',").concat(n)) })(n, e) }) }, t = 0, r = J; t < r.length; t++ ) { n(r[t]) } return e })() r.appendChild(o) for (let s = 0; s < A.length; s++) (a[A[s]] = u[s].offsetWidth), (i[A[s]] = u[s].offsetHeight) return J.filter(function (e) { return ( (n = l[e]), A.some(function (e, t) { return n[t].offsetWidth !== a[e] || n[t].offsetHeight !== i[e] }) ) }) }) }, domBlockers: function (e) { const r = (void 0 === e ? {} : e).debug return n(this, void 0, void 0, function () { let e, n, o, a, i return t(this, function (t) { switch (t.label) { case 0: return x() || R() ? ((c = atob), (e = { abpIndo: [ '#Iklan-Melayang', '#Kolom-Iklan-728', '#SidebarIklan-wrapper', c('YVt0aXRsZT0iN25hZ2EgcG9rZXIiIGld'), '[title="ALIENBOLA" i]' ], abpvn: [ '#quangcaomb', c('Lmlvc0Fkc2lvc0Fkcy1sYXlvdXQ='), '.quangcao', c('W2hyZWZePSJodHRwczovL3I4OC52bi8iXQ=='), c('W2hyZWZePSJodHRwczovL3piZXQudm4vIl0=') ], adBlockFinland: [ '.mainostila', c('LnNwb25zb3JpdA=='), '.ylamainos', c('YVtocmVmKj0iL2NsaWNrdGhyZ2guYXNwPyJd'), c('YVtocmVmXj0iaHR0cHM6Ly9hcHAucmVhZHBlYWsuY29tL2FkcyJd') ], adBlockPersian: [ '#navbar_notice_50', '.kadr', 'TABLE[width="140px"]', '#divAgahi', c('I2FkMl9pbmxpbmU=') ], adBlockWarningRemoval: [ '#adblock-honeypot', '.adblocker-root', '.wp_adblock_detect', c('LmhlYWRlci1ibG9ja2VkLWFk'), c('I2FkX2Jsb2NrZXI=') ], adGuardAnnoyances: [ 'amp-embed[type="zen"]', '.hs-sosyal', '#cookieconsentdiv', 'div[class^="app_gdpr"]', '.as-oil' ], adGuardBase: [ '.BetterJsPopOverlay', c('I2FkXzMwMFgyNTA='), c('I2Jhbm5lcmZsb2F0MjI='), c('I2FkLWJhbm5lcg=='), c('I2NhbXBhaWduLWJhbm5lcg==') ], adGuardChinese: [ c('LlppX2FkX2FfSA=='), c('YVtocmVmKj0iL29kMDA1LmNvbSJd'), c('YVtocmVmKj0iLmh0aGJldDM0LmNvbSJd'), '.qq_nr_lad', '#widget-quan' ], adGuardFrench: [ c('I2Jsb2NrLXZpZXdzLWFkcy1zaWRlYmFyLWJsb2NrLWJsb2Nr'), '#pavePub', c('LmFkLWRlc2t0b3AtcmVjdGFuZ2xl'), '.mobile_adhesion', '.widgetadv' ], adGuardGerman: [ c('LmJhbm5lcml0ZW13ZXJidW5nX2hlYWRfMQ=='), c('LmJveHN0YXJ0d2VyYnVuZw=='), c('LndlcmJ1bmcz'), c( 'YVtocmVmXj0iaHR0cDovL3d3dy5laXMuZGUvaW5kZXgucGh0bWw/cmVmaWQ9Il0=' ), c( 'YVtocmVmXj0iaHR0cHM6Ly93d3cudGlwaWNvLmNvbS8/YWZmaWxpYXRlSWQ9Il0=' ) ], adGuardJapanese: [ '#kauli_yad_1', c('YVtocmVmXj0iaHR0cDovL2FkMi50cmFmZmljZ2F0ZS5uZXQvIl0='), c('Ll9wb3BJbl9pbmZpbml0ZV9hZA=='), c('LmFkZ29vZ2xl'), c('LmFkX3JlZ3VsYXIz') ], adGuardMobile: [ c('YW1wLWF1dG8tYWRz'), c('LmFtcF9hZA=='), 'amp-embed[type="24smi"]', '#mgid_iframe1', c('I2FkX2ludmlld19hcmVh') ], adGuardRussian: [ c('YVtocmVmXj0iaHR0cHM6Ly9hZC5sZXRtZWFkcy5jb20vIl0='), c('LnJlY2xhbWE='), 'div[id^="smi2adblock"]', c('ZGl2W2lkXj0iQWRGb3hfYmFubmVyXyJd'), c('I2FkX3NxdWFyZQ==') ], adGuardSocial: [ c( 'YVtocmVmXj0iLy93d3cuc3R1bWJsZXVwb24uY29tL3N1Ym1pdD91cmw9Il0=' ), c('YVtocmVmXj0iLy90ZWxlZ3JhbS5tZS9zaGFyZS91cmw/Il0='), '.etsy-tweet', '#inlineShare', '.popup-social' ], adGuardSpanishPortuguese: [ '#barraPublicidade', '#Publicidade', '#publiEspecial', '#queTooltip', c('W2hyZWZePSJodHRwOi8vYWRzLmdsaXNwYS5jb20vIl0=') ], adGuardTrackingProtection: [ '#qoo-counter', c('YVtocmVmXj0iaHR0cDovL2NsaWNrLmhvdGxvZy5ydS8iXQ=='), c( 'YVtocmVmXj0iaHR0cDovL2hpdGNvdW50ZXIucnUvdG9wL3N0YXQucGhwIl0=' ), c('YVtocmVmXj0iaHR0cDovL3RvcC5tYWlsLnJ1L2p1bXAiXQ=='), '#top100counter' ], adGuardTurkish: [ '#backkapat', c('I3Jla2xhbWk='), c('YVtocmVmXj0iaHR0cDovL2Fkc2Vydi5vbnRlay5jb20udHIvIl0='), c('YVtocmVmXj0iaHR0cDovL2l6bGVuemkuY29tL2NhbXBhaWduLyJd'), c('YVtocmVmXj0iaHR0cDovL3d3dy5pbnN0YWxsYWRzLm5ldC8iXQ==') ], bulgarian: [ c('dGQjZnJlZW5ldF90YWJsZV9hZHM='), '#ea_intext_div', '.lapni-pop-over', '#xenium_hot_offers', c('I25ld0Fk') ], easyList: [ c('I0FEX0NPTlRST0xfMjg='), c('LnNlY29uZC1wb3N0LWFkcy13cmFwcGVy'), '.universalboxADVBOX03', c('LmFkdmVydGlzZW1lbnQtNzI4eDkw'), c('LnNxdWFyZV9hZHM=') ], easyListChina: [ c('YVtocmVmKj0iLndlbnNpeHVldGFuZy5jb20vIl0='), c('LmFwcGd1aWRlLXdyYXBbb25jbGljayo9ImJjZWJvcy5jb20iXQ=='), c('LmZyb250cGFnZUFkdk0='), '#taotaole', '#aafoot.top_box' ], easyListCookie: [ '#AdaCompliance.app-notice', '.text-center.rgpd', '.panel--cookie', '.js-cookies-andromeda', '.elxtr-consent' ], easyListCzechSlovak: [ '#onlajny-stickers', c('I3Jla2xhbW5pLWJveA=='), c('LnJla2xhbWEtbWVnYWJvYXJk'), '.sklik', c('W2lkXj0ic2tsaWtSZWtsYW1hIl0=') ], easyListDutch: [ c('I2FkdmVydGVudGll'), c('I3ZpcEFkbWFya3RCYW5uZXJCbG9jaw=='), '.adstekst', c('YVtocmVmXj0iaHR0cHM6Ly94bHR1YmUubmwvY2xpY2svIl0='), '#semilo-lrectangle' ], easyListGermany: [ c('I0FkX1dpbjJkYXk='), c('I3dlcmJ1bmdzYm94MzAw'), c( 'YVtocmVmXj0iaHR0cDovL3d3dy5yb3RsaWNodGthcnRlaS5jb20vP3NjPSJd' ), c('I3dlcmJ1bmdfd2lkZXNreXNjcmFwZXJfc2NyZWVu'), c( 'YVtocmVmXj0iaHR0cDovL2xhbmRpbmcucGFya3BsYXR6a2FydGVpLmNvbS8/YWc9Il0=' ) ], easyListItaly: [ c('LmJveF9hZHZfYW5udW5jaQ=='), '.sb-box-pubbliredazionale', c( 'YVtocmVmXj0iaHR0cDovL2FmZmlsaWF6aW9uaWFkcy5zbmFpLml0LyJd' ), c('YVtocmVmXj0iaHR0cHM6Ly9hZHNlcnZlci5odG1sLml0LyJd'), c( 'YVtocmVmXj0iaHR0cHM6Ly9hZmZpbGlhemlvbmlhZHMuc25haS5pdC8iXQ==' ) ], easyListLithuania: [ c('LnJla2xhbW9zX3RhcnBhcw=='), c('LnJla2xhbW9zX251b3JvZG9z'), c('aW1nW2FsdD0iUmVrbGFtaW5pcyBza3lkZWxpcyJd'), c('aW1nW2FsdD0iRGVkaWt1b3RpLmx0IHNlcnZlcmlhaSJd'), c('aW1nW2FsdD0iSG9zdGluZ2FzIFNlcnZlcmlhaS5sdCJd') ], estonian: [ c('QVtocmVmKj0iaHR0cDovL3BheTRyZXN1bHRzMjQuZXUiXQ==') ], fanboyAnnoyances: [ '#feedback-tab', '#taboola-below-article', '.feedburnerFeedBlock', '.widget-feedburner-counter', '[title="Subscribe to our blog"]' ], fanboyAntiFacebook: ['.util-bar-module-firefly-visible'], fanboyEnhancedTrackers: [ '.open.pushModal', '#issuem-leaky-paywall-articles-zero-remaining-nag', '#sovrn_container', 'div[class$="-hide"][zoompage-fontsize][style="display: block;"]', '.BlockNag__Card' ], fanboySocial: [ '.td-tags-and-social-wrapper-box', '.twitterContainer', '.youtube-social', 'a[title^="Like us on Facebook"]', 'img[alt^="Share on Digg"]' ], frellwitSwedish: [ c( 'YVtocmVmKj0iY2FzaW5vcHJvLnNlIl1bdGFyZ2V0PSJfYmxhbmsiXQ==' ), c('YVtocmVmKj0iZG9rdG9yLXNlLm9uZWxpbmsubWUiXQ=='), 'article.category-samarbete', c('ZGl2LmhvbGlkQWRz'), 'ul.adsmodern' ], greekAdBlock: [ c('QVtocmVmKj0iYWRtYW4ub3RlbmV0LmdyL2NsaWNrPyJd'), c( 'QVtocmVmKj0iaHR0cDovL2F4aWFiYW5uZXJzLmV4b2R1cy5nci8iXQ==' ), c( 'QVtocmVmKj0iaHR0cDovL2ludGVyYWN0aXZlLmZvcnRobmV0LmdyL2NsaWNrPyJd' ), 'DIV.agores300', 'TABLE.advright' ], hungarian: [ '#cemp_doboz', '.optimonk-iframe-container', c('LmFkX19tYWlu'), c('W2NsYXNzKj0iR29vZ2xlQWRzIl0='), '#hirdetesek_box' ], iDontCareAboutCookies: [ '.alert-info[data-block-track*="CookieNotice"]', '.ModuleTemplateCookieIndicator', '.o--cookies--container', '.cookie-msg-info-container', '#cookies-policy-sticky' ], icelandicAbp: [ c( 'QVtocmVmXj0iL2ZyYW1ld29yay9yZXNvdXJjZXMvZm9ybXMvYWRzLmFzcHgiXQ==' ) ], latvian: [ c( 'YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMjBweDsgaGVpZ2h0OiA0MHB4OyBvdmVyZmxvdzogaGlkZGVuOyBwb3NpdGlvbjogcmVsYXRpdmU7Il0=' ), c( 'YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiA4OHB4OyBoZWlnaHQ6IDMxcHg7IG92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsiXQ==' ) ], listKr: [ c('YVtocmVmKj0iLy9hZC5wbGFuYnBsdXMuY28ua3IvIl0='), c('I2xpdmVyZUFkV3JhcHBlcg=='), c('YVtocmVmKj0iLy9hZHYuaW1hZHJlcC5jby5rci8iXQ=='), c('aW5zLmZhc3R2aWV3LWFk'), '.revenue_unit_item.dable' ], listeAr: [ c('LmdlbWluaUxCMUFk'), '.right-and-left-sponsers', c('YVtocmVmKj0iLmFmbGFtLmluZm8iXQ=='), c('YVtocmVmKj0iYm9vcmFxLm9yZyJd'), c('YVtocmVmKj0iZHViaXp6bGUuY29tL2FyLz91dG1fc291cmNlPSJd') ], listeFr: [ c('YVtocmVmXj0iaHR0cDovL3Byb21vLnZhZG9yLmNvbS8iXQ=='), c('I2FkY29udGFpbmVyX3JlY2hlcmNoZQ=='), c('YVtocmVmKj0id2Vib3JhbWEuZnIvZmNnaS1iaW4vIl0='), '.site-pub-interstitiel', 'div[id^="crt-"][data-criteo-id]' ], officialPolish: [ '#ceneo-placeholder-ceneo-12', c('W2hyZWZePSJodHRwczovL2FmZi5zZW5kaHViLnBsLyJd'), c( 'YVtocmVmXj0iaHR0cDovL2Fkdm1hbmFnZXIudGVjaGZ1bi5wbC9yZWRpcmVjdC8iXQ==' ), c( 'YVtocmVmXj0iaHR0cDovL3d3dy50cml6ZXIucGwvP3V0bV9zb3VyY2UiXQ==' ), c('ZGl2I3NrYXBpZWNfYWQ=') ], ro: [ c( 'YVtocmVmXj0iLy9hZmZ0cmsuYWx0ZXgucm8vQ291bnRlci9DbGljayJd' ), 'a[href^="/magazin/"]', c( 'YVtocmVmXj0iaHR0cHM6Ly9ibGFja2ZyaWRheXNhbGVzLnJvL3Ryay9zaG9wLyJd' ), c( 'YVtocmVmXj0iaHR0cHM6Ly9ldmVudC4ycGVyZm9ybWFudC5jb20vZXZlbnRzL2NsaWNrIl0=' ), c('YVtocmVmXj0iaHR0cHM6Ly9sLnByb2ZpdHNoYXJlLnJvLyJd') ], ruAd: [ c('YVtocmVmKj0iLy9mZWJyYXJlLnJ1LyJd'), c('YVtocmVmKj0iLy91dGltZy5ydS8iXQ=='), c('YVtocmVmKj0iOi8vY2hpa2lkaWtpLnJ1Il0='), '#pgeldiz', '.yandex-rtb-block' ], thaiAds: [ 'a[href*=macau-uta-popup]', c('I2Fkcy1nb29nbGUtbWlkZGxlX3JlY3RhbmdsZS1ncm91cA=='), c('LmFkczMwMHM='), '.bumq', '.img-kosana' ], webAnnoyancesUltralist: [ '#mod-social-share-2', '#social-tools', c('LmN0cGwtZnVsbGJhbm5lcg=='), '.zergnet-recommend', '.yt.btn-link.btn-md.btn' ] }), (n = Object.keys(e)), [ 4, B( (i = []).concat.apply( i, n.map(function (n) { return e[n] }) ) ) ]) : [2, void 0] case 1: return ( (o = t.sent()), r && (function (e, n) { for ( var t = 'DOM blockers debug:\n```', r = 0, o = Object.keys(e); r < o.length; r++ ) { const a = o[r] t += '\n'.concat(a, ':') for (let i = 0, c = e[a]; i < c.length; i++) { const u = c[i] t += '\n '.concat(n[u] ? '🚫' : '➡️', ' ').concat(u) } } console.log(''.concat(t, '\n```')) })(e, o), (a = n.filter(function (n) { const t = e[n] return ( g( t.map(function (e) { return o[e] }) ) > 0.6 * t.length ) })).sort(), [2, a] ) } let c }) }) }, fontPreferences: function () { return (function (e, n) { void 0 === n && (n = 4e3) return M(function (t, o) { const a = o.document, i = a.body, c = i.style ;(c.width = ''.concat(n, 'px')), (c.webkitTextSizeAdjust = c.textSizeAdjust = 'none'), X() ? (i.style.zoom = ''.concat(1 / o.devicePixelRatio)) : x() && (i.style.zoom = 'reset') const u = a.createElement('div') return ( (u.textContent = r([], Array((n / 20) << 0), !0) .map(function () { return 'word' }) .join(' ')), i.appendChild(u), e(a, i) ) }) // 不能添加这个 head,否则会在延迟手动加载中报错 // }, '<!doctype html><html><head><meta name="viewport" content="width=device-width, initial-scale=1">') })(function (e, n) { for (var t = {}, r = {}, o = 0, a = Object.keys(ee); o < a.length; o++) { var i = a[o], c = ee[i], u = c[0], l = void 0 === u ? {} : u, s = c[1], d = void 0 === s ? 'mmMwWLliI0fiflO&1' : s, m = e.createElement('span') ;(m.textContent = d), (m.style.whiteSpace = 'nowrap') for (let f = 0, v = Object.keys(l); f < v.length; f++) { const h = v[f], b = l[h] void 0 !== b && (m.style[h] = b) } ;(t[i] = m), n.appendChild(e.createElement('br')), n.appendChild(m) } for (let p = 0, y = Object.keys(ee); p < y.length; p++) { r[(i = y[p])] = t[i].getBoundingClientRect().width } return r }) }, audio: function () { const e = window, n = e.OfflineAudioContext || e.webkitOfflineAudioContext if (!n) return -2 if ( x() && !F() && !(function () { const e = window return ( g([ 'DOMRectList' in e, 'RTCPeerConnectionIceEvent' in e, 'SVGGeometryElement' in e, 'ontransitioncancel' in e ]) >= 3 ) })() ) return -1 const t = new n(1, 5e3, 44100), r = t.createOscillator() ;(r.type = 'triangle'), (r.frequency.value = 1e4) const o = t.createDynamicsCompressor() ;(o.threshold.value = -50), (o.knee.value = 40), (o.ratio.value = 12), (o.attack.value = 0), (o.release.value = 0.25), r.connect(o), o.connect(t.destination), r.start(0) const i = (function (e) { let n = 3, t = 500, r = 500, o = 5e3, i = function () {} return [ new Promise(function (c, l) { let s = !1, d = 0, m = 0 e.oncomplete = function (e) { return c(e.renderedBuffer) } const f = function () { setTimeout(function () { return l(G('timeout')) }, Math.min(r, m + o - Date.now())) }, v = function () { try { const r = e.startRendering() switch ((a(r) && u(r), e.state)) { case 'running': ;(m = Date.now()), s && f() break case 'suspended': document.hidden || d++, s && d >= n ? l(G('suspended')) : setTimeout(v, t) } } catch (o) { l(o) } } v(), (i = function () { s || ((s = !0), m > 0 && f()) }) }), i ] })(t), c = i[0], l = i[1], s = c.then( function (e) { return (function (e) { for (var n = 0, t = 0; t < e.length; ++t) n += Math.abs(e[t]) return n })(e.getChannelData(0).subarray(4500)) }, function (e) { if ('timeout' === e.name || 'suspended' === e.name) return -3 throw e } ) return ( u(s), function () { return l(), s } ) }, screenFrame: function () { const e = this, r = z() return function () { return n(e, void 0, void 0, function () { let e, n return t(this, function (t) { switch (t.label) { case 0: return [4, r()] case 1: return ( (e = t.sent()), [ 2, [ (n = function (e) { return null === e ? null : w(e, 10) })(e[0]), n(e[1]), n(e[2]), n(e[3]) ] ] ) } }) }) } }, osCpu: function () { return navigator.oscpu }, languages: function () { let e, n = navigator, t = [], r = n.language || n.userLanguage || n.browserLanguage || n.systemLanguage if ((void 0 !== r && t.push([r]), Array.isArray(n.languages))) (X() && g([ !('MediaSettingsRange' in (e = window)), 'RTCEncodedAudioFrame' in e, '' + e.Intl == '[object Intl]', '' + e.Reflect == '[object Reflect]' ]) >= 3) || t.push(n.languages) else if ('string' == typeof n.languages) { const o = n.languages o && t.push(o.split(',')) } retu