diff --git a/dist/main.cjs b/dist/main.cjs index 0ccb2b80..50837070 100644 --- a/dist/main.cjs +++ b/dist/main.cjs @@ -1,7 +1,5 @@ 'use strict'; -Object.defineProperty(exports, '__esModule', { value: true }); - var tldts = require('tldts'); var punycode = require('punycode'); var jose = require('jose'); @@ -12,10 +10,7 @@ var base64 = require('@hexagon/base64'); var platformCrypto = require('crypto'); var peculiarCrypto = require('@peculiar/webcrypto'); -function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } - -function _interopNamespace(e) { - if (e && e.__esModule) return e; +function _interopNamespaceDefault(e) { var n = Object.create(null); if (e) { Object.keys(e).forEach(function (k) { @@ -28,15 +23,13 @@ function _interopNamespace(e) { } }); } - n["default"] = e; + n.default = e; return Object.freeze(n); } -var punycode__default = /*#__PURE__*/_interopDefaultLegacy(punycode); -var cborX__namespace = /*#__PURE__*/_interopNamespace(cborX); -var base64__default = /*#__PURE__*/_interopDefaultLegacy(base64); -var platformCrypto__namespace = /*#__PURE__*/_interopNamespace(platformCrypto); -var peculiarCrypto__namespace = /*#__PURE__*/_interopNamespace(peculiarCrypto); +var cborX__namespace = /*#__PURE__*/_interopNamespaceDefault(cborX); +var platformCrypto__namespace = /*#__PURE__*/_interopNamespaceDefault(platformCrypto); +var peculiarCrypto__namespace = /*#__PURE__*/_interopNamespaceDefault(peculiarCrypto); class Certificate { constructor(cert) { @@ -1436,7 +1429,7 @@ function validEtldPlusOne(value) { function validDomainName(value) { // Before we can validate we need to take care of IDNs with unicode chars. - const ascii = punycode__default["default"].toASCII(value); + const ascii = punycode.toASCII(value); if (ascii.length < 1) { // return 'DOMAIN_TOO_SHORT'; @@ -1601,7 +1594,7 @@ async function getEmbeddedJwk(jwsHeader, alg) { var toolbox = /*#__PURE__*/Object.freeze({ __proto__: null, - base64: base64__default["default"], + base64: base64, cbor: cborX__namespace, checkDomainOrUrl: checkDomainOrUrl, checkOrigin: checkOrigin, @@ -1711,7 +1704,7 @@ function coerceToArrayBuffer$1(buf, name) { // base64 to base64url buf = buf.replace(/\+/g, "-").replace(/\//g, "_").replace("=", ""); // base64 to Buffer - buf = base64__default["default"].toArrayBuffer(buf, true); + buf = base64.toArrayBuffer(buf, true); } // Extract typed array from Array @@ -1745,7 +1738,7 @@ function coerceToBase64(thing, name) { if (typeof thing !== "string") { try { - thing = base64__default["default"].fromArrayBuffer( + thing = base64.fromArrayBuffer( coerceToArrayBuffer$1(thing, name), ); } catch (_err) { @@ -1777,7 +1770,7 @@ function coerceToBase64Url(thing, name) { if (typeof thing !== "string") { try { - thing = base64__default["default"].fromArrayBuffer( + thing = base64.fromArrayBuffer( coerceToArrayBuffer$1(thing, name), true, ); @@ -1826,7 +1819,7 @@ function b64ToJsObject(b64, desc) { } function jsObjectToB64(obj) { - return base64__default["default"].fromString( + return base64.fromString( JSON.stringify(obj).replace(/[\u{0080}-\u{FFFF}]/gu, ""), ); } @@ -1855,13 +1848,13 @@ function pemToBase64(pem) { var utils = /*#__PURE__*/Object.freeze({ __proto__: null, - arrayBufferEquals: arrayBufferEquals, + ab2str: ab2str, abToBuf: abToBuf$1, abToHex: abToHex, abToInt: abToInt, abToPem: abToPem, - ab2str: ab2str, appendBuffer: appendBuffer$1, + arrayBufferEquals: arrayBufferEquals, b64ToJsObject: b64ToJsObject, coerceToArrayBuffer: coerceToArrayBuffer$1, coerceToBase64: coerceToBase64, @@ -3686,7 +3679,7 @@ class MdsCollection { return this.entryList.get(id.replace(/-/g, "")) || this.entryList.get( - abToHex(base64__default["default"].toArrayBuffer(id, true)).replace(/-/g, ""), + abToHex(base64.toArrayBuffer(id, true)).replace(/-/g, ""), ) || null; } } @@ -4274,7 +4267,7 @@ async function androidSafetyNetValidateFn() { // create hash of the concatenation const hash = await hashDigest(concatenated); - const nonce = base64__default["default"].fromArrayBuffer(hash); + const nonce = base64.fromArrayBuffer(hash); // check result if(nonce!==parsedJws.payload.nonce){ diff --git a/dist/main.js b/dist/main.js index 90ef6df0..4e0d20fb 100644 --- a/dist/main.js +++ b/dist/main.js @@ -2,12037 +2,11593 @@ // deno-lint-ignore-file // This code was bundled using `deno bundle` and it's not recommended to edit it manually -function a(a1, o1) { - let i11 = 0, e1 = a1.length, s2 = !1; - if (!1 === o1) { - if (!0 === a1.startsWith("data:")) return null; - for(; i11 < a1.length && a1.charCodeAt(i11) <= 32;)i11 += 1; - for(; e1 > i11 + 1 && a1.charCodeAt(e1 - 1) <= 32;)e1 -= 1; - if (47 === a1.charCodeAt(i11) && 47 === a1.charCodeAt(i11 + 1)) i11 += 2; +function a(a, o) { + let i = 0, e = a.length, n = !1; + if (!o) { + if (a.startsWith("data:")) return null; + for(; i < a.length && a.charCodeAt(i) <= 32;)i += 1; + for(; e > i + 1 && a.charCodeAt(e - 1) <= 32;)e -= 1; + if (47 === a.charCodeAt(i) && 47 === a.charCodeAt(i + 1)) i += 2; else { - const o2 = a1.indexOf(":/", i11); - if (-1 !== o2) { - const e3 = o2 - i11, s1 = a1.charCodeAt(i11), n1 = a1.charCodeAt(i11 + 1), r1 = a1.charCodeAt(i11 + 2), t1 = a1.charCodeAt(i11 + 3), c1 = a1.charCodeAt(i11 + 4); - if (5 === e3 && 104 === s1 && 116 === n1 && 116 === r1 && 112 === t1 && 115 === c1) ; - else if (4 === e3 && 104 === s1 && 116 === n1 && 116 === r1 && 112 === t1) ; - else if (3 === e3 && 119 === s1 && 115 === n1 && 115 === r1) ; - else if (2 === e3 && 119 === s1 && 115 === n1) ; - else for(let e2 = i11; e2 < o2; e2 += 1){ - const o3 = 32 | a1.charCodeAt(e2); - if (!1 == (o3 >= 97 && o3 <= 122 || o3 >= 48 && o3 <= 57 || 46 === o3 || 45 === o3 || 43 === o3)) return null; - } - for(i11 = o2 + 2; 47 === a1.charCodeAt(i11);)i11 += 1; - } - } - let o4 = -1, n2 = -1, r2 = -1; - for(let t2 = i11; t2 < e1; t2 += 1){ - const i2 = a1.charCodeAt(t2); - if (35 === i2 || 47 === i2 || 63 === i2) { - e1 = t2; + const o = a.indexOf(":/", i); + if (-1 !== o) { + const e = o - i, n = a.charCodeAt(i), s = a.charCodeAt(i + 1), r = a.charCodeAt(i + 2), t = a.charCodeAt(i + 3), l = a.charCodeAt(i + 4); + if (5 === e && 104 === n && 116 === s && 116 === r && 112 === t && 115 === l) ; + else if (4 === e && 104 === n && 116 === s && 116 === r && 112 === t) ; + else if (3 === e && 119 === n && 115 === s && 115 === r) ; + else if (2 === e && 119 === n && 115 === s) ; + else for(let e = i; e < o; e += 1){ + const o = 32 | a.charCodeAt(e); + if (!(o >= 97 && o <= 122 || o >= 48 && o <= 57 || 46 === o || 45 === o || 43 === o)) return null; + } + for(i = o + 2; 47 === a.charCodeAt(i);)i += 1; + } + } + let o = -1, s = -1, r = -1; + for(let t = i; t < e; t += 1){ + const i = a.charCodeAt(t); + if (35 === i || 47 === i || 63 === i) { + e = t; break; } - 64 === i2 ? o4 = t2 : 93 === i2 ? n2 = t2 : 58 === i2 ? r2 = t2 : i2 >= 65 && i2 <= 90 && (s2 = !0); - } - if (-1 !== o4 && o4 > i11 && o4 < e1 && (i11 = o4 + 1), 91 === a1.charCodeAt(i11)) return -1 !== n2 ? a1.slice(i11 + 1, n2).toLowerCase() : null; - -1 !== r2 && r2 > i11 && r2 < e1 && (e1 = r2); - } - for(; e1 > i11 + 1 && 46 === a1.charCodeAt(e1 - 1);)e1 -= 1; - const n3 = 0 !== i11 || e1 !== a1.length ? a1.slice(i11, e1) : a1; - return s2 ? n3.toLowerCase() : n3; -} -function o(a2) { - if (a2.length > 255) return !1; - if (0 === a2.length) return !1; - if (!1 == ((o6 = a2.charCodeAt(0)) >= 97 && o6 <= 122 || o6 >= 48 && o6 <= 57 || o6 > 127)) return !1; - var o6; - let i3 = -1, e4 = -1; - const s3 = a2.length; - for(let o5 = 0; o5 < s3; o5 += 1){ - const s4 = a2.charCodeAt(o5); - if (46 === s4) { - if (o5 - i3 > 64 || 46 === e4 || 45 === e4 || 95 === e4) return !1; - i3 = o5; - } else if (!1 === ((function(a3) { - return a3 >= 97 && a3 <= 122 || a3 >= 48 && a3 <= 57 || a3 > 127; - })(s4) || 45 === s4 || 95 === s4)) return !1; - e4 = s4; - } - return s3 - i3 - 1 <= 63 && 45 !== e4; -} -const i = function({ allowIcannDomains: a4 = !0 , allowPrivateDomains: o7 = !1 , detectIp: i4 = !0 , extractHostname: e5 = !0 , mixedInputs: s5 = !0 , validHosts: n4 = null , validateHostname: r3 = !0 }) { + 64 === i ? o = t : 93 === i ? s = t : 58 === i ? r = t : i >= 65 && i <= 90 && (n = !0); + } + if (-1 !== o && o > i && o < e && (i = o + 1), 91 === a.charCodeAt(i)) return -1 !== s ? a.slice(i + 1, s).toLowerCase() : null; + -1 !== r && r > i && r < e && (e = r); + } + for(; e > i + 1 && 46 === a.charCodeAt(e - 1);)e -= 1; + const s = 0 !== i || e !== a.length ? a.slice(i, e) : a; + return n ? s.toLowerCase() : s; +} +function o(a) { + return a >= 97 && a <= 122 || a >= 48 && a <= 57 || a > 127; +} +function i(a) { + if (a.length > 255) return !1; + if (0 === a.length) return !1; + if (!o(a.charCodeAt(0)) && 46 !== a.charCodeAt(0) && 95 !== a.charCodeAt(0)) return !1; + let i = -1, e = -1; + const n = a.length; + for(let s = 0; s < n; s += 1){ + const n = a.charCodeAt(s); + if (46 === n) { + if (s - i > 64 || 46 === e || 45 === e || 95 === e) return !1; + i = s; + } else if (!o(n) && 45 !== n && 95 !== n) return !1; + e = n; + } + return n - i - 1 <= 63 && 45 !== e; +} +const e = function({ allowIcannDomains: a = !0 , allowPrivateDomains: o = !1 , detectIp: i = !0 , extractHostname: e = !0 , mixedInputs: n = !0 , validHosts: s = null , validateHostname: r = !0 }) { return { - allowIcannDomains: a4, - allowPrivateDomains: o7, - detectIp: i4, - extractHostname: e5, - mixedInputs: s5, - validHosts: n4, - validateHostname: r3 + allowIcannDomains: a, + allowPrivateDomains: o, + detectIp: i, + extractHostname: e, + mixedInputs: n, + validHosts: s, + validateHostname: r }; }({}); -function e(e6, s6, n5, r4, t3) { - const c2 = function(a5) { - return void 0 === a5 ? i : (function({ allowIcannDomains: a6 = !0 , allowPrivateDomains: o8 = !1 , detectIp: i5 = !0 , extractHostname: e7 = !0 , mixedInputs: s7 = !0 , validHosts: n6 = null , validateHostname: r5 = !0 }) { +function n(o, n, s, r, t) { + const l = function(a) { + return void 0 === a ? e : function({ allowIcannDomains: a = !0 , allowPrivateDomains: o = !1 , detectIp: i = !0 , extractHostname: e = !0 , mixedInputs: n = !0 , validHosts: s = null , validateHostname: r = !0 }) { return { - allowIcannDomains: a6, - allowPrivateDomains: o8, - detectIp: i5, - extractHostname: e7, - mixedInputs: s7, - validHosts: n6, - validateHostname: r5 + allowIcannDomains: a, + allowPrivateDomains: o, + detectIp: i, + extractHostname: e, + mixedInputs: n, + validHosts: s, + validateHostname: r }; - })(a5); - }(r4); - return "string" != typeof e6 ? t3 : (!1 === c2.extractHostname ? t3.hostname = e6 : !0 === c2.mixedInputs ? t3.hostname = a(e6, o(e6)) : t3.hostname = a(e6, !1), 0 === s6 || null === t3.hostname || !0 === c2.detectIp && (t3.isIp = (function(a7) { - if (a7.length < 3) return !1; - let o9 = "[" === a7[0] ? 1 : 0, i6 = a7.length; - if ("]" === a7[i6 - 1] && (i6 -= 1), i6 - o9 > 39) return !1; - let e8 = !1; - for(; o9 < i6; o9 += 1){ - const i7 = a7.charCodeAt(o9); - if (58 === i7) e8 = !0; - else if (0 == (i7 >= 48 && i7 <= 57 || i7 >= 97 && i7 <= 102 || i7 >= 65 && i7 <= 90)) return !1; - } - return e8; - })(u1 = t3.hostname) || (function(a8) { - if (a8.length < 7) return !1; - if (a8.length > 15) return !1; - let o10 = 0; - for(let i8 = 0; i8 < a8.length; i8 += 1){ - const e9 = a8.charCodeAt(i8); - if (46 === e9) o10 += 1; - else if (e9 < 48 || e9 > 57) return !1; - } - return 3 === o10 && 46 !== a8.charCodeAt(0) && 46 !== a8.charCodeAt(a8.length - 1); - })(u1), !0 === t3.isIp) ? t3 : !0 === c2.validateHostname && !0 === c2.extractHostname && !1 === o(t3.hostname) ? (t3.hostname = null, t3) : (n5(t3.hostname, c2, t3), 2 === s6 || null === t3.publicSuffix ? t3 : (t3.domain = (function(a10, o11, i9) { - if (null !== i9.validHosts) { - const a9 = i9.validHosts; - for(let i10 = 0; i10 < a9.length; i10 += 1){ - const e10 = a9[i10]; - if (!0 === (function(a11, o12) { - return !!a11.endsWith(o12) && (a11.length === o12.length || "." === a11[a11.length - o12.length - 1]); - })(o11, e10)) return e10; - } - } - return a10.length === o11.length ? null : (function(a12, o13) { - const i11 = a12.length - o13.length - 2, e11 = a12.lastIndexOf(".", i11); - return -1 === e11 ? a12 : a12.slice(e11 + 1); - })(o11, a10); - })(t3.publicSuffix, t3.hostname, c2), 3 === s6 || null === t3.domain ? t3 : (t3.subdomain = (function(a13, o14) { - return o14.length === a13.length ? "" : a13.slice(0, -o14.length - 1); - })(t3.hostname, t3.domain), 4 === s6 || (t3.domainWithoutSuffix = (l1 = t3.domain, m1 = t3.publicSuffix, l1.slice(0, -m1.length - 1))), t3)))); - var u1, l1, m1; + }(a); + }(r); + return "string" != typeof o ? t : (l.extractHostname ? l.mixedInputs ? t.hostname = a(o, i(o)) : t.hostname = a(o, !1) : t.hostname = o, 0 === n || null === t.hostname || l.detectIp && (t.isIp = function(a) { + if (a.length < 3) return !1; + let o = a.startsWith("[") ? 1 : 0, i = a.length; + if ("]" === a[i - 1] && (i -= 1), i - o > 39) return !1; + let e = !1; + for(; o < i; o += 1){ + const i = a.charCodeAt(o); + if (58 === i) e = !0; + else if (!(i >= 48 && i <= 57 || i >= 97 && i <= 102 || i >= 65 && i <= 90)) return !1; + } + return e; + }(m = t.hostname) || function(a) { + if (a.length < 7) return !1; + if (a.length > 15) return !1; + let o = 0; + for(let i = 0; i < a.length; i += 1){ + const e = a.charCodeAt(i); + if (46 === e) o += 1; + else if (e < 48 || e > 57) return !1; + } + return 3 === o && 46 !== a.charCodeAt(0) && 46 !== a.charCodeAt(a.length - 1); + }(m), t.isIp) ? t : l.validateHostname && l.extractHostname && !i(t.hostname) ? (t.hostname = null, t) : (s(t.hostname, l, t), 2 === n || null === t.publicSuffix ? t : (t.domain = function(a, o, i) { + if (null !== i.validHosts) { + const a = i.validHosts; + for (const i of a)if (function(a, o) { + return !!a.endsWith(o) && (a.length === o.length || "." === a[a.length - o.length - 1]); + }(o, i)) return i; + } + let e = 0; + if (o.startsWith(".")) for(; e < o.length && "." === o[e];)e += 1; + return a.length === o.length - e ? null : function(a, o) { + const i = a.length - o.length - 2, e = a.lastIndexOf(".", i); + return -1 === e ? a : a.slice(e + 1); + }(o, a); + }(t.publicSuffix, t.hostname, l), 3 === n || null === t.domain ? t : (t.subdomain = function(a, o) { + return o.length === a.length ? "" : a.slice(0, -o.length - 1); + }(t.hostname, t.domain), 4 === n || (t.domainWithoutSuffix = (u = t.domain, c = t.publicSuffix, u.slice(0, -c.length - 1))), t)))); + var m, u, c; } const s = function() { - const a14 = { - $: 1, - succ: {} - }, o15 = { - $: 0, - succ: { - city: a14 + const a = [ + 1, + {} + ], o = [ + 0, + { + city: a } - }; - return { - $: 0, - succ: { - ck: { - $: 0, - succ: { - www: a14 + ]; + return [ + 0, + { + ck: [ + 0, + { + www: a } - }, - jp: { - $: 0, - succ: { - kawasaki: o15, - kitakyushu: o15, - kobe: o15, - nagoya: o15, - sapporo: o15, - sendai: o15, - yokohama: o15 + ], + jp: [ + 0, + { + kawasaki: o, + kitakyushu: o, + kobe: o, + nagoya: o, + sapporo: o, + sendai: o, + yokohama: o } - } + ] } - }; -}(), n = function() { - const a15 = { - $: 1, - succ: {} - }, o16 = { - $: 2, - succ: {} - }, i12 = { - $: 1, - succ: { - gov: a15, - com: a15, - org: a15, - net: a15, - edu: a15 - } - }, e12 = { - $: 0, - succ: { - "*": o16 - } - }, s8 = { - $: 1, - succ: { - blogspot: o16 - } - }, n7 = { - $: 1, - succ: { - gov: a15 - } - }, r6 = { - $: 0, - succ: { - "*": a15 - } - }, t4 = { - $: 0, - succ: { - cloud: o16 - } - }, c3 = { - $: 1, - succ: { - co: o16 - } - }, u2 = { - $: 2, - succ: { - nodes: o16 - } - }, l2 = { - $: 0, - succ: { - s3: o16 - } - }, m2 = { - $: 0, - succ: { - direct: o16 - } - }, d1 = { - $: 0, - succ: { - vfs: o16, - "webview-assets": o16 - } - }, g1 = { - $: 0, - succ: { - cloud9: d1 - } - }, h1 = { - $: 0, - succ: { - dualstack: l2, - cloud9: d1 - } - }, k = { - $: 0, - succ: { - s3: o16, - dualstack: l2, - "s3-website": o16, - cloud9: d1 - } - }, b = { - $: 0, - succ: { - apps: o16 - } - }, p = { - $: 0, - succ: { - paas: o16 - } - }, y = { - $: 0, - succ: { - app: o16 - } - }, f = { - $: 2, - succ: { - eu: o16 - } - }, v = { - $: 0, - succ: { - site: o16 - } - }, x = { - $: 0, - succ: { - pages: o16 - } - }, w = { - $: 1, - succ: { - com: a15, - edu: a15, - net: a15, - org: a15 - } - }, $ = { - $: 0, - succ: { - j: o16 - } - }, z = { - $: 0, - succ: { - jelastic: o16 - } - }, j = { - $: 0, - succ: { - user: o16 - } - }, q = { - $: 1, - succ: { - ybo: o16 - } - }, I = { - $: 0, - succ: { - cust: o16, - reservd: o16 - } - }, S = { - $: 0, - succ: { - cust: o16 - } - }, C = { - $: 1, - succ: { - gov: a15, - edu: a15, - mil: a15, - com: a15, - org: a15, - net: a15 - } - }, P = { - $: 1, - succ: { - edu: a15, - biz: a15, - net: a15, - org: a15, - gov: a15, - info: a15, - com: a15 - } - }, A = { - $: 1, - succ: { - gov: a15, - blogspot: o16 - } - }, H = { - $: 1, - succ: { - framer: o16 - } - }, D = { - $: 1, - succ: { - barsy: o16 - } - }, W = { - $: 0, - succ: { - forgot: o16 - } - }, L = { - $: 1, - succ: { - gs: a15 - } - }, O = { - $: 0, - succ: { - nes: a15 - } - }, B = { - $: 1, - succ: { - k12: a15, - cc: a15, - lib: a15 - } - }, E = { - $: 1, - succ: { - cc: a15, - lib: a15 + ]; +}(), r = function() { + const a = [ + 1, + {} + ], o = [ + 2, + {} + ], i = [ + 1, + { + gov: a, + com: a, + org: a, + net: a, + edu: a } - }; - return { - $: 0, - succ: { - ac: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - net: a15, - mil: a15, - org: a15, - drr: o16 + ], e = [ + 0, + { + "*": o + } + ], n = [ + 1, + { + blogspot: o + } + ], s = [ + 1, + { + gov: a + } + ], r = [ + 0, + { + "*": a + } + ], t = [ + 0, + { + cloud: o + } + ], l = [ + 1, + { + co: o + } + ], m = [ + 2, + { + nodes: o + } + ], u = [ + 0, + { + s3: o + } + ], c = [ + 0, + { + direct: o + } + ], d = [ + 2, + { + id: o + } + ], g = [ + 0, + { + vfs: o, + "webview-assets": o + } + ], k = [ + 0, + { + cloud9: g + } + ], h = [ + 0, + { + dualstack: u, + cloud9: g + } + ], b = [ + 0, + { + dualstack: u, + s3: o, + "s3-website": o, + cloud9: g + } + ], p = [ + 0, + { + apps: o + } + ], y = [ + 0, + { + paas: o + } + ], f = [ + 0, + { + app: o + } + ], v = [ + 2, + { + eu: o + } + ], x = [ + 0, + { + site: o + } + ], w = [ + 0, + { + pages: o + } + ], z = [ + 1, + { + com: a, + edu: a, + net: a, + org: a + } + ], j = [ + 0, + { + j: o + } + ], q = [ + 0, + { + jelastic: o + } + ], I = [ + 0, + { + user: o + } + ], S = [ + 1, + { + ybo: o + } + ], C = [ + 0, + { + cust: o, + reservd: o + } + ], A = [ + 0, + { + cust: o + } + ], P = [ + 1, + { + gov: a, + edu: a, + mil: a, + com: a, + org: a, + net: a + } + ], H = [ + 1, + { + edu: a, + biz: a, + net: a, + org: a, + gov: a, + info: a, + com: a + } + ], W = [ + 1, + { + gov: a, + blogspot: o + } + ], D = [ + 1, + { + framer: o + } + ], L = [ + 1, + { + barsy: o + } + ], O = [ + 0, + { + forgot: o + } + ], B = [ + 1, + { + gs: a + } + ], E = [ + 0, + { + nes: a + } + ], F = [ + 1, + { + k12: a, + cc: a, + lib: a + } + ], G = [ + 1, + { + cc: a, + lib: a + } + ]; + return [ + 0, + { + ac: [ + 1, + { + com: a, + edu: a, + gov: a, + net: a, + mil: a, + org: a, + drr: o } - }, - ad: { - $: 1, - succ: { - nom: a15 + ], + ad: [ + 1, + { + nom: a } - }, - ae: { - $: 1, - succ: { - co: a15, - net: a15, - org: a15, - sch: a15, - ac: a15, - gov: a15, - mil: a15, - blogspot: o16 + ], + ae: [ + 1, + { + co: a, + net: a, + org: a, + sch: a, + ac: a, + gov: a, + mil: a, + blogspot: o } - }, - aero: { - $: 1, - succ: { - "accident-investigation": a15, - "accident-prevention": a15, - aerobatic: a15, - aeroclub: a15, - aerodrome: a15, - agents: a15, - aircraft: a15, - airline: a15, - airport: a15, - "air-surveillance": a15, - airtraffic: a15, - "air-traffic-control": a15, - ambulance: a15, - amusement: a15, - association: a15, - author: a15, - ballooning: a15, - broker: a15, - caa: a15, - cargo: a15, - catering: a15, - certification: a15, - championship: a15, - charter: a15, - civilaviation: a15, - club: a15, - conference: a15, - consultant: a15, - consulting: a15, - control: a15, - council: a15, - crew: a15, - design: a15, - dgca: a15, - educator: a15, - emergency: a15, - engine: a15, - engineer: a15, - entertainment: a15, - equipment: a15, - exchange: a15, - express: a15, - federation: a15, - flight: a15, - fuel: a15, - gliding: a15, - government: a15, - groundhandling: a15, - group: a15, - hanggliding: a15, - homebuilt: a15, - insurance: a15, - journal: a15, - journalist: a15, - leasing: a15, - logistics: a15, - magazine: a15, - maintenance: a15, - media: a15, - microlight: a15, - modelling: a15, - navigation: a15, - parachuting: a15, - paragliding: a15, - "passenger-association": a15, - pilot: a15, - press: a15, - production: a15, - recreation: a15, - repbody: a15, - res: a15, - research: a15, - rotorcraft: a15, - safety: a15, - scientist: a15, - services: a15, - show: a15, - skydiving: a15, - software: a15, - student: a15, - trader: a15, - trading: a15, - trainer: a15, - union: a15, - workinggroup: a15, - works: a15 + ], + aero: [ + 1, + { + "accident-investigation": a, + "accident-prevention": a, + aerobatic: a, + aeroclub: a, + aerodrome: a, + agents: a, + aircraft: a, + airline: a, + airport: a, + "air-surveillance": a, + airtraffic: a, + "air-traffic-control": a, + ambulance: a, + amusement: a, + association: a, + author: a, + ballooning: a, + broker: a, + caa: a, + cargo: a, + catering: a, + certification: a, + championship: a, + charter: a, + civilaviation: a, + club: a, + conference: a, + consultant: a, + consulting: a, + control: a, + council: a, + crew: a, + design: a, + dgca: a, + educator: a, + emergency: a, + engine: a, + engineer: a, + entertainment: a, + equipment: a, + exchange: a, + express: a, + federation: a, + flight: a, + fuel: a, + gliding: a, + government: a, + groundhandling: a, + group: a, + hanggliding: a, + homebuilt: a, + insurance: a, + journal: a, + journalist: a, + leasing: a, + logistics: a, + magazine: a, + maintenance: a, + media: a, + microlight: a, + modelling: a, + navigation: a, + parachuting: a, + paragliding: a, + "passenger-association": a, + pilot: a, + press: a, + production: a, + recreation: a, + repbody: a, + res: a, + research: a, + rotorcraft: a, + safety: a, + scientist: a, + services: a, + show: a, + skydiving: a, + software: a, + student: a, + trader: a, + trading: a, + trainer: a, + union: a, + workinggroup: a, + works: a } - }, - af: i12, - ag: { - $: 1, - succ: { - com: a15, - org: a15, - net: a15, - co: a15, - nom: a15 + ], + af: i, + ag: [ + 1, + { + com: a, + org: a, + net: a, + co: a, + nom: a } - }, - ai: { - $: 1, - succ: { - off: a15, - com: a15, - net: a15, - org: a15, - uwu: o16 + ], + ai: [ + 1, + { + off: a, + com: a, + net: a, + org: a, + uwu: o } - }, - al: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - mil: a15, - net: a15, - org: a15, - blogspot: o16 + ], + al: [ + 1, + { + com: a, + edu: a, + gov: a, + mil: a, + net: a, + org: a, + blogspot: o } - }, - am: { - $: 1, - succ: { - co: a15, - com: a15, - commune: a15, - net: a15, - org: a15, - radio: o16, - blogspot: o16, - neko: o16, - nyaa: o16 + ], + am: [ + 1, + { + co: a, + com: a, + commune: a, + net: a, + org: a, + radio: o, + blogspot: o, + neko: o, + nyaa: o } - }, - ao: { - $: 1, - succ: { - ed: a15, - gv: a15, - og: a15, - co: a15, - pb: a15, - it: a15 + ], + ao: [ + 1, + { + ed: a, + gv: a, + og: a, + co: a, + pb: a, + it: a } - }, - aq: a15, - ar: { - $: 1, - succ: { - bet: a15, - com: s8, - coop: a15, - edu: a15, - gob: a15, - gov: a15, - int: a15, - mil: a15, - musica: a15, - mutual: a15, - net: a15, - org: a15, - senasa: a15, - tur: a15 + ], + aq: a, + ar: [ + 1, + { + bet: a, + com: n, + coop: a, + edu: a, + gob: a, + gov: a, + int: a, + mil: a, + musica: a, + mutual: a, + net: a, + org: a, + senasa: a, + tur: a } - }, - arpa: { - $: 1, - succ: { - e164: a15, - "in-addr": a15, - ip6: a15, - iris: a15, - uri: a15, - urn: a15 + ], + arpa: [ + 1, + { + e164: a, + "in-addr": a, + ip6: a, + iris: a, + uri: a, + urn: a } - }, - as: n7, - asia: { - $: 1, - succ: { - cloudns: o16 + ], + as: s, + asia: [ + 1, + { + cloudns: o } - }, - at: { - $: 1, - succ: { - ac: { - $: 1, - succ: { - sth: a15 + ], + at: [ + 1, + { + ac: [ + 1, + { + sth: a } - }, - co: s8, - gv: a15, - or: a15, - funkfeuer: { - $: 0, - succ: { - wien: o16 + ], + co: n, + gv: a, + or: a, + funkfeuer: [ + 0, + { + wien: o } - }, - futurecms: { - $: 0, - succ: { - "*": o16, - ex: e12, - in: e12 + ], + futurecms: [ + 0, + { + "*": o, + ex: e, + in: e } - }, - futurehosting: o16, - futuremailing: o16, - ortsinfo: { - $: 0, - succ: { - ex: e12, - kunden: e12 + ], + futurehosting: o, + futuremailing: o, + ortsinfo: [ + 0, + { + ex: e, + kunden: e } - }, - biz: o16, - info: o16, - priv: o16, - myspreadshop: o16, - "12hp": o16, - "2ix": o16, - "4lima": o16, - "lima-city": o16 + ], + biz: o, + info: o, + "123webseite": o, + priv: o, + myspreadshop: o, + "12hp": o, + "2ix": o, + "4lima": o, + "lima-city": o } - }, - au: { - $: 1, - succ: { - com: { - $: 1, - succ: { - blogspot: o16, - cloudlets: { - $: 0, - succ: { - mel: o16 + ], + au: [ + 1, + { + com: [ + 1, + { + blogspot: o, + cloudlets: [ + 0, + { + mel: o } - }, - myspreadshop: o16 + ], + myspreadshop: o } - }, - net: a15, - org: a15, - edu: { - $: 1, - succ: { - act: a15, - catholic: a15, - nsw: { - $: 1, - succ: { - schools: a15 + ], + net: a, + org: a, + edu: [ + 1, + { + act: a, + catholic: a, + nsw: [ + 1, + { + schools: a } - }, - nt: a15, - qld: a15, - sa: a15, - tas: a15, - vic: a15, - wa: a15 + ], + nt: a, + qld: a, + sa: a, + tas: a, + vic: a, + wa: a } - }, - gov: { - $: 1, - succ: { - qld: a15, - sa: a15, - tas: a15, - vic: a15, - wa: a15 + ], + gov: [ + 1, + { + qld: a, + sa: a, + tas: a, + vic: a, + wa: a } - }, - asn: a15, - id: a15, - info: a15, - conf: a15, - oz: a15, - act: a15, - nsw: a15, - nt: a15, - qld: a15, - sa: a15, - tas: a15, - vic: a15, - wa: a15 + ], + asn: a, + id: a, + info: a, + conf: a, + oz: a, + act: a, + nsw: a, + nt: a, + qld: a, + sa: a, + tas: a, + vic: a, + wa: a } - }, - aw: { - $: 1, - succ: { - com: a15 + ], + aw: [ + 1, + { + com: a } - }, - ax: { - $: 1, - succ: { - be: o16, - cat: o16, - es: o16, - eu: o16, - gg: o16, - mc: o16, - us: o16, - xy: o16 + ], + ax: [ + 1, + { + be: o, + cat: o, + es: o, + eu: o, + gg: o, + mc: o, + us: o, + xy: o } - }, - az: { - $: 1, - succ: { - com: a15, - net: a15, - int: a15, - gov: a15, - org: a15, - edu: a15, - info: a15, - pp: a15, - mil: a15, - name: a15, - pro: a15, - biz: a15 + ], + az: [ + 1, + { + com: a, + net: a, + int: a, + gov: a, + org: a, + edu: a, + info: a, + pp: a, + mil: a, + name: a, + pro: a, + biz: a } - }, - ba: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - mil: a15, - net: a15, - org: a15, - rs: o16, - blogspot: o16 + ], + ba: [ + 1, + { + com: a, + edu: a, + gov: a, + mil: a, + net: a, + org: a, + rs: o, + blogspot: o } - }, - bb: { - $: 1, - succ: { - biz: a15, - co: a15, - com: a15, - edu: a15, - gov: a15, - info: a15, - net: a15, - org: a15, - store: a15, - tv: a15 + ], + bb: [ + 1, + { + biz: a, + co: a, + com: a, + edu: a, + gov: a, + info: a, + net: a, + org: a, + store: a, + tv: a } - }, - bd: r6, - be: { - $: 1, - succ: { - ac: a15, - webhosting: o16, - blogspot: o16, - interhostsolutions: t4, - kuleuven: { - $: 0, - succ: { - ezproxy: o16 + ], + bd: r, + be: [ + 1, + { + ac: a, + webhosting: o, + blogspot: o, + interhostsolutions: t, + kuleuven: [ + 0, + { + ezproxy: o } - }, - myspreadshop: o16, - transurl: e12 + ], + "123website": o, + myspreadshop: o, + transurl: e } - }, - bf: n7, - bg: { - $: 1, - succ: { - 0: a15, - 1: a15, - 2: a15, - 3: a15, - 4: a15, - 5: a15, - 6: a15, - 7: a15, - 8: a15, - 9: a15, - a: a15, - b: a15, - c: a15, - d: a15, - e: a15, - f: a15, - g: a15, - h: a15, - i: a15, - j: a15, - k: a15, - l: a15, - m: a15, - n: a15, - o: a15, - p: a15, - q: a15, - r: a15, - s: a15, - t: a15, - u: a15, - v: a15, - w: a15, - x: a15, - y: a15, - z: a15, - blogspot: o16, - barsy: o16 + ], + bf: s, + bg: [ + 1, + { + 0: a, + 1: a, + 2: a, + 3: a, + 4: a, + 5: a, + 6: a, + 7: a, + 8: a, + 9: a, + a: a, + b: a, + c: a, + d: a, + e: a, + f: a, + g: a, + h: a, + i: a, + j: a, + k: a, + l: a, + m: a, + n: a, + o: a, + p: a, + q: a, + r: a, + s: a, + t: a, + u: a, + v: a, + w: a, + x: a, + y: a, + z: a, + blogspot: o, + barsy: o } - }, - bh: i12, - bi: { - $: 1, - succ: { - co: a15, - com: a15, - edu: a15, - or: a15, - org: a15 + ], + bh: i, + bi: [ + 1, + { + co: a, + com: a, + edu: a, + or: a, + org: a } - }, - biz: { - $: 1, - succ: { - cloudns: o16, - jozi: o16, - dyndns: o16, - "for-better": o16, - "for-more": o16, - "for-some": o16, - "for-the": o16, - selfip: o16, - webhop: o16, - orx: o16, - mmafan: o16, - myftp: o16, - "no-ip": o16, - dscloud: o16 + ], + biz: [ + 1, + { + activetrail: o, + cloudns: o, + jozi: o, + dyndns: o, + "for-better": o, + "for-more": o, + "for-some": o, + "for-the": o, + selfip: o, + webhop: o, + orx: o, + mmafan: o, + myftp: o, + "no-ip": o, + dscloud: o } - }, - bj: { - $: 1, - succ: { - asso: a15, - barreau: a15, - gouv: a15, - blogspot: o16 + ], + bj: [ + 1, + { + africa: a, + agro: a, + architectes: a, + assur: a, + avocats: a, + co: a, + com: a, + eco: a, + econo: a, + edu: a, + info: a, + loisirs: a, + money: a, + net: a, + org: a, + ote: a, + resto: a, + restaurant: a, + tourism: a, + univ: a, + blogspot: o } - }, - bm: i12, - bn: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - net: a15, - org: a15, - co: o16 + ], + bm: i, + bn: [ + 1, + { + com: a, + edu: a, + gov: a, + net: a, + org: a, + co: o } - }, - bo: { - $: 1, - succ: { - com: a15, - edu: a15, - gob: a15, - int: a15, - org: a15, - net: a15, - mil: a15, - tv: a15, - web: a15, - academia: a15, - agro: a15, - arte: a15, - blog: a15, - bolivia: a15, - ciencia: a15, - cooperativa: a15, - democracia: a15, - deporte: a15, - ecologia: a15, - economia: a15, - empresa: a15, - indigena: a15, - industria: a15, - info: a15, - medicina: a15, - movimiento: a15, - musica: a15, - natural: a15, - nombre: a15, - noticias: a15, - patria: a15, - politica: a15, - profesional: a15, - plurinacional: a15, - pueblo: a15, - revista: a15, - salud: a15, - tecnologia: a15, - tksat: a15, - transporte: a15, - wiki: a15 + ], + bo: [ + 1, + { + com: a, + edu: a, + gob: a, + int: a, + org: a, + net: a, + mil: a, + tv: a, + web: a, + academia: a, + agro: a, + arte: a, + blog: a, + bolivia: a, + ciencia: a, + cooperativa: a, + democracia: a, + deporte: a, + ecologia: a, + economia: a, + empresa: a, + indigena: a, + industria: a, + info: a, + medicina: a, + movimiento: a, + musica: a, + natural: a, + nombre: a, + noticias: a, + patria: a, + politica: a, + profesional: a, + plurinacional: a, + pueblo: a, + revista: a, + salud: a, + tecnologia: a, + tksat: a, + transporte: a, + wiki: a } - }, - br: { - $: 1, - succ: { - "9guacu": a15, - abc: a15, - adm: a15, - adv: a15, - agr: a15, - aju: a15, - am: a15, - anani: a15, - aparecida: a15, - app: a15, - arq: a15, - art: a15, - ato: a15, - b: a15, - barueri: a15, - belem: a15, - bhz: a15, - bib: a15, - bio: a15, - blog: a15, - bmd: a15, - boavista: a15, - bsb: a15, - campinagrande: a15, - campinas: a15, - caxias: a15, - cim: a15, - cng: a15, - cnt: a15, - com: { - $: 1, - succ: { - blogspot: o16, - virtualcloud: { - $: 0, - succ: { - scale: { - $: 0, - succ: { - users: o16 + ], + br: [ + 1, + { + "9guacu": a, + abc: a, + adm: a, + adv: a, + agr: a, + aju: a, + am: a, + anani: a, + aparecida: a, + app: a, + arq: a, + art: a, + ato: a, + b: a, + barueri: a, + belem: a, + bhz: a, + bib: a, + bio: a, + blog: a, + bmd: a, + boavista: a, + bsb: a, + campinagrande: a, + campinas: a, + caxias: a, + cim: a, + cng: a, + cnt: a, + com: [ + 1, + { + blogspot: o, + virtualcloud: [ + 0, + { + scale: [ + 0, + { + users: o } - } + ] } - } + ], + simplesite: o } - }, - contagem: a15, - coop: a15, - coz: a15, - cri: a15, - cuiaba: a15, - curitiba: a15, - def: a15, - des: a15, - det: a15, - dev: a15, - ecn: a15, - eco: a15, - edu: a15, - emp: a15, - enf: a15, - eng: a15, - esp: a15, - etc: a15, - eti: a15, - far: a15, - feira: a15, - flog: a15, - floripa: a15, - fm: a15, - fnd: a15, - fortal: a15, - fot: a15, - foz: a15, - fst: a15, - g12: a15, - geo: a15, - ggf: a15, - goiania: a15, - gov: { - $: 1, - succ: { - ac: a15, - al: a15, - am: a15, - ap: a15, - ba: a15, - ce: a15, - df: a15, - es: a15, - go: a15, - ma: a15, - mg: a15, - ms: a15, - mt: a15, - pa: a15, - pb: a15, - pe: a15, - pi: a15, - pr: a15, - rj: a15, - rn: a15, - ro: a15, - rr: a15, - rs: a15, - sc: a15, - se: a15, - sp: a15, - to: a15 + ], + contagem: a, + coop: a, + coz: a, + cri: a, + cuiaba: a, + curitiba: a, + def: a, + des: a, + det: a, + dev: a, + ecn: a, + eco: a, + edu: a, + emp: a, + enf: a, + eng: a, + esp: a, + etc: a, + eti: a, + far: a, + feira: a, + flog: a, + floripa: a, + fm: a, + fnd: a, + fortal: a, + fot: a, + foz: a, + fst: a, + g12: a, + geo: a, + ggf: a, + goiania: a, + gov: [ + 1, + { + ac: a, + al: a, + am: a, + ap: a, + ba: a, + ce: a, + df: a, + es: a, + go: a, + ma: a, + mg: a, + ms: a, + mt: a, + pa: a, + pb: a, + pe: a, + pi: a, + pr: a, + rj: a, + rn: a, + ro: a, + rr: a, + rs: a, + sc: a, + se: a, + sp: a, + to: a } - }, - gru: a15, - imb: a15, - ind: a15, - inf: a15, - jab: a15, - jampa: a15, - jdf: a15, - joinville: a15, - jor: a15, - jus: a15, - leg: { - $: 1, - succ: { - ac: o16, - al: o16, - am: o16, - ap: o16, - ba: o16, - ce: o16, - df: o16, - es: o16, - go: o16, - ma: o16, - mg: o16, - ms: o16, - mt: o16, - pa: o16, - pb: o16, - pe: o16, - pi: o16, - pr: o16, - rj: o16, - rn: o16, - ro: o16, - rr: o16, - rs: o16, - sc: o16, - se: o16, - sp: o16, - to: o16 + ], + gru: a, + imb: a, + ind: a, + inf: a, + jab: a, + jampa: a, + jdf: a, + joinville: a, + jor: a, + jus: a, + leg: [ + 1, + { + ac: o, + al: o, + am: o, + ap: o, + ba: o, + ce: o, + df: o, + es: o, + go: o, + ma: o, + mg: o, + ms: o, + mt: o, + pa: o, + pb: o, + pe: o, + pi: o, + pr: o, + rj: o, + rn: o, + ro: o, + rr: o, + rs: o, + sc: o, + se: o, + sp: o, + to: o } - }, - lel: a15, - log: a15, - londrina: a15, - macapa: a15, - maceio: a15, - manaus: a15, - maringa: a15, - mat: a15, - med: a15, - mil: a15, - morena: a15, - mp: a15, - mus: a15, - natal: a15, - net: a15, - niteroi: a15, - nom: r6, - not: a15, - ntr: a15, - odo: a15, - ong: a15, - org: a15, - osasco: a15, - palmas: a15, - poa: a15, - ppg: a15, - pro: a15, - psc: a15, - psi: a15, - pvh: a15, - qsl: a15, - radio: a15, - rec: a15, - recife: a15, - rep: a15, - ribeirao: a15, - rio: a15, - riobranco: a15, - riopreto: a15, - salvador: a15, - sampa: a15, - santamaria: a15, - santoandre: a15, - saobernardo: a15, - saogonca: a15, - seg: a15, - sjc: a15, - slg: a15, - slz: a15, - sorocaba: a15, - srv: a15, - taxi: a15, - tc: a15, - tec: a15, - teo: a15, - the: a15, - tmp: a15, - trd: a15, - tur: a15, - tv: a15, - udi: a15, - vet: a15, - vix: a15, - vlog: a15, - wiki: a15, - zlg: a15 + ], + lel: a, + log: a, + londrina: a, + macapa: a, + maceio: a, + manaus: a, + maringa: a, + mat: a, + med: a, + mil: a, + morena: a, + mp: a, + mus: a, + natal: a, + net: a, + niteroi: a, + nom: r, + not: a, + ntr: a, + odo: a, + ong: a, + org: a, + osasco: a, + palmas: a, + poa: a, + ppg: a, + pro: a, + psc: a, + psi: a, + pvh: a, + qsl: a, + radio: a, + rec: a, + recife: a, + rep: a, + ribeirao: a, + rio: a, + riobranco: a, + riopreto: a, + salvador: a, + sampa: a, + santamaria: a, + santoandre: a, + saobernardo: a, + saogonca: a, + seg: a, + sjc: a, + slg: a, + slz: a, + sorocaba: a, + srv: a, + taxi: a, + tc: a, + tec: a, + teo: a, + the: a, + tmp: a, + trd: a, + tur: a, + tv: a, + udi: a, + vet: a, + vix: a, + vlog: a, + wiki: a, + zlg: a } - }, - bs: { - $: 1, - succ: { - com: a15, - net: a15, - org: a15, - edu: a15, - gov: a15, - we: o16 + ], + bs: [ + 1, + { + com: a, + net: a, + org: a, + edu: a, + gov: a, + we: o } - }, - bt: i12, - bv: a15, - bw: { - $: 1, - succ: { - co: a15, - org: a15 + ], + bt: i, + bv: a, + bw: [ + 1, + { + co: a, + org: a } - }, - by: { - $: 1, - succ: { - gov: a15, - mil: a15, - com: s8, - of: a15, - mycloud: o16, - mediatech: o16 + ], + by: [ + 1, + { + gov: a, + mil: a, + com: n, + of: a, + mycloud: o, + mediatech: o } - }, - bz: { - $: 1, - succ: { - com: a15, - net: a15, - org: a15, - edu: a15, - gov: a15, - za: o16, - gsj: o16 + ], + bz: [ + 1, + { + com: a, + net: a, + org: a, + edu: a, + gov: a, + za: o, + gsj: o } - }, - ca: { - $: 1, - succ: { - ab: a15, - bc: a15, - mb: a15, - nb: a15, - nf: a15, - nl: a15, - ns: a15, - nt: a15, - nu: a15, - on: a15, - pe: a15, - qc: a15, - sk: a15, - yk: a15, - gc: a15, - barsy: o16, - awdev: e12, - co: o16, - blogspot: o16, - "no-ip": o16, - myspreadshop: o16 + ], + ca: [ + 1, + { + ab: a, + bc: a, + mb: a, + nb: a, + nf: a, + nl: a, + ns: a, + nt: a, + nu: a, + on: a, + pe: a, + qc: a, + sk: a, + yk: a, + gc: a, + barsy: o, + awdev: e, + co: o, + blogspot: o, + "no-ip": o, + myspreadshop: o } - }, - cat: a15, - cc: { - $: 1, - succ: { - cloudns: o16, - ftpaccess: o16, - "game-server": o16, - myphotos: o16, - scrapping: o16, - twmail: o16, - csx: o16, - fantasyleague: o16, - spawn: { - $: 0, - succ: { - instances: o16 + ], + cat: a, + cc: [ + 1, + { + cloudns: o, + ftpaccess: o, + "game-server": o, + myphotos: o, + scrapping: o, + twmail: o, + csx: o, + fantasyleague: o, + spawn: [ + 0, + { + instances: o } - } + ] } - }, - cd: n7, - cf: s8, - cg: a15, - ch: { - $: 1, - succ: { - square7: o16, - blogspot: o16, - flow: { - $: 0, - succ: { - ae: { - $: 0, - succ: { - alp1: o16 + ], + cd: s, + cf: n, + cg: a, + ch: [ + 1, + { + square7: o, + blogspot: o, + flow: [ + 0, + { + ae: [ + 0, + { + alp1: o } - }, - appengine: o16 + ], + appengine: o } - }, - "linkyard-cloud": o16, - dnsking: o16, - gotdns: o16, - myspreadshop: o16, - firenet: { - $: 0, - succ: { - "*": o16, - svc: e12 + ], + "linkyard-cloud": o, + dnsking: o, + gotdns: o, + "123website": o, + myspreadshop: o, + firenet: [ + 0, + { + "*": o, + svc: e } - }, - "12hp": o16, - "2ix": o16, - "4lima": o16, - "lima-city": o16 + ], + "12hp": o, + "2ix": o, + "4lima": o, + "lima-city": o } - }, - ci: { - $: 1, - succ: { - org: a15, - or: a15, - com: a15, - co: a15, - edu: a15, - ed: a15, - ac: a15, - net: a15, - go: a15, - asso: a15, - "xn--aroport-bya": a15, - "aéroport": a15, - int: a15, - presse: a15, - md: a15, - gouv: a15, - fin: o16, - nl: o16 + ], + ci: [ + 1, + { + org: a, + or: a, + com: a, + co: a, + edu: a, + ed: a, + ac: a, + net: a, + go: a, + asso: a, + "xn--aroport-bya": a, + "aéroport": a, + int: a, + presse: a, + md: a, + gouv: a, + fin: o, + nl: o } - }, - ck: r6, - cl: { - $: 1, - succ: { - co: a15, - gob: a15, - gov: a15, - mil: a15, - blogspot: o16 + ], + ck: r, + cl: [ + 1, + { + co: a, + gob: a, + gov: a, + mil: a, + blogspot: o } - }, - cm: { - $: 1, - succ: { - co: a15, - com: a15, - gov: a15, - net: a15 + ], + cm: [ + 1, + { + co: a, + com: a, + gov: a, + net: a } - }, - cn: { - $: 1, - succ: { - ac: a15, - com: { - $: 1, - succ: { - amazonaws: { - $: 0, - succ: { - compute: e12, - eb: { - $: 0, - succ: { - "cn-north-1": o16, - "cn-northwest-1": o16 + ], + cn: [ + 1, + { + ac: a, + com: [ + 1, + { + amazonaws: [ + 0, + { + compute: e, + "cn-north-1": u, + eb: [ + 0, + { + "cn-north-1": o, + "cn-northwest-1": o } - }, - elb: e12, - "cn-north-1": l2 + ], + elb: e } - } + ] } - }, - edu: a15, - gov: a15, - net: a15, - org: a15, - mil: a15, - "xn--55qx5d": a15, - "公司": a15, - "xn--io0a7i": a15, - "网络": a15, - "xn--od0alg": a15, - "網絡": a15, - ah: a15, - bj: a15, - cq: a15, - fj: a15, - gd: a15, - gs: a15, - gz: a15, - gx: a15, - ha: a15, - hb: a15, - he: a15, - hi: a15, - hl: a15, - hn: a15, - jl: a15, - js: a15, - jx: a15, - ln: a15, - nm: a15, - nx: a15, - qh: a15, - sc: a15, - sd: a15, - sh: a15, - sn: a15, - sx: a15, - tj: a15, - xj: a15, - xz: a15, - yn: a15, - zj: a15, - hk: a15, - mo: a15, - tw: a15, - instantcloud: o16, - quickconnect: m2 + ], + edu: a, + gov: a, + net: a, + org: a, + mil: a, + "xn--55qx5d": a, + "公司": a, + "xn--io0a7i": a, + "网络": a, + "xn--od0alg": a, + "網絡": a, + ah: a, + bj: a, + cq: a, + fj: a, + gd: a, + gs: a, + gz: a, + gx: a, + ha: a, + hb: a, + he: a, + hi: a, + hl: a, + hn: a, + jl: a, + js: a, + jx: a, + ln: a, + nm: a, + nx: a, + qh: a, + sc: a, + sd: a, + sh: a, + sn: a, + sx: a, + tj: a, + xj: a, + xz: a, + yn: a, + zj: a, + hk: a, + mo: a, + tw: a, + "canva-apps": o, + instantcloud: o, + quickconnect: c } - }, - co: { - $: 1, - succ: { - arts: a15, - com: s8, - edu: a15, - firm: a15, - gov: a15, - info: a15, - int: a15, - mil: a15, - net: a15, - nom: a15, - org: a15, - rec: a15, - web: a15, - carrd: o16, - crd: o16, - otap: e12, - leadpages: o16, - lpages: o16, - mypi: o16, - n4t: o16, - repl: { - $: 2, - succ: { - id: o16 - } - }, - supabase: o16 + ], + co: [ + 1, + { + arts: a, + com: n, + edu: a, + firm: a, + gov: a, + info: a, + int: a, + mil: a, + net: a, + nom: a, + org: a, + rec: a, + web: a, + carrd: o, + crd: o, + otap: e, + leadpages: o, + lpages: o, + mypi: o, + n4t: o, + firewalledreplit: d, + repl: d, + supabase: o } - }, - com: { - $: 1, - succ: { - devcdnaccesso: e12, - adobeaemcloud: { - $: 2, - succ: { - dev: e12 + ], + com: [ + 1, + { + devcdnaccesso: e, + adobeaemcloud: [ + 2, + { + dev: e } - }, - airkitapps: o16, - "airkitapps-au": o16, - aivencloud: o16, - kasserver: o16, - amazonaws: { - $: 0, - succ: { - compute: e12, - "compute-1": e12, - "us-east-1": { - $: 2, - succ: { - dualstack: l2, - cloud9: d1 + ], + airkitapps: o, + "airkitapps-au": o, + aivencloud: o, + kasserver: o, + amazonaws: [ + 0, + { + compute: e, + "compute-1": e, + "us-east-1": [ + 2, + { + dualstack: u, + cloud9: g } - }, - elb: e12, - s3: o16, - "s3-ap-northeast-1": o16, - "s3-ap-northeast-2": o16, - "s3-ap-south-1": o16, - "s3-ap-southeast-1": o16, - "s3-ap-southeast-2": o16, - "s3-ca-central-1": o16, - "s3-eu-central-1": o16, - "s3-eu-west-1": o16, - "s3-eu-west-2": o16, - "s3-eu-west-3": o16, - "s3-external-1": o16, - "s3-fips-us-gov-west-1": o16, - "s3-sa-east-1": o16, - "s3-us-gov-west-1": o16, - "s3-us-east-2": o16, - "s3-us-west-1": o16, - "s3-us-west-2": o16, - "ap-northeast-2": k, - "ap-south-1": k, - "ca-central-1": k, - "eu-central-1": k, - "eu-west-2": k, - "eu-west-3": k, - "us-east-2": k, - "ap-northeast-1": h1, - "ap-southeast-1": h1, - "ap-southeast-2": h1, - "eu-west-1": h1, - "sa-east-1": h1, - "s3-website-us-east-1": o16, - "s3-website-us-west-1": o16, - "s3-website-us-west-2": o16, - "s3-website-ap-northeast-1": o16, - "s3-website-ap-southeast-1": o16, - "s3-website-ap-southeast-2": o16, - "s3-website-eu-west-1": o16, - "s3-website-sa-east-1": o16, - "af-south-1": g1, - "ap-east-1": g1, - "ap-northeast-3": g1, - "eu-north-1": g1, - "eu-south-1": g1, - "me-south-1": g1, - "us-west-1": g1, - "us-west-2": g1 + ], + "ap-northeast-1": h, + "ap-northeast-2": b, + "ap-south-1": b, + "ap-southeast-1": h, + "ap-southeast-2": h, + "ca-central-1": b, + "eu-central-1": b, + "eu-west-1": h, + "eu-west-2": b, + "eu-west-3": b, + s3: o, + "s3-ap-northeast-1": o, + "s3-ap-northeast-2": o, + "s3-ap-south-1": o, + "s3-ap-southeast-1": o, + "s3-ap-southeast-2": o, + "s3-ca-central-1": o, + "s3-eu-central-1": o, + "s3-eu-west-1": o, + "s3-eu-west-2": o, + "s3-eu-west-3": o, + "s3-external-1": o, + "s3-fips-us-gov-west-1": o, + "s3-sa-east-1": o, + "s3-us-east-2": o, + "s3-us-gov-west-1": o, + "s3-us-west-1": o, + "s3-us-west-2": o, + "s3-website-ap-northeast-1": o, + "s3-website-ap-southeast-1": o, + "s3-website-ap-southeast-2": o, + "s3-website-eu-west-1": o, + "s3-website-sa-east-1": o, + "s3-website-us-east-1": o, + "s3-website-us-west-1": o, + "s3-website-us-west-2": o, + "sa-east-1": h, + "us-east-2": b, + "af-south-1": k, + "ap-east-1": k, + "ap-northeast-3": k, + "eu-north-1": k, + "eu-south-1": k, + "me-south-1": k, + "us-west-1": k, + "us-west-2": k, + elb: e } - }, - elasticbeanstalk: { - $: 2, - succ: { - "ap-northeast-1": o16, - "ap-northeast-2": o16, - "ap-northeast-3": o16, - "ap-south-1": o16, - "ap-southeast-1": o16, - "ap-southeast-2": o16, - "ca-central-1": o16, - "eu-central-1": o16, - "eu-west-1": o16, - "eu-west-2": o16, - "eu-west-3": o16, - "sa-east-1": o16, - "us-east-1": o16, - "us-east-2": o16, - "us-gov-west-1": o16, - "us-west-1": o16, - "us-west-2": o16 + ], + elasticbeanstalk: [ + 2, + { + "ap-northeast-1": o, + "ap-northeast-2": o, + "ap-northeast-3": o, + "ap-south-1": o, + "ap-southeast-1": o, + "ap-southeast-2": o, + "ca-central-1": o, + "eu-central-1": o, + "eu-west-1": o, + "eu-west-2": o, + "eu-west-3": o, + "sa-east-1": o, + "us-east-1": o, + "us-east-2": o, + "us-gov-west-1": o, + "us-west-1": o, + "us-west-2": o } - }, - awsglobalaccelerator: o16, - siiites: o16, - appspacehosted: o16, - appspaceusercontent: o16, - "on-aptible": o16, - myasustor: o16, - "balena-devices": o16, - betainabox: o16, - boutir: o16, - bplaced: o16, - cafjs: o16, - br: o16, - cn: o16, - de: o16, - eu: o16, - jpn: o16, - mex: o16, - ru: o16, - sa: o16, - uk: o16, - us: o16, - za: o16, - ar: o16, - hu: o16, - kr: o16, - no: o16, - qc: o16, - uy: o16, - africa: o16, - gr: o16, - co: o16, - jdevcloud: o16, - wpdevcloud: o16, - cloudcontrolled: o16, - cloudcontrolapp: o16, - trycloudflare: o16, - "customer-oci": { - $: 0, - succ: { - "*": o16, - oci: e12, - ocp: e12, - ocs: e12 + ], + awsglobalaccelerator: o, + siiites: o, + appspacehosted: o, + appspaceusercontent: o, + "on-aptible": o, + myasustor: o, + "balena-devices": o, + betainabox: o, + boutir: o, + bplaced: o, + cafjs: o, + "canva-apps": o, + br: o, + cn: o, + de: o, + eu: o, + jpn: o, + mex: o, + ru: o, + sa: o, + uk: o, + us: o, + za: o, + ar: o, + hu: o, + kr: o, + no: o, + qc: o, + uy: o, + africa: o, + gr: o, + co: o, + jdevcloud: o, + wpdevcloud: o, + cloudcontrolled: o, + cloudcontrolapp: o, + "cf-ipfs": o, + "cloudflare-ipfs": o, + trycloudflare: o, + "customer-oci": [ + 0, + { + "*": o, + oci: e, + ocp: e, + ocs: e } - }, - dattolocal: o16, - dattorelay: o16, - dattoweb: o16, - mydatto: o16, - builtwithdark: o16, - datadetect: { - $: 0, - succ: { - demo: o16, - instance: o16 + ], + dattolocal: o, + dattorelay: o, + dattoweb: o, + mydatto: o, + builtwithdark: o, + datadetect: [ + 0, + { + demo: o, + instance: o } - }, - ddns5: o16, - discordsays: o16, - discordsez: o16, - drayddns: o16, - dreamhosters: o16, - mydrobo: o16, - "dyndns-at-home": o16, - "dyndns-at-work": o16, - "dyndns-blog": o16, - "dyndns-free": o16, - "dyndns-home": o16, - "dyndns-ip": o16, - "dyndns-mail": o16, - "dyndns-office": o16, - "dyndns-pics": o16, - "dyndns-remote": o16, - "dyndns-server": o16, - "dyndns-web": o16, - "dyndns-wiki": o16, - "dyndns-work": o16, - blogdns: o16, - cechire: o16, - dnsalias: o16, - dnsdojo: o16, - doesntexist: o16, - dontexist: o16, - doomdns: o16, - "dyn-o-saur": o16, - dynalias: o16, - "est-a-la-maison": o16, - "est-a-la-masion": o16, - "est-le-patron": o16, - "est-mon-blogueur": o16, - "from-ak": o16, - "from-al": o16, - "from-ar": o16, - "from-ca": o16, - "from-ct": o16, - "from-dc": o16, - "from-de": o16, - "from-fl": o16, - "from-ga": o16, - "from-hi": o16, - "from-ia": o16, - "from-id": o16, - "from-il": o16, - "from-in": o16, - "from-ks": o16, - "from-ky": o16, - "from-ma": o16, - "from-md": o16, - "from-mi": o16, - "from-mn": o16, - "from-mo": o16, - "from-ms": o16, - "from-mt": o16, - "from-nc": o16, - "from-nd": o16, - "from-ne": o16, - "from-nh": o16, - "from-nj": o16, - "from-nm": o16, - "from-nv": o16, - "from-oh": o16, - "from-ok": o16, - "from-or": o16, - "from-pa": o16, - "from-pr": o16, - "from-ri": o16, - "from-sc": o16, - "from-sd": o16, - "from-tn": o16, - "from-tx": o16, - "from-ut": o16, - "from-va": o16, - "from-vt": o16, - "from-wa": o16, - "from-wi": o16, - "from-wv": o16, - "from-wy": o16, - getmyip: o16, - gotdns: o16, - "hobby-site": o16, - homelinux: o16, - homeunix: o16, - iamallama: o16, - "is-a-anarchist": o16, - "is-a-blogger": o16, - "is-a-bookkeeper": o16, - "is-a-bulls-fan": o16, - "is-a-caterer": o16, - "is-a-chef": o16, - "is-a-conservative": o16, - "is-a-cpa": o16, - "is-a-cubicle-slave": o16, - "is-a-democrat": o16, - "is-a-designer": o16, - "is-a-doctor": o16, - "is-a-financialadvisor": o16, - "is-a-geek": o16, - "is-a-green": o16, - "is-a-guru": o16, - "is-a-hard-worker": o16, - "is-a-hunter": o16, - "is-a-landscaper": o16, - "is-a-lawyer": o16, - "is-a-liberal": o16, - "is-a-libertarian": o16, - "is-a-llama": o16, - "is-a-musician": o16, - "is-a-nascarfan": o16, - "is-a-nurse": o16, - "is-a-painter": o16, - "is-a-personaltrainer": o16, - "is-a-photographer": o16, - "is-a-player": o16, - "is-a-republican": o16, - "is-a-rockstar": o16, - "is-a-socialist": o16, - "is-a-student": o16, - "is-a-teacher": o16, - "is-a-techie": o16, - "is-a-therapist": o16, - "is-an-accountant": o16, - "is-an-actor": o16, - "is-an-actress": o16, - "is-an-anarchist": o16, - "is-an-artist": o16, - "is-an-engineer": o16, - "is-an-entertainer": o16, - "is-certified": o16, - "is-gone": o16, - "is-into-anime": o16, - "is-into-cars": o16, - "is-into-cartoons": o16, - "is-into-games": o16, - "is-leet": o16, - "is-not-certified": o16, - "is-slick": o16, - "is-uberleet": o16, - "is-with-theband": o16, - "isa-geek": o16, - "isa-hockeynut": o16, - issmarterthanyou: o16, - "likes-pie": o16, - likescandy: o16, - "neat-url": o16, - "saves-the-whales": o16, - selfip: o16, - "sells-for-less": o16, - "sells-for-u": o16, - servebbs: o16, - "simple-url": o16, - "space-to-rent": o16, - "teaches-yoga": o16, - writesthisblog: o16, - digitaloceanspaces: e12, - ddnsfree: o16, - ddnsgeek: o16, - giize: o16, - gleeze: o16, - kozow: o16, - loseyourip: o16, - ooguy: o16, - theworkpc: o16, - mytuleap: o16, - "tuleap-partners": o16, - encoreapi: o16, - evennode: { - $: 0, - succ: { - "eu-1": o16, - "eu-2": o16, - "eu-3": o16, - "eu-4": o16, - "us-1": o16, - "us-2": o16, - "us-3": o16, - "us-4": o16 + ], + ddns5: o, + discordsays: o, + discordsez: o, + drayddns: o, + dreamhosters: o, + mydrobo: o, + "dyndns-at-home": o, + "dyndns-at-work": o, + "dyndns-blog": o, + "dyndns-free": o, + "dyndns-home": o, + "dyndns-ip": o, + "dyndns-mail": o, + "dyndns-office": o, + "dyndns-pics": o, + "dyndns-remote": o, + "dyndns-server": o, + "dyndns-web": o, + "dyndns-wiki": o, + "dyndns-work": o, + blogdns: o, + cechire: o, + dnsalias: o, + dnsdojo: o, + doesntexist: o, + dontexist: o, + doomdns: o, + "dyn-o-saur": o, + dynalias: o, + "est-a-la-maison": o, + "est-a-la-masion": o, + "est-le-patron": o, + "est-mon-blogueur": o, + "from-ak": o, + "from-al": o, + "from-ar": o, + "from-ca": o, + "from-ct": o, + "from-dc": o, + "from-de": o, + "from-fl": o, + "from-ga": o, + "from-hi": o, + "from-ia": o, + "from-id": o, + "from-il": o, + "from-in": o, + "from-ks": o, + "from-ky": o, + "from-ma": o, + "from-md": o, + "from-mi": o, + "from-mn": o, + "from-mo": o, + "from-ms": o, + "from-mt": o, + "from-nc": o, + "from-nd": o, + "from-ne": o, + "from-nh": o, + "from-nj": o, + "from-nm": o, + "from-nv": o, + "from-oh": o, + "from-ok": o, + "from-or": o, + "from-pa": o, + "from-pr": o, + "from-ri": o, + "from-sc": o, + "from-sd": o, + "from-tn": o, + "from-tx": o, + "from-ut": o, + "from-va": o, + "from-vt": o, + "from-wa": o, + "from-wi": o, + "from-wv": o, + "from-wy": o, + getmyip: o, + gotdns: o, + "hobby-site": o, + homelinux: o, + homeunix: o, + iamallama: o, + "is-a-anarchist": o, + "is-a-blogger": o, + "is-a-bookkeeper": o, + "is-a-bulls-fan": o, + "is-a-caterer": o, + "is-a-chef": o, + "is-a-conservative": o, + "is-a-cpa": o, + "is-a-cubicle-slave": o, + "is-a-democrat": o, + "is-a-designer": o, + "is-a-doctor": o, + "is-a-financialadvisor": o, + "is-a-geek": o, + "is-a-green": o, + "is-a-guru": o, + "is-a-hard-worker": o, + "is-a-hunter": o, + "is-a-landscaper": o, + "is-a-lawyer": o, + "is-a-liberal": o, + "is-a-libertarian": o, + "is-a-llama": o, + "is-a-musician": o, + "is-a-nascarfan": o, + "is-a-nurse": o, + "is-a-painter": o, + "is-a-personaltrainer": o, + "is-a-photographer": o, + "is-a-player": o, + "is-a-republican": o, + "is-a-rockstar": o, + "is-a-socialist": o, + "is-a-student": o, + "is-a-teacher": o, + "is-a-techie": o, + "is-a-therapist": o, + "is-an-accountant": o, + "is-an-actor": o, + "is-an-actress": o, + "is-an-anarchist": o, + "is-an-artist": o, + "is-an-engineer": o, + "is-an-entertainer": o, + "is-certified": o, + "is-gone": o, + "is-into-anime": o, + "is-into-cars": o, + "is-into-cartoons": o, + "is-into-games": o, + "is-leet": o, + "is-not-certified": o, + "is-slick": o, + "is-uberleet": o, + "is-with-theband": o, + "isa-geek": o, + "isa-hockeynut": o, + issmarterthanyou: o, + "likes-pie": o, + likescandy: o, + "neat-url": o, + "saves-the-whales": o, + selfip: o, + "sells-for-less": o, + "sells-for-u": o, + servebbs: o, + "simple-url": o, + "space-to-rent": o, + "teaches-yoga": o, + writesthisblog: o, + digitaloceanspaces: e, + ddnsfree: o, + ddnsgeek: o, + giize: o, + gleeze: o, + kozow: o, + loseyourip: o, + ooguy: o, + theworkpc: o, + mytuleap: o, + "tuleap-partners": o, + encoreapi: o, + evennode: [ + 0, + { + "eu-1": o, + "eu-2": o, + "eu-3": o, + "eu-4": o, + "us-1": o, + "us-2": o, + "us-3": o, + "us-4": o } - }, - onfabrica: o16, - fbsbx: b, - "fastly-terrarium": o16, - "fastvps-server": o16, - mydobiss: o16, - firebaseapp: o16, - fldrv: o16, - forgeblocks: o16, - framercanvas: o16, - "freebox-os": o16, - freeboxos: o16, - freemyip: o16, - gentapps: o16, - gentlentapis: o16, - githubusercontent: o16, - "0emm": e12, - appspot: { - $: 2, - succ: { - r: e12 + ], + onfabrica: o, + fbsbx: p, + "fastly-edge": o, + "fastly-terrarium": o, + "fastvps-server": o, + mydobiss: o, + firebaseapp: o, + fldrv: o, + forgeblocks: o, + framercanvas: o, + "freebox-os": o, + freeboxos: o, + freemyip: o, + gentapps: o, + gentlentapis: o, + githubusercontent: o, + "0emm": e, + appspot: [ + 2, + { + r: e } - }, - codespot: o16, - googleapis: o16, - googlecode: o16, - pagespeedmobilizer: o16, - publishproxy: o16, - withgoogle: o16, - withyoutube: o16, - blogspot: o16, - awsmppl: o16, - herokuapp: o16, - herokussl: o16, - myravendb: o16, - impertrixcdn: o16, - impertrix: o16, - smushcdn: o16, - wphostedmail: o16, - wpmucdn: o16, - pixolino: o16, - amscompute: o16, - clicketcloud: o16, - dopaas: o16, - hidora: o16, - "hosted-by-previder": p, - hosteur: { - $: 0, - succ: { - "rag-cloud": o16, - "rag-cloud-ch": o16 + ], + codespot: o, + googleapis: o, + googlecode: o, + pagespeedmobilizer: o, + publishproxy: o, + withgoogle: o, + withyoutube: o, + blogspot: o, + awsmppl: o, + herokuapp: o, + herokussl: o, + impertrixcdn: o, + impertrix: o, + smushcdn: o, + wphostedmail: o, + wpmucdn: o, + pixolino: o, + amscompute: o, + clicketcloud: o, + dopaas: o, + hidora: o, + "hosted-by-previder": y, + hosteur: [ + 0, + { + "rag-cloud": o, + "rag-cloud-ch": o } - }, - "ik-server": { - $: 0, - succ: { - jcloud: o16, - "jcloud-ver-jpc": o16 + ], + "ik-server": [ + 0, + { + jcloud: o, + "jcloud-ver-jpc": o } - }, - jelastic: { - $: 0, - succ: { - demo: o16 + ], + jelastic: [ + 0, + { + demo: o } - }, - kilatiron: o16, - massivegrid: p, - wafaicloud: { - $: 0, - succ: { - jed: o16, - lon: o16, - ryd: o16 + ], + kilatiron: o, + massivegrid: y, + wafaicloud: [ + 0, + { + jed: o, + lon: o, + ryd: o } - }, - joyent: { - $: 0, - succ: { - cns: e12 + ], + joyent: [ + 0, + { + cns: e } - }, - ktistory: o16, - lpusercontent: o16, - lmpm: y, - linode: { - $: 0, - succ: { - members: o16, - nodebalancer: e12 + ], + ktistory: o, + lpusercontent: o, + lmpm: f, + linode: [ + 0, + { + members: o, + nodebalancer: e } - }, - linodeobjects: e12, - linodeusercontent: { - $: 0, - succ: { - ip: o16 + ], + linodeobjects: e, + linodeusercontent: [ + 0, + { + ip: o } - }, - barsycenter: o16, - barsyonline: o16, - mazeplay: o16, - miniserver: o16, - meteorapp: f, - hostedpi: o16, - "mythic-beasts": { - $: 0, - succ: { - customer: o16, - caracal: o16, - fentiger: o16, - lynx: o16, - ocelot: o16, - oncilla: o16, - onza: o16, - sphinx: o16, - vs: o16, - x: o16, - yali: o16 + ], + barsycenter: o, + barsyonline: o, + mazeplay: o, + miniserver: o, + meteorapp: v, + hostedpi: o, + "mythic-beasts": [ + 0, + { + customer: o, + caracal: o, + fentiger: o, + lynx: o, + ocelot: o, + oncilla: o, + onza: o, + sphinx: o, + vs: o, + x: o, + yali: o } - }, - nospamproxy: t4, - "4u": o16, - nfshost: o16, - "001www": o16, - ddnslive: o16, - myiphost: o16, - blogsyte: o16, - ciscofreak: o16, - damnserver: o16, - ditchyourip: o16, - dnsiskinky: o16, - dynns: o16, - geekgalaxy: o16, - "health-carereform": o16, - homesecuritymac: o16, - homesecuritypc: o16, - myactivedirectory: o16, - mysecuritycamera: o16, - "net-freaks": o16, - onthewifi: o16, - point2this: o16, - quicksytes: o16, - securitytactics: o16, - serveexchange: o16, - servehumour: o16, - servep2p: o16, - servesarcasm: o16, - stufftoread: o16, - unusualperson: o16, - workisboring: o16, - "3utilities": o16, - ddnsking: o16, - myvnc: o16, - servebeer: o16, - servecounterstrike: o16, - serveftp: o16, - servegame: o16, - servehalflife: o16, - servehttp: o16, - serveirc: o16, - servemp3: o16, - servepics: o16, - servequake: o16, - observableusercontent: { - $: 0, - succ: { - static: o16 + ], + nospamproxy: t, + "4u": o, + nfshost: o, + "001www": o, + ddnslive: o, + myiphost: o, + blogsyte: o, + ciscofreak: o, + damnserver: o, + ditchyourip: o, + dnsiskinky: o, + dynns: o, + geekgalaxy: o, + "health-carereform": o, + homesecuritymac: o, + homesecuritypc: o, + myactivedirectory: o, + mysecuritycamera: o, + "net-freaks": o, + onthewifi: o, + point2this: o, + quicksytes: o, + securitytactics: o, + serveexchange: o, + servehumour: o, + servep2p: o, + servesarcasm: o, + stufftoread: o, + unusualperson: o, + workisboring: o, + "3utilities": o, + ddnsking: o, + myvnc: o, + servebeer: o, + servecounterstrike: o, + serveftp: o, + servegame: o, + servehalflife: o, + servehttp: o, + serveirc: o, + servemp3: o, + servepics: o, + servequake: o, + observableusercontent: [ + 0, + { + static: o } - }, - orsites: o16, - operaunite: o16, - "authgear-staging": o16, - authgearapps: o16, - skygearapp: o16, - outsystemscloud: o16, - ownprovider: o16, - pgfog: o16, - pagefrontapp: o16, - pagexl: o16, - paywhirl: e12, - gotpantheon: o16, - "platter-app": o16, - pleskns: o16, - "postman-echo": o16, - prgmr: { - $: 0, - succ: { - xen: o16 + ], + simplesite: o, + orsites: o, + operaunite: o, + "authgear-staging": o, + authgearapps: o, + skygearapp: o, + outsystemscloud: o, + ownprovider: o, + pgfog: o, + pagefrontapp: o, + pagexl: o, + paywhirl: e, + gotpantheon: o, + "platter-app": o, + pleskns: o, + "postman-echo": o, + prgmr: [ + 0, + { + xen: o } - }, - pythonanywhere: f, - qualifioapp: o16, - qbuser: o16, - qa2: o16, - "dev-myqnapcloud": o16, - "alpha-myqnapcloud": o16, - myqnapcloud: o16, - quipelements: e12, - rackmaze: o16, - rhcloud: o16, - render: y, - onrender: o16, - code: { - $: 0, - succ: { - builder: e12, - "dev-builder": e12, - "stg-builder": e12 + ], + pythonanywhere: v, + qualifioapp: o, + ladesk: o, + qbuser: o, + qa2: o, + "dev-myqnapcloud": o, + "alpha-myqnapcloud": o, + myqnapcloud: o, + quipelements: e, + rackmaze: o, + rhcloud: o, + render: f, + onrender: o, + "180r": o, + dojin: o, + sakuratan: o, + sakuraweb: o, + x0: o, + code: [ + 0, + { + builder: e, + "dev-builder": e, + "stg-builder": e } - }, - logoip: o16, - scrysec: o16, - "firewall-gateway": o16, - myshopblocks: o16, - myshopify: o16, - shopitsite: o16, - "1kapp": o16, - appchizi: o16, - applinzi: o16, - sinaapp: o16, - vipsinaapp: o16, - "bounty-full": { - $: 2, - succ: { - alpha: o16, - beta: o16 + ], + logoip: o, + scrysec: o, + "firewall-gateway": o, + myshopblocks: o, + myshopify: o, + shopitsite: o, + "1kapp": o, + appchizi: o, + applinzi: o, + sinaapp: o, + vipsinaapp: o, + "bounty-full": [ + 2, + { + alpha: o, + beta: o } - }, - streamlitapp: o16, - "try-snowplow": o16, - "stackhero-network": o16, - "playstation-cloud": o16, - myspreadshop: o16, - stdlib: { - $: 0, - succ: { - api: o16 + ], + streamlitapp: o, + "try-snowplow": o, + "stackhero-network": o, + "playstation-cloud": o, + myspreadshop: o, + stdlib: [ + 0, + { + api: o } - }, - "temp-dns": o16, - dsmynas: o16, - familyds: o16, - "tb-hosting": v, - reservd: o16, - thingdustdata: o16, - bloxcms: o16, - "townnews-staging": o16, - typeform: { - $: 0, - succ: { - pro: o16 + ], + "temp-dns": o, + dsmynas: o, + familyds: o, + mytabit: o, + "tb-hosting": x, + reservd: o, + thingdustdata: o, + bloxcms: o, + "townnews-staging": o, + typeform: [ + 0, + { + pro: o } - }, - hk: o16, - vultrobjects: e12, - wafflecell: o16, - "reserve-online": o16, - hotelwithflight: o16, - remotewd: o16, - wiardweb: x, - messwithdns: o16, - "woltlab-demo": o16, - wpenginepowered: { - $: 2, - succ: { - js: o16 + ], + hk: o, + it: o, + vultrobjects: e, + wafflecell: o, + "reserve-online": o, + hotelwithflight: o, + remotewd: o, + wiardweb: w, + messwithdns: o, + "woltlab-demo": o, + wpenginepowered: [ + 2, + { + js: o } - }, - wixsite: o16, - xnbay: { - $: 2, - succ: { - u2: o16, - "u2-local": o16 + ], + wixsite: o, + xnbay: [ + 2, + { + u2: o, + "u2-local": o } - }, - yolasite: o16 + ], + yolasite: o } - }, - coop: a15, - cr: { - $: 1, - succ: { - ac: a15, - co: a15, - ed: a15, - fi: a15, - go: a15, - or: a15, - sa: a15 + ], + coop: a, + cr: [ + 1, + { + ac: a, + co: a, + ed: a, + fi: a, + go: a, + or: a, + sa: a } - }, - cu: { - $: 1, - succ: { - com: a15, - edu: a15, - org: a15, - net: a15, - gov: a15, - inf: a15 + ], + cu: [ + 1, + { + com: a, + edu: a, + org: a, + net: a, + gov: a, + inf: a } - }, - cv: { - $: 1, - succ: { - com: a15, - edu: a15, - int: a15, - nome: a15, - org: a15, - blogspot: o16 + ], + cv: [ + 1, + { + com: a, + edu: a, + int: a, + nome: a, + org: a, + blogspot: o } - }, - cw: w, - cx: { - $: 1, - succ: { - gov: a15, - ath: o16, - info: o16 + ], + cw: z, + cx: [ + 1, + { + gov: a, + ath: o, + info: o } - }, - cy: { - $: 1, - succ: { - ac: a15, - biz: a15, - com: { - $: 1, - succ: { - blogspot: o16, - scaleforce: $ + ], + cy: [ + 1, + { + ac: a, + biz: a, + com: [ + 1, + { + blogspot: o, + scaleforce: j } - }, - ekloges: a15, - gov: a15, - ltd: a15, - mil: a15, - net: a15, - org: a15, - press: a15, - pro: a15, - tm: a15 + ], + ekloges: a, + gov: a, + ltd: a, + mil: a, + net: a, + org: a, + press: a, + pro: a, + tm: a } - }, - cz: { - $: 1, - succ: { - co: o16, - realm: o16, - e4: o16, - blogspot: o16, - metacentrum: { - $: 0, - succ: { - cloud: e12, - custom: o16 + ], + cz: [ + 1, + { + co: o, + realm: o, + e4: o, + blogspot: o, + metacentrum: [ + 0, + { + cloud: e, + custom: o } - }, - muni: { - $: 0, - succ: { - cloud: { - $: 0, - succ: { - flt: o16, - usr: o16 + ], + muni: [ + 0, + { + cloud: [ + 0, + { + flt: o, + usr: o } - } + ] } - } + ] } - }, - de: { - $: 1, - succ: { - bplaced: o16, - square7: o16, - com: o16, - cosidns: { - $: 0, - succ: { - dyn: o16 + ], + de: [ + 1, + { + bplaced: o, + square7: o, + com: o, + cosidns: [ + 0, + { + dyn: o } - }, - "dynamisches-dns": o16, - dnsupdater: o16, - "internet-dns": o16, - "l-o-g-i-n": o16, - dnshome: o16, - fuettertdasnetz: o16, - isteingeek: o16, - istmein: o16, - lebtimnetz: o16, - leitungsen: o16, - traeumtgerade: o16, - ddnss: { - $: 2, - succ: { - dyn: o16, - dyndns: o16 + ], + "dynamisches-dns": o, + dnsupdater: o, + "internet-dns": o, + "l-o-g-i-n": o, + dnshome: o, + fuettertdasnetz: o, + isteingeek: o, + istmein: o, + lebtimnetz: o, + leitungsen: o, + traeumtgerade: o, + ddnss: [ + 2, + { + dyn: o, + dyndns: o } - }, - dyndns1: o16, - "dyn-ip24": o16, - "home-webserver": { - $: 2, - succ: { - dyn: o16 + ], + dyndns1: o, + "dyn-ip24": o, + "home-webserver": [ + 2, + { + dyn: o } - }, - "myhome-server": o16, - frusky: e12, - goip: o16, - blogspot: o16, - "xn--gnstigbestellen-zvb": o16, - "günstigbestellen": o16, - "xn--gnstigliefern-wob": o16, - "günstigliefern": o16, - "hs-heilbronn": { - $: 0, - succ: { - it: x + ], + "myhome-server": o, + frusky: e, + goip: o, + blogspot: o, + "xn--gnstigbestellen-zvb": o, + "günstigbestellen": o, + "xn--gnstigliefern-wob": o, + "günstigliefern": o, + "hs-heilbronn": [ + 0, + { + it: w } - }, - "dyn-berlin": o16, - "in-berlin": o16, - "in-brb": o16, - "in-butter": o16, - "in-dsl": o16, - "in-vpn": o16, - iservschule: o16, - "mein-iserv": o16, - schulplattform: o16, - schulserver: o16, - "test-iserv": o16, - keymachine: o16, - "git-repos": o16, - "lcube-server": o16, - "svn-repos": o16, - barsy: o16, - logoip: o16, - "firewall-gateway": o16, - "my-gateway": o16, - "my-router": o16, - spdns: o16, - speedpartner: { - $: 0, - succ: { - customer: o16 + ], + "dyn-berlin": o, + "in-berlin": o, + "in-brb": o, + "in-butter": o, + "in-dsl": o, + "in-vpn": o, + iservschule: o, + "mein-iserv": o, + schulplattform: o, + schulserver: o, + "test-iserv": o, + keymachine: o, + "git-repos": o, + "lcube-server": o, + "svn-repos": o, + barsy: o, + "123webseite": o, + logoip: o, + "firewall-gateway": o, + "my-gateway": o, + "my-router": o, + spdns: o, + speedpartner: [ + 0, + { + customer: o } - }, - myspreadshop: o16, - "taifun-dns": o16, - "12hp": o16, - "2ix": o16, - "4lima": o16, - "lima-city": o16, - "dd-dns": o16, - "dray-dns": o16, - draydns: o16, - "dyn-vpn": o16, - dynvpn: o16, - "mein-vigor": o16, - "my-vigor": o16, - "my-wan": o16, - "syno-ds": o16, - "synology-diskstation": o16, - "synology-ds": o16, - uberspace: e12, - virtualuser: o16, - "virtual-user": o16, - "community-pro": o16, - diskussionsbereich: o16 + ], + myspreadshop: o, + "taifun-dns": o, + "12hp": o, + "2ix": o, + "4lima": o, + "lima-city": o, + "dd-dns": o, + "dray-dns": o, + draydns: o, + "dyn-vpn": o, + dynvpn: o, + "mein-vigor": o, + "my-vigor": o, + "my-wan": o, + "syno-ds": o, + "synology-diskstation": o, + "synology-ds": o, + uberspace: e, + virtualuser: o, + "virtual-user": o, + "community-pro": o, + diskussionsbereich: o } - }, - dj: a15, - dk: { - $: 1, - succ: { - biz: o16, - co: o16, - firm: o16, - reg: o16, - store: o16, - blogspot: o16, - myspreadshop: o16 + ], + dj: a, + dk: [ + 1, + { + biz: o, + co: o, + firm: o, + reg: o, + store: o, + blogspot: o, + "123hjemmeside": o, + myspreadshop: o } - }, - dm: i12, - do: { - $: 1, - succ: { - art: a15, - com: a15, - edu: a15, - gob: a15, - gov: a15, - mil: a15, - net: a15, - org: a15, - sld: a15, - web: a15 + ], + dm: i, + do: [ + 1, + { + art: a, + com: a, + edu: a, + gob: a, + gov: a, + mil: a, + net: a, + org: a, + sld: a, + web: a } - }, - dz: { - $: 1, - succ: { - art: a15, - asso: a15, - com: a15, - edu: a15, - gov: a15, - org: a15, - net: a15, - pol: a15, - soc: a15, - tm: a15 + ], + dz: [ + 1, + { + art: a, + asso: a, + com: a, + edu: a, + gov: a, + org: a, + net: a, + pol: a, + soc: a, + tm: a } - }, - ec: { - $: 1, - succ: { - com: a15, - info: a15, - net: a15, - fin: a15, - k12: a15, - med: a15, - pro: a15, - org: a15, - edu: a15, - gov: a15, - gob: a15, - mil: a15, - base: o16, - official: o16 + ], + ec: [ + 1, + { + com: a, + info: a, + net: a, + fin: a, + k12: a, + med: a, + pro: a, + org: a, + edu: a, + gov: a, + gob: a, + mil: a, + base: o, + official: o } - }, - edu: { - $: 1, - succ: { - rit: { - $: 0, - succ: { - "git-pages": o16 + ], + edu: [ + 1, + { + rit: [ + 0, + { + "git-pages": o } - } + ] } - }, - ee: { - $: 1, - succ: { - edu: a15, - gov: a15, - riik: a15, - lib: a15, - med: a15, - com: s8, - pri: a15, - aip: a15, - org: a15, - fie: a15 + ], + ee: [ + 1, + { + edu: a, + gov: a, + riik: a, + lib: a, + med: a, + com: n, + pri: a, + aip: a, + org: a, + fie: a } - }, - eg: { - $: 1, - succ: { - com: s8, - edu: a15, - eun: a15, - gov: a15, - mil: a15, - name: a15, - net: a15, - org: a15, - sci: a15 + ], + eg: [ + 1, + { + com: n, + edu: a, + eun: a, + gov: a, + mil: a, + name: a, + net: a, + org: a, + sci: a } - }, - er: r6, - es: { - $: 1, - succ: { - com: s8, - nom: a15, - org: a15, - gob: a15, - edu: a15, - myspreadshop: o16 + ], + er: r, + es: [ + 1, + { + com: n, + nom: a, + org: a, + gob: a, + edu: a, + "123miweb": o, + myspreadshop: o } - }, - et: { - $: 1, - succ: { - com: a15, - gov: a15, - org: a15, - edu: a15, - biz: a15, - name: a15, - info: a15, - net: a15 + ], + et: [ + 1, + { + com: a, + gov: a, + org: a, + edu: a, + biz: a, + name: a, + info: a, + net: a } - }, - eu: { - $: 1, - succ: { - airkitapps: o16, - mycd: o16, - cloudns: o16, - dogado: z, - barsy: o16, - wellbeingzone: o16, - spdns: o16, - transurl: e12, - diskstation: o16 + ], + eu: [ + 1, + { + airkitapps: o, + mycd: o, + cloudns: o, + dogado: q, + barsy: o, + wellbeingzone: o, + spdns: o, + transurl: e, + diskstation: o } - }, - fi: { - $: 1, - succ: { - aland: a15, - dy: o16, - blogspot: o16, - "xn--hkkinen-5wa": o16, - "häkkinen": o16, - iki: o16, - cloudplatform: { - $: 0, - succ: { - fi: o16 + ], + fi: [ + 1, + { + aland: a, + dy: o, + blogspot: o, + "xn--hkkinen-5wa": o, + "häkkinen": o, + iki: o, + cloudplatform: [ + 0, + { + fi: o } - }, - datacenter: { - $: 0, - succ: { - demo: o16, - paas: o16 + ], + datacenter: [ + 0, + { + demo: o, + paas: o } - }, - kapsi: o16, - myspreadshop: o16 + ], + kapsi: o, + "123kotisivu": o, + myspreadshop: o } - }, - fj: { - $: 1, - succ: { - ac: a15, - biz: a15, - com: a15, - gov: a15, - info: a15, - mil: a15, - name: a15, - net: a15, - org: a15, - pro: a15 + ], + fj: [ + 1, + { + ac: a, + biz: a, + com: a, + gov: a, + info: a, + mil: a, + name: a, + net: a, + org: a, + pro: a } - }, - fk: r6, - fm: { - $: 1, - succ: { - com: a15, - edu: a15, - net: a15, - org: a15, - radio: o16 + ], + fk: r, + fm: [ + 1, + { + com: a, + edu: a, + net: a, + org: a, + radio: o, + user: e } - }, - fo: a15, - fr: { - $: 1, - succ: { - asso: a15, - com: a15, - gouv: a15, - nom: a15, - prd: a15, - tm: a15, - aeroport: a15, - avocat: a15, - avoues: a15, - cci: a15, - chambagri: a15, - "chirurgiens-dentistes": a15, - "experts-comptables": a15, - "geometre-expert": a15, - greta: a15, - "huissier-justice": a15, - medecin: a15, - notaires: a15, - pharmacien: a15, - port: a15, - veterinaire: a15, - "en-root": o16, - "fbx-os": o16, - fbxos: o16, - "freebox-os": o16, - freeboxos: o16, - blogspot: o16, - goupile: o16, - "on-web": o16, - "chirurgiens-dentistes-en-france": o16, - dedibox: o16, - myspreadshop: o16, - ynh: o16 + ], + fo: a, + fr: [ + 1, + { + asso: a, + com: a, + gouv: a, + nom: a, + prd: a, + tm: a, + aeroport: a, + avocat: a, + avoues: a, + cci: a, + chambagri: a, + "chirurgiens-dentistes": a, + "experts-comptables": a, + "geometre-expert": a, + greta: a, + "huissier-justice": a, + medecin: a, + notaires: a, + pharmacien: a, + port: a, + veterinaire: a, + "en-root": o, + "fbx-os": o, + fbxos: o, + "freebox-os": o, + freeboxos: o, + blogspot: o, + goupile: o, + "123siteweb": o, + "on-web": o, + "chirurgiens-dentistes-en-france": o, + dedibox: o, + myspreadshop: o, + ynh: o } - }, - ga: a15, - gb: a15, - gd: { - $: 1, - succ: { - edu: a15, - gov: a15 + ], + ga: a, + gb: a, + gd: [ + 1, + { + edu: a, + gov: a } - }, - ge: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - org: a15, - mil: a15, - net: a15, - pvt: a15 + ], + ge: [ + 1, + { + com: a, + edu: a, + gov: a, + org: a, + mil: a, + net: a, + pvt: a } - }, - gf: a15, - gg: { - $: 1, - succ: { - co: a15, - net: a15, - org: a15, - kaas: o16, - cya: o16, - panel: { - $: 2, - succ: { - daemon: o16 + ], + gf: a, + gg: [ + 1, + { + co: a, + net: a, + org: a, + kaas: o, + cya: o, + panel: [ + 2, + { + daemon: o } - } + ] } - }, - gh: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - org: a15, - mil: a15 + ], + gh: [ + 1, + { + com: a, + edu: a, + gov: a, + org: a, + mil: a } - }, - gi: { - $: 1, - succ: { - com: a15, - ltd: a15, - gov: a15, - mod: a15, - edu: a15, - org: a15 + ], + gi: [ + 1, + { + com: a, + ltd: a, + gov: a, + mod: a, + edu: a, + org: a } - }, - gl: { - $: 1, - succ: { - co: a15, - com: a15, - edu: a15, - net: a15, - org: a15, - biz: o16, - xx: o16 + ], + gl: [ + 1, + { + co: a, + com: a, + edu: a, + net: a, + org: a, + biz: o, + xx: o } - }, - gm: a15, - gn: { - $: 1, - succ: { - ac: a15, - com: a15, - edu: a15, - gov: a15, - org: a15, - net: a15 + ], + gm: a, + gn: [ + 1, + { + ac: a, + com: a, + edu: a, + gov: a, + org: a, + net: a } - }, - gov: a15, - gp: { - $: 1, - succ: { - com: a15, - net: a15, - mobi: a15, - edu: a15, - org: a15, - asso: a15, - app: o16 + ], + gov: a, + gp: [ + 1, + { + com: a, + net: a, + mobi: a, + edu: a, + org: a, + asso: a, + app: o } - }, - gq: a15, - gr: { - $: 1, - succ: { - com: a15, - edu: a15, - net: a15, - org: a15, - gov: a15, - blogspot: o16 + ], + gq: a, + gr: [ + 1, + { + com: a, + edu: a, + net: a, + org: a, + gov: a, + blogspot: o, + simplesite: o } - }, - gs: a15, - gt: { - $: 1, - succ: { - com: a15, - edu: a15, - gob: a15, - ind: a15, - mil: a15, - net: a15, - org: a15, - blog: o16, - de: o16, - to: o16 + ], + gs: a, + gt: [ + 1, + { + com: a, + edu: a, + gob: a, + ind: a, + mil: a, + net: a, + org: a, + blog: o, + de: o, + to: o } - }, - gu: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - guam: a15, - info: a15, - net: a15, - org: a15, - web: a15 + ], + gu: [ + 1, + { + com: a, + edu: a, + gov: a, + guam: a, + info: a, + net: a, + org: a, + web: a } - }, - gw: a15, - gy: { - $: 1, - succ: { - co: a15, - com: a15, - edu: a15, - gov: a15, - net: a15, - org: a15, - be: o16 + ], + gw: a, + gy: [ + 1, + { + co: a, + com: a, + edu: a, + gov: a, + net: a, + org: a, + be: o } - }, - hk: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - idv: a15, - net: a15, - org: a15, - "xn--55qx5d": a15, - "公司": a15, - "xn--wcvs22d": a15, - "教育": a15, - "xn--lcvr32d": a15, - "敎育": a15, - "xn--mxtq1m": a15, - "政府": a15, - "xn--gmqw5a": a15, - "個人": a15, - "xn--ciqpn": a15, - "个人": a15, - "xn--gmq050i": a15, - "箇人": a15, - "xn--zf0avx": a15, - "網络": a15, - "xn--io0a7i": a15, - "网络": a15, - "xn--mk0axi": a15, - "组織": a15, - "xn--od0alg": a15, - "網絡": a15, - "xn--od0aq3b": a15, - "网絡": a15, - "xn--tn0ag": a15, - "组织": a15, - "xn--uc0atv": a15, - "組織": a15, - "xn--uc0ay4a": a15, - "組织": a15, - blogspot: o16, - secaas: o16, - ltd: o16, - inc: o16 + ], + hk: [ + 1, + { + com: a, + edu: a, + gov: a, + idv: a, + net: a, + org: a, + "xn--55qx5d": a, + "公司": a, + "xn--wcvs22d": a, + "教育": a, + "xn--lcvr32d": a, + "敎育": a, + "xn--mxtq1m": a, + "政府": a, + "xn--gmqw5a": a, + "個人": a, + "xn--ciqpn": a, + "个人": a, + "xn--gmq050i": a, + "箇人": a, + "xn--zf0avx": a, + "網络": a, + "xn--io0a7i": a, + "网络": a, + "xn--mk0axi": a, + "组織": a, + "xn--od0alg": a, + "網絡": a, + "xn--od0aq3b": a, + "网絡": a, + "xn--tn0ag": a, + "组织": a, + "xn--uc0atv": a, + "組織": a, + "xn--uc0ay4a": a, + "組织": a, + blogspot: o, + secaas: o, + ltd: o, + inc: o } - }, - hm: a15, - hn: { - $: 1, - succ: { - com: a15, - edu: a15, - org: a15, - net: a15, - mil: a15, - gob: a15, - cc: o16 + ], + hm: a, + hn: [ + 1, + { + com: a, + edu: a, + org: a, + net: a, + mil: a, + gob: a, + cc: o } - }, - hr: { - $: 1, - succ: { - iz: a15, - from: a15, - name: a15, - com: a15, - blogspot: o16, - free: o16 + ], + hr: [ + 1, + { + iz: a, + from: a, + name: a, + com: a, + blogspot: o, + free: o } - }, - ht: { - $: 1, - succ: { - com: a15, - shop: a15, - firm: a15, - info: a15, - adult: a15, - net: a15, - pro: a15, - org: a15, - med: a15, - art: a15, - coop: a15, - pol: a15, - asso: a15, - edu: a15, - rel: a15, - gouv: a15, - perso: a15 + ], + ht: [ + 1, + { + com: a, + shop: a, + firm: a, + info: a, + adult: a, + net: a, + pro: a, + org: a, + med: a, + art: a, + coop: a, + pol: a, + asso: a, + edu: a, + rel: a, + gouv: a, + perso: a } - }, - hu: { - $: 1, - succ: { - 2000: a15, - co: a15, - info: a15, - org: a15, - priv: a15, - sport: a15, - tm: a15, - agrar: a15, - bolt: a15, - casino: a15, - city: a15, - erotica: a15, - erotika: a15, - film: a15, - forum: a15, - games: a15, - hotel: a15, - ingatlan: a15, - jogasz: a15, - konyvelo: a15, - lakas: a15, - media: a15, - news: a15, - reklam: a15, - sex: a15, - shop: a15, - suli: a15, - szex: a15, - tozsde: a15, - utazas: a15, - video: a15, - blogspot: o16 + ], + hu: [ + 1, + { + 2e3: a, + co: a, + info: a, + org: a, + priv: a, + sport: a, + tm: a, + agrar: a, + bolt: a, + casino: a, + city: a, + erotica: a, + erotika: a, + film: a, + forum: a, + games: a, + hotel: a, + ingatlan: a, + jogasz: a, + konyvelo: a, + lakas: a, + media: a, + news: a, + reklam: a, + sex: a, + shop: a, + suli: a, + szex: a, + tozsde: a, + utazas: a, + video: a, + blogspot: o } - }, - id: { - $: 1, - succ: { - ac: a15, - biz: a15, - co: s8, - desa: a15, - go: a15, - mil: a15, - my: { - $: 1, - succ: { - rss: e12 + ], + id: [ + 1, + { + ac: a, + biz: a, + co: n, + desa: a, + go: a, + mil: a, + my: [ + 1, + { + rss: e } - }, - net: a15, - or: a15, - ponpes: a15, - sch: a15, - web: a15, - flap: o16, - forte: o16 + ], + net: a, + or: a, + ponpes: a, + sch: a, + web: a, + flap: o, + forte: o } - }, - ie: { - $: 1, - succ: { - gov: a15, - blogspot: o16, - myspreadshop: o16 + ], + ie: [ + 1, + { + gov: a, + blogspot: o, + myspreadshop: o } - }, - il: { - $: 1, - succ: { - ac: a15, - co: { - $: 1, - succ: { - ravpage: o16, - blogspot: o16, - tabitorder: o16 + ], + il: [ + 1, + { + ac: a, + co: [ + 1, + { + ravpage: o, + blogspot: o, + tabitorder: o, + mytabit: o } - }, - gov: a15, - idf: a15, - k12: a15, - muni: a15, - net: a15, - org: a15 + ], + gov: a, + idf: a, + k12: a, + muni: a, + net: a, + org: a } - }, - "xn--4dbrk0ce": { - $: 1, - succ: { - "xn--4dbgdty6c": a15, - "xn--5dbhl8d": a15, - "xn--8dbq2a": a15, - "xn--hebda8b": a15 + ], + "xn--4dbrk0ce": [ + 1, + { + "xn--4dbgdty6c": a, + "xn--5dbhl8d": a, + "xn--8dbq2a": a, + "xn--hebda8b": a } - }, - "ישראל": { - $: 1, - succ: { - "אקדמיה": a15, - "ישוב": a15, - "צהל": a15, - "ממשל": a15 + ], + "ישראל": [ + 1, + { + "אקדמיה": a, + "ישוב": a, + "צהל": a, + "ממשל": a } - }, - im: { - $: 1, - succ: { - ac: a15, - co: { - $: 1, - succ: { - ltd: a15, - plc: a15 + ], + im: [ + 1, + { + ac: a, + co: [ + 1, + { + ltd: a, + plc: a } - }, - com: a15, - net: a15, - org: a15, - tt: a15, - tv: a15, - ro: o16 + ], + com: a, + net: a, + org: a, + tt: a, + tv: a, + ro: o } - }, - in: { - $: 1, - succ: { - "5g": a15, - "6g": a15, - ac: a15, - ai: a15, - am: a15, - bihar: a15, - biz: a15, - business: a15, - ca: a15, - cn: a15, - co: a15, - com: a15, - coop: a15, - cs: a15, - delhi: a15, - dr: a15, - edu: a15, - er: a15, - firm: a15, - gen: a15, - gov: a15, - gujarat: a15, - ind: a15, - info: a15, - int: a15, - internet: a15, - io: a15, - me: a15, - mil: a15, - net: a15, - nic: a15, - org: a15, - pg: a15, - post: a15, - pro: a15, - res: a15, - travel: a15, - tv: a15, - uk: a15, - up: a15, - us: a15, - web: o16, - cloudns: o16, - blogspot: o16, - barsy: o16, - supabase: o16 + ], + in: [ + 1, + { + "5g": a, + "6g": a, + ac: a, + ai: a, + am: a, + bihar: a, + biz: a, + business: a, + ca: a, + cn: a, + co: a, + com: a, + coop: a, + cs: a, + delhi: a, + dr: a, + edu: a, + er: a, + firm: a, + gen: a, + gov: a, + gujarat: a, + ind: a, + info: a, + int: a, + internet: a, + io: a, + me: a, + mil: a, + net: a, + nic: a, + org: a, + pg: a, + post: a, + pro: a, + res: a, + travel: a, + tv: a, + uk: a, + up: a, + us: a, + web: o, + cloudns: o, + blogspot: o, + barsy: o, + supabase: o } - }, - info: { - $: 1, - succ: { - cloudns: o16, - "dynamic-dns": o16, - dyndns: o16, - "barrel-of-knowledge": o16, - "barrell-of-knowledge": o16, - "for-our": o16, - "groks-the": o16, - "groks-this": o16, - "here-for-more": o16, - knowsitall: o16, - selfip: o16, - webhop: o16, - barsy: o16, - mayfirst: o16, - forumz: o16, - nsupdate: o16, - dvrcam: o16, - ilovecollege: o16, - "no-ip": o16, - dnsupdate: o16, - "v-info": o16 + ], + info: [ + 1, + { + cloudns: o, + "dynamic-dns": o, + dyndns: o, + "barrel-of-knowledge": o, + "barrell-of-knowledge": o, + "for-our": o, + "groks-the": o, + "groks-this": o, + "here-for-more": o, + knowsitall: o, + selfip: o, + webhop: o, + barsy: o, + mayfirst: o, + forumz: o, + nsupdate: o, + dvrcam: o, + ilovecollege: o, + "no-ip": o, + dnsupdate: o, + "v-info": o } - }, - int: { - $: 1, - succ: { - eu: a15 + ], + int: [ + 1, + { + eu: a } - }, - io: { - $: 1, - succ: { - 2038: o16, - com: a15, - apigee: o16, - "b-data": o16, - backplaneapp: o16, - banzaicloud: { - $: 0, - succ: { - app: o16, - backyards: e12 + ], + io: [ + 1, + { + 2038: o, + com: a, + "on-acorn": e, + apigee: o, + "b-data": o, + backplaneapp: o, + banzaicloud: [ + 0, + { + app: o, + backyards: e } - }, - beagleboard: o16, - bitbucket: o16, - bluebite: o16, - boxfuse: o16, - browsersafetymark: o16, - bigv: { - $: 0, - succ: { - uk0: o16 + ], + beagleboard: o, + bitbucket: o, + bluebite: o, + boxfuse: o, + browsersafetymark: o, + bigv: [ + 0, + { + uk0: o } - }, - cleverapps: o16, - dappnode: { - $: 0, - succ: { - dyndns: o16 + ], + cleverapps: o, + dappnode: [ + 0, + { + dyndns: o } - }, - dedyn: o16, - drud: o16, - definima: o16, - "fh-muenster": o16, - shw: o16, - forgerock: { - $: 0, - succ: { - id: o16 + ], + dedyn: o, + drud: o, + definima: o, + "fh-muenster": o, + shw: o, + forgerock: [ + 0, + { + id: o } - }, - ghost: o16, - github: o16, - gitlab: o16, - lolipop: o16, - "hasura-app": o16, - hostyhosting: o16, - moonscale: e12, - beebyte: p, - beebyteapp: { - $: 0, - succ: { - sekd1: o16 + ], + ghost: o, + github: o, + gitlab: o, + lolipop: o, + "hasura-app": o, + hostyhosting: o, + moonscale: e, + beebyte: y, + beebyteapp: [ + 0, + { + sekd1: o } - }, - jele: o16, - unispace: { - $: 0, - succ: { - "cloud-fr1": o16 + ], + jele: o, + unispace: [ + 0, + { + "cloud-fr1": o } - }, - webthings: o16, - loginline: o16, - barsy: o16, - azurecontainer: e12, - ngrok: o16, - nodeart: { - $: 0, - succ: { - stage: o16 + ], + webthings: o, + loginline: o, + barsy: o, + azurecontainer: e, + ngrok: [ + 2, + { + ap: o, + au: o, + eu: o, + in: o, + jp: o, + sa: o, + us: o } - }, - nid: o16, - pantheonsite: o16, - dyn53: o16, - pstmn: { - $: 2, - succ: { - mock: o16 + ], + nodeart: [ + 0, + { + stage: o } - }, - protonet: o16, - qoto: o16, - qcx: { - $: 2, - succ: { - sys: e12 + ], + nid: o, + pantheonsite: o, + dyn53: o, + pstmn: [ + 2, + { + mock: o } - }, - vaporcloud: o16, - vbrplsbx: { - $: 0, - succ: { - g: o16 + ], + protonet: o, + qoto: o, + qcx: [ + 2, + { + sys: e } - }, - "on-k3s": e12, - "on-rio": e12, - readthedocs: o16, - resindevice: o16, - resinstaging: { - $: 0, - succ: { - devices: o16 + ], + vaporcloud: o, + vbrplsbx: [ + 0, + { + g: o } - }, - hzc: o16, - sandcats: o16, - shiftcrypto: o16, - shiftedit: o16, - "mo-siemens": o16, - musician: o16, - lair: b, - stolos: e12, - spacekit: o16, - utwente: o16, - s5y: e12, - edugit: o16, - telebit: o16, - thingdust: { - $: 0, - succ: { - dev: I, - disrec: I, - prod: S, - testing: I + ], + "on-k3s": e, + "on-rio": e, + readthedocs: o, + resindevice: o, + resinstaging: [ + 0, + { + devices: o } - }, - tickets: o16, - upli: o16, - wedeploy: o16, - editorx: o16, - basicserver: o16, - virtualserver: o16 + ], + hzc: o, + sandcats: o, + shiftcrypto: o, + shiftedit: o, + "mo-siemens": o, + musician: o, + lair: p, + stolos: e, + spacekit: o, + utwente: o, + s5y: e, + edugit: o, + telebit: o, + thingdust: [ + 0, + { + dev: C, + disrec: C, + prod: A, + testing: C + } + ], + tickets: o, + upli: o, + wedeploy: o, + editorx: o, + basicserver: o, + virtualserver: o } - }, - iq: C, - ir: { - $: 1, - succ: { - ac: a15, - co: a15, - gov: a15, - id: a15, - net: a15, - org: a15, - sch: a15, - "xn--mgba3a4f16a": a15, - "ایران": a15, - "xn--mgba3a4fra": a15, - "ايران": a15 + ], + iq: P, + ir: [ + 1, + { + ac: a, + co: a, + gov: a, + id: a, + net: a, + org: a, + sch: a, + "xn--mgba3a4f16a": a, + "ایران": a, + "xn--mgba3a4fra": a, + "ايران": a } - }, - is: { - $: 1, - succ: { - net: a15, - com: a15, - edu: a15, - gov: a15, - org: a15, - int: a15, - cupcake: o16, - blogspot: o16 + ], + is: [ + 1, + { + net: a, + com: a, + edu: a, + gov: a, + org: a, + int: a, + cupcake: o, + blogspot: o } - }, - it: { - $: 1, - succ: { - gov: a15, - edu: a15, - abr: a15, - abruzzo: a15, - "aosta-valley": a15, - aostavalley: a15, - bas: a15, - basilicata: a15, - cal: a15, - calabria: a15, - cam: a15, - campania: a15, - "emilia-romagna": a15, - emiliaromagna: a15, - emr: a15, - "friuli-v-giulia": a15, - "friuli-ve-giulia": a15, - "friuli-vegiulia": a15, - "friuli-venezia-giulia": a15, - "friuli-veneziagiulia": a15, - "friuli-vgiulia": a15, - "friuliv-giulia": a15, - "friulive-giulia": a15, - friulivegiulia: a15, - "friulivenezia-giulia": a15, - friuliveneziagiulia: a15, - friulivgiulia: a15, - fvg: a15, - laz: a15, - lazio: a15, - lig: a15, - liguria: a15, - lom: a15, - lombardia: a15, - lombardy: a15, - lucania: a15, - mar: a15, - marche: a15, - mol: a15, - molise: a15, - piedmont: a15, - piemonte: a15, - pmn: a15, - pug: a15, - puglia: a15, - sar: a15, - sardegna: a15, - sardinia: a15, - sic: a15, - sicilia: a15, - sicily: a15, - taa: a15, - tos: a15, - toscana: a15, - "trentin-sud-tirol": a15, - "xn--trentin-sd-tirol-rzb": a15, - "trentin-süd-tirol": a15, - "trentin-sudtirol": a15, - "xn--trentin-sdtirol-7vb": a15, - "trentin-südtirol": a15, - "trentin-sued-tirol": a15, - "trentin-suedtirol": a15, - "trentino-a-adige": a15, - "trentino-aadige": a15, - "trentino-alto-adige": a15, - "trentino-altoadige": a15, - "trentino-s-tirol": a15, - "trentino-stirol": a15, - "trentino-sud-tirol": a15, - "xn--trentino-sd-tirol-c3b": a15, - "trentino-süd-tirol": a15, - "trentino-sudtirol": a15, - "xn--trentino-sdtirol-szb": a15, - "trentino-südtirol": a15, - "trentino-sued-tirol": a15, - "trentino-suedtirol": a15, - trentino: a15, - "trentinoa-adige": a15, - trentinoaadige: a15, - "trentinoalto-adige": a15, - trentinoaltoadige: a15, - "trentinos-tirol": a15, - trentinostirol: a15, - "trentinosud-tirol": a15, - "xn--trentinosd-tirol-rzb": a15, - "trentinosüd-tirol": a15, - trentinosudtirol: a15, - "xn--trentinosdtirol-7vb": a15, - "trentinosüdtirol": a15, - "trentinosued-tirol": a15, - trentinosuedtirol: a15, - "trentinsud-tirol": a15, - "xn--trentinsd-tirol-6vb": a15, - "trentinsüd-tirol": a15, - trentinsudtirol: a15, - "xn--trentinsdtirol-nsb": a15, - "trentinsüdtirol": a15, - "trentinsued-tirol": a15, - trentinsuedtirol: a15, - tuscany: a15, - umb: a15, - umbria: a15, - "val-d-aosta": a15, - "val-daosta": a15, - "vald-aosta": a15, - valdaosta: a15, - "valle-aosta": a15, - "valle-d-aosta": a15, - "valle-daosta": a15, - valleaosta: a15, - "valled-aosta": a15, - valledaosta: a15, - "vallee-aoste": a15, - "xn--valle-aoste-ebb": a15, - "vallée-aoste": a15, - "vallee-d-aoste": a15, - "xn--valle-d-aoste-ehb": a15, - "vallée-d-aoste": a15, - valleeaoste: a15, - "xn--valleaoste-e7a": a15, - "valléeaoste": a15, - valleedaoste: a15, - "xn--valledaoste-ebb": a15, - "valléedaoste": a15, - vao: a15, - vda: a15, - ven: a15, - veneto: a15, - ag: a15, - agrigento: a15, - al: a15, - alessandria: a15, - "alto-adige": a15, - altoadige: a15, - an: a15, - ancona: a15, - "andria-barletta-trani": a15, - "andria-trani-barletta": a15, - andriabarlettatrani: a15, - andriatranibarletta: a15, - ao: a15, - aosta: a15, - aoste: a15, - ap: a15, - aq: a15, - aquila: a15, - ar: a15, - arezzo: a15, - "ascoli-piceno": a15, - ascolipiceno: a15, - asti: a15, - at: a15, - av: a15, - avellino: a15, - ba: a15, - "balsan-sudtirol": a15, - "xn--balsan-sdtirol-nsb": a15, - "balsan-südtirol": a15, - "balsan-suedtirol": a15, - balsan: a15, - bari: a15, - "barletta-trani-andria": a15, - barlettatraniandria: a15, - belluno: a15, - benevento: a15, - bergamo: a15, - bg: a15, - bi: a15, - biella: a15, - bl: a15, - bn: a15, - bo: a15, - bologna: a15, - "bolzano-altoadige": a15, - bolzano: a15, - "bozen-sudtirol": a15, - "xn--bozen-sdtirol-2ob": a15, - "bozen-südtirol": a15, - "bozen-suedtirol": a15, - bozen: a15, - br: a15, - brescia: a15, - brindisi: a15, - bs: a15, - bt: a15, - "bulsan-sudtirol": a15, - "xn--bulsan-sdtirol-nsb": a15, - "bulsan-südtirol": a15, - "bulsan-suedtirol": a15, - bulsan: a15, - bz: a15, - ca: a15, - cagliari: a15, - caltanissetta: a15, - "campidano-medio": a15, - campidanomedio: a15, - campobasso: a15, - "carbonia-iglesias": a15, - carboniaiglesias: a15, - "carrara-massa": a15, - carraramassa: a15, - caserta: a15, - catania: a15, - catanzaro: a15, - cb: a15, - ce: a15, - "cesena-forli": a15, - "xn--cesena-forl-mcb": a15, - "cesena-forlì": a15, - cesenaforli: a15, - "xn--cesenaforl-i8a": a15, - "cesenaforlì": a15, - ch: a15, - chieti: a15, - ci: a15, - cl: a15, - cn: a15, - co: a15, - como: a15, - cosenza: a15, - cr: a15, - cremona: a15, - crotone: a15, - cs: a15, - ct: a15, - cuneo: a15, - cz: a15, - "dell-ogliastra": a15, - dellogliastra: a15, - en: a15, - enna: a15, - fc: a15, - fe: a15, - fermo: a15, - ferrara: a15, - fg: a15, - fi: a15, - firenze: a15, - florence: a15, - fm: a15, - foggia: a15, - "forli-cesena": a15, - "xn--forl-cesena-fcb": a15, - "forlì-cesena": a15, - forlicesena: a15, - "xn--forlcesena-c8a": a15, - "forlìcesena": a15, - fr: a15, - frosinone: a15, - ge: a15, - genoa: a15, - genova: a15, - go: a15, - gorizia: a15, - gr: a15, - grosseto: a15, - "iglesias-carbonia": a15, - iglesiascarbonia: a15, - im: a15, - imperia: a15, - is: a15, - isernia: a15, - kr: a15, - "la-spezia": a15, - laquila: a15, - laspezia: a15, - latina: a15, - lc: a15, - le: a15, - lecce: a15, - lecco: a15, - li: a15, - livorno: a15, - lo: a15, - lodi: a15, - lt: a15, - lu: a15, - lucca: a15, - macerata: a15, - mantova: a15, - "massa-carrara": a15, - massacarrara: a15, - matera: a15, - mb: a15, - mc: a15, - me: a15, - "medio-campidano": a15, - mediocampidano: a15, - messina: a15, - mi: a15, - milan: a15, - milano: a15, - mn: a15, - mo: a15, - modena: a15, - "monza-brianza": a15, - "monza-e-della-brianza": a15, - monza: a15, - monzabrianza: a15, - monzaebrianza: a15, - monzaedellabrianza: a15, - ms: a15, - mt: a15, - na: a15, - naples: a15, - napoli: a15, - no: a15, - novara: a15, - nu: a15, - nuoro: a15, - og: a15, - ogliastra: a15, - "olbia-tempio": a15, - olbiatempio: a15, - or: a15, - oristano: a15, - ot: a15, - pa: a15, - padova: a15, - padua: a15, - palermo: a15, - parma: a15, - pavia: a15, - pc: a15, - pd: a15, - pe: a15, - perugia: a15, - "pesaro-urbino": a15, - pesarourbino: a15, - pescara: a15, - pg: a15, - pi: a15, - piacenza: a15, - pisa: a15, - pistoia: a15, - pn: a15, - po: a15, - pordenone: a15, - potenza: a15, - pr: a15, - prato: a15, - pt: a15, - pu: a15, - pv: a15, - pz: a15, - ra: a15, - ragusa: a15, - ravenna: a15, - rc: a15, - re: a15, - "reggio-calabria": a15, - "reggio-emilia": a15, - reggiocalabria: a15, - reggioemilia: a15, - rg: a15, - ri: a15, - rieti: a15, - rimini: a15, - rm: a15, - rn: a15, - ro: a15, - roma: a15, - rome: a15, - rovigo: a15, - sa: a15, - salerno: a15, - sassari: a15, - savona: a15, - si: a15, - siena: a15, - siracusa: a15, - so: a15, - sondrio: a15, - sp: a15, - sr: a15, - ss: a15, - suedtirol: a15, - "xn--sdtirol-n2a": a15, - "südtirol": a15, - sv: a15, - ta: a15, - taranto: a15, - te: a15, - "tempio-olbia": a15, - tempioolbia: a15, - teramo: a15, - terni: a15, - tn: a15, - to: a15, - torino: a15, - tp: a15, - tr: a15, - "trani-andria-barletta": a15, - "trani-barletta-andria": a15, - traniandriabarletta: a15, - tranibarlettaandria: a15, - trapani: a15, - trento: a15, - treviso: a15, - trieste: a15, - ts: a15, - turin: a15, - tv: a15, - ud: a15, - udine: a15, - "urbino-pesaro": a15, - urbinopesaro: a15, - va: a15, - varese: a15, - vb: a15, - vc: a15, - ve: a15, - venezia: a15, - venice: a15, - verbania: a15, - vercelli: a15, - verona: a15, - vi: a15, - "vibo-valentia": a15, - vibovalentia: a15, - vicenza: a15, - viterbo: a15, - vr: a15, - vs: a15, - vt: a15, - vv: a15, - blogspot: o16, - ibxos: o16, - iliadboxos: o16, - neen: { - $: 0, - succ: { - jc: o16 + ], + it: [ + 1, + { + gov: a, + edu: a, + abr: a, + abruzzo: a, + "aosta-valley": a, + aostavalley: a, + bas: a, + basilicata: a, + cal: a, + calabria: a, + cam: a, + campania: a, + "emilia-romagna": a, + emiliaromagna: a, + emr: a, + "friuli-v-giulia": a, + "friuli-ve-giulia": a, + "friuli-vegiulia": a, + "friuli-venezia-giulia": a, + "friuli-veneziagiulia": a, + "friuli-vgiulia": a, + "friuliv-giulia": a, + "friulive-giulia": a, + friulivegiulia: a, + "friulivenezia-giulia": a, + friuliveneziagiulia: a, + friulivgiulia: a, + fvg: a, + laz: a, + lazio: a, + lig: a, + liguria: a, + lom: a, + lombardia: a, + lombardy: a, + lucania: a, + mar: a, + marche: a, + mol: a, + molise: a, + piedmont: a, + piemonte: a, + pmn: a, + pug: a, + puglia: a, + sar: a, + sardegna: a, + sardinia: a, + sic: a, + sicilia: a, + sicily: a, + taa: a, + tos: a, + toscana: a, + "trentin-sud-tirol": a, + "xn--trentin-sd-tirol-rzb": a, + "trentin-süd-tirol": a, + "trentin-sudtirol": a, + "xn--trentin-sdtirol-7vb": a, + "trentin-südtirol": a, + "trentin-sued-tirol": a, + "trentin-suedtirol": a, + "trentino-a-adige": a, + "trentino-aadige": a, + "trentino-alto-adige": a, + "trentino-altoadige": a, + "trentino-s-tirol": a, + "trentino-stirol": a, + "trentino-sud-tirol": a, + "xn--trentino-sd-tirol-c3b": a, + "trentino-süd-tirol": a, + "trentino-sudtirol": a, + "xn--trentino-sdtirol-szb": a, + "trentino-südtirol": a, + "trentino-sued-tirol": a, + "trentino-suedtirol": a, + trentino: a, + "trentinoa-adige": a, + trentinoaadige: a, + "trentinoalto-adige": a, + trentinoaltoadige: a, + "trentinos-tirol": a, + trentinostirol: a, + "trentinosud-tirol": a, + "xn--trentinosd-tirol-rzb": a, + "trentinosüd-tirol": a, + trentinosudtirol: a, + "xn--trentinosdtirol-7vb": a, + "trentinosüdtirol": a, + "trentinosued-tirol": a, + trentinosuedtirol: a, + "trentinsud-tirol": a, + "xn--trentinsd-tirol-6vb": a, + "trentinsüd-tirol": a, + trentinsudtirol: a, + "xn--trentinsdtirol-nsb": a, + "trentinsüdtirol": a, + "trentinsued-tirol": a, + trentinsuedtirol: a, + tuscany: a, + umb: a, + umbria: a, + "val-d-aosta": a, + "val-daosta": a, + "vald-aosta": a, + valdaosta: a, + "valle-aosta": a, + "valle-d-aosta": a, + "valle-daosta": a, + valleaosta: a, + "valled-aosta": a, + valledaosta: a, + "vallee-aoste": a, + "xn--valle-aoste-ebb": a, + "vallée-aoste": a, + "vallee-d-aoste": a, + "xn--valle-d-aoste-ehb": a, + "vallée-d-aoste": a, + valleeaoste: a, + "xn--valleaoste-e7a": a, + "valléeaoste": a, + valleedaoste: a, + "xn--valledaoste-ebb": a, + "valléedaoste": a, + vao: a, + vda: a, + ven: a, + veneto: a, + ag: a, + agrigento: a, + al: a, + alessandria: a, + "alto-adige": a, + altoadige: a, + an: a, + ancona: a, + "andria-barletta-trani": a, + "andria-trani-barletta": a, + andriabarlettatrani: a, + andriatranibarletta: a, + ao: a, + aosta: a, + aoste: a, + ap: a, + aq: a, + aquila: a, + ar: a, + arezzo: a, + "ascoli-piceno": a, + ascolipiceno: a, + asti: a, + at: a, + av: a, + avellino: a, + ba: a, + "balsan-sudtirol": a, + "xn--balsan-sdtirol-nsb": a, + "balsan-südtirol": a, + "balsan-suedtirol": a, + balsan: a, + bari: a, + "barletta-trani-andria": a, + barlettatraniandria: a, + belluno: a, + benevento: a, + bergamo: a, + bg: a, + bi: a, + biella: a, + bl: a, + bn: a, + bo: a, + bologna: a, + "bolzano-altoadige": a, + bolzano: a, + "bozen-sudtirol": a, + "xn--bozen-sdtirol-2ob": a, + "bozen-südtirol": a, + "bozen-suedtirol": a, + bozen: a, + br: a, + brescia: a, + brindisi: a, + bs: a, + bt: a, + "bulsan-sudtirol": a, + "xn--bulsan-sdtirol-nsb": a, + "bulsan-südtirol": a, + "bulsan-suedtirol": a, + bulsan: a, + bz: a, + ca: a, + cagliari: a, + caltanissetta: a, + "campidano-medio": a, + campidanomedio: a, + campobasso: a, + "carbonia-iglesias": a, + carboniaiglesias: a, + "carrara-massa": a, + carraramassa: a, + caserta: a, + catania: a, + catanzaro: a, + cb: a, + ce: a, + "cesena-forli": a, + "xn--cesena-forl-mcb": a, + "cesena-forlì": a, + cesenaforli: a, + "xn--cesenaforl-i8a": a, + "cesenaforlì": a, + ch: a, + chieti: a, + ci: a, + cl: a, + cn: a, + co: a, + como: a, + cosenza: a, + cr: a, + cremona: a, + crotone: a, + cs: a, + ct: a, + cuneo: a, + cz: a, + "dell-ogliastra": a, + dellogliastra: a, + en: a, + enna: a, + fc: a, + fe: a, + fermo: a, + ferrara: a, + fg: a, + fi: a, + firenze: a, + florence: a, + fm: a, + foggia: a, + "forli-cesena": a, + "xn--forl-cesena-fcb": a, + "forlì-cesena": a, + forlicesena: a, + "xn--forlcesena-c8a": a, + "forlìcesena": a, + fr: a, + frosinone: a, + ge: a, + genoa: a, + genova: a, + go: a, + gorizia: a, + gr: a, + grosseto: a, + "iglesias-carbonia": a, + iglesiascarbonia: a, + im: a, + imperia: a, + is: a, + isernia: a, + kr: a, + "la-spezia": a, + laquila: a, + laspezia: a, + latina: a, + lc: a, + le: a, + lecce: a, + lecco: a, + li: a, + livorno: a, + lo: a, + lodi: a, + lt: a, + lu: a, + lucca: a, + macerata: a, + mantova: a, + "massa-carrara": a, + massacarrara: a, + matera: a, + mb: a, + mc: a, + me: a, + "medio-campidano": a, + mediocampidano: a, + messina: a, + mi: a, + milan: a, + milano: a, + mn: a, + mo: a, + modena: a, + "monza-brianza": a, + "monza-e-della-brianza": a, + monza: a, + monzabrianza: a, + monzaebrianza: a, + monzaedellabrianza: a, + ms: a, + mt: a, + na: a, + naples: a, + napoli: a, + no: a, + novara: a, + nu: a, + nuoro: a, + og: a, + ogliastra: a, + "olbia-tempio": a, + olbiatempio: a, + or: a, + oristano: a, + ot: a, + pa: a, + padova: a, + padua: a, + palermo: a, + parma: a, + pavia: a, + pc: a, + pd: a, + pe: a, + perugia: a, + "pesaro-urbino": a, + pesarourbino: a, + pescara: a, + pg: a, + pi: a, + piacenza: a, + pisa: a, + pistoia: a, + pn: a, + po: a, + pordenone: a, + potenza: a, + pr: a, + prato: a, + pt: a, + pu: a, + pv: a, + pz: a, + ra: a, + ragusa: a, + ravenna: a, + rc: a, + re: a, + "reggio-calabria": a, + "reggio-emilia": a, + reggiocalabria: a, + reggioemilia: a, + rg: a, + ri: a, + rieti: a, + rimini: a, + rm: a, + rn: a, + ro: a, + roma: a, + rome: a, + rovigo: a, + sa: a, + salerno: a, + sassari: a, + savona: a, + si: a, + siena: a, + siracusa: a, + so: a, + sondrio: a, + sp: a, + sr: a, + ss: a, + suedtirol: a, + "xn--sdtirol-n2a": a, + "südtirol": a, + sv: a, + ta: a, + taranto: a, + te: a, + "tempio-olbia": a, + tempioolbia: a, + teramo: a, + terni: a, + tn: a, + to: a, + torino: a, + tp: a, + tr: a, + "trani-andria-barletta": a, + "trani-barletta-andria": a, + traniandriabarletta: a, + tranibarlettaandria: a, + trapani: a, + trento: a, + treviso: a, + trieste: a, + ts: a, + turin: a, + tv: a, + ud: a, + udine: a, + "urbino-pesaro": a, + urbinopesaro: a, + va: a, + varese: a, + vb: a, + vc: a, + ve: a, + venezia: a, + venice: a, + verbania: a, + vercelli: a, + verona: a, + vi: a, + "vibo-valentia": a, + vibovalentia: a, + vicenza: a, + viterbo: a, + vr: a, + vs: a, + vt: a, + vv: a, + blogspot: o, + ibxos: o, + iliadboxos: o, + neen: [ + 0, + { + jc: o } - }, - tim: { - $: 0, - succ: { - open: { - $: 0, - succ: { - jelastic: t4 + ], + tim: [ + 0, + { + open: [ + 0, + { + jelastic: t } - } + ] } - }, - "16-b": o16, - "32-b": o16, - "64-b": o16, - myspreadshop: o16, - syncloud: o16 + ], + "16-b": o, + "32-b": o, + "64-b": o, + "123homepage": o, + myspreadshop: o, + syncloud: o } - }, - je: { - $: 1, - succ: { - co: a15, - net: a15, - org: a15, - of: o16 + ], + je: [ + 1, + { + co: a, + net: a, + org: a, + of: o } - }, - jm: r6, - jo: { - $: 1, - succ: { - com: a15, - org: a15, - net: a15, - edu: a15, - sch: a15, - gov: a15, - mil: a15, - name: a15 + ], + jm: r, + jo: [ + 1, + { + com: a, + org: a, + net: a, + edu: a, + sch: a, + gov: a, + mil: a, + name: a } - }, - jobs: a15, - jp: { - $: 1, - succ: { - ac: a15, - ad: a15, - co: a15, - ed: a15, - go: a15, - gr: a15, - lg: a15, - ne: { - $: 1, - succ: { - aseinet: j, - gehirn: o16 + ], + jobs: a, + jp: [ + 1, + { + ac: a, + ad: a, + co: a, + ed: a, + go: a, + gr: a, + lg: a, + ne: [ + 1, + { + aseinet: I, + gehirn: o, + ivory: o, + "mail-box": o, + mints: o, + mokuren: o, + opal: o, + sakura: o, + sumomo: o, + topaz: o } - }, - or: a15, - aichi: { - $: 1, - succ: { - aisai: a15, - ama: a15, - anjo: a15, - asuke: a15, - chiryu: a15, - chita: a15, - fuso: a15, - gamagori: a15, - handa: a15, - hazu: a15, - hekinan: a15, - higashiura: a15, - ichinomiya: a15, - inazawa: a15, - inuyama: a15, - isshiki: a15, - iwakura: a15, - kanie: a15, - kariya: a15, - kasugai: a15, - kira: a15, - kiyosu: a15, - komaki: a15, - konan: a15, - kota: a15, - mihama: a15, - miyoshi: a15, - nishio: a15, - nisshin: a15, - obu: a15, - oguchi: a15, - oharu: a15, - okazaki: a15, - owariasahi: a15, - seto: a15, - shikatsu: a15, - shinshiro: a15, - shitara: a15, - tahara: a15, - takahama: a15, - tobishima: a15, - toei: a15, - togo: a15, - tokai: a15, - tokoname: a15, - toyoake: a15, - toyohashi: a15, - toyokawa: a15, - toyone: a15, - toyota: a15, - tsushima: a15, - yatomi: a15 + ], + or: a, + aichi: [ + 1, + { + aisai: a, + ama: a, + anjo: a, + asuke: a, + chiryu: a, + chita: a, + fuso: a, + gamagori: a, + handa: a, + hazu: a, + hekinan: a, + higashiura: a, + ichinomiya: a, + inazawa: a, + inuyama: a, + isshiki: a, + iwakura: a, + kanie: a, + kariya: a, + kasugai: a, + kira: a, + kiyosu: a, + komaki: a, + konan: a, + kota: a, + mihama: a, + miyoshi: a, + nishio: a, + nisshin: a, + obu: a, + oguchi: a, + oharu: a, + okazaki: a, + owariasahi: a, + seto: a, + shikatsu: a, + shinshiro: a, + shitara: a, + tahara: a, + takahama: a, + tobishima: a, + toei: a, + togo: a, + tokai: a, + tokoname: a, + toyoake: a, + toyohashi: a, + toyokawa: a, + toyone: a, + toyota: a, + tsushima: a, + yatomi: a } - }, - akita: { - $: 1, - succ: { - akita: a15, - daisen: a15, - fujisato: a15, - gojome: a15, - hachirogata: a15, - happou: a15, - higashinaruse: a15, - honjo: a15, - honjyo: a15, - ikawa: a15, - kamikoani: a15, - kamioka: a15, - katagami: a15, - kazuno: a15, - kitaakita: a15, - kosaka: a15, - kyowa: a15, - misato: a15, - mitane: a15, - moriyoshi: a15, - nikaho: a15, - noshiro: a15, - odate: a15, - oga: a15, - ogata: a15, - semboku: a15, - yokote: a15, - yurihonjo: a15 + ], + akita: [ + 1, + { + akita: a, + daisen: a, + fujisato: a, + gojome: a, + hachirogata: a, + happou: a, + higashinaruse: a, + honjo: a, + honjyo: a, + ikawa: a, + kamikoani: a, + kamioka: a, + katagami: a, + kazuno: a, + kitaakita: a, + kosaka: a, + kyowa: a, + misato: a, + mitane: a, + moriyoshi: a, + nikaho: a, + noshiro: a, + odate: a, + oga: a, + ogata: a, + semboku: a, + yokote: a, + yurihonjo: a } - }, - aomori: { - $: 1, - succ: { - aomori: a15, - gonohe: a15, - hachinohe: a15, - hashikami: a15, - hiranai: a15, - hirosaki: a15, - itayanagi: a15, - kuroishi: a15, - misawa: a15, - mutsu: a15, - nakadomari: a15, - noheji: a15, - oirase: a15, - owani: a15, - rokunohe: a15, - sannohe: a15, - shichinohe: a15, - shingo: a15, - takko: a15, - towada: a15, - tsugaru: a15, - tsuruta: a15 + ], + aomori: [ + 1, + { + aomori: a, + gonohe: a, + hachinohe: a, + hashikami: a, + hiranai: a, + hirosaki: a, + itayanagi: a, + kuroishi: a, + misawa: a, + mutsu: a, + nakadomari: a, + noheji: a, + oirase: a, + owani: a, + rokunohe: a, + sannohe: a, + shichinohe: a, + shingo: a, + takko: a, + towada: a, + tsugaru: a, + tsuruta: a } - }, - chiba: { - $: 1, - succ: { - abiko: a15, - asahi: a15, - chonan: a15, - chosei: a15, - choshi: a15, - chuo: a15, - funabashi: a15, - futtsu: a15, - hanamigawa: a15, - ichihara: a15, - ichikawa: a15, - ichinomiya: a15, - inzai: a15, - isumi: a15, - kamagaya: a15, - kamogawa: a15, - kashiwa: a15, - katori: a15, - katsuura: a15, - kimitsu: a15, - kisarazu: a15, - kozaki: a15, - kujukuri: a15, - kyonan: a15, - matsudo: a15, - midori: a15, - mihama: a15, - minamiboso: a15, - mobara: a15, - mutsuzawa: a15, - nagara: a15, - nagareyama: a15, - narashino: a15, - narita: a15, - noda: a15, - oamishirasato: a15, - omigawa: a15, - onjuku: a15, - otaki: a15, - sakae: a15, - sakura: a15, - shimofusa: a15, - shirako: a15, - shiroi: a15, - shisui: a15, - sodegaura: a15, - sosa: a15, - tako: a15, - tateyama: a15, - togane: a15, - tohnosho: a15, - tomisato: a15, - urayasu: a15, - yachimata: a15, - yachiyo: a15, - yokaichiba: a15, - yokoshibahikari: a15, - yotsukaido: a15 + ], + chiba: [ + 1, + { + abiko: a, + asahi: a, + chonan: a, + chosei: a, + choshi: a, + chuo: a, + funabashi: a, + futtsu: a, + hanamigawa: a, + ichihara: a, + ichikawa: a, + ichinomiya: a, + inzai: a, + isumi: a, + kamagaya: a, + kamogawa: a, + kashiwa: a, + katori: a, + katsuura: a, + kimitsu: a, + kisarazu: a, + kozaki: a, + kujukuri: a, + kyonan: a, + matsudo: a, + midori: a, + mihama: a, + minamiboso: a, + mobara: a, + mutsuzawa: a, + nagara: a, + nagareyama: a, + narashino: a, + narita: a, + noda: a, + oamishirasato: a, + omigawa: a, + onjuku: a, + otaki: a, + sakae: a, + sakura: a, + shimofusa: a, + shirako: a, + shiroi: a, + shisui: a, + sodegaura: a, + sosa: a, + tako: a, + tateyama: a, + togane: a, + tohnosho: a, + tomisato: a, + urayasu: a, + yachimata: a, + yachiyo: a, + yokaichiba: a, + yokoshibahikari: a, + yotsukaido: a } - }, - ehime: { - $: 1, - succ: { - ainan: a15, - honai: a15, - ikata: a15, - imabari: a15, - iyo: a15, - kamijima: a15, - kihoku: a15, - kumakogen: a15, - masaki: a15, - matsuno: a15, - matsuyama: a15, - namikata: a15, - niihama: a15, - ozu: a15, - saijo: a15, - seiyo: a15, - shikokuchuo: a15, - tobe: a15, - toon: a15, - uchiko: a15, - uwajima: a15, - yawatahama: a15 + ], + ehime: [ + 1, + { + ainan: a, + honai: a, + ikata: a, + imabari: a, + iyo: a, + kamijima: a, + kihoku: a, + kumakogen: a, + masaki: a, + matsuno: a, + matsuyama: a, + namikata: a, + niihama: a, + ozu: a, + saijo: a, + seiyo: a, + shikokuchuo: a, + tobe: a, + toon: a, + uchiko: a, + uwajima: a, + yawatahama: a } - }, - fukui: { - $: 1, - succ: { - echizen: a15, - eiheiji: a15, - fukui: a15, - ikeda: a15, - katsuyama: a15, - mihama: a15, - minamiechizen: a15, - obama: a15, - ohi: a15, - ono: a15, - sabae: a15, - sakai: a15, - takahama: a15, - tsuruga: a15, - wakasa: a15 + ], + fukui: [ + 1, + { + echizen: a, + eiheiji: a, + fukui: a, + ikeda: a, + katsuyama: a, + mihama: a, + minamiechizen: a, + obama: a, + ohi: a, + ono: a, + sabae: a, + sakai: a, + takahama: a, + tsuruga: a, + wakasa: a } - }, - fukuoka: { - $: 1, - succ: { - ashiya: a15, - buzen: a15, - chikugo: a15, - chikuho: a15, - chikujo: a15, - chikushino: a15, - chikuzen: a15, - chuo: a15, - dazaifu: a15, - fukuchi: a15, - hakata: a15, - higashi: a15, - hirokawa: a15, - hisayama: a15, - iizuka: a15, - inatsuki: a15, - kaho: a15, - kasuga: a15, - kasuya: a15, - kawara: a15, - keisen: a15, - koga: a15, - kurate: a15, - kurogi: a15, - kurume: a15, - minami: a15, - miyako: a15, - miyama: a15, - miyawaka: a15, - mizumaki: a15, - munakata: a15, - nakagawa: a15, - nakama: a15, - nishi: a15, - nogata: a15, - ogori: a15, - okagaki: a15, - okawa: a15, - oki: a15, - omuta: a15, - onga: a15, - onojo: a15, - oto: a15, - saigawa: a15, - sasaguri: a15, - shingu: a15, - shinyoshitomi: a15, - shonai: a15, - soeda: a15, - sue: a15, - tachiarai: a15, - tagawa: a15, - takata: a15, - toho: a15, - toyotsu: a15, - tsuiki: a15, - ukiha: a15, - umi: a15, - usui: a15, - yamada: a15, - yame: a15, - yanagawa: a15, - yukuhashi: a15 + ], + fukuoka: [ + 1, + { + ashiya: a, + buzen: a, + chikugo: a, + chikuho: a, + chikujo: a, + chikushino: a, + chikuzen: a, + chuo: a, + dazaifu: a, + fukuchi: a, + hakata: a, + higashi: a, + hirokawa: a, + hisayama: a, + iizuka: a, + inatsuki: a, + kaho: a, + kasuga: a, + kasuya: a, + kawara: a, + keisen: a, + koga: a, + kurate: a, + kurogi: a, + kurume: a, + minami: a, + miyako: a, + miyama: a, + miyawaka: a, + mizumaki: a, + munakata: a, + nakagawa: a, + nakama: a, + nishi: a, + nogata: a, + ogori: a, + okagaki: a, + okawa: a, + oki: a, + omuta: a, + onga: a, + onojo: a, + oto: a, + saigawa: a, + sasaguri: a, + shingu: a, + shinyoshitomi: a, + shonai: a, + soeda: a, + sue: a, + tachiarai: a, + tagawa: a, + takata: a, + toho: a, + toyotsu: a, + tsuiki: a, + ukiha: a, + umi: a, + usui: a, + yamada: a, + yame: a, + yanagawa: a, + yukuhashi: a } - }, - fukushima: { - $: 1, - succ: { - aizubange: a15, - aizumisato: a15, - aizuwakamatsu: a15, - asakawa: a15, - bandai: a15, - date: a15, - fukushima: a15, - furudono: a15, - futaba: a15, - hanawa: a15, - higashi: a15, - hirata: a15, - hirono: a15, - iitate: a15, - inawashiro: a15, - ishikawa: a15, - iwaki: a15, - izumizaki: a15, - kagamiishi: a15, - kaneyama: a15, - kawamata: a15, - kitakata: a15, - kitashiobara: a15, - koori: a15, - koriyama: a15, - kunimi: a15, - miharu: a15, - mishima: a15, - namie: a15, - nango: a15, - nishiaizu: a15, - nishigo: a15, - okuma: a15, - omotego: a15, - ono: a15, - otama: a15, - samegawa: a15, - shimogo: a15, - shirakawa: a15, - showa: a15, - soma: a15, - sukagawa: a15, - taishin: a15, - tamakawa: a15, - tanagura: a15, - tenei: a15, - yabuki: a15, - yamato: a15, - yamatsuri: a15, - yanaizu: a15, - yugawa: a15 + ], + fukushima: [ + 1, + { + aizubange: a, + aizumisato: a, + aizuwakamatsu: a, + asakawa: a, + bandai: a, + date: a, + fukushima: a, + furudono: a, + futaba: a, + hanawa: a, + higashi: a, + hirata: a, + hirono: a, + iitate: a, + inawashiro: a, + ishikawa: a, + iwaki: a, + izumizaki: a, + kagamiishi: a, + kaneyama: a, + kawamata: a, + kitakata: a, + kitashiobara: a, + koori: a, + koriyama: a, + kunimi: a, + miharu: a, + mishima: a, + namie: a, + nango: a, + nishiaizu: a, + nishigo: a, + okuma: a, + omotego: a, + ono: a, + otama: a, + samegawa: a, + shimogo: a, + shirakawa: a, + showa: a, + soma: a, + sukagawa: a, + taishin: a, + tamakawa: a, + tanagura: a, + tenei: a, + yabuki: a, + yamato: a, + yamatsuri: a, + yanaizu: a, + yugawa: a } - }, - gifu: { - $: 1, - succ: { - anpachi: a15, - ena: a15, - gifu: a15, - ginan: a15, - godo: a15, - gujo: a15, - hashima: a15, - hichiso: a15, - hida: a15, - higashishirakawa: a15, - ibigawa: a15, - ikeda: a15, - kakamigahara: a15, - kani: a15, - kasahara: a15, - kasamatsu: a15, - kawaue: a15, - kitagata: a15, - mino: a15, - minokamo: a15, - mitake: a15, - mizunami: a15, - motosu: a15, - nakatsugawa: a15, - ogaki: a15, - sakahogi: a15, - seki: a15, - sekigahara: a15, - shirakawa: a15, - tajimi: a15, - takayama: a15, - tarui: a15, - toki: a15, - tomika: a15, - wanouchi: a15, - yamagata: a15, - yaotsu: a15, - yoro: a15 + ], + gifu: [ + 1, + { + anpachi: a, + ena: a, + gifu: a, + ginan: a, + godo: a, + gujo: a, + hashima: a, + hichiso: a, + hida: a, + higashishirakawa: a, + ibigawa: a, + ikeda: a, + kakamigahara: a, + kani: a, + kasahara: a, + kasamatsu: a, + kawaue: a, + kitagata: a, + mino: a, + minokamo: a, + mitake: a, + mizunami: a, + motosu: a, + nakatsugawa: a, + ogaki: a, + sakahogi: a, + seki: a, + sekigahara: a, + shirakawa: a, + tajimi: a, + takayama: a, + tarui: a, + toki: a, + tomika: a, + wanouchi: a, + yamagata: a, + yaotsu: a, + yoro: a } - }, - gunma: { - $: 1, - succ: { - annaka: a15, - chiyoda: a15, - fujioka: a15, - higashiagatsuma: a15, - isesaki: a15, - itakura: a15, - kanna: a15, - kanra: a15, - katashina: a15, - kawaba: a15, - kiryu: a15, - kusatsu: a15, - maebashi: a15, - meiwa: a15, - midori: a15, - minakami: a15, - naganohara: a15, - nakanojo: a15, - nanmoku: a15, - numata: a15, - oizumi: a15, - ora: a15, - ota: a15, - shibukawa: a15, - shimonita: a15, - shinto: a15, - showa: a15, - takasaki: a15, - takayama: a15, - tamamura: a15, - tatebayashi: a15, - tomioka: a15, - tsukiyono: a15, - tsumagoi: a15, - ueno: a15, - yoshioka: a15 + ], + gunma: [ + 1, + { + annaka: a, + chiyoda: a, + fujioka: a, + higashiagatsuma: a, + isesaki: a, + itakura: a, + kanna: a, + kanra: a, + katashina: a, + kawaba: a, + kiryu: a, + kusatsu: a, + maebashi: a, + meiwa: a, + midori: a, + minakami: a, + naganohara: a, + nakanojo: a, + nanmoku: a, + numata: a, + oizumi: a, + ora: a, + ota: a, + shibukawa: a, + shimonita: a, + shinto: a, + showa: a, + takasaki: a, + takayama: a, + tamamura: a, + tatebayashi: a, + tomioka: a, + tsukiyono: a, + tsumagoi: a, + ueno: a, + yoshioka: a } - }, - hiroshima: { - $: 1, - succ: { - asaminami: a15, - daiwa: a15, - etajima: a15, - fuchu: a15, - fukuyama: a15, - hatsukaichi: a15, - higashihiroshima: a15, - hongo: a15, - jinsekikogen: a15, - kaita: a15, - kui: a15, - kumano: a15, - kure: a15, - mihara: a15, - miyoshi: a15, - naka: a15, - onomichi: a15, - osakikamijima: a15, - otake: a15, - saka: a15, - sera: a15, - seranishi: a15, - shinichi: a15, - shobara: a15, - takehara: a15 + ], + hiroshima: [ + 1, + { + asaminami: a, + daiwa: a, + etajima: a, + fuchu: a, + fukuyama: a, + hatsukaichi: a, + higashihiroshima: a, + hongo: a, + jinsekikogen: a, + kaita: a, + kui: a, + kumano: a, + kure: a, + mihara: a, + miyoshi: a, + naka: a, + onomichi: a, + osakikamijima: a, + otake: a, + saka: a, + sera: a, + seranishi: a, + shinichi: a, + shobara: a, + takehara: a } - }, - hokkaido: { - $: 1, - succ: { - abashiri: a15, - abira: a15, - aibetsu: a15, - akabira: a15, - akkeshi: a15, - asahikawa: a15, - ashibetsu: a15, - ashoro: a15, - assabu: a15, - atsuma: a15, - bibai: a15, - biei: a15, - bifuka: a15, - bihoro: a15, - biratori: a15, - chippubetsu: a15, - chitose: a15, - date: a15, - ebetsu: a15, - embetsu: a15, - eniwa: a15, - erimo: a15, - esan: a15, - esashi: a15, - fukagawa: a15, - fukushima: a15, - furano: a15, - furubira: a15, - haboro: a15, - hakodate: a15, - hamatonbetsu: a15, - hidaka: a15, - higashikagura: a15, - higashikawa: a15, - hiroo: a15, - hokuryu: a15, - hokuto: a15, - honbetsu: a15, - horokanai: a15, - horonobe: a15, - ikeda: a15, - imakane: a15, - ishikari: a15, - iwamizawa: a15, - iwanai: a15, - kamifurano: a15, - kamikawa: a15, - kamishihoro: a15, - kamisunagawa: a15, - kamoenai: a15, - kayabe: a15, - kembuchi: a15, - kikonai: a15, - kimobetsu: a15, - kitahiroshima: a15, - kitami: a15, - kiyosato: a15, - koshimizu: a15, - kunneppu: a15, - kuriyama: a15, - kuromatsunai: a15, - kushiro: a15, - kutchan: a15, - kyowa: a15, - mashike: a15, - matsumae: a15, - mikasa: a15, - minamifurano: a15, - mombetsu: a15, - moseushi: a15, - mukawa: a15, - muroran: a15, - naie: a15, - nakagawa: a15, - nakasatsunai: a15, - nakatombetsu: a15, - nanae: a15, - nanporo: a15, - nayoro: a15, - nemuro: a15, - niikappu: a15, - niki: a15, - nishiokoppe: a15, - noboribetsu: a15, - numata: a15, - obihiro: a15, - obira: a15, - oketo: a15, - okoppe: a15, - otaru: a15, - otobe: a15, - otofuke: a15, - otoineppu: a15, - oumu: a15, - ozora: a15, - pippu: a15, - rankoshi: a15, - rebun: a15, - rikubetsu: a15, - rishiri: a15, - rishirifuji: a15, - saroma: a15, - sarufutsu: a15, - shakotan: a15, - shari: a15, - shibecha: a15, - shibetsu: a15, - shikabe: a15, - shikaoi: a15, - shimamaki: a15, - shimizu: a15, - shimokawa: a15, - shinshinotsu: a15, - shintoku: a15, - shiranuka: a15, - shiraoi: a15, - shiriuchi: a15, - sobetsu: a15, - sunagawa: a15, - taiki: a15, - takasu: a15, - takikawa: a15, - takinoue: a15, - teshikaga: a15, - tobetsu: a15, - tohma: a15, - tomakomai: a15, - tomari: a15, - toya: a15, - toyako: a15, - toyotomi: a15, - toyoura: a15, - tsubetsu: a15, - tsukigata: a15, - urakawa: a15, - urausu: a15, - uryu: a15, - utashinai: a15, - wakkanai: a15, - wassamu: a15, - yakumo: a15, - yoichi: a15 + ], + hokkaido: [ + 1, + { + abashiri: a, + abira: a, + aibetsu: a, + akabira: a, + akkeshi: a, + asahikawa: a, + ashibetsu: a, + ashoro: a, + assabu: a, + atsuma: a, + bibai: a, + biei: a, + bifuka: a, + bihoro: a, + biratori: a, + chippubetsu: a, + chitose: a, + date: a, + ebetsu: a, + embetsu: a, + eniwa: a, + erimo: a, + esan: a, + esashi: a, + fukagawa: a, + fukushima: a, + furano: a, + furubira: a, + haboro: a, + hakodate: a, + hamatonbetsu: a, + hidaka: a, + higashikagura: a, + higashikawa: a, + hiroo: a, + hokuryu: a, + hokuto: a, + honbetsu: a, + horokanai: a, + horonobe: a, + ikeda: a, + imakane: a, + ishikari: a, + iwamizawa: a, + iwanai: a, + kamifurano: a, + kamikawa: a, + kamishihoro: a, + kamisunagawa: a, + kamoenai: a, + kayabe: a, + kembuchi: a, + kikonai: a, + kimobetsu: a, + kitahiroshima: a, + kitami: a, + kiyosato: a, + koshimizu: a, + kunneppu: a, + kuriyama: a, + kuromatsunai: a, + kushiro: a, + kutchan: a, + kyowa: a, + mashike: a, + matsumae: a, + mikasa: a, + minamifurano: a, + mombetsu: a, + moseushi: a, + mukawa: a, + muroran: a, + naie: a, + nakagawa: a, + nakasatsunai: a, + nakatombetsu: a, + nanae: a, + nanporo: a, + nayoro: a, + nemuro: a, + niikappu: a, + niki: a, + nishiokoppe: a, + noboribetsu: a, + numata: a, + obihiro: a, + obira: a, + oketo: a, + okoppe: a, + otaru: a, + otobe: a, + otofuke: a, + otoineppu: a, + oumu: a, + ozora: a, + pippu: a, + rankoshi: a, + rebun: a, + rikubetsu: a, + rishiri: a, + rishirifuji: a, + saroma: a, + sarufutsu: a, + shakotan: a, + shari: a, + shibecha: a, + shibetsu: a, + shikabe: a, + shikaoi: a, + shimamaki: a, + shimizu: a, + shimokawa: a, + shinshinotsu: a, + shintoku: a, + shiranuka: a, + shiraoi: a, + shiriuchi: a, + sobetsu: a, + sunagawa: a, + taiki: a, + takasu: a, + takikawa: a, + takinoue: a, + teshikaga: a, + tobetsu: a, + tohma: a, + tomakomai: a, + tomari: a, + toya: a, + toyako: a, + toyotomi: a, + toyoura: a, + tsubetsu: a, + tsukigata: a, + urakawa: a, + urausu: a, + uryu: a, + utashinai: a, + wakkanai: a, + wassamu: a, + yakumo: a, + yoichi: a } - }, - hyogo: { - $: 1, - succ: { - aioi: a15, - akashi: a15, - ako: a15, - amagasaki: a15, - aogaki: a15, - asago: a15, - ashiya: a15, - awaji: a15, - fukusaki: a15, - goshiki: a15, - harima: a15, - himeji: a15, - ichikawa: a15, - inagawa: a15, - itami: a15, - kakogawa: a15, - kamigori: a15, - kamikawa: a15, - kasai: a15, - kasuga: a15, - kawanishi: a15, - miki: a15, - minamiawaji: a15, - nishinomiya: a15, - nishiwaki: a15, - ono: a15, - sanda: a15, - sannan: a15, - sasayama: a15, - sayo: a15, - shingu: a15, - shinonsen: a15, - shiso: a15, - sumoto: a15, - taishi: a15, - taka: a15, - takarazuka: a15, - takasago: a15, - takino: a15, - tamba: a15, - tatsuno: a15, - toyooka: a15, - yabu: a15, - yashiro: a15, - yoka: a15, - yokawa: a15 + ], + hyogo: [ + 1, + { + aioi: a, + akashi: a, + ako: a, + amagasaki: a, + aogaki: a, + asago: a, + ashiya: a, + awaji: a, + fukusaki: a, + goshiki: a, + harima: a, + himeji: a, + ichikawa: a, + inagawa: a, + itami: a, + kakogawa: a, + kamigori: a, + kamikawa: a, + kasai: a, + kasuga: a, + kawanishi: a, + miki: a, + minamiawaji: a, + nishinomiya: a, + nishiwaki: a, + ono: a, + sanda: a, + sannan: a, + sasayama: a, + sayo: a, + shingu: a, + shinonsen: a, + shiso: a, + sumoto: a, + taishi: a, + taka: a, + takarazuka: a, + takasago: a, + takino: a, + tamba: a, + tatsuno: a, + toyooka: a, + yabu: a, + yashiro: a, + yoka: a, + yokawa: a } - }, - ibaraki: { - $: 1, - succ: { - ami: a15, - asahi: a15, - bando: a15, - chikusei: a15, - daigo: a15, - fujishiro: a15, - hitachi: a15, - hitachinaka: a15, - hitachiomiya: a15, - hitachiota: a15, - ibaraki: a15, - ina: a15, - inashiki: a15, - itako: a15, - iwama: a15, - joso: a15, - kamisu: a15, - kasama: a15, - kashima: a15, - kasumigaura: a15, - koga: a15, - miho: a15, - mito: a15, - moriya: a15, - naka: a15, - namegata: a15, - oarai: a15, - ogawa: a15, - omitama: a15, - ryugasaki: a15, - sakai: a15, - sakuragawa: a15, - shimodate: a15, - shimotsuma: a15, - shirosato: a15, - sowa: a15, - suifu: a15, - takahagi: a15, - tamatsukuri: a15, - tokai: a15, - tomobe: a15, - tone: a15, - toride: a15, - tsuchiura: a15, - tsukuba: a15, - uchihara: a15, - ushiku: a15, - yachiyo: a15, - yamagata: a15, - yawara: a15, - yuki: a15 + ], + ibaraki: [ + 1, + { + ami: a, + asahi: a, + bando: a, + chikusei: a, + daigo: a, + fujishiro: a, + hitachi: a, + hitachinaka: a, + hitachiomiya: a, + hitachiota: a, + ibaraki: a, + ina: a, + inashiki: a, + itako: a, + iwama: a, + joso: a, + kamisu: a, + kasama: a, + kashima: a, + kasumigaura: a, + koga: a, + miho: a, + mito: a, + moriya: a, + naka: a, + namegata: a, + oarai: a, + ogawa: a, + omitama: a, + ryugasaki: a, + sakai: a, + sakuragawa: a, + shimodate: a, + shimotsuma: a, + shirosato: a, + sowa: a, + suifu: a, + takahagi: a, + tamatsukuri: a, + tokai: a, + tomobe: a, + tone: a, + toride: a, + tsuchiura: a, + tsukuba: a, + uchihara: a, + ushiku: a, + yachiyo: a, + yamagata: a, + yawara: a, + yuki: a } - }, - ishikawa: { - $: 1, - succ: { - anamizu: a15, - hakui: a15, - hakusan: a15, - kaga: a15, - kahoku: a15, - kanazawa: a15, - kawakita: a15, - komatsu: a15, - nakanoto: a15, - nanao: a15, - nomi: a15, - nonoichi: a15, - noto: a15, - shika: a15, - suzu: a15, - tsubata: a15, - tsurugi: a15, - uchinada: a15, - wajima: a15 + ], + ishikawa: [ + 1, + { + anamizu: a, + hakui: a, + hakusan: a, + kaga: a, + kahoku: a, + kanazawa: a, + kawakita: a, + komatsu: a, + nakanoto: a, + nanao: a, + nomi: a, + nonoichi: a, + noto: a, + shika: a, + suzu: a, + tsubata: a, + tsurugi: a, + uchinada: a, + wajima: a } - }, - iwate: { - $: 1, - succ: { - fudai: a15, - fujisawa: a15, - hanamaki: a15, - hiraizumi: a15, - hirono: a15, - ichinohe: a15, - ichinoseki: a15, - iwaizumi: a15, - iwate: a15, - joboji: a15, - kamaishi: a15, - kanegasaki: a15, - karumai: a15, - kawai: a15, - kitakami: a15, - kuji: a15, - kunohe: a15, - kuzumaki: a15, - miyako: a15, - mizusawa: a15, - morioka: a15, - ninohe: a15, - noda: a15, - ofunato: a15, - oshu: a15, - otsuchi: a15, - rikuzentakata: a15, - shiwa: a15, - shizukuishi: a15, - sumita: a15, - tanohata: a15, - tono: a15, - yahaba: a15, - yamada: a15 + ], + iwate: [ + 1, + { + fudai: a, + fujisawa: a, + hanamaki: a, + hiraizumi: a, + hirono: a, + ichinohe: a, + ichinoseki: a, + iwaizumi: a, + iwate: a, + joboji: a, + kamaishi: a, + kanegasaki: a, + karumai: a, + kawai: a, + kitakami: a, + kuji: a, + kunohe: a, + kuzumaki: a, + miyako: a, + mizusawa: a, + morioka: a, + ninohe: a, + noda: a, + ofunato: a, + oshu: a, + otsuchi: a, + rikuzentakata: a, + shiwa: a, + shizukuishi: a, + sumita: a, + tanohata: a, + tono: a, + yahaba: a, + yamada: a } - }, - kagawa: { - $: 1, - succ: { - ayagawa: a15, - higashikagawa: a15, - kanonji: a15, - kotohira: a15, - manno: a15, - marugame: a15, - mitoyo: a15, - naoshima: a15, - sanuki: a15, - tadotsu: a15, - takamatsu: a15, - tonosho: a15, - uchinomi: a15, - utazu: a15, - zentsuji: a15 + ], + kagawa: [ + 1, + { + ayagawa: a, + higashikagawa: a, + kanonji: a, + kotohira: a, + manno: a, + marugame: a, + mitoyo: a, + naoshima: a, + sanuki: a, + tadotsu: a, + takamatsu: a, + tonosho: a, + uchinomi: a, + utazu: a, + zentsuji: a } - }, - kagoshima: { - $: 1, - succ: { - akune: a15, - amami: a15, - hioki: a15, - isa: a15, - isen: a15, - izumi: a15, - kagoshima: a15, - kanoya: a15, - kawanabe: a15, - kinko: a15, - kouyama: a15, - makurazaki: a15, - matsumoto: a15, - minamitane: a15, - nakatane: a15, - nishinoomote: a15, - satsumasendai: a15, - soo: a15, - tarumizu: a15, - yusui: a15 + ], + kagoshima: [ + 1, + { + akune: a, + amami: a, + hioki: a, + isa: a, + isen: a, + izumi: a, + kagoshima: a, + kanoya: a, + kawanabe: a, + kinko: a, + kouyama: a, + makurazaki: a, + matsumoto: a, + minamitane: a, + nakatane: a, + nishinoomote: a, + satsumasendai: a, + soo: a, + tarumizu: a, + yusui: a } - }, - kanagawa: { - $: 1, - succ: { - aikawa: a15, - atsugi: a15, - ayase: a15, - chigasaki: a15, - ebina: a15, - fujisawa: a15, - hadano: a15, - hakone: a15, - hiratsuka: a15, - isehara: a15, - kaisei: a15, - kamakura: a15, - kiyokawa: a15, - matsuda: a15, - minamiashigara: a15, - miura: a15, - nakai: a15, - ninomiya: a15, - odawara: a15, - oi: a15, - oiso: a15, - sagamihara: a15, - samukawa: a15, - tsukui: a15, - yamakita: a15, - yamato: a15, - yokosuka: a15, - yugawara: a15, - zama: a15, - zushi: a15 + ], + kanagawa: [ + 1, + { + aikawa: a, + atsugi: a, + ayase: a, + chigasaki: a, + ebina: a, + fujisawa: a, + hadano: a, + hakone: a, + hiratsuka: a, + isehara: a, + kaisei: a, + kamakura: a, + kiyokawa: a, + matsuda: a, + minamiashigara: a, + miura: a, + nakai: a, + ninomiya: a, + odawara: a, + oi: a, + oiso: a, + sagamihara: a, + samukawa: a, + tsukui: a, + yamakita: a, + yamato: a, + yokosuka: a, + yugawara: a, + zama: a, + zushi: a } - }, - kochi: { - $: 1, - succ: { - aki: a15, - geisei: a15, - hidaka: a15, - higashitsuno: a15, - ino: a15, - kagami: a15, - kami: a15, - kitagawa: a15, - kochi: a15, - mihara: a15, - motoyama: a15, - muroto: a15, - nahari: a15, - nakamura: a15, - nankoku: a15, - nishitosa: a15, - niyodogawa: a15, - ochi: a15, - okawa: a15, - otoyo: a15, - otsuki: a15, - sakawa: a15, - sukumo: a15, - susaki: a15, - tosa: a15, - tosashimizu: a15, - toyo: a15, - tsuno: a15, - umaji: a15, - yasuda: a15, - yusuhara: a15 + ], + kochi: [ + 1, + { + aki: a, + geisei: a, + hidaka: a, + higashitsuno: a, + ino: a, + kagami: a, + kami: a, + kitagawa: a, + kochi: a, + mihara: a, + motoyama: a, + muroto: a, + nahari: a, + nakamura: a, + nankoku: a, + nishitosa: a, + niyodogawa: a, + ochi: a, + okawa: a, + otoyo: a, + otsuki: a, + sakawa: a, + sukumo: a, + susaki: a, + tosa: a, + tosashimizu: a, + toyo: a, + tsuno: a, + umaji: a, + yasuda: a, + yusuhara: a } - }, - kumamoto: { - $: 1, - succ: { - amakusa: a15, - arao: a15, - aso: a15, - choyo: a15, - gyokuto: a15, - kamiamakusa: a15, - kikuchi: a15, - kumamoto: a15, - mashiki: a15, - mifune: a15, - minamata: a15, - minamioguni: a15, - nagasu: a15, - nishihara: a15, - oguni: a15, - ozu: a15, - sumoto: a15, - takamori: a15, - uki: a15, - uto: a15, - yamaga: a15, - yamato: a15, - yatsushiro: a15 + ], + kumamoto: [ + 1, + { + amakusa: a, + arao: a, + aso: a, + choyo: a, + gyokuto: a, + kamiamakusa: a, + kikuchi: a, + kumamoto: a, + mashiki: a, + mifune: a, + minamata: a, + minamioguni: a, + nagasu: a, + nishihara: a, + oguni: a, + ozu: a, + sumoto: a, + takamori: a, + uki: a, + uto: a, + yamaga: a, + yamato: a, + yatsushiro: a } - }, - kyoto: { - $: 1, - succ: { - ayabe: a15, - fukuchiyama: a15, - higashiyama: a15, - ide: a15, - ine: a15, - joyo: a15, - kameoka: a15, - kamo: a15, - kita: a15, - kizu: a15, - kumiyama: a15, - kyotamba: a15, - kyotanabe: a15, - kyotango: a15, - maizuru: a15, - minami: a15, - minamiyamashiro: a15, - miyazu: a15, - muko: a15, - nagaokakyo: a15, - nakagyo: a15, - nantan: a15, - oyamazaki: a15, - sakyo: a15, - seika: a15, - tanabe: a15, - uji: a15, - ujitawara: a15, - wazuka: a15, - yamashina: a15, - yawata: a15 + ], + kyoto: [ + 1, + { + ayabe: a, + fukuchiyama: a, + higashiyama: a, + ide: a, + ine: a, + joyo: a, + kameoka: a, + kamo: a, + kita: a, + kizu: a, + kumiyama: a, + kyotamba: a, + kyotanabe: a, + kyotango: a, + maizuru: a, + minami: a, + minamiyamashiro: a, + miyazu: a, + muko: a, + nagaokakyo: a, + nakagyo: a, + nantan: a, + oyamazaki: a, + sakyo: a, + seika: a, + tanabe: a, + uji: a, + ujitawara: a, + wazuka: a, + yamashina: a, + yawata: a } - }, - mie: { - $: 1, - succ: { - asahi: a15, - inabe: a15, - ise: a15, - kameyama: a15, - kawagoe: a15, - kiho: a15, - kisosaki: a15, - kiwa: a15, - komono: a15, - kumano: a15, - kuwana: a15, - matsusaka: a15, - meiwa: a15, - mihama: a15, - minamiise: a15, - misugi: a15, - miyama: a15, - nabari: a15, - shima: a15, - suzuka: a15, - tado: a15, - taiki: a15, - taki: a15, - tamaki: a15, - toba: a15, - tsu: a15, - udono: a15, - ureshino: a15, - watarai: a15, - yokkaichi: a15 + ], + mie: [ + 1, + { + asahi: a, + inabe: a, + ise: a, + kameyama: a, + kawagoe: a, + kiho: a, + kisosaki: a, + kiwa: a, + komono: a, + kumano: a, + kuwana: a, + matsusaka: a, + meiwa: a, + mihama: a, + minamiise: a, + misugi: a, + miyama: a, + nabari: a, + shima: a, + suzuka: a, + tado: a, + taiki: a, + taki: a, + tamaki: a, + toba: a, + tsu: a, + udono: a, + ureshino: a, + watarai: a, + yokkaichi: a } - }, - miyagi: { - $: 1, - succ: { - furukawa: a15, - higashimatsushima: a15, - ishinomaki: a15, - iwanuma: a15, - kakuda: a15, - kami: a15, - kawasaki: a15, - marumori: a15, - matsushima: a15, - minamisanriku: a15, - misato: a15, - murata: a15, - natori: a15, - ogawara: a15, - ohira: a15, - onagawa: a15, - osaki: a15, - rifu: a15, - semine: a15, - shibata: a15, - shichikashuku: a15, - shikama: a15, - shiogama: a15, - shiroishi: a15, - tagajo: a15, - taiwa: a15, - tome: a15, - tomiya: a15, - wakuya: a15, - watari: a15, - yamamoto: a15, - zao: a15 + ], + miyagi: [ + 1, + { + furukawa: a, + higashimatsushima: a, + ishinomaki: a, + iwanuma: a, + kakuda: a, + kami: a, + kawasaki: a, + marumori: a, + matsushima: a, + minamisanriku: a, + misato: a, + murata: a, + natori: a, + ogawara: a, + ohira: a, + onagawa: a, + osaki: a, + rifu: a, + semine: a, + shibata: a, + shichikashuku: a, + shikama: a, + shiogama: a, + shiroishi: a, + tagajo: a, + taiwa: a, + tome: a, + tomiya: a, + wakuya: a, + watari: a, + yamamoto: a, + zao: a } - }, - miyazaki: { - $: 1, - succ: { - aya: a15, - ebino: a15, - gokase: a15, - hyuga: a15, - kadogawa: a15, - kawaminami: a15, - kijo: a15, - kitagawa: a15, - kitakata: a15, - kitaura: a15, - kobayashi: a15, - kunitomi: a15, - kushima: a15, - mimata: a15, - miyakonojo: a15, - miyazaki: a15, - morotsuka: a15, - nichinan: a15, - nishimera: a15, - nobeoka: a15, - saito: a15, - shiiba: a15, - shintomi: a15, - takaharu: a15, - takanabe: a15, - takazaki: a15, - tsuno: a15 + ], + miyazaki: [ + 1, + { + aya: a, + ebino: a, + gokase: a, + hyuga: a, + kadogawa: a, + kawaminami: a, + kijo: a, + kitagawa: a, + kitakata: a, + kitaura: a, + kobayashi: a, + kunitomi: a, + kushima: a, + mimata: a, + miyakonojo: a, + miyazaki: a, + morotsuka: a, + nichinan: a, + nishimera: a, + nobeoka: a, + saito: a, + shiiba: a, + shintomi: a, + takaharu: a, + takanabe: a, + takazaki: a, + tsuno: a } - }, - nagano: { - $: 1, - succ: { - achi: a15, - agematsu: a15, - anan: a15, - aoki: a15, - asahi: a15, - azumino: a15, - chikuhoku: a15, - chikuma: a15, - chino: a15, - fujimi: a15, - hakuba: a15, - hara: a15, - hiraya: a15, - iida: a15, - iijima: a15, - iiyama: a15, - iizuna: a15, - ikeda: a15, - ikusaka: a15, - ina: a15, - karuizawa: a15, - kawakami: a15, - kiso: a15, - kisofukushima: a15, - kitaaiki: a15, - komagane: a15, - komoro: a15, - matsukawa: a15, - matsumoto: a15, - miasa: a15, - minamiaiki: a15, - minamimaki: a15, - minamiminowa: a15, - minowa: a15, - miyada: a15, - miyota: a15, - mochizuki: a15, - nagano: a15, - nagawa: a15, - nagiso: a15, - nakagawa: a15, - nakano: a15, - nozawaonsen: a15, - obuse: a15, - ogawa: a15, - okaya: a15, - omachi: a15, - omi: a15, - ookuwa: a15, - ooshika: a15, - otaki: a15, - otari: a15, - sakae: a15, - sakaki: a15, - saku: a15, - sakuho: a15, - shimosuwa: a15, - shinanomachi: a15, - shiojiri: a15, - suwa: a15, - suzaka: a15, - takagi: a15, - takamori: a15, - takayama: a15, - tateshina: a15, - tatsuno: a15, - togakushi: a15, - togura: a15, - tomi: a15, - ueda: a15, - wada: a15, - yamagata: a15, - yamanouchi: a15, - yasaka: a15, - yasuoka: a15 + ], + nagano: [ + 1, + { + achi: a, + agematsu: a, + anan: a, + aoki: a, + asahi: a, + azumino: a, + chikuhoku: a, + chikuma: a, + chino: a, + fujimi: a, + hakuba: a, + hara: a, + hiraya: a, + iida: a, + iijima: a, + iiyama: a, + iizuna: a, + ikeda: a, + ikusaka: a, + ina: a, + karuizawa: a, + kawakami: a, + kiso: a, + kisofukushima: a, + kitaaiki: a, + komagane: a, + komoro: a, + matsukawa: a, + matsumoto: a, + miasa: a, + minamiaiki: a, + minamimaki: a, + minamiminowa: a, + minowa: a, + miyada: a, + miyota: a, + mochizuki: a, + nagano: a, + nagawa: a, + nagiso: a, + nakagawa: a, + nakano: a, + nozawaonsen: a, + obuse: a, + ogawa: a, + okaya: a, + omachi: a, + omi: a, + ookuwa: a, + ooshika: a, + otaki: a, + otari: a, + sakae: a, + sakaki: a, + saku: a, + sakuho: a, + shimosuwa: a, + shinanomachi: a, + shiojiri: a, + suwa: a, + suzaka: a, + takagi: a, + takamori: a, + takayama: a, + tateshina: a, + tatsuno: a, + togakushi: a, + togura: a, + tomi: a, + ueda: a, + wada: a, + yamagata: a, + yamanouchi: a, + yasaka: a, + yasuoka: a } - }, - nagasaki: { - $: 1, - succ: { - chijiwa: a15, - futsu: a15, - goto: a15, - hasami: a15, - hirado: a15, - iki: a15, - isahaya: a15, - kawatana: a15, - kuchinotsu: a15, - matsuura: a15, - nagasaki: a15, - obama: a15, - omura: a15, - oseto: a15, - saikai: a15, - sasebo: a15, - seihi: a15, - shimabara: a15, - shinkamigoto: a15, - togitsu: a15, - tsushima: a15, - unzen: a15 + ], + nagasaki: [ + 1, + { + chijiwa: a, + futsu: a, + goto: a, + hasami: a, + hirado: a, + iki: a, + isahaya: a, + kawatana: a, + kuchinotsu: a, + matsuura: a, + nagasaki: a, + obama: a, + omura: a, + oseto: a, + saikai: a, + sasebo: a, + seihi: a, + shimabara: a, + shinkamigoto: a, + togitsu: a, + tsushima: a, + unzen: a } - }, - nara: { - $: 1, - succ: { - ando: a15, - gose: a15, - heguri: a15, - higashiyoshino: a15, - ikaruga: a15, - ikoma: a15, - kamikitayama: a15, - kanmaki: a15, - kashiba: a15, - kashihara: a15, - katsuragi: a15, - kawai: a15, - kawakami: a15, - kawanishi: a15, - koryo: a15, - kurotaki: a15, - mitsue: a15, - miyake: a15, - nara: a15, - nosegawa: a15, - oji: a15, - ouda: a15, - oyodo: a15, - sakurai: a15, - sango: a15, - shimoichi: a15, - shimokitayama: a15, - shinjo: a15, - soni: a15, - takatori: a15, - tawaramoto: a15, - tenkawa: a15, - tenri: a15, - uda: a15, - yamatokoriyama: a15, - yamatotakada: a15, - yamazoe: a15, - yoshino: a15 + ], + nara: [ + 1, + { + ando: a, + gose: a, + heguri: a, + higashiyoshino: a, + ikaruga: a, + ikoma: a, + kamikitayama: a, + kanmaki: a, + kashiba: a, + kashihara: a, + katsuragi: a, + kawai: a, + kawakami: a, + kawanishi: a, + koryo: a, + kurotaki: a, + mitsue: a, + miyake: a, + nara: a, + nosegawa: a, + oji: a, + ouda: a, + oyodo: a, + sakurai: a, + sango: a, + shimoichi: a, + shimokitayama: a, + shinjo: a, + soni: a, + takatori: a, + tawaramoto: a, + tenkawa: a, + tenri: a, + uda: a, + yamatokoriyama: a, + yamatotakada: a, + yamazoe: a, + yoshino: a } - }, - niigata: { - $: 1, - succ: { - aga: a15, - agano: a15, - gosen: a15, - itoigawa: a15, - izumozaki: a15, - joetsu: a15, - kamo: a15, - kariwa: a15, - kashiwazaki: a15, - minamiuonuma: a15, - mitsuke: a15, - muika: a15, - murakami: a15, - myoko: a15, - nagaoka: a15, - niigata: a15, - ojiya: a15, - omi: a15, - sado: a15, - sanjo: a15, - seiro: a15, - seirou: a15, - sekikawa: a15, - shibata: a15, - tagami: a15, - tainai: a15, - tochio: a15, - tokamachi: a15, - tsubame: a15, - tsunan: a15, - uonuma: a15, - yahiko: a15, - yoita: a15, - yuzawa: a15 + ], + niigata: [ + 1, + { + aga: a, + agano: a, + gosen: a, + itoigawa: a, + izumozaki: a, + joetsu: a, + kamo: a, + kariwa: a, + kashiwazaki: a, + minamiuonuma: a, + mitsuke: a, + muika: a, + murakami: a, + myoko: a, + nagaoka: a, + niigata: a, + ojiya: a, + omi: a, + sado: a, + sanjo: a, + seiro: a, + seirou: a, + sekikawa: a, + shibata: a, + tagami: a, + tainai: a, + tochio: a, + tokamachi: a, + tsubame: a, + tsunan: a, + uonuma: a, + yahiko: a, + yoita: a, + yuzawa: a } - }, - oita: { - $: 1, - succ: { - beppu: a15, - bungoono: a15, - bungotakada: a15, - hasama: a15, - hiji: a15, - himeshima: a15, - hita: a15, - kamitsue: a15, - kokonoe: a15, - kuju: a15, - kunisaki: a15, - kusu: a15, - oita: a15, - saiki: a15, - taketa: a15, - tsukumi: a15, - usa: a15, - usuki: a15, - yufu: a15 + ], + oita: [ + 1, + { + beppu: a, + bungoono: a, + bungotakada: a, + hasama: a, + hiji: a, + himeshima: a, + hita: a, + kamitsue: a, + kokonoe: a, + kuju: a, + kunisaki: a, + kusu: a, + oita: a, + saiki: a, + taketa: a, + tsukumi: a, + usa: a, + usuki: a, + yufu: a } - }, - okayama: { - $: 1, - succ: { - akaiwa: a15, - asakuchi: a15, - bizen: a15, - hayashima: a15, - ibara: a15, - kagamino: a15, - kasaoka: a15, - kibichuo: a15, - kumenan: a15, - kurashiki: a15, - maniwa: a15, - misaki: a15, - nagi: a15, - niimi: a15, - nishiawakura: a15, - okayama: a15, - satosho: a15, - setouchi: a15, - shinjo: a15, - shoo: a15, - soja: a15, - takahashi: a15, - tamano: a15, - tsuyama: a15, - wake: a15, - yakage: a15 + ], + okayama: [ + 1, + { + akaiwa: a, + asakuchi: a, + bizen: a, + hayashima: a, + ibara: a, + kagamino: a, + kasaoka: a, + kibichuo: a, + kumenan: a, + kurashiki: a, + maniwa: a, + misaki: a, + nagi: a, + niimi: a, + nishiawakura: a, + okayama: a, + satosho: a, + setouchi: a, + shinjo: a, + shoo: a, + soja: a, + takahashi: a, + tamano: a, + tsuyama: a, + wake: a, + yakage: a } - }, - okinawa: { - $: 1, - succ: { - aguni: a15, - ginowan: a15, - ginoza: a15, - gushikami: a15, - haebaru: a15, - higashi: a15, - hirara: a15, - iheya: a15, - ishigaki: a15, - ishikawa: a15, - itoman: a15, - izena: a15, - kadena: a15, - kin: a15, - kitadaito: a15, - kitanakagusuku: a15, - kumejima: a15, - kunigami: a15, - minamidaito: a15, - motobu: a15, - nago: a15, - naha: a15, - nakagusuku: a15, - nakijin: a15, - nanjo: a15, - nishihara: a15, - ogimi: a15, - okinawa: a15, - onna: a15, - shimoji: a15, - taketomi: a15, - tarama: a15, - tokashiki: a15, - tomigusuku: a15, - tonaki: a15, - urasoe: a15, - uruma: a15, - yaese: a15, - yomitan: a15, - yonabaru: a15, - yonaguni: a15, - zamami: a15 + ], + okinawa: [ + 1, + { + aguni: a, + ginowan: a, + ginoza: a, + gushikami: a, + haebaru: a, + higashi: a, + hirara: a, + iheya: a, + ishigaki: a, + ishikawa: a, + itoman: a, + izena: a, + kadena: a, + kin: a, + kitadaito: a, + kitanakagusuku: a, + kumejima: a, + kunigami: a, + minamidaito: a, + motobu: a, + nago: a, + naha: a, + nakagusuku: a, + nakijin: a, + nanjo: a, + nishihara: a, + ogimi: a, + okinawa: a, + onna: a, + shimoji: a, + taketomi: a, + tarama: a, + tokashiki: a, + tomigusuku: a, + tonaki: a, + urasoe: a, + uruma: a, + yaese: a, + yomitan: a, + yonabaru: a, + yonaguni: a, + zamami: a } - }, - osaka: { - $: 1, - succ: { - abeno: a15, - chihayaakasaka: a15, - chuo: a15, - daito: a15, - fujiidera: a15, - habikino: a15, - hannan: a15, - higashiosaka: a15, - higashisumiyoshi: a15, - higashiyodogawa: a15, - hirakata: a15, - ibaraki: a15, - ikeda: a15, - izumi: a15, - izumiotsu: a15, - izumisano: a15, - kadoma: a15, - kaizuka: a15, - kanan: a15, - kashiwara: a15, - katano: a15, - kawachinagano: a15, - kishiwada: a15, - kita: a15, - kumatori: a15, - matsubara: a15, - minato: a15, - minoh: a15, - misaki: a15, - moriguchi: a15, - neyagawa: a15, - nishi: a15, - nose: a15, - osakasayama: a15, - sakai: a15, - sayama: a15, - sennan: a15, - settsu: a15, - shijonawate: a15, - shimamoto: a15, - suita: a15, - tadaoka: a15, - taishi: a15, - tajiri: a15, - takaishi: a15, - takatsuki: a15, - tondabayashi: a15, - toyonaka: a15, - toyono: a15, - yao: a15 + ], + osaka: [ + 1, + { + abeno: a, + chihayaakasaka: a, + chuo: a, + daito: a, + fujiidera: a, + habikino: a, + hannan: a, + higashiosaka: a, + higashisumiyoshi: a, + higashiyodogawa: a, + hirakata: a, + ibaraki: a, + ikeda: a, + izumi: a, + izumiotsu: a, + izumisano: a, + kadoma: a, + kaizuka: a, + kanan: a, + kashiwara: a, + katano: a, + kawachinagano: a, + kishiwada: a, + kita: a, + kumatori: a, + matsubara: a, + minato: a, + minoh: a, + misaki: a, + moriguchi: a, + neyagawa: a, + nishi: a, + nose: a, + osakasayama: a, + sakai: a, + sayama: a, + sennan: a, + settsu: a, + shijonawate: a, + shimamoto: a, + suita: a, + tadaoka: a, + taishi: a, + tajiri: a, + takaishi: a, + takatsuki: a, + tondabayashi: a, + toyonaka: a, + toyono: a, + yao: a } - }, - saga: { - $: 1, - succ: { - ariake: a15, - arita: a15, - fukudomi: a15, - genkai: a15, - hamatama: a15, - hizen: a15, - imari: a15, - kamimine: a15, - kanzaki: a15, - karatsu: a15, - kashima: a15, - kitagata: a15, - kitahata: a15, - kiyama: a15, - kouhoku: a15, - kyuragi: a15, - nishiarita: a15, - ogi: a15, - omachi: a15, - ouchi: a15, - saga: a15, - shiroishi: a15, - taku: a15, - tara: a15, - tosu: a15, - yoshinogari: a15 + ], + saga: [ + 1, + { + ariake: a, + arita: a, + fukudomi: a, + genkai: a, + hamatama: a, + hizen: a, + imari: a, + kamimine: a, + kanzaki: a, + karatsu: a, + kashima: a, + kitagata: a, + kitahata: a, + kiyama: a, + kouhoku: a, + kyuragi: a, + nishiarita: a, + ogi: a, + omachi: a, + ouchi: a, + saga: a, + shiroishi: a, + taku: a, + tara: a, + tosu: a, + yoshinogari: a } - }, - saitama: { - $: 1, - succ: { - arakawa: a15, - asaka: a15, - chichibu: a15, - fujimi: a15, - fujimino: a15, - fukaya: a15, - hanno: a15, - hanyu: a15, - hasuda: a15, - hatogaya: a15, - hatoyama: a15, - hidaka: a15, - higashichichibu: a15, - higashimatsuyama: a15, - honjo: a15, - ina: a15, - iruma: a15, - iwatsuki: a15, - kamiizumi: a15, - kamikawa: a15, - kamisato: a15, - kasukabe: a15, - kawagoe: a15, - kawaguchi: a15, - kawajima: a15, - kazo: a15, - kitamoto: a15, - koshigaya: a15, - kounosu: a15, - kuki: a15, - kumagaya: a15, - matsubushi: a15, - minano: a15, - misato: a15, - miyashiro: a15, - miyoshi: a15, - moroyama: a15, - nagatoro: a15, - namegawa: a15, - niiza: a15, - ogano: a15, - ogawa: a15, - ogose: a15, - okegawa: a15, - omiya: a15, - otaki: a15, - ranzan: a15, - ryokami: a15, - saitama: a15, - sakado: a15, - satte: a15, - sayama: a15, - shiki: a15, - shiraoka: a15, - soka: a15, - sugito: a15, - toda: a15, - tokigawa: a15, - tokorozawa: a15, - tsurugashima: a15, - urawa: a15, - warabi: a15, - yashio: a15, - yokoze: a15, - yono: a15, - yorii: a15, - yoshida: a15, - yoshikawa: a15, - yoshimi: a15 + ], + saitama: [ + 1, + { + arakawa: a, + asaka: a, + chichibu: a, + fujimi: a, + fujimino: a, + fukaya: a, + hanno: a, + hanyu: a, + hasuda: a, + hatogaya: a, + hatoyama: a, + hidaka: a, + higashichichibu: a, + higashimatsuyama: a, + honjo: a, + ina: a, + iruma: a, + iwatsuki: a, + kamiizumi: a, + kamikawa: a, + kamisato: a, + kasukabe: a, + kawagoe: a, + kawaguchi: a, + kawajima: a, + kazo: a, + kitamoto: a, + koshigaya: a, + kounosu: a, + kuki: a, + kumagaya: a, + matsubushi: a, + minano: a, + misato: a, + miyashiro: a, + miyoshi: a, + moroyama: a, + nagatoro: a, + namegawa: a, + niiza: a, + ogano: a, + ogawa: a, + ogose: a, + okegawa: a, + omiya: a, + otaki: a, + ranzan: a, + ryokami: a, + saitama: a, + sakado: a, + satte: a, + sayama: a, + shiki: a, + shiraoka: a, + soka: a, + sugito: a, + toda: a, + tokigawa: a, + tokorozawa: a, + tsurugashima: a, + urawa: a, + warabi: a, + yashio: a, + yokoze: a, + yono: a, + yorii: a, + yoshida: a, + yoshikawa: a, + yoshimi: a } - }, - shiga: { - $: 1, - succ: { - aisho: a15, - gamo: a15, - higashiomi: a15, - hikone: a15, - koka: a15, - konan: a15, - kosei: a15, - koto: a15, - kusatsu: a15, - maibara: a15, - moriyama: a15, - nagahama: a15, - nishiazai: a15, - notogawa: a15, - omihachiman: a15, - otsu: a15, - ritto: a15, - ryuoh: a15, - takashima: a15, - takatsuki: a15, - torahime: a15, - toyosato: a15, - yasu: a15 + ], + shiga: [ + 1, + { + aisho: a, + gamo: a, + higashiomi: a, + hikone: a, + koka: a, + konan: a, + kosei: a, + koto: a, + kusatsu: a, + maibara: a, + moriyama: a, + nagahama: a, + nishiazai: a, + notogawa: a, + omihachiman: a, + otsu: a, + ritto: a, + ryuoh: a, + takashima: a, + takatsuki: a, + torahime: a, + toyosato: a, + yasu: a } - }, - shimane: { - $: 1, - succ: { - akagi: a15, - ama: a15, - gotsu: a15, - hamada: a15, - higashiizumo: a15, - hikawa: a15, - hikimi: a15, - izumo: a15, - kakinoki: a15, - masuda: a15, - matsue: a15, - misato: a15, - nishinoshima: a15, - ohda: a15, - okinoshima: a15, - okuizumo: a15, - shimane: a15, - tamayu: a15, - tsuwano: a15, - unnan: a15, - yakumo: a15, - yasugi: a15, - yatsuka: a15 + ], + shimane: [ + 1, + { + akagi: a, + ama: a, + gotsu: a, + hamada: a, + higashiizumo: a, + hikawa: a, + hikimi: a, + izumo: a, + kakinoki: a, + masuda: a, + matsue: a, + misato: a, + nishinoshima: a, + ohda: a, + okinoshima: a, + okuizumo: a, + shimane: a, + tamayu: a, + tsuwano: a, + unnan: a, + yakumo: a, + yasugi: a, + yatsuka: a } - }, - shizuoka: { - $: 1, - succ: { - arai: a15, - atami: a15, - fuji: a15, - fujieda: a15, - fujikawa: a15, - fujinomiya: a15, - fukuroi: a15, - gotemba: a15, - haibara: a15, - hamamatsu: a15, - higashiizu: a15, - ito: a15, - iwata: a15, - izu: a15, - izunokuni: a15, - kakegawa: a15, - kannami: a15, - kawanehon: a15, - kawazu: a15, - kikugawa: a15, - kosai: a15, - makinohara: a15, - matsuzaki: a15, - minamiizu: a15, - mishima: a15, - morimachi: a15, - nishiizu: a15, - numazu: a15, - omaezaki: a15, - shimada: a15, - shimizu: a15, - shimoda: a15, - shizuoka: a15, - susono: a15, - yaizu: a15, - yoshida: a15 + ], + shizuoka: [ + 1, + { + arai: a, + atami: a, + fuji: a, + fujieda: a, + fujikawa: a, + fujinomiya: a, + fukuroi: a, + gotemba: a, + haibara: a, + hamamatsu: a, + higashiizu: a, + ito: a, + iwata: a, + izu: a, + izunokuni: a, + kakegawa: a, + kannami: a, + kawanehon: a, + kawazu: a, + kikugawa: a, + kosai: a, + makinohara: a, + matsuzaki: a, + minamiizu: a, + mishima: a, + morimachi: a, + nishiizu: a, + numazu: a, + omaezaki: a, + shimada: a, + shimizu: a, + shimoda: a, + shizuoka: a, + susono: a, + yaizu: a, + yoshida: a } - }, - tochigi: { - $: 1, - succ: { - ashikaga: a15, - bato: a15, - haga: a15, - ichikai: a15, - iwafune: a15, - kaminokawa: a15, - kanuma: a15, - karasuyama: a15, - kuroiso: a15, - mashiko: a15, - mibu: a15, - moka: a15, - motegi: a15, - nasu: a15, - nasushiobara: a15, - nikko: a15, - nishikata: a15, - nogi: a15, - ohira: a15, - ohtawara: a15, - oyama: a15, - sakura: a15, - sano: a15, - shimotsuke: a15, - shioya: a15, - takanezawa: a15, - tochigi: a15, - tsuga: a15, - ujiie: a15, - utsunomiya: a15, - yaita: a15 + ], + tochigi: [ + 1, + { + ashikaga: a, + bato: a, + haga: a, + ichikai: a, + iwafune: a, + kaminokawa: a, + kanuma: a, + karasuyama: a, + kuroiso: a, + mashiko: a, + mibu: a, + moka: a, + motegi: a, + nasu: a, + nasushiobara: a, + nikko: a, + nishikata: a, + nogi: a, + ohira: a, + ohtawara: a, + oyama: a, + sakura: a, + sano: a, + shimotsuke: a, + shioya: a, + takanezawa: a, + tochigi: a, + tsuga: a, + ujiie: a, + utsunomiya: a, + yaita: a } - }, - tokushima: { - $: 1, - succ: { - aizumi: a15, - anan: a15, - ichiba: a15, - itano: a15, - kainan: a15, - komatsushima: a15, - matsushige: a15, - mima: a15, - minami: a15, - miyoshi: a15, - mugi: a15, - nakagawa: a15, - naruto: a15, - sanagochi: a15, - shishikui: a15, - tokushima: a15, - wajiki: a15 + ], + tokushima: [ + 1, + { + aizumi: a, + anan: a, + ichiba: a, + itano: a, + kainan: a, + komatsushima: a, + matsushige: a, + mima: a, + minami: a, + miyoshi: a, + mugi: a, + nakagawa: a, + naruto: a, + sanagochi: a, + shishikui: a, + tokushima: a, + wajiki: a } - }, - tokyo: { - $: 1, - succ: { - adachi: a15, - akiruno: a15, - akishima: a15, - aogashima: a15, - arakawa: a15, - bunkyo: a15, - chiyoda: a15, - chofu: a15, - chuo: a15, - edogawa: a15, - fuchu: a15, - fussa: a15, - hachijo: a15, - hachioji: a15, - hamura: a15, - higashikurume: a15, - higashimurayama: a15, - higashiyamato: a15, - hino: a15, - hinode: a15, - hinohara: a15, - inagi: a15, - itabashi: a15, - katsushika: a15, - kita: a15, - kiyose: a15, - kodaira: a15, - koganei: a15, - kokubunji: a15, - komae: a15, - koto: a15, - kouzushima: a15, - kunitachi: a15, - machida: a15, - meguro: a15, - minato: a15, - mitaka: a15, - mizuho: a15, - musashimurayama: a15, - musashino: a15, - nakano: a15, - nerima: a15, - ogasawara: a15, - okutama: a15, - ome: a15, - oshima: a15, - ota: a15, - setagaya: a15, - shibuya: a15, - shinagawa: a15, - shinjuku: a15, - suginami: a15, - sumida: a15, - tachikawa: a15, - taito: a15, - tama: a15, - toshima: a15 + ], + tokyo: [ + 1, + { + adachi: a, + akiruno: a, + akishima: a, + aogashima: a, + arakawa: a, + bunkyo: a, + chiyoda: a, + chofu: a, + chuo: a, + edogawa: a, + fuchu: a, + fussa: a, + hachijo: a, + hachioji: a, + hamura: a, + higashikurume: a, + higashimurayama: a, + higashiyamato: a, + hino: a, + hinode: a, + hinohara: a, + inagi: a, + itabashi: a, + katsushika: a, + kita: a, + kiyose: a, + kodaira: a, + koganei: a, + kokubunji: a, + komae: a, + koto: a, + kouzushima: a, + kunitachi: a, + machida: a, + meguro: a, + minato: a, + mitaka: a, + mizuho: a, + musashimurayama: a, + musashino: a, + nakano: a, + nerima: a, + ogasawara: a, + okutama: a, + ome: a, + oshima: a, + ota: a, + setagaya: a, + shibuya: a, + shinagawa: a, + shinjuku: a, + suginami: a, + sumida: a, + tachikawa: a, + taito: a, + tama: a, + toshima: a } - }, - tottori: { - $: 1, - succ: { - chizu: a15, - hino: a15, - kawahara: a15, - koge: a15, - kotoura: a15, - misasa: a15, - nanbu: a15, - nichinan: a15, - sakaiminato: a15, - tottori: a15, - wakasa: a15, - yazu: a15, - yonago: a15 + ], + tottori: [ + 1, + { + chizu: a, + hino: a, + kawahara: a, + koge: a, + kotoura: a, + misasa: a, + nanbu: a, + nichinan: a, + sakaiminato: a, + tottori: a, + wakasa: a, + yazu: a, + yonago: a } - }, - toyama: { - $: 1, - succ: { - asahi: a15, - fuchu: a15, - fukumitsu: a15, - funahashi: a15, - himi: a15, - imizu: a15, - inami: a15, - johana: a15, - kamiichi: a15, - kurobe: a15, - nakaniikawa: a15, - namerikawa: a15, - nanto: a15, - nyuzen: a15, - oyabe: a15, - taira: a15, - takaoka: a15, - tateyama: a15, - toga: a15, - tonami: a15, - toyama: a15, - unazuki: a15, - uozu: a15, - yamada: a15 + ], + toyama: [ + 1, + { + asahi: a, + fuchu: a, + fukumitsu: a, + funahashi: a, + himi: a, + imizu: a, + inami: a, + johana: a, + kamiichi: a, + kurobe: a, + nakaniikawa: a, + namerikawa: a, + nanto: a, + nyuzen: a, + oyabe: a, + taira: a, + takaoka: a, + tateyama: a, + toga: a, + tonami: a, + toyama: a, + unazuki: a, + uozu: a, + yamada: a } - }, - wakayama: { - $: 1, - succ: { - arida: a15, - aridagawa: a15, - gobo: a15, - hashimoto: a15, - hidaka: a15, - hirogawa: a15, - inami: a15, - iwade: a15, - kainan: a15, - kamitonda: a15, - katsuragi: a15, - kimino: a15, - kinokawa: a15, - kitayama: a15, - koya: a15, - koza: a15, - kozagawa: a15, - kudoyama: a15, - kushimoto: a15, - mihama: a15, - misato: a15, - nachikatsuura: a15, - shingu: a15, - shirahama: a15, - taiji: a15, - tanabe: a15, - wakayama: a15, - yuasa: a15, - yura: a15 + ], + wakayama: [ + 1, + { + arida: a, + aridagawa: a, + gobo: a, + hashimoto: a, + hidaka: a, + hirogawa: a, + inami: a, + iwade: a, + kainan: a, + kamitonda: a, + katsuragi: a, + kimino: a, + kinokawa: a, + kitayama: a, + koya: a, + koza: a, + kozagawa: a, + kudoyama: a, + kushimoto: a, + mihama: a, + misato: a, + nachikatsuura: a, + shingu: a, + shirahama: a, + taiji: a, + tanabe: a, + wakayama: a, + yuasa: a, + yura: a } - }, - yamagata: { - $: 1, - succ: { - asahi: a15, - funagata: a15, - higashine: a15, - iide: a15, - kahoku: a15, - kaminoyama: a15, - kaneyama: a15, - kawanishi: a15, - mamurogawa: a15, - mikawa: a15, - murayama: a15, - nagai: a15, - nakayama: a15, - nanyo: a15, - nishikawa: a15, - obanazawa: a15, - oe: a15, - oguni: a15, - ohkura: a15, - oishida: a15, - sagae: a15, - sakata: a15, - sakegawa: a15, - shinjo: a15, - shirataka: a15, - shonai: a15, - takahata: a15, - tendo: a15, - tozawa: a15, - tsuruoka: a15, - yamagata: a15, - yamanobe: a15, - yonezawa: a15, - yuza: a15 + ], + yamagata: [ + 1, + { + asahi: a, + funagata: a, + higashine: a, + iide: a, + kahoku: a, + kaminoyama: a, + kaneyama: a, + kawanishi: a, + mamurogawa: a, + mikawa: a, + murayama: a, + nagai: a, + nakayama: a, + nanyo: a, + nishikawa: a, + obanazawa: a, + oe: a, + oguni: a, + ohkura: a, + oishida: a, + sagae: a, + sakata: a, + sakegawa: a, + shinjo: a, + shirataka: a, + shonai: a, + takahata: a, + tendo: a, + tozawa: a, + tsuruoka: a, + yamagata: a, + yamanobe: a, + yonezawa: a, + yuza: a } - }, - yamaguchi: { - $: 1, - succ: { - abu: a15, - hagi: a15, - hikari: a15, - hofu: a15, - iwakuni: a15, - kudamatsu: a15, - mitou: a15, - nagato: a15, - oshima: a15, - shimonoseki: a15, - shunan: a15, - tabuse: a15, - tokuyama: a15, - toyota: a15, - ube: a15, - yuu: a15 + ], + yamaguchi: [ + 1, + { + abu: a, + hagi: a, + hikari: a, + hofu: a, + iwakuni: a, + kudamatsu: a, + mitou: a, + nagato: a, + oshima: a, + shimonoseki: a, + shunan: a, + tabuse: a, + tokuyama: a, + toyota: a, + ube: a, + yuu: a } - }, - yamanashi: { - $: 1, - succ: { - chuo: a15, - doshi: a15, - fuefuki: a15, - fujikawa: a15, - fujikawaguchiko: a15, - fujiyoshida: a15, - hayakawa: a15, - hokuto: a15, - ichikawamisato: a15, - kai: a15, - kofu: a15, - koshu: a15, - kosuge: a15, - "minami-alps": a15, - minobu: a15, - nakamichi: a15, - nanbu: a15, - narusawa: a15, - nirasaki: a15, - nishikatsura: a15, - oshino: a15, - otsuki: a15, - showa: a15, - tabayama: a15, - tsuru: a15, - uenohara: a15, - yamanakako: a15, - yamanashi: a15 + ], + yamanashi: [ + 1, + { + chuo: a, + doshi: a, + fuefuki: a, + fujikawa: a, + fujikawaguchiko: a, + fujiyoshida: a, + hayakawa: a, + hokuto: a, + ichikawamisato: a, + kai: a, + kofu: a, + koshu: a, + kosuge: a, + "minami-alps": a, + minobu: a, + nakamichi: a, + nanbu: a, + narusawa: a, + nirasaki: a, + nishikatsura: a, + oshino: a, + otsuki: a, + showa: a, + tabayama: a, + tsuru: a, + uenohara: a, + yamanakako: a, + yamanashi: a } - }, - "xn--4pvxs": a15, - "栃木": a15, - "xn--vgu402c": a15, - "愛知": a15, - "xn--c3s14m": a15, - "愛媛": a15, - "xn--f6qx53a": a15, - "兵庫": a15, - "xn--8pvr4u": a15, - "熊本": a15, - "xn--uist22h": a15, - "茨城": a15, - "xn--djrs72d6uy": a15, - "北海道": a15, - "xn--mkru45i": a15, - "千葉": a15, - "xn--0trq7p7nn": a15, - "和歌山": a15, - "xn--8ltr62k": a15, - "長崎": a15, - "xn--2m4a15e": a15, - "長野": a15, - "xn--efvn9s": a15, - "新潟": a15, - "xn--32vp30h": a15, - "青森": a15, - "xn--4it797k": a15, - "静岡": a15, - "xn--1lqs71d": a15, - "東京": a15, - "xn--5rtp49c": a15, - "石川": a15, - "xn--5js045d": a15, - "埼玉": a15, - "xn--ehqz56n": a15, - "三重": a15, - "xn--1lqs03n": a15, - "京都": a15, - "xn--qqqt11m": a15, - "佐賀": a15, - "xn--kbrq7o": a15, - "大分": a15, - "xn--pssu33l": a15, - "大阪": a15, - "xn--ntsq17g": a15, - "奈良": a15, - "xn--uisz3g": a15, - "宮城": a15, - "xn--6btw5a": a15, - "宮崎": a15, - "xn--1ctwo": a15, - "富山": a15, - "xn--6orx2r": a15, - "山口": a15, - "xn--rht61e": a15, - "山形": a15, - "xn--rht27z": a15, - "山梨": a15, - "xn--djty4k": a15, - "岩手": a15, - "xn--nit225k": a15, - "岐阜": a15, - "xn--rht3d": a15, - "岡山": a15, - "xn--klty5x": a15, - "島根": a15, - "xn--kltx9a": a15, - "広島": a15, - "xn--kltp7d": a15, - "徳島": a15, - "xn--uuwu58a": a15, - "沖縄": a15, - "xn--zbx025d": a15, - "滋賀": a15, - "xn--ntso0iqx3a": a15, - "神奈川": a15, - "xn--elqq16h": a15, - "福井": a15, - "xn--4it168d": a15, - "福岡": a15, - "xn--klt787d": a15, - "福島": a15, - "xn--rny31h": a15, - "秋田": a15, - "xn--7t0a264c": a15, - "群馬": a15, - "xn--5rtq34k": a15, - "香川": a15, - "xn--k7yn95e": a15, - "高知": a15, - "xn--tor131o": a15, - "鳥取": a15, - "xn--d5qv7z876c": a15, - "鹿児島": a15, - kawasaki: r6, - kitakyushu: r6, - kobe: r6, - nagoya: r6, - sapporo: r6, - sendai: r6, - yokohama: r6, - buyshop: o16, - fashionstore: o16, - handcrafted: o16, - kawaiishop: o16, - supersale: o16, - theshop: o16, - usercontent: o16, - angry: o16, - babyblue: o16, - babymilk: o16, - backdrop: o16, - bambina: o16, - bitter: o16, - blush: o16, - boo: o16, - boy: o16, - boyfriend: o16, - but: o16, - candypop: o16, - capoo: o16, - catfood: o16, - cheap: o16, - chicappa: o16, - chillout: o16, - chips: o16, - chowder: o16, - chu: o16, - ciao: o16, - cocotte: o16, - coolblog: o16, - cranky: o16, - cutegirl: o16, - daa: o16, - deca: o16, - deci: o16, - digick: o16, - egoism: o16, - fakefur: o16, - fem: o16, - flier: o16, - floppy: o16, - fool: o16, - frenchkiss: o16, - girlfriend: o16, - girly: o16, - gloomy: o16, - gonna: o16, - greater: o16, - hacca: o16, - heavy: o16, - her: o16, - hiho: o16, - hippy: o16, - holy: o16, - hungry: o16, - icurus: o16, - itigo: o16, - jellybean: o16, - kikirara: o16, - kill: o16, - kilo: o16, - kuron: o16, - littlestar: o16, - lolipopmc: o16, - lolitapunk: o16, - lomo: o16, - lovepop: o16, - lovesick: o16, - main: o16, - mods: o16, - mond: o16, - mongolian: o16, - moo: o16, - namaste: o16, - nikita: o16, - nobushi: o16, - noor: o16, - oops: o16, - parallel: o16, - parasite: o16, - pecori: o16, - peewee: o16, - penne: o16, - pepper: o16, - perma: o16, - pigboat: o16, - pinoko: o16, - punyu: o16, - pupu: o16, - pussycat: o16, - pya: o16, - raindrop: o16, - readymade: o16, - sadist: o16, - schoolbus: o16, - secret: o16, - staba: o16, - stripper: o16, - sub: o16, - sunnyday: o16, - thick: o16, - tonkotsu: o16, - under: o16, - upper: o16, - velvet: o16, - verse: o16, - versus: o16, - vivian: o16, - watson: o16, - weblike: o16, - whitesnow: o16, - zombie: o16, - blogspot: o16 + ], + "xn--4pvxs": a, + "栃木": a, + "xn--vgu402c": a, + "愛知": a, + "xn--c3s14m": a, + "愛媛": a, + "xn--f6qx53a": a, + "兵庫": a, + "xn--8pvr4u": a, + "熊本": a, + "xn--uist22h": a, + "茨城": a, + "xn--djrs72d6uy": a, + "北海道": a, + "xn--mkru45i": a, + "千葉": a, + "xn--0trq7p7nn": a, + "和歌山": a, + "xn--8ltr62k": a, + "長崎": a, + "xn--2m4a15e": a, + "長野": a, + "xn--efvn9s": a, + "新潟": a, + "xn--32vp30h": a, + "青森": a, + "xn--4it797k": a, + "静岡": a, + "xn--1lqs71d": a, + "東京": a, + "xn--5rtp49c": a, + "石川": a, + "xn--5js045d": a, + "埼玉": a, + "xn--ehqz56n": a, + "三重": a, + "xn--1lqs03n": a, + "京都": a, + "xn--qqqt11m": a, + "佐賀": a, + "xn--kbrq7o": a, + "大分": a, + "xn--pssu33l": a, + "大阪": a, + "xn--ntsq17g": a, + "奈良": a, + "xn--uisz3g": a, + "宮城": a, + "xn--6btw5a": a, + "宮崎": a, + "xn--1ctwo": a, + "富山": a, + "xn--6orx2r": a, + "山口": a, + "xn--rht61e": a, + "山形": a, + "xn--rht27z": a, + "山梨": a, + "xn--djty4k": a, + "岩手": a, + "xn--nit225k": a, + "岐阜": a, + "xn--rht3d": a, + "岡山": a, + "xn--klty5x": a, + "島根": a, + "xn--kltx9a": a, + "広島": a, + "xn--kltp7d": a, + "徳島": a, + "xn--uuwu58a": a, + "沖縄": a, + "xn--zbx025d": a, + "滋賀": a, + "xn--ntso0iqx3a": a, + "神奈川": a, + "xn--elqq16h": a, + "福井": a, + "xn--4it168d": a, + "福岡": a, + "xn--klt787d": a, + "福島": a, + "xn--rny31h": a, + "秋田": a, + "xn--7t0a264c": a, + "群馬": a, + "xn--5rtq34k": a, + "香川": a, + "xn--k7yn95e": a, + "高知": a, + "xn--tor131o": a, + "鳥取": a, + "xn--d5qv7z876c": a, + "鹿児島": a, + kawasaki: r, + kitakyushu: r, + kobe: r, + nagoya: r, + sapporo: r, + sendai: r, + yokohama: r, + buyshop: o, + fashionstore: o, + handcrafted: o, + kawaiishop: o, + supersale: o, + theshop: o, + usercontent: o, + angry: o, + babyblue: o, + babymilk: o, + backdrop: o, + bambina: o, + bitter: o, + blush: o, + boo: o, + boy: o, + boyfriend: o, + but: o, + candypop: o, + capoo: o, + catfood: o, + cheap: o, + chicappa: o, + chillout: o, + chips: o, + chowder: o, + chu: o, + ciao: o, + cocotte: o, + coolblog: o, + cranky: o, + cutegirl: o, + daa: o, + deca: o, + deci: o, + digick: o, + egoism: o, + fakefur: o, + fem: o, + flier: o, + floppy: o, + fool: o, + frenchkiss: o, + girlfriend: o, + girly: o, + gloomy: o, + gonna: o, + greater: o, + hacca: o, + heavy: o, + her: o, + hiho: o, + hippy: o, + holy: o, + hungry: o, + icurus: o, + itigo: o, + jellybean: o, + kikirara: o, + kill: o, + kilo: o, + kuron: o, + littlestar: o, + lolipopmc: o, + lolitapunk: o, + lomo: o, + lovepop: o, + lovesick: o, + main: o, + mods: o, + mond: o, + mongolian: o, + moo: o, + namaste: o, + nikita: o, + nobushi: o, + noor: o, + oops: o, + parallel: o, + parasite: o, + pecori: o, + peewee: o, + penne: o, + pepper: o, + perma: o, + pigboat: o, + pinoko: o, + punyu: o, + pupu: o, + pussycat: o, + pya: o, + raindrop: o, + readymade: o, + sadist: o, + schoolbus: o, + secret: o, + staba: o, + stripper: o, + sub: o, + sunnyday: o, + thick: o, + tonkotsu: o, + under: o, + upper: o, + velvet: o, + verse: o, + versus: o, + vivian: o, + watson: o, + weblike: o, + whitesnow: o, + zombie: o, + blogspot: o, + "2-d": o, + bona: o, + crap: o, + daynight: o, + eek: o, + flop: o, + halfmoon: o, + jeez: o, + matrix: o, + mimoza: o, + netgamers: o, + nyanta: o, + o0o0: o, + rdy: o, + rgr: o, + rulez: o, + sakurastorage: [ + 0, + { + isk01: u, + isk02: u + } + ], + saloon: o, + sblo: o, + skr: o, + tank: o, + "uh-oh": o, + undo: o, + webaccel: [ + 0, + { + rs: o, + user: o + } + ], + websozai: o, + xii: o } - }, - ke: { - $: 1, - succ: { - ac: a15, - co: s8, - go: a15, - info: a15, - me: a15, - mobi: a15, - ne: a15, - or: a15, - sc: a15 + ], + ke: [ + 1, + { + ac: a, + co: n, + go: a, + info: a, + me: a, + mobi: a, + ne: a, + or: a, + sc: a } - }, - kg: { - $: 1, - succ: { - org: a15, - net: a15, - com: a15, - edu: a15, - gov: a15, - mil: a15, - blog: o16, - io: o16, - jp: o16, - tv: o16, - uk: o16, - us: o16 + ], + kg: [ + 1, + { + org: a, + net: a, + com: a, + edu: a, + gov: a, + mil: a, + blog: o, + io: o, + jp: o, + tv: o, + uk: o, + us: o } - }, - kh: r6, - ki: P, - km: { - $: 1, - succ: { - org: a15, - nom: a15, - gov: a15, - prd: a15, - tm: a15, - edu: a15, - mil: a15, - ass: a15, - com: a15, - coop: a15, - asso: a15, - presse: a15, - medecin: a15, - notaires: a15, - pharmaciens: a15, - veterinaire: a15, - gouv: a15 + ], + kh: r, + ki: H, + km: [ + 1, + { + org: a, + nom: a, + gov: a, + prd: a, + tm: a, + edu: a, + mil: a, + ass: a, + com: a, + coop: a, + asso: a, + presse: a, + medecin: a, + notaires: a, + pharmaciens: a, + veterinaire: a, + gouv: a } - }, - kn: { - $: 1, - succ: { - net: a15, - org: a15, - edu: a15, - gov: a15 + ], + kn: [ + 1, + { + net: a, + org: a, + edu: a, + gov: a } - }, - kp: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - org: a15, - rep: a15, - tra: a15 + ], + kp: [ + 1, + { + com: a, + edu: a, + gov: a, + org: a, + rep: a, + tra: a } - }, - kr: { - $: 1, - succ: { - ac: a15, - co: a15, - es: a15, - go: a15, - hs: a15, - kg: a15, - mil: a15, - ms: a15, - ne: a15, - or: a15, - pe: a15, - re: a15, - sc: a15, - busan: a15, - chungbuk: a15, - chungnam: a15, - daegu: a15, - daejeon: a15, - gangwon: a15, - gwangju: a15, - gyeongbuk: a15, - gyeonggi: a15, - gyeongnam: a15, - incheon: a15, - jeju: a15, - jeonbuk: a15, - jeonnam: a15, - seoul: a15, - ulsan: a15, - blogspot: o16 + ], + kr: [ + 1, + { + ac: a, + co: a, + es: a, + go: a, + hs: a, + kg: a, + mil: a, + ms: a, + ne: a, + or: a, + pe: a, + re: a, + sc: a, + busan: a, + chungbuk: a, + chungnam: a, + daegu: a, + daejeon: a, + gangwon: a, + gwangju: a, + gyeongbuk: a, + gyeonggi: a, + gyeongnam: a, + incheon: a, + jeju: a, + jeonbuk: a, + jeonnam: a, + seoul: a, + ulsan: a, + blogspot: o } - }, - kw: { - $: 1, - succ: { - com: a15, - edu: a15, - emb: a15, - gov: a15, - ind: a15, - net: a15, - org: a15 + ], + kw: [ + 1, + { + com: a, + edu: a, + emb: a, + gov: a, + ind: a, + net: a, + org: a } - }, - ky: w, - kz: { - $: 1, - succ: { - org: a15, - edu: a15, - net: a15, - gov: a15, - mil: a15, - com: a15, - jcloud: o16, - kazteleport: { - $: 0, - succ: { - upaas: o16 + ], + ky: z, + kz: [ + 1, + { + org: a, + edu: a, + net: a, + gov: a, + mil: a, + com: a, + jcloud: o, + kazteleport: [ + 0, + { + upaas: o } - } + ] } - }, - la: { - $: 1, - succ: { - int: a15, - net: a15, - info: a15, - edu: a15, - gov: a15, - per: a15, - com: a15, - org: a15, - bnr: o16, - c: o16 + ], + la: [ + 1, + { + int: a, + net: a, + info: a, + edu: a, + gov: a, + per: a, + com: a, + org: a, + bnr: o, + c: o } - }, - lb: i12, - lc: { - $: 1, - succ: { - com: a15, - net: a15, - co: a15, - org: a15, - edu: a15, - gov: a15, - oy: o16 + ], + lb: i, + lc: [ + 1, + { + com: a, + net: a, + co: a, + org: a, + edu: a, + gov: a, + oy: o } - }, - li: { - $: 1, - succ: { - blogspot: o16, - caa: o16 + ], + li: [ + 1, + { + blogspot: o, + caa: o } - }, - lk: { - $: 1, - succ: { - gov: a15, - sch: a15, - net: a15, - int: a15, - com: a15, - org: a15, - edu: a15, - ngo: a15, - soc: a15, - web: a15, - ltd: a15, - assn: a15, - grp: a15, - hotel: a15, - ac: a15 + ], + lk: [ + 1, + { + gov: a, + sch: a, + net: a, + int: a, + com: a, + org: a, + edu: a, + ngo: a, + soc: a, + web: a, + ltd: a, + assn: a, + grp: a, + hotel: a, + ac: a } - }, - lr: i12, - ls: { - $: 1, - succ: { - ac: a15, - biz: a15, - co: a15, - edu: a15, - gov: a15, - info: a15, - net: a15, - org: a15, - sc: a15, - de: o16 + ], + lr: i, + ls: [ + 1, + { + ac: a, + biz: a, + co: a, + edu: a, + gov: a, + info: a, + net: a, + org: a, + sc: a, + de: o } - }, - lt: A, - lu: s8, - lv: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - org: a15, - mil: a15, - id: a15, - net: a15, - asn: a15, - conf: a15 + ], + lt: W, + lu: [ + 1, + { + blogspot: o, + "123website": o } - }, - ly: { - $: 1, - succ: { - com: a15, - net: a15, - gov: a15, - plc: a15, - edu: a15, - sch: a15, - med: a15, - org: a15, - id: a15 + ], + lv: [ + 1, + { + com: a, + edu: a, + gov: a, + org: a, + mil: a, + id: a, + net: a, + asn: a, + conf: a } - }, - ma: { - $: 1, - succ: { - co: a15, - net: a15, - gov: a15, - org: a15, - ac: a15, - press: a15 + ], + ly: [ + 1, + { + com: a, + net: a, + gov: a, + plc: a, + edu: a, + sch: a, + med: a, + org: a, + id: a } - }, - mc: { - $: 1, - succ: { - tm: a15, - asso: a15 + ], + ma: [ + 1, + { + co: a, + net: a, + gov: a, + org: a, + ac: a, + press: a } - }, - md: { - $: 1, - succ: { - blogspot: o16, - at: o16, - de: o16, - jp: o16, - to: o16 + ], + mc: [ + 1, + { + tm: a, + asso: a } - }, - me: { - $: 1, - succ: { - co: a15, - net: a15, - org: a15, - edu: a15, - ac: a15, - gov: a15, - its: a15, - priv: a15, - c66: o16, - daplie: { - $: 2, - succ: { - localhost: o16 - } - }, - edgestack: o16, - filegear: o16, - "filegear-au": o16, - "filegear-de": o16, - "filegear-gb": o16, - "filegear-ie": o16, - "filegear-jp": o16, - "filegear-sg": o16, - glitch: o16, - ravendb: o16, - lohmus: o16, - barsy: o16, - mcpe: o16, - mcdir: o16, - soundcast: o16, - tcp4: o16, - brasilia: o16, - ddns: o16, - dnsfor: o16, - hopto: o16, - loginto: o16, - noip: o16, - webhop: o16, - vp4: o16, - diskstation: o16, - dscloud: o16, - i234: o16, - myds: o16, - synology: o16, - tbits: o16, - transip: v, - wedeploy: o16, - yombo: o16, - nohost: o16 + ], + md: [ + 1, + { + blogspot: o, + at: o, + de: o, + jp: o, + to: o } - }, - mg: { - $: 1, - succ: { - org: a15, - nom: a15, - gov: a15, - prd: a15, - tm: a15, - edu: a15, - mil: a15, - com: a15, - co: a15 + ], + me: [ + 1, + { + co: a, + net: a, + org: a, + edu: a, + ac: a, + gov: a, + its: a, + priv: a, + c66: o, + daplie: [ + 2, + { + localhost: o + } + ], + edgestack: o, + filegear: o, + "filegear-au": o, + "filegear-de": o, + "filegear-gb": o, + "filegear-ie": o, + "filegear-jp": o, + "filegear-sg": o, + glitch: o, + ravendb: o, + lohmus: o, + barsy: o, + mcpe: o, + mcdir: o, + soundcast: o, + tcp4: o, + brasilia: o, + ddns: o, + dnsfor: o, + hopto: o, + loginto: o, + noip: o, + webhop: o, + vp4: o, + diskstation: o, + dscloud: o, + i234: o, + myds: o, + synology: o, + transip: x, + wedeploy: o, + yombo: o, + nohost: o } - }, - mh: a15, - mil: a15, - mk: { - $: 1, - succ: { - com: a15, - org: a15, - net: a15, - edu: a15, - gov: a15, - inf: a15, - name: a15, - blogspot: o16 + ], + mg: [ + 1, + { + org: a, + nom: a, + gov: a, + prd: a, + tm: a, + edu: a, + mil: a, + com: a, + co: a } - }, - ml: { - $: 1, - succ: { - com: a15, - edu: a15, - gouv: a15, - gov: a15, - net: a15, - org: a15, - presse: a15 + ], + mh: a, + mil: a, + mk: [ + 1, + { + com: a, + org: a, + net: a, + edu: a, + gov: a, + inf: a, + name: a, + blogspot: o } - }, - mm: r6, - mn: { - $: 1, - succ: { - gov: a15, - edu: a15, - org: a15, - nyc: o16 + ], + ml: [ + 1, + { + com: a, + edu: a, + gouv: a, + gov: a, + net: a, + org: a, + presse: a } - }, - mo: i12, - mobi: { - $: 1, - succ: { - barsy: o16, - dscloud: o16 + ], + mm: r, + mn: [ + 1, + { + gov: a, + edu: a, + org: a, + nyc: o } - }, - mp: { - $: 1, - succ: { - ju: o16 + ], + mo: i, + mobi: [ + 1, + { + barsy: o, + dscloud: o } - }, - mq: a15, - mr: A, - ms: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - net: a15, - org: a15, - lab: o16, - minisite: o16 + ], + mp: [ + 1, + { + ju: o } - }, - mt: { - $: 1, - succ: { - com: s8, - edu: a15, - net: a15, - org: a15 + ], + mq: a, + mr: W, + ms: [ + 1, + { + com: a, + edu: a, + gov: a, + net: a, + org: a, + lab: o, + minisite: o } - }, - mu: { - $: 1, - succ: { - com: a15, - net: a15, - org: a15, - gov: a15, - ac: a15, - co: a15, - or: a15 + ], + mt: [ + 1, + { + com: n, + edu: a, + net: a, + org: a } - }, - museum: { - $: 1, - succ: { - academy: a15, - agriculture: a15, - air: a15, - airguard: a15, - alabama: a15, - alaska: a15, - amber: a15, - ambulance: a15, - american: a15, - americana: a15, - americanantiques: a15, - americanart: a15, - amsterdam: a15, - and: a15, - annefrank: a15, - anthro: a15, - anthropology: a15, - antiques: a15, - aquarium: a15, - arboretum: a15, - archaeological: a15, - archaeology: a15, - architecture: a15, - art: a15, - artanddesign: a15, - artcenter: a15, - artdeco: a15, - arteducation: a15, - artgallery: a15, - arts: a15, - artsandcrafts: a15, - asmatart: a15, - assassination: a15, - assisi: a15, - association: a15, - astronomy: a15, - atlanta: a15, - austin: a15, - australia: a15, - automotive: a15, - aviation: a15, - axis: a15, - badajoz: a15, - baghdad: a15, - bahn: a15, - bale: a15, - baltimore: a15, - barcelona: a15, - baseball: a15, - basel: a15, - baths: a15, - bauern: a15, - beauxarts: a15, - beeldengeluid: a15, - bellevue: a15, - bergbau: a15, - berkeley: a15, - berlin: a15, - bern: a15, - bible: a15, - bilbao: a15, - bill: a15, - birdart: a15, - birthplace: a15, - bonn: a15, - boston: a15, - botanical: a15, - botanicalgarden: a15, - botanicgarden: a15, - botany: a15, - brandywinevalley: a15, - brasil: a15, - bristol: a15, - british: a15, - britishcolumbia: a15, - broadcast: a15, - brunel: a15, - brussel: a15, - brussels: a15, - bruxelles: a15, - building: a15, - burghof: a15, - bus: a15, - bushey: a15, - cadaques: a15, - california: a15, - cambridge: a15, - can: a15, - canada: a15, - capebreton: a15, - carrier: a15, - cartoonart: a15, - casadelamoneda: a15, - castle: a15, - castres: a15, - celtic: a15, - center: a15, - chattanooga: a15, - cheltenham: a15, - chesapeakebay: a15, - chicago: a15, - children: a15, - childrens: a15, - childrensgarden: a15, - chiropractic: a15, - chocolate: a15, - christiansburg: a15, - cincinnati: a15, - cinema: a15, - circus: a15, - civilisation: a15, - civilization: a15, - civilwar: a15, - clinton: a15, - clock: a15, - coal: a15, - coastaldefence: a15, - cody: a15, - coldwar: a15, - collection: a15, - colonialwilliamsburg: a15, - coloradoplateau: a15, - columbia: a15, - columbus: a15, - communication: a15, - communications: a15, - community: a15, - computer: a15, - computerhistory: a15, - "xn--comunicaes-v6a2o": a15, - "comunicações": a15, - contemporary: a15, - contemporaryart: a15, - convent: a15, - copenhagen: a15, - corporation: a15, - "xn--correios-e-telecomunicaes-ghc29a": a15, - "correios-e-telecomunicações": a15, - corvette: a15, - costume: a15, - countryestate: a15, - county: a15, - crafts: a15, - cranbrook: a15, - creation: a15, - cultural: a15, - culturalcenter: a15, - culture: a15, - cyber: a15, - cymru: a15, - dali: a15, - dallas: a15, - database: a15, - ddr: a15, - decorativearts: a15, - delaware: a15, - delmenhorst: a15, - denmark: a15, - depot: a15, - design: a15, - detroit: a15, - dinosaur: a15, - discovery: a15, - dolls: a15, - donostia: a15, - durham: a15, - eastafrica: a15, - eastcoast: a15, - education: a15, - educational: a15, - egyptian: a15, - eisenbahn: a15, - elburg: a15, - elvendrell: a15, - embroidery: a15, - encyclopedic: a15, - england: a15, - entomology: a15, - environment: a15, - environmentalconservation: a15, - epilepsy: a15, - essex: a15, - estate: a15, - ethnology: a15, - exeter: a15, - exhibition: a15, - family: a15, - farm: a15, - farmequipment: a15, - farmers: a15, - farmstead: a15, - field: a15, - figueres: a15, - filatelia: a15, - film: a15, - fineart: a15, - finearts: a15, - finland: a15, - flanders: a15, - florida: a15, - force: a15, - fortmissoula: a15, - fortworth: a15, - foundation: a15, - francaise: a15, - frankfurt: a15, - franziskaner: a15, - freemasonry: a15, - freiburg: a15, - fribourg: a15, - frog: a15, - fundacio: a15, - furniture: a15, - gallery: a15, - garden: a15, - gateway: a15, - geelvinck: a15, - gemological: a15, - geology: a15, - georgia: a15, - giessen: a15, - glas: a15, - glass: a15, - gorge: a15, - grandrapids: a15, - graz: a15, - guernsey: a15, - halloffame: a15, - hamburg: a15, - handson: a15, - harvestcelebration: a15, - hawaii: a15, - health: a15, - heimatunduhren: a15, - hellas: a15, - helsinki: a15, - hembygdsforbund: a15, - heritage: a15, - histoire: a15, - historical: a15, - historicalsociety: a15, - historichouses: a15, - historisch: a15, - historisches: a15, - history: a15, - historyofscience: a15, - horology: a15, - house: a15, - humanities: a15, - illustration: a15, - imageandsound: a15, - indian: a15, - indiana: a15, - indianapolis: a15, - indianmarket: a15, - intelligence: a15, - interactive: a15, - iraq: a15, - iron: a15, - isleofman: a15, - jamison: a15, - jefferson: a15, - jerusalem: a15, - jewelry: a15, - jewish: a15, - jewishart: a15, - jfk: a15, - journalism: a15, - judaica: a15, - judygarland: a15, - juedisches: a15, - juif: a15, - karate: a15, - karikatur: a15, - kids: a15, - koebenhavn: a15, - koeln: a15, - kunst: a15, - kunstsammlung: a15, - kunstunddesign: a15, - labor: a15, - labour: a15, - lajolla: a15, - lancashire: a15, - landes: a15, - lans: a15, - "xn--lns-qla": a15, - "läns": a15, - larsson: a15, - lewismiller: a15, - lincoln: a15, - linz: a15, - living: a15, - livinghistory: a15, - localhistory: a15, - london: a15, - losangeles: a15, - louvre: a15, - loyalist: a15, - lucerne: a15, - luxembourg: a15, - luzern: a15, - mad: a15, - madrid: a15, - mallorca: a15, - manchester: a15, - mansion: a15, - mansions: a15, - manx: a15, - marburg: a15, - maritime: a15, - maritimo: a15, - maryland: a15, - marylhurst: a15, - media: a15, - medical: a15, - medizinhistorisches: a15, - meeres: a15, - memorial: a15, - mesaverde: a15, - michigan: a15, - midatlantic: a15, - military: a15, - mill: a15, - miners: a15, - mining: a15, - minnesota: a15, - missile: a15, - missoula: a15, - modern: a15, - moma: a15, - money: a15, - monmouth: a15, - monticello: a15, - montreal: a15, - moscow: a15, - motorcycle: a15, - muenchen: a15, - muenster: a15, - mulhouse: a15, - muncie: a15, - museet: a15, - museumcenter: a15, - museumvereniging: a15, - music: a15, - national: a15, - nationalfirearms: a15, - nationalheritage: a15, - nativeamerican: a15, - naturalhistory: a15, - naturalhistorymuseum: a15, - naturalsciences: a15, - nature: a15, - naturhistorisches: a15, - natuurwetenschappen: a15, - naumburg: a15, - naval: a15, - nebraska: a15, - neues: a15, - newhampshire: a15, - newjersey: a15, - newmexico: a15, - newport: a15, - newspaper: a15, - newyork: a15, - niepce: a15, - norfolk: a15, - north: a15, - nrw: a15, - nyc: a15, - nyny: a15, - oceanographic: a15, - oceanographique: a15, - omaha: a15, - online: a15, - ontario: a15, - openair: a15, - oregon: a15, - oregontrail: a15, - otago: a15, - oxford: a15, - pacific: a15, - paderborn: a15, - palace: a15, - paleo: a15, - palmsprings: a15, - panama: a15, - paris: a15, - pasadena: a15, - pharmacy: a15, - philadelphia: a15, - philadelphiaarea: a15, - philately: a15, - phoenix: a15, - photography: a15, - pilots: a15, - pittsburgh: a15, - planetarium: a15, - plantation: a15, - plants: a15, - plaza: a15, - portal: a15, - portland: a15, - portlligat: a15, - "posts-and-telecommunications": a15, - preservation: a15, - presidio: a15, - press: a15, - project: a15, - public: a15, - pubol: a15, - quebec: a15, - railroad: a15, - railway: a15, - research: a15, - resistance: a15, - riodejaneiro: a15, - rochester: a15, - rockart: a15, - roma: a15, - russia: a15, - saintlouis: a15, - salem: a15, - salvadordali: a15, - salzburg: a15, - sandiego: a15, - sanfrancisco: a15, - santabarbara: a15, - santacruz: a15, - santafe: a15, - saskatchewan: a15, - satx: a15, - savannahga: a15, - schlesisches: a15, - schoenbrunn: a15, - schokoladen: a15, - school: a15, - schweiz: a15, - science: a15, - scienceandhistory: a15, - scienceandindustry: a15, - sciencecenter: a15, - sciencecenters: a15, - "science-fiction": a15, - sciencehistory: a15, - sciences: a15, - sciencesnaturelles: a15, - scotland: a15, - seaport: a15, - settlement: a15, - settlers: a15, - shell: a15, - sherbrooke: a15, - sibenik: a15, - silk: a15, - ski: a15, - skole: a15, - society: a15, - sologne: a15, - soundandvision: a15, - southcarolina: a15, - southwest: a15, - space: a15, - spy: a15, - square: a15, - stadt: a15, - stalbans: a15, - starnberg: a15, - state: a15, - stateofdelaware: a15, - station: a15, - steam: a15, - steiermark: a15, - stjohn: a15, - stockholm: a15, - stpetersburg: a15, - stuttgart: a15, - suisse: a15, - surgeonshall: a15, - surrey: a15, - svizzera: a15, - sweden: a15, - sydney: a15, - tank: a15, - tcm: a15, - technology: a15, - telekommunikation: a15, - television: a15, - texas: a15, - textile: a15, - theater: a15, - time: a15, - timekeeping: a15, - topology: a15, - torino: a15, - touch: a15, - town: a15, - transport: a15, - tree: a15, - trolley: a15, - trust: a15, - trustee: a15, - uhren: a15, - ulm: a15, - undersea: a15, - university: a15, - usa: a15, - usantiques: a15, - usarts: a15, - uscountryestate: a15, - usculture: a15, - usdecorativearts: a15, - usgarden: a15, - ushistory: a15, - ushuaia: a15, - uslivinghistory: a15, - utah: a15, - uvic: a15, - valley: a15, - vantaa: a15, - versailles: a15, - viking: a15, - village: a15, - virginia: a15, - virtual: a15, - virtuel: a15, - vlaanderen: a15, - volkenkunde: a15, - wales: a15, - wallonie: a15, - war: a15, - washingtondc: a15, - watchandclock: a15, - "watch-and-clock": a15, - western: a15, - westfalen: a15, - whaling: a15, - wildlife: a15, - williamsburg: a15, - windmill: a15, - workshop: a15, - york: a15, - yorkshire: a15, - yosemite: a15, - youth: a15, - zoological: a15, - zoology: a15, - "xn--9dbhblg6di": a15, - "ירושלים": a15, - "xn--h1aegh": a15, - "иком": a15 + ], + mu: [ + 1, + { + com: a, + net: a, + org: a, + gov: a, + ac: a, + co: a, + or: a } - }, - mv: { - $: 1, - succ: { - aero: a15, - biz: a15, - com: a15, - coop: a15, - edu: a15, - gov: a15, - info: a15, - int: a15, - mil: a15, - museum: a15, - name: a15, - net: a15, - org: a15, - pro: a15 + ], + museum: a, + mv: [ + 1, + { + aero: a, + biz: a, + com: a, + coop: a, + edu: a, + gov: a, + info: a, + int: a, + mil: a, + museum: a, + name: a, + net: a, + org: a, + pro: a } - }, - mw: { - $: 1, - succ: { - ac: a15, - biz: a15, - co: a15, - com: a15, - coop: a15, - edu: a15, - gov: a15, - int: a15, - museum: a15, - net: a15, - org: a15 + ], + mw: [ + 1, + { + ac: a, + biz: a, + co: a, + com: a, + coop: a, + edu: a, + gov: a, + int: a, + museum: a, + net: a, + org: a } - }, - mx: { - $: 1, - succ: { - com: a15, - org: a15, - gob: a15, - edu: a15, - net: a15, - blogspot: o16 + ], + mx: [ + 1, + { + com: a, + org: a, + gob: a, + edu: a, + net: a, + blogspot: o } - }, - my: { - $: 1, - succ: { - biz: a15, - com: a15, - edu: a15, - gov: a15, - mil: a15, - name: a15, - net: a15, - org: a15, - blogspot: o16 + ], + my: [ + 1, + { + biz: a, + com: a, + edu: a, + gov: a, + mil: a, + name: a, + net: a, + org: a, + blogspot: o } - }, - mz: { - $: 1, - succ: { - ac: a15, - adv: a15, - co: a15, - edu: a15, - gov: a15, - mil: a15, - net: a15, - org: a15 + ], + mz: [ + 1, + { + ac: a, + adv: a, + co: a, + edu: a, + gov: a, + mil: a, + net: a, + org: a } - }, - na: { - $: 1, - succ: { - info: a15, - pro: a15, - name: a15, - school: a15, - or: a15, - dr: a15, - us: a15, - mx: a15, - ca: a15, - in: a15, - cc: a15, - tv: a15, - ws: a15, - mobi: a15, - co: a15, - com: a15, - org: a15 + ], + na: [ + 1, + { + info: a, + pro: a, + name: a, + school: a, + or: a, + dr: a, + us: a, + mx: a, + ca: a, + in: a, + cc: a, + tv: a, + ws: a, + mobi: a, + co: a, + com: a, + org: a } - }, - name: { - $: 1, - succ: { - her: W, - his: W + ], + name: [ + 1, + { + her: O, + his: O } - }, - nc: { - $: 1, - succ: { - asso: a15, - nom: a15 + ], + nc: [ + 1, + { + asso: a, + nom: a } - }, - ne: a15, - net: { - $: 1, - succ: { - adobeaemcloud: o16, - alwaysdata: o16, - cloudfront: o16, - t3l3p0rt: o16, - appudo: o16, - "atlassian-dev": { - $: 0, - succ: { - prod: { - $: 0, - succ: { - cdn: o16 + ], + ne: a, + net: [ + 1, + { + adobeaemcloud: o, + "adobeio-static": o, + adobeioruntime: o, + akadns: o, + akamai: o, + "akamai-staging": o, + akamaiedge: o, + "akamaiedge-staging": o, + akamaihd: o, + "akamaihd-staging": o, + akamaiorigin: o, + "akamaiorigin-staging": o, + akamaized: o, + "akamaized-staging": o, + edgekey: o, + "edgekey-staging": o, + edgesuite: o, + "edgesuite-staging": o, + alwaysdata: o, + myamaze: o, + cloudfront: o, + t3l3p0rt: o, + appudo: o, + "atlassian-dev": [ + 0, + { + prod: [ + 0, + { + cdn: o } - } + ] } - }, - myfritz: o16, - onavstack: o16, - shopselect: o16, - blackbaudcdn: o16, - boomla: o16, - bplaced: o16, - square7: o16, - gb: o16, - hu: o16, - jp: o16, - se: o16, - uk: o16, - in: o16, - clickrising: o16, - cloudaccess: o16, - "cdn77-ssl": o16, - cdn77: { - $: 0, - succ: { - r: o16 + ], + myfritz: o, + onavstack: o, + shopselect: o, + blackbaudcdn: o, + boomla: o, + bplaced: o, + square7: o, + gb: o, + hu: o, + jp: o, + se: o, + uk: o, + in: o, + clickrising: o, + cloudaccess: o, + "cdn77-ssl": o, + cdn77: [ + 0, + { + r: o } - }, - "feste-ip": o16, - "knx-server": o16, - "static-access": o16, - cryptonomic: e12, - dattolocal: o16, - mydatto: o16, - debian: o16, - bitbridge: o16, - "at-band-camp": o16, - blogdns: o16, - "broke-it": o16, - buyshouses: o16, - dnsalias: o16, - dnsdojo: o16, - "does-it": o16, - dontexist: o16, - dynalias: o16, - dynathome: o16, - endofinternet: o16, - "from-az": o16, - "from-co": o16, - "from-la": o16, - "from-ny": o16, - "gets-it": o16, - "ham-radio-op": o16, - homeftp: o16, - homeip: o16, - homelinux: o16, - homeunix: o16, - "in-the-band": o16, - "is-a-chef": o16, - "is-a-geek": o16, - "isa-geek": o16, - "kicks-ass": o16, - "office-on-the": o16, - podzone: o16, - "scrapper-site": o16, - selfip: o16, - "sells-it": o16, - servebbs: o16, - serveftp: o16, - thruhere: o16, - webhop: o16, - definima: o16, - casacam: o16, - dynu: o16, - dynv6: o16, - twmail: o16, - ru: o16, - channelsdvr: { - $: 2, - succ: { - u: o16 + ], + "feste-ip": o, + "knx-server": o, + "static-access": o, + cryptonomic: e, + dattolocal: o, + mydatto: o, + debian: o, + bitbridge: o, + "at-band-camp": o, + blogdns: o, + "broke-it": o, + buyshouses: o, + dnsalias: o, + dnsdojo: o, + "does-it": o, + dontexist: o, + dynalias: o, + dynathome: o, + endofinternet: o, + "from-az": o, + "from-co": o, + "from-la": o, + "from-ny": o, + "gets-it": o, + "ham-radio-op": o, + homeftp: o, + homeip: o, + homelinux: o, + homeunix: o, + "in-the-band": o, + "is-a-chef": o, + "is-a-geek": o, + "isa-geek": o, + "kicks-ass": o, + "office-on-the": o, + podzone: o, + "scrapper-site": o, + selfip: o, + "sells-it": o, + servebbs: o, + serveftp: o, + thruhere: o, + webhop: o, + definima: o, + casacam: o, + dynu: o, + dynv6: o, + twmail: o, + ru: o, + channelsdvr: [ + 2, + { + u: o } - }, - fastlylb: { - $: 2, - succ: { - map: o16 + ], + fastlylb: [ + 2, + { + map: o } - }, - fastly: { - $: 0, - succ: { - freetls: o16, - map: o16, - prod: { - $: 0, - succ: { - a: o16, - global: o16 + ], + fastly: [ + 0, + { + freetls: o, + map: o, + prod: [ + 0, + { + a: o, + global: o } - }, - ssl: { - $: 0, - succ: { - a: o16, - b: o16, - global: o16 + ], + ssl: [ + 0, + { + a: o, + b: o, + global: o } - } + ] } - }, - edgeapp: o16, - flynnhosting: o16, - "cdn-edges": o16, - heteml: o16, - cloudfunctions: o16, - moonscale: o16, - "in-dsl": o16, - "in-vpn": o16, - ipifony: o16, - iobb: o16, - cloudjiffy: { - $: 2, - succ: { - "fra1-de": o16, - "west1-us": o16 + ], + edgeapp: o, + flynnhosting: o, + "cdn-edges": o, + heteml: o, + cloudfunctions: o, + moonscale: o, + "in-dsl": o, + "in-vpn": o, + ipifony: o, + iobb: o, + cloudjiffy: [ + 2, + { + "fra1-de": o, + "west1-us": o } - }, - elastx: { - $: 0, - succ: { - "jls-sto1": o16, - "jls-sto2": o16, - "jls-sto3": o16 + ], + elastx: [ + 0, + { + "jls-sto1": o, + "jls-sto2": o, + "jls-sto3": o } - }, - faststacks: o16, - massivegrid: { - $: 0, - succ: { - paas: { - $: 0, - succ: { - "fr-1": o16, - "lon-1": o16, - "lon-2": o16, - "ny-1": o16, - "ny-2": o16, - "sg-1": o16 + ], + faststacks: o, + massivegrid: [ + 0, + { + paas: [ + 0, + { + "fr-1": o, + "lon-1": o, + "lon-2": o, + "ny-1": o, + "ny-2": o, + "sg-1": o } - } + ] } - }, - saveincloud: { - $: 0, - succ: { - jelastic: o16, - "nordeste-idc": o16 + ], + saveincloud: [ + 0, + { + jelastic: o, + "nordeste-idc": o } - }, - scaleforce: $, - tsukaeru: z, - kinghost: o16, - uni5: o16, - krellian: o16, - barsy: o16, - memset: o16, - azurewebsites: o16, - "azure-mobile": o16, - cloudapp: o16, - azurestaticapps: { - $: 2, - succ: { - 1: o16, - centralus: o16, - eastasia: o16, - eastus2: o16, - westeurope: o16, - westus2: o16 + ], + scaleforce: j, + tsukaeru: q, + kinghost: o, + uni5: o, + krellian: o, + barsy: o, + memset: o, + azurewebsites: o, + "azure-mobile": o, + cloudapp: o, + azurestaticapps: [ + 2, + { + 1: o, + 2: o, + 3: o, + centralus: o, + eastasia: o, + eastus2: o, + westeurope: o, + westus2: o } - }, - dnsup: o16, - hicam: o16, - "now-dns": o16, - ownip: o16, - vpndns: o16, - "eating-organic": o16, - mydissent: o16, - myeffect: o16, - mymediapc: o16, - mypsx: o16, - mysecuritycamera: o16, - nhlfan: o16, - "no-ip": o16, - pgafan: o16, - privatizehealthinsurance: o16, - bounceme: o16, - ddns: o16, - redirectme: o16, - serveblog: o16, - serveminecraft: o16, - sytes: o16, - cloudycluster: o16, - ovh: { - $: 0, - succ: { - webpaas: e12, - hosting: e12 + ], + dnsup: o, + hicam: o, + "now-dns": o, + ownip: o, + vpndns: o, + "eating-organic": o, + mydissent: o, + myeffect: o, + mymediapc: o, + mypsx: o, + mysecuritycamera: o, + nhlfan: o, + "no-ip": o, + pgafan: o, + privatizehealthinsurance: o, + bounceme: o, + ddns: o, + redirectme: o, + serveblog: o, + serveminecraft: o, + sytes: o, + cloudycluster: o, + ovh: [ + 0, + { + webpaas: e, + hosting: e } - }, - bar0: o16, - bar1: o16, - bar2: o16, - rackmaze: o16, - schokokeks: o16, - "firewall-gateway": o16, - seidat: o16, - senseering: o16, - siteleaf: o16, - "vps-host": { - $: 2, - succ: { - jelastic: { - $: 0, - succ: { - atl: o16, - njs: o16, - ric: o16 + ], + bar0: o, + bar1: o, + bar2: o, + rackmaze: o, + squares: o, + schokokeks: o, + "firewall-gateway": o, + seidat: o, + senseering: o, + siteleaf: o, + "vps-host": [ + 2, + { + jelastic: [ + 0, + { + atl: o, + njs: o, + ric: o } - } + ] } - }, - myspreadshop: o16, - srcf: { - $: 0, - succ: { - soc: o16, - user: o16 + ], + myspreadshop: o, + srcf: [ + 0, + { + soc: o, + user: o } - }, - supabase: o16, - dsmynas: o16, - familyds: o16, - tailscale: { - $: 0, - succ: { - beta: o16 + ], + supabase: o, + dsmynas: o, + familyds: o, + tailscale: [ + 0, + { + beta: o } - }, - ts: o16, - torproject: { - $: 2, - succ: { - pages: o16 + ], + ts: o, + torproject: [ + 2, + { + pages: o } - }, - "reserve-online": o16, - "community-pro": o16, - meinforum: o16, - yandexcloud: { - $: 2, - succ: { - storage: o16, - website: o16 + ], + "reserve-online": o, + "community-pro": o, + meinforum: o, + yandexcloud: [ + 2, + { + storage: o, + website: o } - }, - za: o16 + ], + za: o } - }, - nf: { - $: 1, - succ: { - com: a15, - net: a15, - per: a15, - rec: a15, - web: a15, - arts: a15, - firm: a15, - info: a15, - other: a15, - store: a15 + ], + nf: [ + 1, + { + com: a, + net: a, + per: a, + rec: a, + web: a, + arts: a, + firm: a, + info: a, + other: a, + store: a } - }, - ng: { - $: 1, - succ: { - com: s8, - edu: a15, - gov: a15, - i: a15, - mil: a15, - mobi: a15, - name: a15, - net: a15, - org: a15, - sch: a15, - col: o16, - firm: o16, - gen: o16, - ltd: o16, - ngo: o16 + ], + ng: [ + 1, + { + com: n, + edu: a, + gov: a, + i: a, + mil: a, + mobi: a, + name: a, + net: a, + org: a, + sch: a, + col: o, + firm: o, + gen: o, + ltd: o, + ngo: o } - }, - ni: { - $: 1, - succ: { - ac: a15, - biz: a15, - co: a15, - com: a15, - edu: a15, - gob: a15, - in: a15, - info: a15, - int: a15, - mil: a15, - net: a15, - nom: a15, - org: a15, - web: a15 + ], + ni: [ + 1, + { + ac: a, + biz: a, + co: a, + com: a, + edu: a, + gob: a, + in: a, + info: a, + int: a, + mil: a, + net: a, + nom: a, + org: a, + web: a } - }, - nl: { - $: 1, - succ: { - co: o16, - "hosting-cluster": o16, - blogspot: o16, - gov: o16, - khplay: o16, - myspreadshop: o16, - transurl: e12, - cistron: o16, - demon: o16 + ], + nl: [ + 1, + { + co: o, + "hosting-cluster": o, + blogspot: o, + gov: o, + khplay: o, + "123website": o, + myspreadshop: o, + transurl: e, + cistron: o, + demon: o } - }, - no: { - $: 1, - succ: { - fhs: a15, - vgs: a15, - fylkesbibl: a15, - folkebibl: a15, - museum: a15, - idrett: a15, - priv: a15, - mil: a15, - stat: a15, - dep: a15, - kommune: a15, - herad: a15, - aa: L, - ah: L, - bu: L, - fm: L, - hl: L, - hm: L, - "jan-mayen": L, - mr: L, - nl: L, - nt: L, - of: L, - ol: L, - oslo: L, - rl: L, - sf: L, - st: L, - svalbard: L, - tm: L, - tr: L, - va: L, - vf: L, - akrehamn: a15, - "xn--krehamn-dxa": a15, - "åkrehamn": a15, - algard: a15, - "xn--lgrd-poac": a15, - "ålgård": a15, - arna: a15, - brumunddal: a15, - bryne: a15, - bronnoysund: a15, - "xn--brnnysund-m8ac": a15, - "brønnøysund": a15, - drobak: a15, - "xn--drbak-wua": a15, - "drøbak": a15, - egersund: a15, - fetsund: a15, - floro: a15, - "xn--flor-jra": a15, - "florø": a15, - fredrikstad: a15, - hokksund: a15, - honefoss: a15, - "xn--hnefoss-q1a": a15, - "hønefoss": a15, - jessheim: a15, - jorpeland: a15, - "xn--jrpeland-54a": a15, - "jørpeland": a15, - kirkenes: a15, - kopervik: a15, - krokstadelva: a15, - langevag: a15, - "xn--langevg-jxa": a15, - "langevåg": a15, - leirvik: a15, - mjondalen: a15, - "xn--mjndalen-64a": a15, - "mjøndalen": a15, - "mo-i-rana": a15, - mosjoen: a15, - "xn--mosjen-eya": a15, - "mosjøen": a15, - nesoddtangen: a15, - orkanger: a15, - osoyro: a15, - "xn--osyro-wua": a15, - "osøyro": a15, - raholt: a15, - "xn--rholt-mra": a15, - "råholt": a15, - sandnessjoen: a15, - "xn--sandnessjen-ogb": a15, - "sandnessjøen": a15, - skedsmokorset: a15, - slattum: a15, - spjelkavik: a15, - stathelle: a15, - stavern: a15, - stjordalshalsen: a15, - "xn--stjrdalshalsen-sqb": a15, - "stjørdalshalsen": a15, - tananger: a15, - tranby: a15, - vossevangen: a15, - afjord: a15, - "xn--fjord-lra": a15, - "åfjord": a15, - agdenes: a15, - al: a15, - "xn--l-1fa": a15, - "ål": a15, - alesund: a15, - "xn--lesund-hua": a15, - "ålesund": a15, - alstahaug: a15, - alta: a15, - "xn--lt-liac": a15, - "áltá": a15, - alaheadju: a15, - "xn--laheadju-7ya": a15, - "álaheadju": a15, - alvdal: a15, - amli: a15, - "xn--mli-tla": a15, - "åmli": a15, - amot: a15, - "xn--mot-tla": a15, - "åmot": a15, - andebu: a15, - andoy: a15, - "xn--andy-ira": a15, - "andøy": a15, - andasuolo: a15, - ardal: a15, - "xn--rdal-poa": a15, - "årdal": a15, - aremark: a15, - arendal: a15, - "xn--s-1fa": a15, - "ås": a15, - aseral: a15, - "xn--seral-lra": a15, - "åseral": a15, - asker: a15, - askim: a15, - askvoll: a15, - askoy: a15, - "xn--asky-ira": a15, - "askøy": a15, - asnes: a15, - "xn--snes-poa": a15, - "åsnes": a15, - audnedaln: a15, - aukra: a15, - aure: a15, - aurland: a15, - "aurskog-holand": a15, - "xn--aurskog-hland-jnb": a15, - "aurskog-høland": a15, - austevoll: a15, - austrheim: a15, - averoy: a15, - "xn--avery-yua": a15, - "averøy": a15, - balestrand: a15, - ballangen: a15, - balat: a15, - "xn--blt-elab": a15, - "bálát": a15, - balsfjord: a15, - bahccavuotna: a15, - "xn--bhccavuotna-k7a": a15, - "báhccavuotna": a15, - bamble: a15, - bardu: a15, - beardu: a15, - beiarn: a15, - bajddar: a15, - "xn--bjddar-pta": a15, - "bájddar": a15, - baidar: a15, - "xn--bidr-5nac": a15, - "báidár": a15, - berg: a15, - bergen: a15, - berlevag: a15, - "xn--berlevg-jxa": a15, - "berlevåg": a15, - bearalvahki: a15, - "xn--bearalvhki-y4a": a15, - "bearalváhki": a15, - bindal: a15, - birkenes: a15, - bjarkoy: a15, - "xn--bjarky-fya": a15, - "bjarkøy": a15, - bjerkreim: a15, - bjugn: a15, - bodo: a15, - "xn--bod-2na": a15, - "bodø": a15, - badaddja: a15, - "xn--bdddj-mrabd": a15, - "bådåddjå": a15, - budejju: a15, - bokn: a15, - bremanger: a15, - bronnoy: a15, - "xn--brnny-wuac": a15, - "brønnøy": a15, - bygland: a15, - bykle: a15, - barum: a15, - "xn--brum-voa": a15, - "bærum": a15, - telemark: { - $: 0, - succ: { - bo: a15, - "xn--b-5ga": a15, - "bø": a15 + ], + no: [ + 1, + { + fhs: a, + vgs: a, + fylkesbibl: a, + folkebibl: a, + museum: a, + idrett: a, + priv: a, + mil: a, + stat: a, + dep: a, + kommune: a, + herad: a, + aa: B, + ah: B, + bu: B, + fm: B, + hl: B, + hm: B, + "jan-mayen": B, + mr: B, + nl: B, + nt: B, + of: B, + ol: B, + oslo: B, + rl: B, + sf: B, + st: B, + svalbard: B, + tm: B, + tr: B, + va: B, + vf: B, + akrehamn: a, + "xn--krehamn-dxa": a, + "åkrehamn": a, + algard: a, + "xn--lgrd-poac": a, + "ålgård": a, + arna: a, + brumunddal: a, + bryne: a, + bronnoysund: a, + "xn--brnnysund-m8ac": a, + "brønnøysund": a, + drobak: a, + "xn--drbak-wua": a, + "drøbak": a, + egersund: a, + fetsund: a, + floro: a, + "xn--flor-jra": a, + "florø": a, + fredrikstad: a, + hokksund: a, + honefoss: a, + "xn--hnefoss-q1a": a, + "hønefoss": a, + jessheim: a, + jorpeland: a, + "xn--jrpeland-54a": a, + "jørpeland": a, + kirkenes: a, + kopervik: a, + krokstadelva: a, + langevag: a, + "xn--langevg-jxa": a, + "langevåg": a, + leirvik: a, + mjondalen: a, + "xn--mjndalen-64a": a, + "mjøndalen": a, + "mo-i-rana": a, + mosjoen: a, + "xn--mosjen-eya": a, + "mosjøen": a, + nesoddtangen: a, + orkanger: a, + osoyro: a, + "xn--osyro-wua": a, + "osøyro": a, + raholt: a, + "xn--rholt-mra": a, + "råholt": a, + sandnessjoen: a, + "xn--sandnessjen-ogb": a, + "sandnessjøen": a, + skedsmokorset: a, + slattum: a, + spjelkavik: a, + stathelle: a, + stavern: a, + stjordalshalsen: a, + "xn--stjrdalshalsen-sqb": a, + "stjørdalshalsen": a, + tananger: a, + tranby: a, + vossevangen: a, + afjord: a, + "xn--fjord-lra": a, + "åfjord": a, + agdenes: a, + al: a, + "xn--l-1fa": a, + "ål": a, + alesund: a, + "xn--lesund-hua": a, + "ålesund": a, + alstahaug: a, + alta: a, + "xn--lt-liac": a, + "áltá": a, + alaheadju: a, + "xn--laheadju-7ya": a, + "álaheadju": a, + alvdal: a, + amli: a, + "xn--mli-tla": a, + "åmli": a, + amot: a, + "xn--mot-tla": a, + "åmot": a, + andebu: a, + andoy: a, + "xn--andy-ira": a, + "andøy": a, + andasuolo: a, + ardal: a, + "xn--rdal-poa": a, + "årdal": a, + aremark: a, + arendal: a, + "xn--s-1fa": a, + "ås": a, + aseral: a, + "xn--seral-lra": a, + "åseral": a, + asker: a, + askim: a, + askvoll: a, + askoy: a, + "xn--asky-ira": a, + "askøy": a, + asnes: a, + "xn--snes-poa": a, + "åsnes": a, + audnedaln: a, + aukra: a, + aure: a, + aurland: a, + "aurskog-holand": a, + "xn--aurskog-hland-jnb": a, + "aurskog-høland": a, + austevoll: a, + austrheim: a, + averoy: a, + "xn--avery-yua": a, + "averøy": a, + balestrand: a, + ballangen: a, + balat: a, + "xn--blt-elab": a, + "bálát": a, + balsfjord: a, + bahccavuotna: a, + "xn--bhccavuotna-k7a": a, + "báhccavuotna": a, + bamble: a, + bardu: a, + beardu: a, + beiarn: a, + bajddar: a, + "xn--bjddar-pta": a, + "bájddar": a, + baidar: a, + "xn--bidr-5nac": a, + "báidár": a, + berg: a, + bergen: a, + berlevag: a, + "xn--berlevg-jxa": a, + "berlevåg": a, + bearalvahki: a, + "xn--bearalvhki-y4a": a, + "bearalváhki": a, + bindal: a, + birkenes: a, + bjarkoy: a, + "xn--bjarky-fya": a, + "bjarkøy": a, + bjerkreim: a, + bjugn: a, + bodo: a, + "xn--bod-2na": a, + "bodø": a, + badaddja: a, + "xn--bdddj-mrabd": a, + "bådåddjå": a, + budejju: a, + bokn: a, + bremanger: a, + bronnoy: a, + "xn--brnny-wuac": a, + "brønnøy": a, + bygland: a, + bykle: a, + barum: a, + "xn--brum-voa": a, + "bærum": a, + telemark: [ + 0, + { + bo: a, + "xn--b-5ga": a, + "bø": a } - }, - nordland: { - $: 0, - succ: { - bo: a15, - "xn--b-5ga": a15, - "bø": a15, - heroy: a15, - "xn--hery-ira": a15, - "herøy": a15 + ], + nordland: [ + 0, + { + bo: a, + "xn--b-5ga": a, + "bø": a, + heroy: a, + "xn--hery-ira": a, + "herøy": a } - }, - bievat: a15, - "xn--bievt-0qa": a15, - "bievát": a15, - bomlo: a15, - "xn--bmlo-gra": a15, - "bømlo": a15, - batsfjord: a15, - "xn--btsfjord-9za": a15, - "båtsfjord": a15, - bahcavuotna: a15, - "xn--bhcavuotna-s4a": a15, - "báhcavuotna": a15, - dovre: a15, - drammen: a15, - drangedal: a15, - dyroy: a15, - "xn--dyry-ira": a15, - "dyrøy": a15, - donna: a15, - "xn--dnna-gra": a15, - "dønna": a15, - eid: a15, - eidfjord: a15, - eidsberg: a15, - eidskog: a15, - eidsvoll: a15, - eigersund: a15, - elverum: a15, - enebakk: a15, - engerdal: a15, - etne: a15, - etnedal: a15, - evenes: a15, - evenassi: a15, - "xn--eveni-0qa01ga": a15, - "evenášši": a15, - "evje-og-hornnes": a15, - farsund: a15, - fauske: a15, - fuossko: a15, - fuoisku: a15, - fedje: a15, - fet: a15, - finnoy: a15, - "xn--finny-yua": a15, - "finnøy": a15, - fitjar: a15, - fjaler: a15, - fjell: a15, - flakstad: a15, - flatanger: a15, - flekkefjord: a15, - flesberg: a15, - flora: a15, - fla: a15, - "xn--fl-zia": a15, - "flå": a15, - folldal: a15, - forsand: a15, - fosnes: a15, - frei: a15, - frogn: a15, - froland: a15, - frosta: a15, - frana: a15, - "xn--frna-woa": a15, - "fræna": a15, - froya: a15, - "xn--frya-hra": a15, - "frøya": a15, - fusa: a15, - fyresdal: a15, - forde: a15, - "xn--frde-gra": a15, - "førde": a15, - gamvik: a15, - gangaviika: a15, - "xn--ggaviika-8ya47h": a15, - "gáŋgaviika": a15, - gaular: a15, - gausdal: a15, - gildeskal: a15, - "xn--gildeskl-g0a": a15, - "gildeskål": a15, - giske: a15, - gjemnes: a15, - gjerdrum: a15, - gjerstad: a15, - gjesdal: a15, - gjovik: a15, - "xn--gjvik-wua": a15, - "gjøvik": a15, - gloppen: a15, - gol: a15, - gran: a15, - grane: a15, - granvin: a15, - gratangen: a15, - grimstad: a15, - grong: a15, - kraanghke: a15, - "xn--kranghke-b0a": a15, - "kråanghke": a15, - grue: a15, - gulen: a15, - hadsel: a15, - halden: a15, - halsa: a15, - hamar: a15, - hamaroy: a15, - habmer: a15, - "xn--hbmer-xqa": a15, - "hábmer": a15, - hapmir: a15, - "xn--hpmir-xqa": a15, - "hápmir": a15, - hammerfest: a15, - hammarfeasta: a15, - "xn--hmmrfeasta-s4ac": a15, - "hámmárfeasta": a15, - haram: a15, - hareid: a15, - harstad: a15, - hasvik: a15, - aknoluokta: a15, - "xn--koluokta-7ya57h": a15, - "ákŋoluokta": a15, - hattfjelldal: a15, - aarborte: a15, - haugesund: a15, - hemne: a15, - hemnes: a15, - hemsedal: a15, - "more-og-romsdal": { - $: 0, - succ: { - heroy: a15, - sande: a15 + ], + bievat: a, + "xn--bievt-0qa": a, + "bievát": a, + bomlo: a, + "xn--bmlo-gra": a, + "bømlo": a, + batsfjord: a, + "xn--btsfjord-9za": a, + "båtsfjord": a, + bahcavuotna: a, + "xn--bhcavuotna-s4a": a, + "báhcavuotna": a, + dovre: a, + drammen: a, + drangedal: a, + dyroy: a, + "xn--dyry-ira": a, + "dyrøy": a, + donna: a, + "xn--dnna-gra": a, + "dønna": a, + eid: a, + eidfjord: a, + eidsberg: a, + eidskog: a, + eidsvoll: a, + eigersund: a, + elverum: a, + enebakk: a, + engerdal: a, + etne: a, + etnedal: a, + evenes: a, + evenassi: a, + "xn--eveni-0qa01ga": a, + "evenášši": a, + "evje-og-hornnes": a, + farsund: a, + fauske: a, + fuossko: a, + fuoisku: a, + fedje: a, + fet: a, + finnoy: a, + "xn--finny-yua": a, + "finnøy": a, + fitjar: a, + fjaler: a, + fjell: a, + flakstad: a, + flatanger: a, + flekkefjord: a, + flesberg: a, + flora: a, + fla: a, + "xn--fl-zia": a, + "flå": a, + folldal: a, + forsand: a, + fosnes: a, + frei: a, + frogn: a, + froland: a, + frosta: a, + frana: a, + "xn--frna-woa": a, + "fræna": a, + froya: a, + "xn--frya-hra": a, + "frøya": a, + fusa: a, + fyresdal: a, + forde: a, + "xn--frde-gra": a, + "førde": a, + gamvik: a, + gangaviika: a, + "xn--ggaviika-8ya47h": a, + "gáŋgaviika": a, + gaular: a, + gausdal: a, + gildeskal: a, + "xn--gildeskl-g0a": a, + "gildeskål": a, + giske: a, + gjemnes: a, + gjerdrum: a, + gjerstad: a, + gjesdal: a, + gjovik: a, + "xn--gjvik-wua": a, + "gjøvik": a, + gloppen: a, + gol: a, + gran: a, + grane: a, + granvin: a, + gratangen: a, + grimstad: a, + grong: a, + kraanghke: a, + "xn--kranghke-b0a": a, + "kråanghke": a, + grue: a, + gulen: a, + hadsel: a, + halden: a, + halsa: a, + hamar: a, + hamaroy: a, + habmer: a, + "xn--hbmer-xqa": a, + "hábmer": a, + hapmir: a, + "xn--hpmir-xqa": a, + "hápmir": a, + hammerfest: a, + hammarfeasta: a, + "xn--hmmrfeasta-s4ac": a, + "hámmárfeasta": a, + haram: a, + hareid: a, + harstad: a, + hasvik: a, + aknoluokta: a, + "xn--koluokta-7ya57h": a, + "ákŋoluokta": a, + hattfjelldal: a, + aarborte: a, + haugesund: a, + hemne: a, + hemnes: a, + hemsedal: a, + "more-og-romsdal": [ + 0, + { + heroy: a, + sande: a } - }, - "xn--mre-og-romsdal-qqb": { - $: 0, - succ: { - "xn--hery-ira": a15, - sande: a15 + ], + "xn--mre-og-romsdal-qqb": [ + 0, + { + "xn--hery-ira": a, + sande: a } - }, - "møre-og-romsdal": { - $: 0, - succ: { - "herøy": a15, - sande: a15 + ], + "møre-og-romsdal": [ + 0, + { + "herøy": a, + sande: a } - }, - hitra: a15, - hjartdal: a15, - hjelmeland: a15, - hobol: a15, - "xn--hobl-ira": a15, - "hobøl": a15, - hof: a15, - hol: a15, - hole: a15, - holmestrand: a15, - holtalen: a15, - "xn--holtlen-hxa": a15, - "holtålen": a15, - hornindal: a15, - horten: a15, - hurdal: a15, - hurum: a15, - hvaler: a15, - hyllestad: a15, - hagebostad: a15, - "xn--hgebostad-g3a": a15, - "hægebostad": a15, - hoyanger: a15, - "xn--hyanger-q1a": a15, - "høyanger": a15, - hoylandet: a15, - "xn--hylandet-54a": a15, - "høylandet": a15, - ha: a15, - "xn--h-2fa": a15, - "hå": a15, - ibestad: a15, - inderoy: a15, - "xn--indery-fya": a15, - "inderøy": a15, - iveland: a15, - jevnaker: a15, - jondal: a15, - jolster: a15, - "xn--jlster-bya": a15, - "jølster": a15, - karasjok: a15, - karasjohka: a15, - "xn--krjohka-hwab49j": a15, - "kárášjohka": a15, - karlsoy: a15, - galsa: a15, - "xn--gls-elac": a15, - "gálsá": a15, - karmoy: a15, - "xn--karmy-yua": a15, - "karmøy": a15, - kautokeino: a15, - guovdageaidnu: a15, - klepp: a15, - klabu: a15, - "xn--klbu-woa": a15, - "klæbu": a15, - kongsberg: a15, - kongsvinger: a15, - kragero: a15, - "xn--krager-gya": a15, - "kragerø": a15, - kristiansand: a15, - kristiansund: a15, - krodsherad: a15, - "xn--krdsherad-m8a": a15, - "krødsherad": a15, - kvalsund: a15, - rahkkeravju: a15, - "xn--rhkkervju-01af": a15, - "ráhkkerávju": a15, - kvam: a15, - kvinesdal: a15, - kvinnherad: a15, - kviteseid: a15, - kvitsoy: a15, - "xn--kvitsy-fya": a15, - "kvitsøy": a15, - kvafjord: a15, - "xn--kvfjord-nxa": a15, - "kvæfjord": a15, - giehtavuoatna: a15, - kvanangen: a15, - "xn--kvnangen-k0a": a15, - "kvænangen": a15, - navuotna: a15, - "xn--nvuotna-hwa": a15, - "návuotna": a15, - kafjord: a15, - "xn--kfjord-iua": a15, - "kåfjord": a15, - gaivuotna: a15, - "xn--givuotna-8ya": a15, - "gáivuotna": a15, - larvik: a15, - lavangen: a15, - lavagis: a15, - loabat: a15, - "xn--loabt-0qa": a15, - "loabát": a15, - lebesby: a15, - davvesiida: a15, - leikanger: a15, - leirfjord: a15, - leka: a15, - leksvik: a15, - lenvik: a15, - leangaviika: a15, - "xn--leagaviika-52b": a15, - "leaŋgaviika": a15, - lesja: a15, - levanger: a15, - lier: a15, - lierne: a15, - lillehammer: a15, - lillesand: a15, - lindesnes: a15, - lindas: a15, - "xn--linds-pra": a15, - "lindås": a15, - lom: a15, - loppa: a15, - lahppi: a15, - "xn--lhppi-xqa": a15, - "láhppi": a15, - lund: a15, - lunner: a15, - luroy: a15, - "xn--lury-ira": a15, - "lurøy": a15, - luster: a15, - lyngdal: a15, - lyngen: a15, - ivgu: a15, - lardal: a15, - lerdal: a15, - "xn--lrdal-sra": a15, - "lærdal": a15, - lodingen: a15, - "xn--ldingen-q1a": a15, - "lødingen": a15, - lorenskog: a15, - "xn--lrenskog-54a": a15, - "lørenskog": a15, - loten: a15, - "xn--lten-gra": a15, - "løten": a15, - malvik: a15, - masoy: a15, - "xn--msy-ula0h": a15, - "måsøy": a15, - muosat: a15, - "xn--muost-0qa": a15, - "muosát": a15, - mandal: a15, - marker: a15, - marnardal: a15, - masfjorden: a15, - meland: a15, - meldal: a15, - melhus: a15, - meloy: a15, - "xn--mely-ira": a15, - "meløy": a15, - meraker: a15, - "xn--merker-kua": a15, - "meråker": a15, - moareke: a15, - "xn--moreke-jua": a15, - "moåreke": a15, - midsund: a15, - "midtre-gauldal": a15, - modalen: a15, - modum: a15, - molde: a15, - moskenes: a15, - moss: a15, - mosvik: a15, - malselv: a15, - "xn--mlselv-iua": a15, - "målselv": a15, - malatvuopmi: a15, - "xn--mlatvuopmi-s4a": a15, - "málatvuopmi": a15, - namdalseid: a15, - aejrie: a15, - namsos: a15, - namsskogan: a15, - naamesjevuemie: a15, - "xn--nmesjevuemie-tcba": a15, - "nååmesjevuemie": a15, - laakesvuemie: a15, - nannestad: a15, - narvik: a15, - narviika: a15, - naustdal: a15, - "nedre-eiker": a15, - akershus: O, - buskerud: O, - nesna: a15, - nesodden: a15, - nesseby: a15, - unjarga: a15, - "xn--unjrga-rta": a15, - "unjárga": a15, - nesset: a15, - nissedal: a15, - nittedal: a15, - "nord-aurdal": a15, - "nord-fron": a15, - "nord-odal": a15, - norddal: a15, - nordkapp: a15, - davvenjarga: a15, - "xn--davvenjrga-y4a": a15, - "davvenjárga": a15, - "nordre-land": a15, - nordreisa: a15, - raisa: a15, - "xn--risa-5na": a15, - "ráisa": a15, - "nore-og-uvdal": a15, - notodden: a15, - naroy: a15, - "xn--nry-yla5g": a15, - "nærøy": a15, - notteroy: a15, - "xn--nttery-byae": a15, - "nøtterøy": a15, - odda: a15, - oksnes: a15, - "xn--ksnes-uua": a15, - "øksnes": a15, - oppdal: a15, - oppegard: a15, - "xn--oppegrd-ixa": a15, - "oppegård": a15, - orkdal: a15, - orland: a15, - "xn--rland-uua": a15, - "ørland": a15, - orskog: a15, - "xn--rskog-uua": a15, - "ørskog": a15, - orsta: a15, - "xn--rsta-fra": a15, - "ørsta": a15, - hedmark: { - $: 0, - succ: { - os: a15, - valer: a15, - "xn--vler-qoa": a15, - "våler": a15 + ], + hitra: a, + hjartdal: a, + hjelmeland: a, + hobol: a, + "xn--hobl-ira": a, + "hobøl": a, + hof: a, + hol: a, + hole: a, + holmestrand: a, + holtalen: a, + "xn--holtlen-hxa": a, + "holtålen": a, + hornindal: a, + horten: a, + hurdal: a, + hurum: a, + hvaler: a, + hyllestad: a, + hagebostad: a, + "xn--hgebostad-g3a": a, + "hægebostad": a, + hoyanger: a, + "xn--hyanger-q1a": a, + "høyanger": a, + hoylandet: a, + "xn--hylandet-54a": a, + "høylandet": a, + ha: a, + "xn--h-2fa": a, + "hå": a, + ibestad: a, + inderoy: a, + "xn--indery-fya": a, + "inderøy": a, + iveland: a, + jevnaker: a, + jondal: a, + jolster: a, + "xn--jlster-bya": a, + "jølster": a, + karasjok: a, + karasjohka: a, + "xn--krjohka-hwab49j": a, + "kárášjohka": a, + karlsoy: a, + galsa: a, + "xn--gls-elac": a, + "gálsá": a, + karmoy: a, + "xn--karmy-yua": a, + "karmøy": a, + kautokeino: a, + guovdageaidnu: a, + klepp: a, + klabu: a, + "xn--klbu-woa": a, + "klæbu": a, + kongsberg: a, + kongsvinger: a, + kragero: a, + "xn--krager-gya": a, + "kragerø": a, + kristiansand: a, + kristiansund: a, + krodsherad: a, + "xn--krdsherad-m8a": a, + "krødsherad": a, + kvalsund: a, + rahkkeravju: a, + "xn--rhkkervju-01af": a, + "ráhkkerávju": a, + kvam: a, + kvinesdal: a, + kvinnherad: a, + kviteseid: a, + kvitsoy: a, + "xn--kvitsy-fya": a, + "kvitsøy": a, + kvafjord: a, + "xn--kvfjord-nxa": a, + "kvæfjord": a, + giehtavuoatna: a, + kvanangen: a, + "xn--kvnangen-k0a": a, + "kvænangen": a, + navuotna: a, + "xn--nvuotna-hwa": a, + "návuotna": a, + kafjord: a, + "xn--kfjord-iua": a, + "kåfjord": a, + gaivuotna: a, + "xn--givuotna-8ya": a, + "gáivuotna": a, + larvik: a, + lavangen: a, + lavagis: a, + loabat: a, + "xn--loabt-0qa": a, + "loabát": a, + lebesby: a, + davvesiida: a, + leikanger: a, + leirfjord: a, + leka: a, + leksvik: a, + lenvik: a, + leangaviika: a, + "xn--leagaviika-52b": a, + "leaŋgaviika": a, + lesja: a, + levanger: a, + lier: a, + lierne: a, + lillehammer: a, + lillesand: a, + lindesnes: a, + lindas: a, + "xn--linds-pra": a, + "lindås": a, + lom: a, + loppa: a, + lahppi: a, + "xn--lhppi-xqa": a, + "láhppi": a, + lund: a, + lunner: a, + luroy: a, + "xn--lury-ira": a, + "lurøy": a, + luster: a, + lyngdal: a, + lyngen: a, + ivgu: a, + lardal: a, + lerdal: a, + "xn--lrdal-sra": a, + "lærdal": a, + lodingen: a, + "xn--ldingen-q1a": a, + "lødingen": a, + lorenskog: a, + "xn--lrenskog-54a": a, + "lørenskog": a, + loten: a, + "xn--lten-gra": a, + "løten": a, + malvik: a, + masoy: a, + "xn--msy-ula0h": a, + "måsøy": a, + muosat: a, + "xn--muost-0qa": a, + "muosát": a, + mandal: a, + marker: a, + marnardal: a, + masfjorden: a, + meland: a, + meldal: a, + melhus: a, + meloy: a, + "xn--mely-ira": a, + "meløy": a, + meraker: a, + "xn--merker-kua": a, + "meråker": a, + moareke: a, + "xn--moreke-jua": a, + "moåreke": a, + midsund: a, + "midtre-gauldal": a, + modalen: a, + modum: a, + molde: a, + moskenes: a, + moss: a, + mosvik: a, + malselv: a, + "xn--mlselv-iua": a, + "målselv": a, + malatvuopmi: a, + "xn--mlatvuopmi-s4a": a, + "málatvuopmi": a, + namdalseid: a, + aejrie: a, + namsos: a, + namsskogan: a, + naamesjevuemie: a, + "xn--nmesjevuemie-tcba": a, + "nååmesjevuemie": a, + laakesvuemie: a, + nannestad: a, + narvik: a, + narviika: a, + naustdal: a, + "nedre-eiker": a, + akershus: E, + buskerud: E, + nesna: a, + nesodden: a, + nesseby: a, + unjarga: a, + "xn--unjrga-rta": a, + "unjárga": a, + nesset: a, + nissedal: a, + nittedal: a, + "nord-aurdal": a, + "nord-fron": a, + "nord-odal": a, + norddal: a, + nordkapp: a, + davvenjarga: a, + "xn--davvenjrga-y4a": a, + "davvenjárga": a, + "nordre-land": a, + nordreisa: a, + raisa: a, + "xn--risa-5na": a, + "ráisa": a, + "nore-og-uvdal": a, + notodden: a, + naroy: a, + "xn--nry-yla5g": a, + "nærøy": a, + notteroy: a, + "xn--nttery-byae": a, + "nøtterøy": a, + odda: a, + oksnes: a, + "xn--ksnes-uua": a, + "øksnes": a, + oppdal: a, + oppegard: a, + "xn--oppegrd-ixa": a, + "oppegård": a, + orkdal: a, + orland: a, + "xn--rland-uua": a, + "ørland": a, + orskog: a, + "xn--rskog-uua": a, + "ørskog": a, + orsta: a, + "xn--rsta-fra": a, + "ørsta": a, + hedmark: [ + 0, + { + os: a, + valer: a, + "xn--vler-qoa": a, + "våler": a } - }, - hordaland: { - $: 0, - succ: { - os: a15 + ], + hordaland: [ + 0, + { + os: a } - }, - osen: a15, - osteroy: a15, - "xn--ostery-fya": a15, - "osterøy": a15, - "ostre-toten": a15, - "xn--stre-toten-zcb": a15, - "østre-toten": a15, - overhalla: a15, - "ovre-eiker": a15, - "xn--vre-eiker-k8a": a15, - "øvre-eiker": a15, - oyer: a15, - "xn--yer-zna": a15, - "øyer": a15, - oygarden: a15, - "xn--ygarden-p1a": a15, - "øygarden": a15, - "oystre-slidre": a15, - "xn--ystre-slidre-ujb": a15, - "øystre-slidre": a15, - porsanger: a15, - porsangu: a15, - "xn--porsgu-sta26f": a15, - "porsáŋgu": a15, - porsgrunn: a15, - radoy: a15, - "xn--rady-ira": a15, - "radøy": a15, - rakkestad: a15, - rana: a15, - ruovat: a15, - randaberg: a15, - rauma: a15, - rendalen: a15, - rennebu: a15, - rennesoy: a15, - "xn--rennesy-v1a": a15, - "rennesøy": a15, - rindal: a15, - ringebu: a15, - ringerike: a15, - ringsaker: a15, - rissa: a15, - risor: a15, - "xn--risr-ira": a15, - "risør": a15, - roan: a15, - rollag: a15, - rygge: a15, - ralingen: a15, - "xn--rlingen-mxa": a15, - "rælingen": a15, - rodoy: a15, - "xn--rdy-0nab": a15, - "rødøy": a15, - romskog: a15, - "xn--rmskog-bya": a15, - "rømskog": a15, - roros: a15, - "xn--rros-gra": a15, - "røros": a15, - rost: a15, - "xn--rst-0na": a15, - "røst": a15, - royken: a15, - "xn--ryken-vua": a15, - "røyken": a15, - royrvik: a15, - "xn--ryrvik-bya": a15, - "røyrvik": a15, - rade: a15, - "xn--rde-ula": a15, - "råde": a15, - salangen: a15, - siellak: a15, - saltdal: a15, - salat: a15, - "xn--slt-elab": a15, - "sálát": a15, - "xn--slat-5na": a15, - "sálat": a15, - samnanger: a15, - vestfold: { - $: 0, - succ: { - sande: a15 + ], + osen: a, + osteroy: a, + "xn--ostery-fya": a, + "osterøy": a, + "ostre-toten": a, + "xn--stre-toten-zcb": a, + "østre-toten": a, + overhalla: a, + "ovre-eiker": a, + "xn--vre-eiker-k8a": a, + "øvre-eiker": a, + oyer: a, + "xn--yer-zna": a, + "øyer": a, + oygarden: a, + "xn--ygarden-p1a": a, + "øygarden": a, + "oystre-slidre": a, + "xn--ystre-slidre-ujb": a, + "øystre-slidre": a, + porsanger: a, + porsangu: a, + "xn--porsgu-sta26f": a, + "porsáŋgu": a, + porsgrunn: a, + radoy: a, + "xn--rady-ira": a, + "radøy": a, + rakkestad: a, + rana: a, + ruovat: a, + randaberg: a, + rauma: a, + rendalen: a, + rennebu: a, + rennesoy: a, + "xn--rennesy-v1a": a, + "rennesøy": a, + rindal: a, + ringebu: a, + ringerike: a, + ringsaker: a, + rissa: a, + risor: a, + "xn--risr-ira": a, + "risør": a, + roan: a, + rollag: a, + rygge: a, + ralingen: a, + "xn--rlingen-mxa": a, + "rælingen": a, + rodoy: a, + "xn--rdy-0nab": a, + "rødøy": a, + romskog: a, + "xn--rmskog-bya": a, + "rømskog": a, + roros: a, + "xn--rros-gra": a, + "røros": a, + rost: a, + "xn--rst-0na": a, + "røst": a, + royken: a, + "xn--ryken-vua": a, + "røyken": a, + royrvik: a, + "xn--ryrvik-bya": a, + "røyrvik": a, + rade: a, + "xn--rde-ula": a, + "råde": a, + salangen: a, + siellak: a, + saltdal: a, + salat: a, + "xn--slt-elab": a, + "sálát": a, + "xn--slat-5na": a, + "sálat": a, + samnanger: a, + vestfold: [ + 0, + { + sande: a } - }, - sandefjord: a15, - sandnes: a15, - sandoy: a15, - "xn--sandy-yua": a15, - "sandøy": a15, - sarpsborg: a15, - sauda: a15, - sauherad: a15, - sel: a15, - selbu: a15, - selje: a15, - seljord: a15, - sigdal: a15, - siljan: a15, - sirdal: a15, - skaun: a15, - skedsmo: a15, - ski: a15, - skien: a15, - skiptvet: a15, - skjervoy: a15, - "xn--skjervy-v1a": a15, - "skjervøy": a15, - skierva: a15, - "xn--skierv-uta": a15, - "skiervá": a15, - skjak: a15, - "xn--skjk-soa": a15, - "skjåk": a15, - skodje: a15, - skanland: a15, - "xn--sknland-fxa": a15, - "skånland": a15, - skanit: a15, - "xn--sknit-yqa": a15, - "skánit": a15, - smola: a15, - "xn--smla-hra": a15, - "smøla": a15, - snillfjord: a15, - snasa: a15, - "xn--snsa-roa": a15, - "snåsa": a15, - snoasa: a15, - snaase: a15, - "xn--snase-nra": a15, - "snåase": a15, - sogndal: a15, - sokndal: a15, - sola: a15, - solund: a15, - songdalen: a15, - sortland: a15, - spydeberg: a15, - stange: a15, - stavanger: a15, - steigen: a15, - steinkjer: a15, - stjordal: a15, - "xn--stjrdal-s1a": a15, - "stjørdal": a15, - stokke: a15, - "stor-elvdal": a15, - stord: a15, - stordal: a15, - storfjord: a15, - omasvuotna: a15, - strand: a15, - stranda: a15, - stryn: a15, - sula: a15, - suldal: a15, - sund: a15, - sunndal: a15, - surnadal: a15, - sveio: a15, - svelvik: a15, - sykkylven: a15, - sogne: a15, - "xn--sgne-gra": a15, - "søgne": a15, - somna: a15, - "xn--smna-gra": a15, - "sømna": a15, - "sondre-land": a15, - "xn--sndre-land-0cb": a15, - "søndre-land": a15, - "sor-aurdal": a15, - "xn--sr-aurdal-l8a": a15, - "sør-aurdal": a15, - "sor-fron": a15, - "xn--sr-fron-q1a": a15, - "sør-fron": a15, - "sor-odal": a15, - "xn--sr-odal-q1a": a15, - "sør-odal": a15, - "sor-varanger": a15, - "xn--sr-varanger-ggb": a15, - "sør-varanger": a15, - "matta-varjjat": a15, - "xn--mtta-vrjjat-k7af": a15, - "mátta-várjjat": a15, - sorfold: a15, - "xn--srfold-bya": a15, - "sørfold": a15, - sorreisa: a15, - "xn--srreisa-q1a": a15, - "sørreisa": a15, - sorum: a15, - "xn--srum-gra": a15, - "sørum": a15, - tana: a15, - deatnu: a15, - time: a15, - tingvoll: a15, - tinn: a15, - tjeldsund: a15, - dielddanuorri: a15, - tjome: a15, - "xn--tjme-hra": a15, - "tjøme": a15, - tokke: a15, - tolga: a15, - torsken: a15, - tranoy: a15, - "xn--trany-yua": a15, - "tranøy": a15, - tromso: a15, - "xn--troms-zua": a15, - "tromsø": a15, - tromsa: a15, - romsa: a15, - trondheim: a15, - troandin: a15, - trysil: a15, - trana: a15, - "xn--trna-woa": a15, - "træna": a15, - trogstad: a15, - "xn--trgstad-r1a": a15, - "trøgstad": a15, - tvedestrand: a15, - tydal: a15, - tynset: a15, - tysfjord: a15, - divtasvuodna: a15, - divttasvuotna: a15, - tysnes: a15, - tysvar: a15, - "xn--tysvr-vra": a15, - "tysvær": a15, - tonsberg: a15, - "xn--tnsberg-q1a": a15, - "tønsberg": a15, - ullensaker: a15, - ullensvang: a15, - ulvik: a15, - utsira: a15, - vadso: a15, - "xn--vads-jra": a15, - "vadsø": a15, - cahcesuolo: a15, - "xn--hcesuolo-7ya35b": a15, - "čáhcesuolo": a15, - vaksdal: a15, - valle: a15, - vang: a15, - vanylven: a15, - vardo: a15, - "xn--vard-jra": a15, - "vardø": a15, - varggat: a15, - "xn--vrggt-xqad": a15, - "várggát": a15, - vefsn: a15, - vaapste: a15, - vega: a15, - vegarshei: a15, - "xn--vegrshei-c0a": a15, - "vegårshei": a15, - vennesla: a15, - verdal: a15, - verran: a15, - vestby: a15, - vestnes: a15, - "vestre-slidre": a15, - "vestre-toten": a15, - vestvagoy: a15, - "xn--vestvgy-ixa6o": a15, - "vestvågøy": a15, - vevelstad: a15, - vik: a15, - vikna: a15, - vindafjord: a15, - volda: a15, - voss: a15, - varoy: a15, - "xn--vry-yla5g": a15, - "værøy": a15, - vagan: a15, - "xn--vgan-qoa": a15, - "vågan": a15, - voagat: a15, - vagsoy: a15, - "xn--vgsy-qoa0j": a15, - "vågsøy": a15, - vaga: a15, - "xn--vg-yiab": a15, - "vågå": a15, - ostfold: { - $: 0, - succ: { - valer: a15 + ], + sandefjord: a, + sandnes: a, + sandoy: a, + "xn--sandy-yua": a, + "sandøy": a, + sarpsborg: a, + sauda: a, + sauherad: a, + sel: a, + selbu: a, + selje: a, + seljord: a, + sigdal: a, + siljan: a, + sirdal: a, + skaun: a, + skedsmo: a, + ski: a, + skien: a, + skiptvet: a, + skjervoy: a, + "xn--skjervy-v1a": a, + "skjervøy": a, + skierva: a, + "xn--skierv-uta": a, + "skiervá": a, + skjak: a, + "xn--skjk-soa": a, + "skjåk": a, + skodje: a, + skanland: a, + "xn--sknland-fxa": a, + "skånland": a, + skanit: a, + "xn--sknit-yqa": a, + "skánit": a, + smola: a, + "xn--smla-hra": a, + "smøla": a, + snillfjord: a, + snasa: a, + "xn--snsa-roa": a, + "snåsa": a, + snoasa: a, + snaase: a, + "xn--snase-nra": a, + "snåase": a, + sogndal: a, + sokndal: a, + sola: a, + solund: a, + songdalen: a, + sortland: a, + spydeberg: a, + stange: a, + stavanger: a, + steigen: a, + steinkjer: a, + stjordal: a, + "xn--stjrdal-s1a": a, + "stjørdal": a, + stokke: a, + "stor-elvdal": a, + stord: a, + stordal: a, + storfjord: a, + omasvuotna: a, + strand: a, + stranda: a, + stryn: a, + sula: a, + suldal: a, + sund: a, + sunndal: a, + surnadal: a, + sveio: a, + svelvik: a, + sykkylven: a, + sogne: a, + "xn--sgne-gra": a, + "søgne": a, + somna: a, + "xn--smna-gra": a, + "sømna": a, + "sondre-land": a, + "xn--sndre-land-0cb": a, + "søndre-land": a, + "sor-aurdal": a, + "xn--sr-aurdal-l8a": a, + "sør-aurdal": a, + "sor-fron": a, + "xn--sr-fron-q1a": a, + "sør-fron": a, + "sor-odal": a, + "xn--sr-odal-q1a": a, + "sør-odal": a, + "sor-varanger": a, + "xn--sr-varanger-ggb": a, + "sør-varanger": a, + "matta-varjjat": a, + "xn--mtta-vrjjat-k7af": a, + "mátta-várjjat": a, + sorfold: a, + "xn--srfold-bya": a, + "sørfold": a, + sorreisa: a, + "xn--srreisa-q1a": a, + "sørreisa": a, + sorum: a, + "xn--srum-gra": a, + "sørum": a, + tana: a, + deatnu: a, + time: a, + tingvoll: a, + tinn: a, + tjeldsund: a, + dielddanuorri: a, + tjome: a, + "xn--tjme-hra": a, + "tjøme": a, + tokke: a, + tolga: a, + torsken: a, + tranoy: a, + "xn--trany-yua": a, + "tranøy": a, + tromso: a, + "xn--troms-zua": a, + "tromsø": a, + tromsa: a, + romsa: a, + trondheim: a, + troandin: a, + trysil: a, + trana: a, + "xn--trna-woa": a, + "træna": a, + trogstad: a, + "xn--trgstad-r1a": a, + "trøgstad": a, + tvedestrand: a, + tydal: a, + tynset: a, + tysfjord: a, + divtasvuodna: a, + divttasvuotna: a, + tysnes: a, + tysvar: a, + "xn--tysvr-vra": a, + "tysvær": a, + tonsberg: a, + "xn--tnsberg-q1a": a, + "tønsberg": a, + ullensaker: a, + ullensvang: a, + ulvik: a, + utsira: a, + vadso: a, + "xn--vads-jra": a, + "vadsø": a, + cahcesuolo: a, + "xn--hcesuolo-7ya35b": a, + "čáhcesuolo": a, + vaksdal: a, + valle: a, + vang: a, + vanylven: a, + vardo: a, + "xn--vard-jra": a, + "vardø": a, + varggat: a, + "xn--vrggt-xqad": a, + "várggát": a, + vefsn: a, + vaapste: a, + vega: a, + vegarshei: a, + "xn--vegrshei-c0a": a, + "vegårshei": a, + vennesla: a, + verdal: a, + verran: a, + vestby: a, + vestnes: a, + "vestre-slidre": a, + "vestre-toten": a, + vestvagoy: a, + "xn--vestvgy-ixa6o": a, + "vestvågøy": a, + vevelstad: a, + vik: a, + vikna: a, + vindafjord: a, + volda: a, + voss: a, + varoy: a, + "xn--vry-yla5g": a, + "værøy": a, + vagan: a, + "xn--vgan-qoa": a, + "vågan": a, + voagat: a, + vagsoy: a, + "xn--vgsy-qoa0j": a, + "vågsøy": a, + vaga: a, + "xn--vg-yiab": a, + "vågå": a, + ostfold: [ + 0, + { + valer: a } - }, - "xn--stfold-9xa": { - $: 0, - succ: { - "xn--vler-qoa": a15 + ], + "xn--stfold-9xa": [ + 0, + { + "xn--vler-qoa": a } - }, - "østfold": { - $: 0, - succ: { - "våler": a15 + ], + "østfold": [ + 0, + { + "våler": a } - }, - co: o16, - blogspot: o16, - myspreadshop: o16 + ], + co: o, + blogspot: o, + "123hjemmeside": o, + myspreadshop: o } - }, - np: r6, - nr: P, - nu: { - $: 1, - succ: { - merseine: o16, - mine: o16, - shacknet: o16, - enterprisecloud: o16 + ], + np: r, + nr: H, + nu: [ + 1, + { + merseine: o, + mine: o, + shacknet: o, + enterprisecloud: o } - }, - nz: { - $: 1, - succ: { - ac: a15, - co: s8, - cri: a15, - geek: a15, - gen: a15, - govt: a15, - health: a15, - iwi: a15, - kiwi: a15, - maori: a15, - mil: a15, - "xn--mori-qsa": a15, - "māori": a15, - net: a15, - org: a15, - parliament: a15, - school: a15 + ], + nz: [ + 1, + { + ac: a, + co: n, + cri: a, + geek: a, + gen: a, + govt: a, + health: a, + iwi: a, + kiwi: a, + maori: a, + mil: a, + "xn--mori-qsa": a, + "māori": a, + net: a, + org: a, + parliament: a, + school: a } - }, - om: { - $: 1, - succ: { - co: a15, - com: a15, - edu: a15, - gov: a15, - med: a15, - museum: a15, - net: a15, - org: a15, - pro: a15 + ], + om: [ + 1, + { + co: a, + com: a, + edu: a, + gov: a, + med: a, + museum: a, + net: a, + org: a, + pro: a } - }, - onion: a15, - org: { - $: 1, - succ: { - altervista: o16, - amune: { - $: 0, - succ: { - tele: o16 + ], + onion: a, + org: [ + 1, + { + altervista: o, + amune: [ + 0, + { + tele: o } - }, - pimienta: o16, - poivron: o16, - potager: o16, - sweetpepper: o16, - ae: o16, - us: o16, - certmgr: o16, - cdn77: { - $: 0, - succ: { - c: o16, - rsc: o16 + ], + pimienta: o, + poivron: o, + potager: o, + sweetpepper: o, + ae: o, + us: o, + certmgr: o, + cdn77: [ + 0, + { + c: o, + rsc: o } - }, - "cdn77-secure": { - $: 0, - succ: { - origin: { - $: 0, - succ: { - ssl: o16 + ], + "cdn77-secure": [ + 0, + { + origin: [ + 0, + { + ssl: o } - } + ] } - }, - cloudns: o16, - duckdns: o16, - tunk: o16, - dyndns: { - $: 2, - succ: { - go: o16, - home: o16 + ], + cloudns: o, + duckdns: o, + tunk: o, + dyndns: [ + 2, + { + go: o, + home: o } - }, - blogdns: o16, - blogsite: o16, - boldlygoingnowhere: o16, - dnsalias: o16, - dnsdojo: o16, - doesntexist: o16, - dontexist: o16, - doomdns: o16, - dvrdns: o16, - dynalias: o16, - endofinternet: o16, - endoftheinternet: o16, - "from-me": o16, - "game-host": o16, - gotdns: o16, - "hobby-site": o16, - homedns: o16, - homeftp: o16, - homelinux: o16, - homeunix: o16, - "is-a-bruinsfan": o16, - "is-a-candidate": o16, - "is-a-celticsfan": o16, - "is-a-chef": o16, - "is-a-geek": o16, - "is-a-knight": o16, - "is-a-linux-user": o16, - "is-a-patsfan": o16, - "is-a-soxfan": o16, - "is-found": o16, - "is-lost": o16, - "is-saved": o16, - "is-very-bad": o16, - "is-very-evil": o16, - "is-very-good": o16, - "is-very-nice": o16, - "is-very-sweet": o16, - "isa-geek": o16, - "kicks-ass": o16, - misconfused: o16, - podzone: o16, - readmyblog: o16, - selfip: o16, - sellsyourhome: o16, - servebbs: o16, - serveftp: o16, - servegame: o16, - "stuff-4-sale": o16, - webhop: o16, - ddnss: o16, - accesscam: o16, - camdvr: o16, - freeddns: o16, - mywire: o16, - webredirect: o16, - eu: { - $: 2, - succ: { - al: o16, - asso: o16, - at: o16, - au: o16, - be: o16, - bg: o16, - ca: o16, - cd: o16, - ch: o16, - cn: o16, - cy: o16, - cz: o16, - de: o16, - dk: o16, - edu: o16, - ee: o16, - es: o16, - fi: o16, - fr: o16, - gr: o16, - hr: o16, - hu: o16, - ie: o16, - il: o16, - in: o16, - int: o16, - is: o16, - it: o16, - jp: o16, - kr: o16, - lt: o16, - lu: o16, - lv: o16, - mc: o16, - me: o16, - mk: o16, - mt: o16, - my: o16, - net: o16, - ng: o16, - nl: o16, - no: o16, - nz: o16, - paris: o16, - pl: o16, - pt: o16, - "q-a": o16, - ro: o16, - ru: o16, - se: o16, - si: o16, - sk: o16, - tr: o16, - uk: o16, - us: o16 + ], + blogdns: o, + blogsite: o, + boldlygoingnowhere: o, + dnsalias: o, + dnsdojo: o, + doesntexist: o, + dontexist: o, + doomdns: o, + dvrdns: o, + dynalias: o, + endofinternet: o, + endoftheinternet: o, + "from-me": o, + "game-host": o, + gotdns: o, + "hobby-site": o, + homedns: o, + homeftp: o, + homelinux: o, + homeunix: o, + "is-a-bruinsfan": o, + "is-a-candidate": o, + "is-a-celticsfan": o, + "is-a-chef": o, + "is-a-geek": o, + "is-a-knight": o, + "is-a-linux-user": o, + "is-a-patsfan": o, + "is-a-soxfan": o, + "is-found": o, + "is-lost": o, + "is-saved": o, + "is-very-bad": o, + "is-very-evil": o, + "is-very-good": o, + "is-very-nice": o, + "is-very-sweet": o, + "isa-geek": o, + "kicks-ass": o, + misconfused: o, + podzone: o, + readmyblog: o, + selfip: o, + sellsyourhome: o, + servebbs: o, + serveftp: o, + servegame: o, + "stuff-4-sale": o, + webhop: o, + ddnss: o, + accesscam: o, + camdvr: o, + freeddns: o, + mywire: o, + webredirect: o, + eu: [ + 2, + { + al: o, + asso: o, + at: o, + au: o, + be: o, + bg: o, + ca: o, + cd: o, + ch: o, + cn: o, + cy: o, + cz: o, + de: o, + dk: o, + edu: o, + ee: o, + es: o, + fi: o, + fr: o, + gr: o, + hr: o, + hu: o, + ie: o, + il: o, + in: o, + int: o, + is: o, + it: o, + jp: o, + kr: o, + lt: o, + lu: o, + lv: o, + mc: o, + me: o, + mk: o, + mt: o, + my: o, + net: o, + ng: o, + nl: o, + no: o, + nz: o, + paris: o, + pl: o, + pt: o, + "q-a": o, + ro: o, + ru: o, + se: o, + si: o, + sk: o, + tr: o, + uk: o, + us: o } - }, - twmail: o16, - fedorainfracloud: o16, - fedorapeople: o16, - fedoraproject: { - $: 0, - succ: { - cloud: o16, - os: y, - stg: { - $: 0, - succ: { - os: y + ], + twmail: o, + fedorainfracloud: o, + fedorapeople: o, + fedoraproject: [ + 0, + { + cloud: o, + os: f, + stg: [ + 0, + { + os: f } - } + ] } - }, - freedesktop: o16, - hepforge: o16, - "in-dsl": o16, - "in-vpn": o16, - js: o16, - barsy: o16, - mayfirst: o16, - "mozilla-iot": o16, - bmoattachments: o16, - dynserv: o16, - "now-dns": o16, - "cable-modem": o16, - collegefan: o16, - couchpotatofries: o16, - mlbfan: o16, - mysecuritycamera: o16, - nflfan: o16, - "read-books": o16, - ufcfan: o16, - hopto: o16, - myftp: o16, - "no-ip": o16, - zapto: o16, - httpbin: o16, - pubtls: o16, - "my-firewall": o16, - myfirewall: o16, - spdns: o16, - "small-web": o16, - dsmynas: o16, - familyds: o16, - teckids: l2, - tuxfamily: o16, - diskstation: o16, - hk: o16, - wmflabs: o16, - toolforge: o16, - wmcloud: o16, - za: o16 + ], + freedesktop: o, + hepforge: o, + "in-dsl": o, + "in-vpn": o, + js: o, + barsy: o, + mayfirst: o, + "mozilla-iot": o, + bmoattachments: o, + dynserv: o, + "now-dns": o, + "cable-modem": o, + collegefan: o, + couchpotatofries: o, + mlbfan: o, + mysecuritycamera: o, + nflfan: o, + "read-books": o, + ufcfan: o, + hopto: o, + myftp: o, + "no-ip": o, + zapto: o, + httpbin: o, + pubtls: o, + jpn: o, + "my-firewall": o, + myfirewall: o, + spdns: o, + "small-web": o, + dsmynas: o, + familyds: o, + teckids: u, + tuxfamily: o, + diskstation: o, + hk: o, + wmflabs: o, + toolforge: o, + wmcloud: o, + za: o } - }, - pa: { - $: 1, - succ: { - ac: a15, - gob: a15, - com: a15, - org: a15, - sld: a15, - edu: a15, - net: a15, - ing: a15, - abo: a15, - med: a15, - nom: a15 + ], + pa: [ + 1, + { + ac: a, + gob: a, + com: a, + org: a, + sld: a, + edu: a, + net: a, + ing: a, + abo: a, + med: a, + nom: a } - }, - pe: { - $: 1, - succ: { - edu: a15, - gob: a15, - nom: a15, - mil: a15, - org: a15, - com: a15, - net: a15, - blogspot: o16 + ], + pe: [ + 1, + { + edu: a, + gob: a, + nom: a, + mil: a, + org: a, + com: a, + net: a, + blogspot: o } - }, - pf: { - $: 1, - succ: { - com: a15, - org: a15, - edu: a15 + ], + pf: [ + 1, + { + com: a, + org: a, + edu: a } - }, - pg: r6, - ph: { - $: 1, - succ: { - com: a15, - net: a15, - org: a15, - gov: a15, - edu: a15, - ngo: a15, - mil: a15, - i: a15 + ], + pg: r, + ph: [ + 1, + { + com: a, + net: a, + org: a, + gov: a, + edu: a, + ngo: a, + mil: a, + i: a } - }, - pk: { - $: 1, - succ: { - com: a15, - net: a15, - edu: a15, - org: a15, - fam: a15, - biz: a15, - web: a15, - gov: a15, - gob: a15, - gok: a15, - gon: a15, - gop: a15, - gos: a15, - info: a15 + ], + pk: [ + 1, + { + com: a, + net: a, + edu: a, + org: a, + fam: a, + biz: a, + web: a, + gov: a, + gob: a, + gok: a, + gon: a, + gop: a, + gos: a, + info: a } - }, - pl: { - $: 1, - succ: { - com: a15, - net: a15, - org: a15, - aid: a15, - agro: a15, - atm: a15, - auto: a15, - biz: a15, - edu: a15, - gmina: a15, - gsm: a15, - info: a15, - mail: a15, - miasta: a15, - media: a15, - mil: a15, - nieruchomosci: a15, - nom: a15, - pc: a15, - powiat: a15, - priv: a15, - realestate: a15, - rel: a15, - sex: a15, - shop: a15, - sklep: a15, - sos: a15, - szkola: a15, - targi: a15, - tm: a15, - tourism: a15, - travel: a15, - turystyka: a15, - gov: { - $: 1, - succ: { - ap: a15, - ic: a15, - is: a15, - us: a15, - kmpsp: a15, - kppsp: a15, - kwpsp: a15, - psp: a15, - wskr: a15, - kwp: a15, - mw: a15, - ug: a15, - um: a15, - umig: a15, - ugim: a15, - upow: a15, - uw: a15, - starostwo: a15, - pa: a15, - po: a15, - psse: a15, - pup: a15, - rzgw: a15, - sa: a15, - so: a15, - sr: a15, - wsa: a15, - sko: a15, - uzs: a15, - wiih: a15, - winb: a15, - pinb: a15, - wios: a15, - witd: a15, - wzmiuw: a15, - piw: a15, - wiw: a15, - griw: a15, - wif: a15, - oum: a15, - sdn: a15, - zp: a15, - uppo: a15, - mup: a15, - wuoz: a15, - konsulat: a15, - oirm: a15 + ], + pl: [ + 1, + { + com: a, + net: a, + org: a, + aid: a, + agro: a, + atm: a, + auto: a, + biz: a, + edu: a, + gmina: a, + gsm: a, + info: a, + mail: a, + miasta: a, + media: a, + mil: a, + nieruchomosci: a, + nom: a, + pc: a, + powiat: a, + priv: a, + realestate: a, + rel: a, + sex: a, + shop: a, + sklep: a, + sos: a, + szkola: a, + targi: a, + tm: a, + tourism: a, + travel: a, + turystyka: a, + gov: [ + 1, + { + ap: a, + griw: a, + ic: a, + is: a, + kmpsp: a, + konsulat: a, + kppsp: a, + kwp: a, + kwpsp: a, + mup: a, + mw: a, + oia: a, + oirm: a, + oke: a, + oow: a, + oschr: a, + oum: a, + pa: a, + pinb: a, + piw: a, + po: a, + pr: a, + psp: a, + psse: a, + pup: a, + rzgw: a, + sa: a, + sdn: a, + sko: a, + so: a, + sr: a, + starostwo: a, + ug: a, + ugim: a, + um: a, + umig: a, + upow: a, + uppo: a, + us: a, + uw: a, + uzs: a, + wif: a, + wiih: a, + winb: a, + wios: a, + witd: a, + wiw: a, + wkz: a, + wsa: a, + wskr: a, + wsse: a, + wuoz: a, + wzmiuw: a, + zp: a, + zpisdn: a } - }, - augustow: a15, - "babia-gora": a15, - bedzin: a15, - beskidy: a15, - bialowieza: a15, - bialystok: a15, - bielawa: a15, - bieszczady: a15, - boleslawiec: a15, - bydgoszcz: a15, - bytom: a15, - cieszyn: a15, - czeladz: a15, - czest: a15, - dlugoleka: a15, - elblag: a15, - elk: a15, - glogow: a15, - gniezno: a15, - gorlice: a15, - grajewo: a15, - ilawa: a15, - jaworzno: a15, - "jelenia-gora": a15, - jgora: a15, - kalisz: a15, - "kazimierz-dolny": a15, - karpacz: a15, - kartuzy: a15, - kaszuby: a15, - katowice: a15, - kepno: a15, - ketrzyn: a15, - klodzko: a15, - kobierzyce: a15, - kolobrzeg: a15, - konin: a15, - konskowola: a15, - kutno: a15, - lapy: a15, - lebork: a15, - legnica: a15, - lezajsk: a15, - limanowa: a15, - lomza: a15, - lowicz: a15, - lubin: a15, - lukow: a15, - malbork: a15, - malopolska: a15, - mazowsze: a15, - mazury: a15, - mielec: a15, - mielno: a15, - mragowo: a15, - naklo: a15, - nowaruda: a15, - nysa: a15, - olawa: a15, - olecko: a15, - olkusz: a15, - olsztyn: a15, - opoczno: a15, - opole: a15, - ostroda: a15, - ostroleka: a15, - ostrowiec: a15, - ostrowwlkp: a15, - pila: a15, - pisz: a15, - podhale: a15, - podlasie: a15, - polkowice: a15, - pomorze: a15, - pomorskie: a15, - prochowice: a15, - pruszkow: a15, - przeworsk: a15, - pulawy: a15, - radom: a15, - "rawa-maz": a15, - rybnik: a15, - rzeszow: a15, - sanok: a15, - sejny: a15, - slask: a15, - slupsk: a15, - sosnowiec: a15, - "stalowa-wola": a15, - skoczow: a15, - starachowice: a15, - stargard: a15, - suwalki: a15, - swidnica: a15, - swiebodzin: a15, - swinoujscie: a15, - szczecin: a15, - szczytno: a15, - tarnobrzeg: a15, - tgory: a15, - turek: a15, - tychy: a15, - ustka: a15, - walbrzych: a15, - warmia: a15, - warszawa: a15, - waw: a15, - wegrow: a15, - wielun: a15, - wlocl: a15, - wloclawek: a15, - wodzislaw: a15, - wolomin: a15, - wroclaw: a15, - zachpomor: a15, - zagan: a15, - zarow: a15, - zgora: a15, - zgorzelec: a15, - beep: o16, - "ecommerce-shop": o16, - shoparena: o16, - homesklep: o16, - sdscloud: o16, - unicloud: o16, - krasnik: o16, - leczna: o16, - lubartow: o16, - lublin: o16, - poniatowa: o16, - swidnik: o16, - co: o16, - art: o16, - gliwice: o16, - krakow: o16, - poznan: o16, - wroc: o16, - zakopane: o16, - myspreadshop: o16, - gda: o16, - gdansk: o16, - gdynia: o16, - med: o16, - sopot: o16 + ], + augustow: a, + "babia-gora": a, + bedzin: a, + beskidy: a, + bialowieza: a, + bialystok: a, + bielawa: a, + bieszczady: a, + boleslawiec: a, + bydgoszcz: a, + bytom: a, + cieszyn: a, + czeladz: a, + czest: a, + dlugoleka: a, + elblag: a, + elk: a, + glogow: a, + gniezno: a, + gorlice: a, + grajewo: a, + ilawa: a, + jaworzno: a, + "jelenia-gora": a, + jgora: a, + kalisz: a, + "kazimierz-dolny": a, + karpacz: a, + kartuzy: a, + kaszuby: a, + katowice: a, + kepno: a, + ketrzyn: a, + klodzko: a, + kobierzyce: a, + kolobrzeg: a, + konin: a, + konskowola: a, + kutno: a, + lapy: a, + lebork: a, + legnica: a, + lezajsk: a, + limanowa: a, + lomza: a, + lowicz: a, + lubin: a, + lukow: a, + malbork: a, + malopolska: a, + mazowsze: a, + mazury: a, + mielec: a, + mielno: a, + mragowo: a, + naklo: a, + nowaruda: a, + nysa: a, + olawa: a, + olecko: a, + olkusz: a, + olsztyn: a, + opoczno: a, + opole: a, + ostroda: a, + ostroleka: a, + ostrowiec: a, + ostrowwlkp: a, + pila: a, + pisz: a, + podhale: a, + podlasie: a, + polkowice: a, + pomorze: a, + pomorskie: a, + prochowice: a, + pruszkow: a, + przeworsk: a, + pulawy: a, + radom: a, + "rawa-maz": a, + rybnik: a, + rzeszow: a, + sanok: a, + sejny: a, + slask: a, + slupsk: a, + sosnowiec: a, + "stalowa-wola": a, + skoczow: a, + starachowice: a, + stargard: a, + suwalki: a, + swidnica: a, + swiebodzin: a, + swinoujscie: a, + szczecin: a, + szczytno: a, + tarnobrzeg: a, + tgory: a, + turek: a, + tychy: a, + ustka: a, + walbrzych: a, + warmia: a, + warszawa: a, + waw: a, + wegrow: a, + wielun: a, + wlocl: a, + wloclawek: a, + wodzislaw: a, + wolomin: a, + wroclaw: a, + zachpomor: a, + zagan: a, + zarow: a, + zgora: a, + zgorzelec: a, + beep: o, + "ecommerce-shop": o, + shoparena: o, + homesklep: o, + sdscloud: o, + unicloud: o, + krasnik: o, + leczna: o, + lubartow: o, + lublin: o, + poniatowa: o, + swidnik: o, + co: o, + simplesite: o, + art: o, + gliwice: o, + krakow: o, + poznan: o, + wroc: o, + zakopane: o, + myspreadshop: o, + gda: o, + gdansk: o, + gdynia: o, + med: o, + sopot: o } - }, - pm: { - $: 1, - succ: { - own: o16, - name: o16 + ], + pm: [ + 1, + { + own: o, + name: o } - }, - pn: { - $: 1, - succ: { - gov: a15, - co: a15, - org: a15, - edu: a15, - net: a15 + ], + pn: [ + 1, + { + gov: a, + co: a, + org: a, + edu: a, + net: a } - }, - post: a15, - pr: { - $: 1, - succ: { - com: a15, - net: a15, - org: a15, - gov: a15, - edu: a15, - isla: a15, - pro: a15, - biz: a15, - info: a15, - name: a15, - est: a15, - prof: a15, - ac: a15 + ], + post: a, + pr: [ + 1, + { + com: a, + net: a, + org: a, + gov: a, + edu: a, + isla: a, + pro: a, + biz: a, + info: a, + name: a, + est: a, + prof: a, + ac: a } - }, - pro: { - $: 1, - succ: { - aaa: a15, - aca: a15, - acct: a15, - avocat: a15, - bar: a15, - cpa: a15, - eng: a15, - jur: a15, - law: a15, - med: a15, - recht: a15, - cloudns: o16, - dnstrace: { - $: 0, - succ: { - bci: o16 + ], + pro: [ + 1, + { + aaa: a, + aca: a, + acct: a, + avocat: a, + bar: a, + cpa: a, + eng: a, + jur: a, + law: a, + med: a, + recht: a, + cloudns: o, + dnstrace: [ + 0, + { + bci: o } - }, - barsy: o16 + ], + barsy: o } - }, - ps: { - $: 1, - succ: { - edu: a15, - gov: a15, - sec: a15, - plo: a15, - com: a15, - org: a15, - net: a15 + ], + ps: [ + 1, + { + edu: a, + gov: a, + sec: a, + plo: a, + com: a, + org: a, + net: a } - }, - pt: { - $: 1, - succ: { - net: a15, - gov: a15, - org: a15, - edu: a15, - int: a15, - publ: a15, - com: a15, - nome: a15, - blogspot: o16 + ], + pt: [ + 1, + { + net: a, + gov: a, + org: a, + edu: a, + int: a, + publ: a, + com: a, + nome: a, + blogspot: o, + "123paginaweb": o } - }, - pw: { - $: 1, - succ: { - co: a15, - ne: a15, - or: a15, - ed: a15, - go: a15, - belau: a15, - cloudns: o16, - x443: o16 + ], + pw: [ + 1, + { + co: a, + ne: a, + or: a, + ed: a, + go: a, + belau: a, + cloudns: o, + x443: o } - }, - py: { - $: 1, - succ: { - com: a15, - coop: a15, - edu: a15, - gov: a15, - mil: a15, - net: a15, - org: a15 + ], + py: [ + 1, + { + com: a, + coop: a, + edu: a, + gov: a, + mil: a, + net: a, + org: a } - }, - qa: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - mil: a15, - name: a15, - net: a15, - org: a15, - sch: a15, - blogspot: o16 + ], + qa: [ + 1, + { + com: a, + edu: a, + gov: a, + mil: a, + name: a, + net: a, + org: a, + sch: a, + blogspot: o } - }, - re: { - $: 1, - succ: { - asso: a15, - com: a15, - nom: a15, - blogspot: o16 + ], + re: [ + 1, + { + asso: a, + com: a, + nom: a, + blogspot: o } - }, - ro: { - $: 1, - succ: { - arts: a15, - com: a15, - firm: a15, - info: a15, - nom: a15, - nt: a15, - org: a15, - rec: a15, - store: a15, - tm: a15, - www: a15, - co: o16, - shop: o16, - blogspot: o16, - barsy: o16 + ], + ro: [ + 1, + { + arts: a, + com: a, + firm: a, + info: a, + nom: a, + nt: a, + org: a, + rec: a, + store: a, + tm: a, + www: a, + co: o, + shop: o, + blogspot: o, + barsy: o } - }, - rs: { - $: 1, - succ: { - ac: a15, - co: a15, - edu: a15, - gov: a15, - in: a15, - org: a15, - brendly: { - $: 0, - succ: { - shop: o16 + ], + rs: [ + 1, + { + ac: a, + co: a, + edu: a, + gov: a, + in: a, + org: a, + brendly: [ + 0, + { + shop: o } - }, - blogspot: o16, - ua: o16, - ox: o16 + ], + blogspot: o, + ua: o, + ox: o } - }, - ru: { - $: 1, - succ: { - ac: o16, - edu: o16, - gov: o16, - int: o16, - mil: o16, - test: o16, - eurodir: o16, - adygeya: o16, - bashkiria: o16, - bir: o16, - cbg: o16, - com: o16, - dagestan: o16, - grozny: o16, - kalmykia: o16, - kustanai: o16, - marine: o16, - mordovia: o16, - msk: o16, - mytis: o16, - nalchik: o16, - nov: o16, - pyatigorsk: o16, - spb: o16, - vladikavkaz: o16, - vladimir: o16, - blogspot: o16, - na4u: o16, - mircloud: o16, - regruhosting: z, - myjino: { - $: 2, - succ: { - hosting: e12, - landing: e12, - spectrum: e12, - vps: e12 + ], + ru: [ + 1, + { + ac: o, + edu: o, + gov: o, + int: o, + mil: o, + test: o, + eurodir: o, + adygeya: o, + bashkiria: o, + bir: o, + cbg: o, + com: o, + dagestan: o, + grozny: o, + kalmykia: o, + kustanai: o, + marine: o, + mordovia: o, + msk: o, + mytis: o, + nalchik: o, + nov: o, + pyatigorsk: o, + spb: o, + vladikavkaz: o, + vladimir: o, + blogspot: o, + na4u: o, + mircloud: o, + regruhosting: q, + myjino: [ + 2, + { + hosting: e, + landing: e, + spectrum: e, + vps: e } - }, - cldmail: { - $: 0, - succ: { - hb: o16 + ], + cldmail: [ + 0, + { + hb: o } - }, - mcdir: { - $: 2, - succ: { - vps: o16 + ], + mcdir: [ + 2, + { + vps: o } - }, - mcpre: o16, - net: o16, - org: o16, - pp: o16, - lk3: o16, - ras: o16 + ], + mcpre: o, + net: o, + org: o, + pp: o, + "123sait": o, + lk3: o, + ras: o } - }, - rw: { - $: 1, - succ: { - ac: a15, - co: a15, - coop: a15, - gov: a15, - mil: a15, - net: a15, - org: a15 + ], + rw: [ + 1, + { + ac: a, + co: a, + coop: a, + gov: a, + mil: a, + net: a, + org: a } - }, - sa: { - $: 1, - succ: { - com: a15, - net: a15, - org: a15, - gov: a15, - med: a15, - pub: a15, - edu: a15, - sch: a15 + ], + sa: [ + 1, + { + com: a, + net: a, + org: a, + gov: a, + med: a, + pub: a, + edu: a, + sch: a } - }, - sb: i12, - sc: i12, - sd: { - $: 1, - succ: { - com: a15, - net: a15, - org: a15, - edu: a15, - med: a15, - tv: a15, - gov: a15, - info: a15 + ], + sb: i, + sc: i, + sd: [ + 1, + { + com: a, + net: a, + org: a, + edu: a, + med: a, + tv: a, + gov: a, + info: a } - }, - se: { - $: 1, - succ: { - a: a15, - ac: a15, - b: a15, - bd: a15, - brand: a15, - c: a15, - d: a15, - e: a15, - f: a15, - fh: a15, - fhsk: a15, - fhv: a15, - g: a15, - h: a15, - i: a15, - k: a15, - komforb: a15, - kommunalforbund: a15, - komvux: a15, - l: a15, - lanbib: a15, - m: a15, - n: a15, - naturbruksgymn: a15, - o: a15, - org: a15, - p: a15, - parti: a15, - pp: a15, - press: a15, - r: a15, - s: a15, - t: a15, - tm: a15, - u: a15, - w: a15, - x: a15, - y: a15, - z: a15, - com: o16, - blogspot: o16, - conf: o16, - iopsys: o16, - itcouldbewor: o16, - myspreadshop: o16, - paba: { - $: 0, - succ: { - su: o16 + ], + se: [ + 1, + { + a: a, + ac: a, + b: a, + bd: a, + brand: a, + c: a, + d: a, + e: a, + f: a, + fh: a, + fhsk: a, + fhv: a, + g: a, + h: a, + i: a, + k: a, + komforb: a, + kommunalforbund: a, + komvux: a, + l: a, + lanbib: a, + m: a, + n: a, + naturbruksgymn: a, + o: a, + org: a, + p: a, + parti: a, + pp: a, + press: a, + r: a, + s: a, + t: a, + tm: a, + u: a, + w: a, + x: a, + y: a, + z: a, + com: o, + blogspot: o, + conf: o, + iopsys: o, + "123minsida": o, + itcouldbewor: o, + myspreadshop: o, + paba: [ + 0, + { + su: o } - } + ] } - }, - sg: { - $: 1, - succ: { - com: a15, - net: a15, - org: a15, - gov: a15, - edu: a15, - per: a15, - blogspot: o16, - enscaled: o16 + ], + sg: [ + 1, + { + com: a, + net: a, + org: a, + gov: a, + edu: a, + per: a, + blogspot: o, + enscaled: o } - }, - sh: { - $: 1, - succ: { - com: a15, - net: a15, - gov: a15, - org: a15, - mil: a15, - bip: o16, - hashbang: o16, - platform: { - $: 0, - succ: { - bc: o16, - ent: o16, - eu: o16, - us: o16 + ], + sh: [ + 1, + { + com: a, + net: a, + gov: a, + org: a, + mil: a, + bip: o, + hashbang: o, + platform: [ + 0, + { + bc: o, + ent: o, + eu: o, + us: o } - }, - now: o16, - vxl: o16, - wedeploy: o16 + ], + now: o, + vxl: o, + wedeploy: o } - }, - si: { - $: 1, - succ: { - gitapp: o16, - gitpage: o16, - blogspot: o16 + ], + si: [ + 1, + { + gitapp: o, + gitpage: o, + blogspot: o } - }, - sj: a15, - sk: s8, - sl: i12, - sm: a15, - sn: { - $: 1, - succ: { - art: a15, - com: a15, - edu: a15, - gouv: a15, - org: a15, - perso: a15, - univ: a15, - blogspot: o16 + ], + sj: a, + sk: n, + sl: i, + sm: a, + sn: [ + 1, + { + art: a, + com: a, + edu: a, + gouv: a, + org: a, + perso: a, + univ: a, + blogspot: o } - }, - so: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - me: a15, - net: a15, - org: a15, - sch: o16 + ], + so: [ + 1, + { + com: a, + edu: a, + gov: a, + me: a, + net: a, + org: a, + sch: o } - }, - sr: a15, - ss: { - $: 1, - succ: { - biz: a15, - com: a15, - edu: a15, - gov: a15, - me: a15, - net: a15, - org: a15, - sch: a15 + ], + sr: a, + ss: [ + 1, + { + biz: a, + com: a, + edu: a, + gov: a, + me: a, + net: a, + org: a, + sch: a } - }, - st: { - $: 1, - succ: { - co: a15, - com: a15, - consulado: a15, - edu: a15, - embaixada: a15, - mil: a15, - net: a15, - org: a15, - principe: a15, - saotome: a15, - store: a15, - noho: o16 + ], + st: [ + 1, + { + co: a, + com: a, + consulado: a, + edu: a, + embaixada: a, + mil: a, + net: a, + org: a, + principe: a, + saotome: a, + store: a, + kirara: o, + noho: o } - }, - su: { - $: 1, - succ: { - abkhazia: o16, - adygeya: o16, - aktyubinsk: o16, - arkhangelsk: o16, - armenia: o16, - ashgabad: o16, - azerbaijan: o16, - balashov: o16, - bashkiria: o16, - bryansk: o16, - bukhara: o16, - chimkent: o16, - dagestan: o16, - "east-kazakhstan": o16, - exnet: o16, - georgia: o16, - grozny: o16, - ivanovo: o16, - jambyl: o16, - kalmykia: o16, - kaluga: o16, - karacol: o16, - karaganda: o16, - karelia: o16, - khakassia: o16, - krasnodar: o16, - kurgan: o16, - kustanai: o16, - lenug: o16, - mangyshlak: o16, - mordovia: o16, - msk: o16, - murmansk: o16, - nalchik: o16, - navoi: o16, - "north-kazakhstan": o16, - nov: o16, - obninsk: o16, - penza: o16, - pokrovsk: o16, - sochi: o16, - spb: o16, - tashkent: o16, - termez: o16, - togliatti: o16, - troitsk: o16, - tselinograd: o16, - tula: o16, - tuva: o16, - vladikavkaz: o16, - vladimir: o16, - vologda: o16 + ], + su: [ + 1, + { + abkhazia: o, + adygeya: o, + aktyubinsk: o, + arkhangelsk: o, + armenia: o, + ashgabad: o, + azerbaijan: o, + balashov: o, + bashkiria: o, + bryansk: o, + bukhara: o, + chimkent: o, + dagestan: o, + "east-kazakhstan": o, + exnet: o, + georgia: o, + grozny: o, + ivanovo: o, + jambyl: o, + kalmykia: o, + kaluga: o, + karacol: o, + karaganda: o, + karelia: o, + khakassia: o, + krasnodar: o, + kurgan: o, + kustanai: o, + lenug: o, + mangyshlak: o, + mordovia: o, + msk: o, + murmansk: o, + nalchik: o, + navoi: o, + "north-kazakhstan": o, + nov: o, + obninsk: o, + penza: o, + pokrovsk: o, + sochi: o, + spb: o, + tashkent: o, + termez: o, + togliatti: o, + troitsk: o, + tselinograd: o, + tula: o, + tuva: o, + vladikavkaz: o, + vladimir: o, + vologda: o } - }, - sv: { - $: 1, - succ: { - com: a15, - edu: a15, - gob: a15, - org: a15, - red: a15 + ], + sv: [ + 1, + { + com: a, + edu: a, + gob: a, + org: a, + red: a } - }, - sx: n7, - sy: C, - sz: { - $: 1, - succ: { - co: a15, - ac: a15, - org: a15 + ], + sx: s, + sy: P, + sz: [ + 1, + { + co: a, + ac: a, + org: a } - }, - tc: { - $: 1, - succ: { - ch: o16, - me: o16, - we: o16 + ], + tc: [ + 1, + { + ch: o, + me: o, + we: o } - }, - td: s8, - tel: a15, - tf: { - $: 1, - succ: { - sch: o16 + ], + td: n, + tel: a, + tf: [ + 1, + { + sch: o } - }, - tg: a15, - th: { - $: 1, - succ: { - ac: a15, - co: a15, - go: a15, - in: a15, - mi: a15, - net: a15, - or: a15, - online: o16, - shop: o16 + ], + tg: a, + th: [ + 1, + { + ac: a, + co: a, + go: a, + in: a, + mi: a, + net: a, + or: a, + online: o, + shop: o } - }, - tj: { - $: 1, - succ: { - ac: a15, - biz: a15, - co: a15, - com: a15, - edu: a15, - go: a15, - gov: a15, - int: a15, - mil: a15, - name: a15, - net: a15, - nic: a15, - org: a15, - test: a15, - web: a15 + ], + tj: [ + 1, + { + ac: a, + biz: a, + co: a, + com: a, + edu: a, + go: a, + gov: a, + int: a, + mil: a, + name: a, + net: a, + nic: a, + org: a, + test: a, + web: a } - }, - tk: a15, - tl: n7, - tm: { - $: 1, - succ: { - com: a15, - co: a15, - org: a15, - net: a15, - nom: a15, - gov: a15, - mil: a15, - edu: a15 + ], + tk: a, + tl: s, + tm: [ + 1, + { + com: a, + co: a, + org: a, + net: a, + nom: a, + gov: a, + mil: a, + edu: a } - }, - tn: { - $: 1, - succ: { - com: a15, - ens: a15, - fin: a15, - gov: a15, - ind: a15, - info: a15, - intl: a15, - mincom: a15, - nat: a15, - net: a15, - org: a15, - perso: a15, - tourism: a15, - orangecloud: o16 + ], + tn: [ + 1, + { + com: a, + ens: a, + fin: a, + gov: a, + ind: a, + info: a, + intl: a, + mincom: a, + nat: a, + net: a, + org: a, + perso: a, + tourism: a, + orangecloud: o } - }, - to: { - $: 1, - succ: { - 611: o16, - com: a15, - gov: a15, - net: a15, - org: a15, - edu: a15, - mil: a15, - oya: o16, - rdv: o16, - vpnplus: o16, - quickconnect: m2, - nyan: o16 + ], + to: [ + 1, + { + 611: o, + com: a, + gov: a, + net: a, + org: a, + edu: a, + mil: a, + oya: o, + rdv: o, + x0: o, + vpnplus: o, + quickconnect: c, + nyan: o } - }, - tr: { - $: 1, - succ: { - av: a15, - bbs: a15, - bel: a15, - biz: a15, - com: s8, - dr: a15, - edu: a15, - gen: a15, - gov: a15, - info: a15, - mil: a15, - k12: a15, - kep: a15, - name: a15, - net: a15, - org: a15, - pol: a15, - tel: a15, - tsk: a15, - tv: a15, - web: a15, - nc: n7 + ], + tr: [ + 1, + { + av: a, + bbs: a, + bel: a, + biz: a, + com: n, + dr: a, + edu: a, + gen: a, + gov: a, + info: a, + mil: a, + k12: a, + kep: a, + name: a, + net: a, + org: a, + pol: a, + tel: a, + tsk: a, + tv: a, + web: a, + nc: s } - }, - tt: { - $: 1, - succ: { - co: a15, - com: a15, - org: a15, - net: a15, - biz: a15, - info: a15, - pro: a15, - int: a15, - coop: a15, - jobs: a15, - mobi: a15, - travel: a15, - museum: a15, - aero: a15, - name: a15, - gov: a15, - edu: a15 + ], + tt: [ + 1, + { + co: a, + com: a, + org: a, + net: a, + biz: a, + info: a, + pro: a, + int: a, + coop: a, + jobs: a, + mobi: a, + travel: a, + museum: a, + aero: a, + name: a, + gov: a, + edu: a } - }, - tv: { - $: 1, - succ: { - dyndns: o16, - "better-than": o16, - "on-the-web": o16, - "worse-than": o16 + ], + tv: [ + 1, + { + dyndns: o, + "better-than": o, + "on-the-web": o, + "worse-than": o, + from: o, + sakura: o } - }, - tw: { - $: 1, - succ: { - edu: a15, - gov: a15, - mil: a15, - com: { - $: 1, - succ: { - mymailer: o16 + ], + tw: [ + 1, + { + edu: a, + gov: a, + mil: a, + com: [ + 1, + { + mymailer: o } - }, - net: a15, - org: a15, - idv: a15, - game: a15, - ebiz: a15, - club: a15, - "xn--zf0ao64a": a15, - "網路": a15, - "xn--uc0atv": a15, - "組織": a15, - "xn--czrw28b": a15, - "商業": a15, - url: o16, - blogspot: o16 + ], + net: a, + org: a, + idv: a, + game: a, + ebiz: a, + club: a, + "xn--zf0ao64a": a, + "網路": a, + "xn--uc0atv": a, + "組織": a, + "xn--czrw28b": a, + "商業": a, + url: o, + blogspot: o } - }, - tz: { - $: 1, - succ: { - ac: a15, - co: a15, - go: a15, - hotel: a15, - info: a15, - me: a15, - mil: a15, - mobi: a15, - ne: a15, - or: a15, - sc: a15, - tv: a15 + ], + tz: [ + 1, + { + ac: a, + co: a, + go: a, + hotel: a, + info: a, + me: a, + mil: a, + mobi: a, + ne: a, + or: a, + sc: a, + tv: a } - }, - ua: { - $: 1, - succ: { - com: a15, - edu: a15, - gov: a15, - in: a15, - net: a15, - org: a15, - cherkassy: a15, - cherkasy: a15, - chernigov: a15, - chernihiv: a15, - chernivtsi: a15, - chernovtsy: a15, - ck: a15, - cn: a15, - cr: a15, - crimea: a15, - cv: a15, - dn: a15, - dnepropetrovsk: a15, - dnipropetrovsk: a15, - donetsk: a15, - dp: a15, - if: a15, - "ivano-frankivsk": a15, - kh: a15, - kharkiv: a15, - kharkov: a15, - kherson: a15, - khmelnitskiy: a15, - khmelnytskyi: a15, - kiev: a15, - kirovograd: a15, - km: a15, - kr: a15, - krym: a15, - ks: a15, - kv: a15, - kyiv: a15, - lg: a15, - lt: a15, - lugansk: a15, - lutsk: a15, - lv: a15, - lviv: a15, - mk: a15, - mykolaiv: a15, - nikolaev: a15, - od: a15, - odesa: a15, - odessa: a15, - pl: a15, - poltava: a15, - rivne: a15, - rovno: a15, - rv: a15, - sb: a15, - sebastopol: a15, - sevastopol: a15, - sm: a15, - sumy: a15, - te: a15, - ternopil: a15, - uz: a15, - uzhgorod: a15, - vinnica: a15, - vinnytsia: a15, - vn: a15, - volyn: a15, - yalta: a15, - zaporizhzhe: a15, - zaporizhzhia: a15, - zhitomir: a15, - zhytomyr: a15, - zp: a15, - zt: a15, - cc: o16, - inf: o16, - ltd: o16, - cx: o16, - biz: o16, - co: o16, - pp: o16, - v: o16 + ], + ua: [ + 1, + { + com: a, + edu: a, + gov: a, + in: a, + net: a, + org: a, + cherkassy: a, + cherkasy: a, + chernigov: a, + chernihiv: a, + chernivtsi: a, + chernovtsy: a, + ck: a, + cn: a, + cr: a, + crimea: a, + cv: a, + dn: a, + dnepropetrovsk: a, + dnipropetrovsk: a, + donetsk: a, + dp: a, + if: a, + "ivano-frankivsk": a, + kh: a, + kharkiv: a, + kharkov: a, + kherson: a, + khmelnitskiy: a, + khmelnytskyi: a, + kiev: a, + kirovograd: a, + km: a, + kr: a, + kropyvnytskyi: a, + krym: a, + ks: a, + kv: a, + kyiv: a, + lg: a, + lt: a, + lugansk: a, + lutsk: a, + lv: a, + lviv: a, + mk: a, + mykolaiv: a, + nikolaev: a, + od: a, + odesa: a, + odessa: a, + pl: a, + poltava: a, + rivne: a, + rovno: a, + rv: a, + sb: a, + sebastopol: a, + sevastopol: a, + sm: a, + sumy: a, + te: a, + ternopil: a, + uz: a, + uzhgorod: a, + vinnica: a, + vinnytsia: a, + vn: a, + volyn: a, + yalta: a, + zaporizhzhe: a, + zaporizhzhia: a, + zhitomir: a, + zhytomyr: a, + zp: a, + zt: a, + cc: o, + inf: o, + ltd: o, + cx: o, + ie: o, + biz: o, + co: o, + pp: o, + v: o } - }, - ug: { - $: 1, - succ: { - co: a15, - or: a15, - ac: a15, - sc: a15, - go: a15, - ne: a15, - com: a15, - org: a15, - blogspot: o16 + ], + ug: [ + 1, + { + co: a, + or: a, + ac: a, + sc: a, + go: a, + ne: a, + com: a, + org: a, + blogspot: o } - }, - uk: { - $: 1, - succ: { - ac: a15, - co: { - $: 1, - succ: { - bytemark: { - $: 0, - succ: { - dh: o16, - vm: o16 + ], + uk: [ + 1, + { + ac: a, + co: [ + 1, + { + bytemark: [ + 0, + { + dh: o, + vm: o } - }, - blogspot: o16, - layershift: $, - barsy: o16, - barsyonline: o16, - retrosnub: S, - "nh-serv": o16, - "no-ip": o16, - wellbeingzone: o16, - adimo: o16, - myspreadshop: o16, - gwiddle: o16 + ], + blogspot: o, + layershift: j, + barsy: o, + barsyonline: o, + retrosnub: A, + "nh-serv": o, + "no-ip": o, + wellbeingzone: o, + adimo: o, + myspreadshop: o } - }, - gov: { - $: 1, - succ: { - campaign: o16, - service: o16, - api: o16, - homeoffice: o16 + ], + gov: [ + 1, + { + campaign: o, + service: o, + api: o, + homeoffice: o } - }, - ltd: a15, - me: a15, - net: a15, - nhs: a15, - org: { - $: 1, - succ: { - glug: o16, - lug: o16, - lugs: o16, - affinitylottery: o16, - raffleentry: o16, - weeklylottery: o16 + ], + ltd: a, + me: a, + net: a, + nhs: a, + org: [ + 1, + { + glug: o, + lug: o, + lugs: o, + affinitylottery: o, + raffleentry: o, + weeklylottery: o } - }, - plc: a15, - police: a15, - sch: r6, - conn: o16, - copro: o16, - hosp: o16, - "independent-commission": o16, - "independent-inquest": o16, - "independent-inquiry": o16, - "independent-panel": o16, - "independent-review": o16, - "public-inquiry": o16, - "royal-commission": o16, - pymnt: o16, - barsy: o16 + ], + plc: a, + police: a, + sch: r, + conn: o, + copro: o, + hosp: o, + "independent-commission": o, + "independent-inquest": o, + "independent-inquiry": o, + "independent-panel": o, + "independent-review": o, + "public-inquiry": o, + "royal-commission": o, + pymnt: o, + barsy: o } - }, - us: { - $: 1, - succ: { - dni: a15, - fed: a15, - isa: a15, - kids: a15, - nsn: a15, - ak: B, - al: B, - ar: B, - as: B, - az: B, - ca: B, - co: B, - ct: B, - dc: B, - de: { - $: 1, - succ: { - k12: a15, - cc: a15, - lib: o16 + ], + us: [ + 1, + { + dni: a, + fed: a, + isa: a, + kids: a, + nsn: a, + ak: F, + al: F, + ar: F, + as: F, + az: F, + ca: F, + co: F, + ct: F, + dc: F, + de: [ + 1, + { + k12: a, + cc: a, + lib: o } - }, - fl: B, - ga: B, - gu: B, - hi: E, - ia: B, - id: B, - il: B, - in: B, - ks: B, - ky: B, - la: B, - ma: { - $: 1, - succ: { - k12: { - $: 1, - succ: { - pvt: a15, - chtr: a15, - paroch: a15 + ], + fl: F, + ga: F, + gu: F, + hi: G, + ia: F, + id: F, + il: F, + in: F, + ks: F, + ky: F, + la: F, + ma: [ + 1, + { + k12: [ + 1, + { + pvt: a, + chtr: a, + paroch: a } - }, - cc: a15, - lib: a15 + ], + cc: a, + lib: a } - }, - md: B, - me: B, - mi: { - $: 1, - succ: { - k12: a15, - cc: a15, - lib: a15, - "ann-arbor": a15, - cog: a15, - dst: a15, - eaton: a15, - gen: a15, - mus: a15, - tec: a15, - washtenaw: a15 + ], + md: F, + me: F, + mi: [ + 1, + { + k12: a, + cc: a, + lib: a, + "ann-arbor": a, + cog: a, + dst: a, + eaton: a, + gen: a, + mus: a, + tec: a, + washtenaw: a } - }, - mn: B, - mo: B, - ms: B, - mt: B, - nc: B, - nd: E, - ne: B, - nh: B, - nj: B, - nm: B, - nv: B, - ny: B, - oh: B, - ok: B, - or: B, - pa: B, - pr: B, - ri: E, - sc: B, - sd: E, - tn: B, - tx: B, - ut: B, - vi: B, - vt: B, - va: B, - wa: B, - wi: B, - wv: { - $: 1, - succ: { - cc: a15 + ], + mn: F, + mo: F, + ms: F, + mt: F, + nc: F, + nd: G, + ne: F, + nh: F, + nj: F, + nm: F, + nv: F, + ny: F, + oh: F, + ok: F, + or: F, + pa: F, + pr: F, + ri: G, + sc: F, + sd: G, + tn: F, + tx: F, + ut: F, + vi: F, + vt: F, + va: F, + wa: F, + wi: F, + wv: [ + 1, + { + cc: a } - }, - wy: B, - graphox: o16, - cloudns: o16, - drud: o16, - "is-by": o16, - "land-4-sale": o16, - "stuff-4-sale": o16, - enscaled: { - $: 0, - succ: { - phx: o16 + ], + wy: F, + graphox: o, + cloudns: o, + drud: o, + "is-by": o, + "land-4-sale": o, + "stuff-4-sale": o, + enscaled: [ + 0, + { + phx: o } - }, - mircloud: o16, - freeddns: o16, - golffan: o16, - noip: o16, - pointto: o16, - platterp: o16 + ], + mircloud: o, + freeddns: o, + golffan: o, + noip: o, + pointto: o, + platterp: o } - }, - uy: { - $: 1, - succ: { - com: s8, - edu: a15, - gub: a15, - mil: a15, - net: a15, - org: a15 + ], + uy: [ + 1, + { + com: n, + edu: a, + gub: a, + mil: a, + net: a, + org: a } - }, - uz: { - $: 1, - succ: { - co: a15, - com: a15, - net: a15, - org: a15 + ], + uz: [ + 1, + { + co: a, + com: a, + net: a, + org: a } - }, - va: a15, - vc: { - $: 1, - succ: { - com: a15, - net: a15, - org: a15, - gov: a15, - mil: a15, - edu: a15, - gv: { - $: 2, - succ: { - d: o16 + ], + va: a, + vc: [ + 1, + { + com: a, + net: a, + org: a, + gov: a, + mil: a, + edu: a, + gv: [ + 2, + { + d: o } - }, - "0e": o16 + ], + "0e": o } - }, - ve: { - $: 1, - succ: { - arts: a15, - bib: a15, - co: a15, - com: a15, - e12: a15, - edu: a15, - firm: a15, - gob: a15, - gov: a15, - info: a15, - int: a15, - mil: a15, - net: a15, - nom: a15, - org: a15, - rar: a15, - rec: a15, - store: a15, - tec: a15, - web: a15 + ], + ve: [ + 1, + { + arts: a, + bib: a, + co: a, + com: a, + e12: a, + edu: a, + firm: a, + gob: a, + gov: a, + info: a, + int: a, + mil: a, + net: a, + nom: a, + org: a, + rar: a, + rec: a, + store: a, + tec: a, + web: a } - }, - vg: { - $: 1, - succ: { - at: o16 + ], + vg: [ + 1, + { + at: o } - }, - vi: { - $: 1, - succ: { - co: a15, - com: a15, - k12: a15, - net: a15, - org: a15 + ], + vi: [ + 1, + { + co: a, + com: a, + k12: a, + net: a, + org: a } - }, - vn: { - $: 1, - succ: { - com: a15, - net: a15, - org: a15, - edu: a15, - gov: a15, - int: a15, - ac: a15, - biz: a15, - info: a15, - name: a15, - pro: a15, - health: a15, - blogspot: o16 + ], + vn: [ + 1, + { + com: a, + net: a, + org: a, + edu: a, + gov: a, + int: a, + ac: a, + biz: a, + info: a, + name: a, + pro: a, + health: a, + blogspot: o } - }, - vu: { - $: 1, - succ: { - com: a15, - edu: a15, - net: a15, - org: a15, - cn: o16, - blog: o16, - dev: o16, - me: o16 + ], + vu: [ + 1, + { + com: a, + edu: a, + net: a, + org: a, + cn: o, + blog: o, + dev: o, + me: o } - }, - wf: { - $: 1, - succ: { - biz: o16, - sch: o16 + ], + wf: [ + 1, + { + biz: o, + sch: o } - }, - ws: { - $: 1, - succ: { - com: a15, - net: a15, - org: a15, - gov: a15, - edu: a15, - advisor: e12, - cloud66: o16, - dyndns: o16, - mypets: o16 + ], + ws: [ + 1, + { + com: a, + net: a, + org: a, + gov: a, + edu: a, + advisor: e, + cloud66: o, + dyndns: o, + mypets: o } - }, - yt: { - $: 1, - succ: { - org: o16 + ], + yt: [ + 1, + { + org: o } - }, - "xn--mgbaam7a8h": a15, - "امارات": a15, - "xn--y9a3aq": a15, - "հայ": a15, - "xn--54b7fta0cc": a15, - "বাংলা": a15, - "xn--90ae": a15, - "бг": a15, - "xn--mgbcpq6gpa1a": a15, - "البحرين": a15, - "xn--90ais": a15, - "бел": a15, - "xn--fiqs8s": a15, - "中国": a15, - "xn--fiqz9s": a15, - "中國": a15, - "xn--lgbbat1ad8j": a15, - "الجزائر": a15, - "xn--wgbh1c": a15, - "مصر": a15, - "xn--e1a4c": a15, - "ею": a15, - "xn--qxa6a": a15, - "ευ": a15, - "xn--mgbah1a3hjkrd": a15, - "موريتانيا": a15, - "xn--node": a15, - "გე": a15, - "xn--qxam": a15, - "ελ": a15, - "xn--j6w193g": { - $: 1, - succ: { - "xn--55qx5d": a15, - "xn--wcvs22d": a15, - "xn--mxtq1m": a15, - "xn--gmqw5a": a15, - "xn--od0alg": a15, - "xn--uc0atv": a15 + ], + "xn--mgbaam7a8h": a, + "امارات": a, + "xn--y9a3aq": a, + "հայ": a, + "xn--54b7fta0cc": a, + "বাংলা": a, + "xn--90ae": a, + "бг": a, + "xn--mgbcpq6gpa1a": a, + "البحرين": a, + "xn--90ais": a, + "бел": a, + "xn--fiqs8s": a, + "中国": a, + "xn--fiqz9s": a, + "中國": a, + "xn--lgbbat1ad8j": a, + "الجزائر": a, + "xn--wgbh1c": a, + "مصر": a, + "xn--e1a4c": a, + "ею": a, + "xn--qxa6a": a, + "ευ": a, + "xn--mgbah1a3hjkrd": a, + "موريتانيا": a, + "xn--node": a, + "გე": a, + "xn--qxam": a, + "ελ": a, + "xn--j6w193g": [ + 1, + { + "xn--55qx5d": a, + "xn--wcvs22d": a, + "xn--mxtq1m": a, + "xn--gmqw5a": a, + "xn--od0alg": a, + "xn--uc0atv": a } - }, - "香港": { - $: 1, - succ: { - "公司": a15, - "教育": a15, - "政府": a15, - "個人": a15, - "網絡": a15, - "組織": a15 + ], + "香港": [ + 1, + { + "公司": a, + "教育": a, + "政府": a, + "個人": a, + "網絡": a, + "組織": a } - }, - "xn--2scrj9c": a15, - "ಭಾರತ": a15, - "xn--3hcrj9c": a15, - "ଭାରତ": a15, - "xn--45br5cyl": a15, - "ভাৰত": a15, - "xn--h2breg3eve": a15, - "भारतम्": a15, - "xn--h2brj9c8c": a15, - "भारोत": a15, - "xn--mgbgu82a": a15, - "ڀارت": a15, - "xn--rvc1e0am3e": a15, - "ഭാരതം": a15, - "xn--h2brj9c": a15, - "भारत": a15, - "xn--mgbbh1a": a15, - "بارت": a15, - "xn--mgbbh1a71e": a15, - "بھارت": a15, - "xn--fpcrj9c3d": a15, - "భారత్": a15, - "xn--gecrj9c": a15, - "ભારત": a15, - "xn--s9brj9c": a15, - "ਭਾਰਤ": a15, - "xn--45brj9c": a15, - "ভারত": a15, - "xn--xkc2dl3a5ee0h": a15, - "இந்தியா": a15, - "xn--mgba3a4f16a": a15, - "ایران": a15, - "xn--mgba3a4fra": a15, - "ايران": a15, - "xn--mgbtx2b": a15, - "عراق": a15, - "xn--mgbayh7gpa": a15, - "الاردن": a15, - "xn--3e0b707e": a15, - "한국": a15, - "xn--80ao21a": a15, - "қаз": a15, - "xn--q7ce6a": a15, - "ລາວ": a15, - "xn--fzc2c9e2c": a15, - "ලංකා": a15, - "xn--xkc2al3hye2a": a15, - "இலங்கை": a15, - "xn--mgbc0a9azcg": a15, - "المغرب": a15, - "xn--d1alf": a15, - "мкд": a15, - "xn--l1acc": a15, - "мон": a15, - "xn--mix891f": a15, - "澳門": a15, - "xn--mix082f": a15, - "澳门": a15, - "xn--mgbx4cd0ab": a15, - "مليسيا": a15, - "xn--mgb9awbf": a15, - "عمان": a15, - "xn--mgbai9azgqp6j": a15, - "پاکستان": a15, - "xn--mgbai9a5eva00b": a15, - "پاكستان": a15, - "xn--ygbi2ammx": a15, - "فلسطين": a15, - "xn--90a3ac": { - $: 1, - succ: { - "xn--o1ac": a15, - "xn--c1avg": a15, - "xn--90azh": a15, - "xn--d1at": a15, - "xn--o1ach": a15, - "xn--80au": a15 + ], + "xn--2scrj9c": a, + "ಭಾರತ": a, + "xn--3hcrj9c": a, + "ଭାରତ": a, + "xn--45br5cyl": a, + "ভাৰত": a, + "xn--h2breg3eve": a, + "भारतम्": a, + "xn--h2brj9c8c": a, + "भारोत": a, + "xn--mgbgu82a": a, + "ڀارت": a, + "xn--rvc1e0am3e": a, + "ഭാരതം": a, + "xn--h2brj9c": a, + "भारत": a, + "xn--mgbbh1a": a, + "بارت": a, + "xn--mgbbh1a71e": a, + "بھارت": a, + "xn--fpcrj9c3d": a, + "భారత్": a, + "xn--gecrj9c": a, + "ભારત": a, + "xn--s9brj9c": a, + "ਭਾਰਤ": a, + "xn--45brj9c": a, + "ভারত": a, + "xn--xkc2dl3a5ee0h": a, + "இந்தியா": a, + "xn--mgba3a4f16a": a, + "ایران": a, + "xn--mgba3a4fra": a, + "ايران": a, + "xn--mgbtx2b": a, + "عراق": a, + "xn--mgbayh7gpa": a, + "الاردن": a, + "xn--3e0b707e": a, + "한국": a, + "xn--80ao21a": a, + "қаз": a, + "xn--q7ce6a": a, + "ລາວ": a, + "xn--fzc2c9e2c": a, + "ලංකා": a, + "xn--xkc2al3hye2a": a, + "இலங்கை": a, + "xn--mgbc0a9azcg": a, + "المغرب": a, + "xn--d1alf": a, + "мкд": a, + "xn--l1acc": a, + "мон": a, + "xn--mix891f": a, + "澳門": a, + "xn--mix082f": a, + "澳门": a, + "xn--mgbx4cd0ab": a, + "مليسيا": a, + "xn--mgb9awbf": a, + "عمان": a, + "xn--mgbai9azgqp6j": a, + "پاکستان": a, + "xn--mgbai9a5eva00b": a, + "پاكستان": a, + "xn--ygbi2ammx": a, + "فلسطين": a, + "xn--90a3ac": [ + 1, + { + "xn--o1ac": a, + "xn--c1avg": a, + "xn--90azh": a, + "xn--d1at": a, + "xn--o1ach": a, + "xn--80au": a } - }, - "срб": { - $: 1, - succ: { - "пр": a15, - "орг": a15, - "обр": a15, - "од": a15, - "упр": a15, - "ак": a15 + ], + "срб": [ + 1, + { + "пр": a, + "орг": a, + "обр": a, + "од": a, + "упр": a, + "ак": a } - }, - "xn--p1ai": a15, - "рф": a15, - "xn--wgbl6a": a15, - "قطر": a15, - "xn--mgberp4a5d4ar": a15, - "السعودية": a15, - "xn--mgberp4a5d4a87g": a15, - "السعودیة": a15, - "xn--mgbqly7c0a67fbc": a15, - "السعودیۃ": a15, - "xn--mgbqly7cvafr": a15, - "السعوديه": a15, - "xn--mgbpl2fh": a15, - "سودان": a15, - "xn--yfro4i67o": a15, - "新加坡": a15, - "xn--clchc0ea0b2g2a9gcd": a15, - "சிங்கப்பூர்": a15, - "xn--ogbpf8fl": a15, - "سورية": a15, - "xn--mgbtf8fl": a15, - "سوريا": a15, - "xn--o3cw4h": { - $: 1, - succ: { - "xn--12c1fe0br": a15, - "xn--12co0c3b4eva": a15, - "xn--h3cuzk1di": a15, - "xn--o3cyx2a": a15, - "xn--m3ch0j3a": a15, - "xn--12cfi8ixb8l": a15 + ], + "xn--p1ai": a, + "рф": a, + "xn--wgbl6a": a, + "قطر": a, + "xn--mgberp4a5d4ar": a, + "السعودية": a, + "xn--mgberp4a5d4a87g": a, + "السعودیة": a, + "xn--mgbqly7c0a67fbc": a, + "السعودیۃ": a, + "xn--mgbqly7cvafr": a, + "السعوديه": a, + "xn--mgbpl2fh": a, + "سودان": a, + "xn--yfro4i67o": a, + "新加坡": a, + "xn--clchc0ea0b2g2a9gcd": a, + "சிங்கப்பூர்": a, + "xn--ogbpf8fl": a, + "سورية": a, + "xn--mgbtf8fl": a, + "سوريا": a, + "xn--o3cw4h": [ + 1, + { + "xn--12c1fe0br": a, + "xn--12co0c3b4eva": a, + "xn--h3cuzk1di": a, + "xn--o3cyx2a": a, + "xn--m3ch0j3a": a, + "xn--12cfi8ixb8l": a } - }, - "ไทย": { - $: 1, - succ: { - "ศึกษา": a15, - "ธุรกิจ": a15, - "รัฐบาล": a15, - "ทหาร": a15, - "เน็ต": a15, - "องค์กร": a15 + ], + "ไทย": [ + 1, + { + "ศึกษา": a, + "ธุรกิจ": a, + "รัฐบาล": a, + "ทหาร": a, + "เน็ต": a, + "องค์กร": a } - }, - "xn--pgbs0dh": a15, - "تونس": a15, - "xn--kpry57d": a15, - "台灣": a15, - "xn--kprw13d": a15, - "台湾": a15, - "xn--nnx388a": a15, - "臺灣": a15, - "xn--j1amh": a15, - "укр": a15, - "xn--mgb2ddes": a15, - "اليمن": a15, - xxx: a15, - ye: C, - za: { - $: 0, - succ: { - ac: a15, - agric: a15, - alt: a15, - co: s8, - edu: a15, - gov: a15, - grondar: a15, - law: a15, - mil: a15, - net: a15, - ngo: a15, - nic: a15, - nis: a15, - nom: a15, - org: a15, - school: a15, - tm: a15, - web: a15 + ], + "xn--pgbs0dh": a, + "تونس": a, + "xn--kpry57d": a, + "台灣": a, + "xn--kprw13d": a, + "台湾": a, + "xn--nnx388a": a, + "臺灣": a, + "xn--j1amh": a, + "укр": a, + "xn--mgb2ddes": a, + "اليمن": a, + xxx: a, + ye: P, + za: [ + 0, + { + ac: a, + agric: a, + alt: a, + co: n, + edu: a, + gov: a, + grondar: a, + law: a, + mil: a, + net: a, + ngo: a, + nic: a, + nis: a, + nom: a, + org: a, + school: a, + tm: a, + web: a } - }, - zm: { - $: 1, - succ: { - ac: a15, - biz: a15, - co: a15, - com: a15, - edu: a15, - gov: a15, - info: a15, - mil: a15, - net: a15, - org: a15, - sch: a15 + ], + zm: [ + 1, + { + ac: a, + biz: a, + co: a, + com: a, + edu: a, + gov: a, + info: a, + mil: a, + net: a, + org: a, + sch: a } - }, - zw: { - $: 1, - succ: { - ac: a15, - co: a15, - gov: a15, - mil: a15, - org: a15 + ], + zw: [ + 1, + { + ac: a, + co: a, + gov: a, + mil: a, + org: a } - }, - aaa: a15, - aarp: a15, - abarth: a15, - abb: a15, - abbott: a15, - abbvie: a15, - abc: a15, - able: a15, - abogado: a15, - abudhabi: a15, - academy: { - $: 1, - succ: { - official: o16 + ], + aaa: a, + aarp: a, + abarth: a, + abb: a, + abbott: a, + abbvie: a, + abc: a, + able: a, + abogado: a, + abudhabi: a, + academy: [ + 1, + { + official: o } - }, - accenture: a15, - accountant: a15, - accountants: a15, - aco: a15, - actor: a15, - adac: a15, - ads: a15, - adult: a15, - aeg: a15, - aetna: a15, - afl: a15, - africa: a15, - agakhan: a15, - agency: a15, - aig: a15, - airbus: a15, - airforce: a15, - airtel: a15, - akdn: a15, - alfaromeo: a15, - alibaba: a15, - alipay: a15, - allfinanz: a15, - allstate: a15, - ally: a15, - alsace: a15, - alstom: a15, - amazon: a15, - americanexpress: a15, - americanfamily: a15, - amex: a15, - amfam: a15, - amica: a15, - amsterdam: a15, - analytics: a15, - android: a15, - anquan: a15, - anz: a15, - aol: a15, - apartments: a15, - app: { - $: 1, - succ: { - beget: e12, - clerk: o16, - clerkstage: o16, - wnext: o16, - platform0: o16, - deta: o16, - ondigitalocean: o16, - easypanel: o16, - encr: o16, - edgecompute: o16, - fireweb: o16, - onflashdrive: o16, - framer: o16, - run: { - $: 2, - succ: { - a: o16 + ], + accenture: a, + accountant: a, + accountants: a, + aco: a, + actor: a, + ads: a, + adult: a, + aeg: a, + aetna: a, + afl: a, + africa: a, + agakhan: a, + agency: a, + aig: a, + airbus: a, + airforce: a, + airtel: a, + akdn: a, + alfaromeo: a, + alibaba: a, + alipay: a, + allfinanz: a, + allstate: a, + ally: a, + alsace: a, + alstom: a, + amazon: a, + americanexpress: a, + americanfamily: a, + amex: a, + amfam: a, + amica: a, + amsterdam: a, + analytics: a, + android: a, + anquan: a, + anz: a, + aol: a, + apartments: a, + app: [ + 1, + { + beget: e, + clerk: o, + clerkstage: o, + wnext: o, + platform0: o, + deta: o, + ondigitalocean: o, + easypanel: o, + encr: o, + edgecompute: o, + fireweb: o, + onflashdrive: o, + framer: o, + run: [ + 2, + { + a: o } - }, - web: o16, - hasura: o16, - loginline: o16, - messerli: o16, - netlify: o16, - developer: e12, - noop: o16, - northflank: e12, - telebit: o16, - typedream: o16, - vercel: o16, - bookonline: o16 + ], + web: o, + hasura: o, + loginline: o, + messerli: o, + netlify: o, + ngrok: o, + "ngrok-free": o, + developer: e, + noop: o, + northflank: e, + snowflake: [ + 2, + { + privatelink: o + } + ], + streamlit: o, + telebit: o, + typedream: o, + vercel: o, + bookonline: o } - }, - apple: a15, - aquarelle: a15, - arab: a15, - aramco: a15, - archi: a15, - army: a15, - art: a15, - arte: a15, - asda: a15, - associates: a15, - athleta: a15, - attorney: a15, - auction: a15, - audi: a15, - audible: a15, - audio: a15, - auspost: a15, - author: a15, - auto: a15, - autos: a15, - avianca: a15, - aws: a15, - axa: a15, - azure: a15, - baby: a15, - baidu: a15, - banamex: a15, - bananarepublic: a15, - band: a15, - bank: a15, - bar: a15, - barcelona: a15, - barclaycard: a15, - barclays: a15, - barefoot: a15, - bargains: a15, - baseball: a15, - basketball: { - $: 1, - succ: { - aus: o16, - nz: o16 + ], + apple: a, + aquarelle: a, + arab: a, + aramco: a, + archi: a, + army: a, + art: a, + arte: a, + asda: a, + associates: a, + athleta: a, + attorney: a, + auction: a, + audi: a, + audible: a, + audio: a, + auspost: a, + author: a, + auto: a, + autos: a, + avianca: a, + aws: a, + axa: a, + azure: a, + baby: a, + baidu: a, + banamex: a, + bananarepublic: a, + band: a, + bank: a, + bar: a, + barcelona: a, + barclaycard: a, + barclays: a, + barefoot: a, + bargains: a, + baseball: a, + basketball: [ + 1, + { + aus: o, + nz: o } - }, - bauhaus: a15, - bayern: a15, - bbc: a15, - bbt: a15, - bbva: a15, - bcg: a15, - bcn: a15, - beats: a15, - beauty: a15, - beer: a15, - bentley: a15, - berlin: a15, - best: a15, - bestbuy: a15, - bet: a15, - bharti: a15, - bible: a15, - bid: a15, - bike: a15, - bing: a15, - bingo: a15, - bio: a15, - black: a15, - blackfriday: a15, - blockbuster: a15, - blog: a15, - bloomberg: a15, - blue: a15, - bms: a15, - bmw: a15, - bnpparibas: a15, - boats: a15, - boehringer: a15, - bofa: a15, - bom: a15, - bond: a15, - boo: a15, - book: a15, - booking: a15, - bosch: a15, - bostik: a15, - boston: a15, - bot: a15, - boutique: a15, - box: a15, - bradesco: a15, - bridgestone: a15, - broadway: a15, - broker: a15, - brother: a15, - brussels: a15, - bugatti: a15, - build: a15, - builders: { - $: 1, - succ: { - cloudsite: o16 + ], + bauhaus: a, + bayern: a, + bbc: a, + bbt: a, + bbva: a, + bcg: a, + bcn: a, + beats: a, + beauty: a, + beer: a, + bentley: a, + berlin: a, + best: a, + bestbuy: a, + bet: a, + bharti: a, + bible: a, + bid: a, + bike: a, + bing: a, + bingo: a, + bio: a, + black: a, + blackfriday: a, + blockbuster: a, + blog: a, + bloomberg: a, + blue: a, + bms: a, + bmw: a, + bnpparibas: a, + boats: a, + boehringer: a, + bofa: a, + bom: a, + bond: a, + boo: a, + book: a, + booking: a, + bosch: a, + bostik: a, + boston: a, + bot: a, + boutique: a, + box: a, + bradesco: a, + bridgestone: a, + broadway: a, + broker: a, + brother: a, + brussels: a, + build: a, + builders: [ + 1, + { + cloudsite: o } - }, - business: c3, - buy: a15, - buzz: a15, - bzh: a15, - cab: a15, - cafe: a15, - cal: a15, - call: a15, - calvinklein: a15, - cam: a15, - camera: a15, - camp: a15, - cancerresearch: a15, - canon: a15, - capetown: a15, - capital: a15, - capitalone: a15, - car: a15, - caravan: a15, - cards: a15, - care: a15, - career: a15, - careers: a15, - cars: a15, - casa: { - $: 1, - succ: { - nabu: { - $: 0, - succ: { - ui: o16 + ], + business: l, + buy: a, + buzz: a, + bzh: a, + cab: a, + cafe: a, + cal: a, + call: a, + calvinklein: a, + cam: a, + camera: a, + camp: a, + canon: a, + capetown: a, + capital: a, + capitalone: a, + car: a, + caravan: a, + cards: a, + care: a, + career: a, + careers: a, + cars: a, + casa: [ + 1, + { + nabu: [ + 0, + { + ui: o } - } + ] } - }, - case: a15, - cash: a15, - casino: a15, - catering: a15, - catholic: a15, - cba: a15, - cbn: a15, - cbre: a15, - cbs: a15, - center: a15, - ceo: a15, - cern: a15, - cfa: a15, - cfd: a15, - chanel: a15, - channel: a15, - charity: a15, - chase: a15, - chat: a15, - cheap: a15, - chintai: a15, - christmas: a15, - chrome: a15, - church: a15, - cipriani: a15, - circle: a15, - cisco: a15, - citadel: a15, - citi: a15, - citic: a15, - city: a15, - cityeats: a15, - claims: a15, - cleaning: a15, - click: a15, - clinic: a15, - clinique: a15, - clothing: a15, - cloud: { - $: 1, - succ: { - banzai: e12, - elementor: o16, - encoway: { - $: 0, - succ: { - eu: o16 + ], + case: a, + cash: a, + casino: a, + catering: a, + catholic: a, + cba: a, + cbn: a, + cbre: a, + cbs: a, + center: a, + ceo: a, + cern: a, + cfa: a, + cfd: a, + chanel: a, + channel: a, + charity: a, + chase: a, + chat: a, + cheap: a, + chintai: a, + christmas: a, + chrome: a, + church: a, + cipriani: a, + circle: a, + cisco: a, + citadel: a, + citi: a, + citic: a, + city: a, + cityeats: a, + claims: a, + cleaning: a, + click: a, + clinic: a, + clinique: a, + clothing: a, + cloud: [ + 1, + { + banzai: e, + elementor: o, + encoway: [ + 0, + { + eu: o } - }, - statics: e12, - ravendb: o16, - axarnet: { - $: 0, - succ: { - "es-1": o16 + ], + statics: e, + ravendb: o, + axarnet: [ + 0, + { + "es-1": o } - }, - diadem: o16, - jelastic: { - $: 0, - succ: { - vip: o16 + ], + diadem: o, + jelastic: [ + 0, + { + vip: o } - }, - jele: o16, - "jenv-aruba": { - $: 0, - succ: { - aruba: { - $: 0, - succ: { - eur: { - $: 0, - succ: { - it1: o16 + ], + jele: o, + "jenv-aruba": [ + 0, + { + aruba: [ + 0, + { + eur: [ + 0, + { + it1: o } - } + ] } - }, - it1: o16 + ], + it1: o } - }, - keliweb: { - $: 2, - succ: { - cs: o16 + ], + keliweb: [ + 2, + { + cs: o } - }, - oxa: { - $: 2, - succ: { - tn: o16, - uk: o16 + ], + oxa: [ + 2, + { + tn: o, + uk: o } - }, - primetel: { - $: 2, - succ: { - uk: o16 + ], + primetel: [ + 2, + { + uk: o } - }, - reclaim: { - $: 0, - succ: { - ca: o16, - uk: o16, - us: o16 + ], + reclaim: [ + 0, + { + ca: o, + uk: o, + us: o } - }, - trendhosting: { - $: 0, - succ: { - ch: o16, - de: o16 + ], + trendhosting: [ + 0, + { + ch: o, + de: o } - }, - jotelulu: o16, - kuleuven: o16, - linkyard: o16, - magentosite: e12, - perspecta: o16, - vapor: o16, - "on-rancher": e12, - scw: { - $: 0, - succ: { - baremetal: { - $: 0, - succ: { - "fr-par-1": o16, - "fr-par-2": o16, - "nl-ams-1": o16 + ], + jotelulu: o, + kuleuven: o, + linkyard: o, + magentosite: e, + perspecta: o, + vapor: o, + "on-rancher": e, + scw: [ + 0, + { + baremetal: [ + 0, + { + "fr-par-1": o, + "fr-par-2": o, + "nl-ams-1": o } - }, - "fr-par": { - $: 0, - succ: { - fnc: { - $: 2, - succ: { - functions: o16 + ], + "fr-par": [ + 0, + { + fnc: [ + 2, + { + functions: o } - }, - k8s: u2, - s3: o16, - "s3-website": o16, - whm: o16 + ], + k8s: m, + s3: o, + "s3-website": o, + whm: o } - }, - instances: { - $: 0, - succ: { - priv: o16, - pub: o16 + ], + instances: [ + 0, + { + priv: o, + pub: o } - }, - k8s: o16, - "nl-ams": { - $: 0, - succ: { - k8s: u2, - s3: o16, - "s3-website": o16, - whm: o16 + ], + k8s: o, + "nl-ams": [ + 0, + { + k8s: m, + s3: o, + "s3-website": o, + whm: o } - }, - "pl-waw": { - $: 0, - succ: { - k8s: u2, - s3: o16, - "s3-website": o16 + ], + "pl-waw": [ + 0, + { + k8s: m, + s3: o, + "s3-website": o } - }, - scalebook: o16, - smartlabeling: o16 + ], + scalebook: o, + smartlabeling: o } - }, - sensiosite: e12, - trafficplex: o16, - urown: o16, - voorloper: o16 + ], + sensiosite: e, + trafficplex: o, + urown: o, + voorloper: o } - }, - club: { - $: 1, - succ: { - cloudns: o16, - jele: o16, - barsy: o16, - pony: o16 + ], + club: [ + 1, + { + cloudns: o, + jele: o, + barsy: o } - }, - clubmed: a15, - coach: a15, - codes: { - $: 1, - succ: { - owo: e12 + ], + clubmed: a, + coach: a, + codes: [ + 1, + { + owo: e } - }, - coffee: a15, - college: a15, - cologne: a15, - comcast: a15, - commbank: a15, - community: { - $: 1, - succ: { - nog: o16, - ravendb: o16, - myforum: o16 + ], + coffee: a, + college: a, + cologne: a, + comcast: a, + commbank: a, + community: [ + 1, + { + nog: o, + ravendb: o, + myforum: o } - }, - company: a15, - compare: a15, - computer: a15, - comsec: a15, - condos: a15, - construction: a15, - consulting: a15, - contact: a15, - contractors: a15, - cooking: a15, - cookingchannel: a15, - cool: { - $: 1, - succ: { - elementor: o16, - de: o16 + ], + company: a, + compare: a, + computer: a, + comsec: a, + condos: a, + construction: a, + consulting: a, + contact: a, + contractors: a, + cooking: a, + cookingchannel: a, + cool: [ + 1, + { + elementor: o, + de: o } - }, - corsica: a15, - country: a15, - coupon: a15, - coupons: a15, - courses: a15, - cpa: a15, - credit: a15, - creditcard: a15, - creditunion: a15, - cricket: a15, - crown: a15, - crs: a15, - cruise: a15, - cruises: a15, - cuisinella: a15, - cymru: a15, - cyou: a15, - dabur: a15, - dad: a15, - dance: a15, - data: a15, - date: a15, - dating: a15, - datsun: a15, - day: a15, - dclk: a15, - dds: a15, - deal: a15, - dealer: a15, - deals: a15, - degree: a15, - delivery: a15, - dell: a15, - deloitte: a15, - delta: a15, - democrat: a15, - dental: a15, - dentist: a15, - desi: a15, - design: { - $: 1, - succ: { - bss: o16 + ], + corsica: a, + country: a, + coupon: a, + coupons: a, + courses: a, + cpa: a, + credit: a, + creditcard: a, + creditunion: a, + cricket: a, + crown: a, + crs: a, + cruise: a, + cruises: a, + cuisinella: a, + cymru: a, + cyou: a, + dabur: a, + dad: a, + dance: a, + data: a, + date: a, + dating: a, + datsun: a, + day: a, + dclk: a, + dds: a, + deal: a, + dealer: a, + deals: a, + degree: a, + delivery: a, + dell: a, + deloitte: a, + delta: a, + democrat: a, + dental: a, + dentist: a, + desi: a, + design: [ + 1, + { + bss: o } - }, - dev: { - $: 1, - succ: { - lcl: e12, - lclstage: e12, - stg: e12, - stgstage: e12, - pages: o16, - workers: o16, - curv: o16, - deno: o16, - "deno-staging": o16, - deta: o16, - fly: o16, - githubpreview: o16, - gateway: e12, - iserv: o16, - localcert: { - $: 0, - succ: { - user: e12 + ], + dev: [ + 1, + { + autocode: o, + lcl: e, + lclstage: e, + stg: e, + stgstage: e, + pages: o, + r2: o, + workers: o, + curv: o, + deno: o, + "deno-staging": o, + deta: o, + fly: o, + githubpreview: o, + gateway: e, + iserv: o, + localcert: [ + 0, + { + user: e } - }, - loginline: o16, - mediatech: o16, - "platter-app": o16, - shiftcrypto: o16, - vercel: o16, - webhare: e12 + ], + loginline: o, + mediatech: o, + ngrok: o, + "ngrok-free": o, + "platter-app": o, + shiftcrypto: o, + vercel: o, + webhare: e } - }, - dhl: a15, - diamonds: a15, - diet: a15, - digital: { - $: 1, - succ: { - cloudapps: { - $: 2, - succ: { - london: o16 + ], + dhl: a, + diamonds: a, + diet: a, + digital: [ + 1, + { + cloudapps: [ + 2, + { + london: o } - } + ] } - }, - direct: a15, - directory: a15, - discount: a15, - discover: a15, - dish: a15, - diy: a15, - dnp: a15, - docs: a15, - doctor: a15, - dog: a15, - domains: a15, - dot: a15, - download: a15, - drive: a15, - dtv: a15, - dubai: a15, - dunlop: a15, - dupont: a15, - durban: a15, - dvag: a15, - dvr: a15, - earth: { - $: 1, - succ: { - dapps: { - $: 0, - succ: { - "*": o16, - bzz: e12 + ], + direct: a, + directory: a, + discount: a, + discover: a, + dish: a, + diy: a, + dnp: a, + docs: a, + doctor: a, + dog: a, + domains: a, + dot: a, + download: a, + drive: a, + dtv: a, + dubai: a, + dunlop: a, + dupont: a, + durban: a, + dvag: a, + dvr: a, + earth: [ + 1, + { + dapps: [ + 0, + { + "*": o, + bzz: e } - } - } - }, - eat: a15, - eco: a15, - edeka: a15, - education: c3, - email: a15, - emerck: a15, - energy: a15, - engineer: a15, - engineering: a15, - enterprises: a15, - epson: a15, - equipment: a15, - ericsson: a15, - erni: a15, - esq: a15, - estate: { - $: 1, - succ: { - compute: e12 + ] } - }, - etisalat: a15, - eurovision: a15, - eus: { - $: 1, - succ: { - party: j + ], + eat: a, + eco: a, + edeka: a, + education: l, + email: a, + emerck: a, + energy: a, + engineer: a, + engineering: a, + enterprises: a, + epson: a, + equipment: a, + ericsson: a, + erni: a, + esq: a, + estate: [ + 1, + { + compute: e } - }, - events: { - $: 1, - succ: { - koobin: o16, - co: o16 + ], + etisalat: a, + eurovision: a, + eus: [ + 1, + { + party: I } - }, - exchange: a15, - expert: a15, - exposed: a15, - express: a15, - extraspace: a15, - fage: a15, - fail: a15, - fairwinds: a15, - faith: q, - family: a15, - fan: a15, - fans: a15, - farm: { - $: 1, - succ: { - storj: o16 + ], + events: [ + 1, + { + koobin: o, + co: o } - }, - farmers: a15, - fashion: { - $: 1, - succ: { - of: o16 + ], + exchange: a, + expert: a, + exposed: a, + express: a, + extraspace: a, + fage: a, + fail: a, + fairwinds: a, + faith: S, + family: a, + fan: a, + fans: a, + farm: [ + 1, + { + storj: o } - }, - fast: a15, - fedex: a15, - feedback: a15, - ferrari: a15, - ferrero: a15, - fiat: a15, - fidelity: a15, - fido: a15, - film: a15, - final: a15, - finance: a15, - financial: c3, - fire: a15, - firestone: a15, - firmdale: a15, - fish: a15, - fishing: a15, - fit: a15, - fitness: a15, - flickr: a15, - flights: a15, - flir: a15, - florist: a15, - flowers: a15, - fly: a15, - foo: a15, - food: a15, - foodnetwork: a15, - football: a15, - ford: a15, - forex: a15, - forsale: a15, - forum: a15, - foundation: a15, - fox: a15, - free: a15, - fresenius: a15, - frl: a15, - frogans: a15, - frontdoor: a15, - frontier: a15, - ftr: a15, - fujitsu: a15, - fun: a15, - fund: a15, - furniture: a15, - futbol: a15, - fyi: a15, - gal: a15, - gallery: a15, - gallo: a15, - gallup: a15, - game: a15, - games: a15, - gap: a15, - garden: a15, - gay: a15, - gbiz: a15, - gdn: { - $: 1, - succ: { - cnpy: o16 + ], + farmers: a, + fashion: a, + fast: a, + fedex: a, + feedback: a, + ferrari: a, + ferrero: a, + fiat: a, + fidelity: a, + fido: a, + film: a, + final: a, + finance: a, + financial: l, + fire: a, + firestone: a, + firmdale: a, + fish: a, + fishing: a, + fit: a, + fitness: a, + flickr: a, + flights: a, + flir: a, + florist: a, + flowers: a, + fly: a, + foo: a, + food: a, + foodnetwork: a, + football: a, + ford: a, + forex: a, + forsale: a, + forum: a, + foundation: a, + fox: a, + free: a, + fresenius: a, + frl: a, + frogans: a, + frontdoor: a, + frontier: a, + ftr: a, + fujitsu: a, + fun: a, + fund: a, + furniture: a, + futbol: a, + fyi: a, + gal: a, + gallery: a, + gallo: a, + gallup: a, + game: a, + games: a, + gap: a, + garden: a, + gay: a, + gbiz: a, + gdn: [ + 1, + { + cnpy: o } - }, - gea: a15, - gent: a15, - genting: a15, - george: a15, - ggee: a15, - gift: a15, - gifts: a15, - gives: a15, - giving: a15, - glass: a15, - gle: a15, - global: a15, - globo: a15, - gmail: a15, - gmbh: a15, - gmo: a15, - gmx: a15, - godaddy: a15, - gold: a15, - goldpoint: a15, - golf: a15, - goo: a15, - goodyear: a15, - goog: { - $: 1, - succ: { - cloud: o16, - translate: o16, - usercontent: e12 + ], + gea: a, + gent: a, + genting: a, + george: a, + ggee: a, + gift: a, + gifts: a, + gives: a, + giving: a, + glass: a, + gle: a, + global: a, + globo: a, + gmail: a, + gmbh: a, + gmo: a, + gmx: a, + godaddy: a, + gold: a, + goldpoint: a, + golf: a, + goo: a, + goodyear: a, + goog: [ + 1, + { + cloud: o, + translate: o, + usercontent: e } - }, - google: a15, - gop: a15, - got: a15, - grainger: a15, - graphics: a15, - gratis: a15, - green: a15, - gripe: a15, - grocery: a15, - group: { - $: 1, - succ: { - discourse: o16 + ], + google: a, + gop: a, + got: a, + grainger: a, + graphics: a, + gratis: a, + green: a, + gripe: a, + grocery: a, + group: [ + 1, + { + discourse: o } - }, - guardian: a15, - gucci: a15, - guge: a15, - guide: a15, - guitars: a15, - guru: a15, - hair: a15, - hamburg: a15, - hangout: a15, - haus: a15, - hbo: a15, - hdfc: a15, - hdfcbank: a15, - health: { - $: 1, - succ: { - hra: o16 + ], + guardian: a, + gucci: a, + guge: a, + guide: a, + guitars: a, + guru: a, + hair: a, + hamburg: a, + hangout: a, + haus: a, + hbo: a, + hdfc: a, + hdfcbank: a, + health: [ + 1, + { + hra: o } - }, - healthcare: a15, - help: a15, - helsinki: a15, - here: a15, - hermes: a15, - hgtv: a15, - hiphop: a15, - hisamitsu: a15, - hitachi: a15, - hiv: a15, - hkt: a15, - hockey: a15, - holdings: a15, - holiday: a15, - homedepot: a15, - homegoods: a15, - homes: a15, - homesense: a15, - honda: a15, - horse: a15, - hospital: a15, - host: { - $: 1, - succ: { - cloudaccess: o16, - freesite: o16, - easypanel: o16, - fastvps: o16, - myfast: o16, - tempurl: o16, - wpmudev: o16, - jele: o16, - mircloud: o16, - pcloud: o16, - half: o16 + ], + healthcare: a, + help: a, + helsinki: a, + here: a, + hermes: a, + hgtv: a, + hiphop: a, + hisamitsu: a, + hitachi: a, + hiv: a, + hkt: a, + hockey: a, + holdings: a, + holiday: a, + homedepot: a, + homegoods: a, + homes: a, + homesense: a, + honda: a, + horse: a, + hospital: a, + host: [ + 1, + { + cloudaccess: o, + freesite: o, + easypanel: o, + fastvps: o, + myfast: o, + tempurl: o, + wpmudev: o, + jele: o, + mircloud: o, + pcloud: o, + half: o } - }, - hosting: { - $: 1, - succ: { - opencraft: o16 + ], + hosting: [ + 1, + { + opencraft: o } - }, - hot: a15, - hoteles: a15, - hotels: a15, - hotmail: a15, - house: a15, - how: a15, - hsbc: a15, - hughes: a15, - hyatt: a15, - hyundai: a15, - ibm: a15, - icbc: a15, - ice: a15, - icu: a15, - ieee: a15, - ifm: a15, - ikano: a15, - imamat: a15, - imdb: a15, - immo: a15, - immobilien: a15, - inc: a15, - industries: a15, - infiniti: a15, - ing: a15, - ink: a15, - institute: a15, - insurance: a15, - insure: a15, - international: a15, - intuit: a15, - investments: a15, - ipiranga: a15, - irish: a15, - ismaili: a15, - ist: a15, - istanbul: a15, - itau: a15, - itv: a15, - jaguar: a15, - java: a15, - jcb: a15, - jeep: a15, - jetzt: a15, - jewelry: a15, - jio: a15, - jll: a15, - jmp: a15, - jnj: a15, - joburg: a15, - jot: a15, - joy: a15, - jpmorgan: a15, - jprs: a15, - juegos: a15, - juniper: a15, - kaufen: a15, - kddi: a15, - kerryhotels: a15, - kerrylogistics: a15, - kerryproperties: a15, - kfh: a15, - kia: a15, - kids: a15, - kim: a15, - kinder: a15, - kindle: a15, - kitchen: a15, - kiwi: a15, - koeln: a15, - komatsu: a15, - kosher: a15, - kpmg: a15, - kpn: a15, - krd: { - $: 1, - succ: { - co: o16, - edu: o16 + ], + hot: a, + hoteles: a, + hotels: a, + hotmail: a, + house: a, + how: a, + hsbc: a, + hughes: a, + hyatt: a, + hyundai: a, + ibm: a, + icbc: a, + ice: a, + icu: a, + ieee: a, + ifm: a, + ikano: a, + imamat: a, + imdb: a, + immo: a, + immobilien: a, + inc: a, + industries: a, + infiniti: a, + ing: a, + ink: a, + institute: a, + insurance: a, + insure: a, + international: a, + intuit: a, + investments: a, + ipiranga: a, + irish: a, + ismaili: a, + ist: a, + istanbul: a, + itau: a, + itv: a, + jaguar: a, + java: a, + jcb: a, + jeep: a, + jetzt: a, + jewelry: a, + jio: a, + jll: a, + jmp: a, + jnj: a, + joburg: a, + jot: a, + joy: a, + jpmorgan: a, + jprs: a, + juegos: a, + juniper: a, + kaufen: a, + kddi: a, + kerryhotels: a, + kerrylogistics: a, + kerryproperties: a, + kfh: a, + kia: a, + kids: a, + kim: a, + kinder: a, + kindle: a, + kitchen: a, + kiwi: a, + koeln: a, + komatsu: a, + kosher: a, + kpmg: a, + kpn: a, + krd: [ + 1, + { + co: o, + edu: o } - }, - kred: a15, - kuokgroup: a15, - kyoto: a15, - lacaixa: a15, - lamborghini: a15, - lamer: a15, - lancaster: a15, - lancia: a15, - land: { - $: 1, - succ: { - static: { - $: 2, - succ: { - dev: o16, - sites: o16 + ], + kred: a, + kuokgroup: a, + kyoto: a, + lacaixa: a, + lamborghini: a, + lamer: a, + lancaster: a, + lancia: a, + land: [ + 1, + { + static: [ + 2, + { + dev: o, + sites: o } - } - } - }, - landrover: a15, - lanxess: a15, - lasalle: a15, - lat: a15, - latino: a15, - latrobe: a15, - law: a15, - lawyer: a15, - lds: a15, - lease: a15, - leclerc: a15, - lefrak: a15, - legal: a15, - lego: a15, - lexus: a15, - lgbt: a15, - lidl: a15, - life: a15, - lifeinsurance: a15, - lifestyle: a15, - lighting: a15, - like: a15, - lilly: a15, - limited: a15, - limo: a15, - lincoln: a15, - linde: a15, - link: { - $: 1, - succ: { - cyon: o16, - mypep: o16, - dweb: e12 - } - }, - lipsy: a15, - live: { - $: 1, - succ: { - hlx: o16 - } - }, - living: a15, - llc: a15, - llp: a15, - loan: a15, - loans: a15, - locker: a15, - locus: a15, - loft: a15, - lol: { - $: 1, - succ: { - omg: o16 - } - }, - london: { - $: 1, - succ: { - in: o16, - of: o16 + ] } - }, - lotte: a15, - lotto: a15, - love: a15, - lpl: a15, - lplfinancial: a15, - ltd: a15, - ltda: a15, - lundbeck: a15, - luxe: a15, - luxury: a15, - macys: a15, - madrid: a15, - maif: a15, - maison: a15, - makeup: a15, - man: a15, - management: { - $: 1, - succ: { - router: o16 + ], + landrover: a, + lanxess: a, + lasalle: a, + lat: a, + latino: a, + latrobe: a, + law: a, + lawyer: a, + lds: a, + lease: a, + leclerc: a, + lefrak: a, + legal: a, + lego: a, + lexus: a, + lgbt: a, + lidl: a, + life: a, + lifeinsurance: a, + lifestyle: a, + lighting: a, + like: a, + lilly: a, + limited: a, + limo: a, + lincoln: a, + link: [ + 1, + { + cyon: o, + mypep: o, + dweb: e } - }, - mango: a15, - map: a15, - market: a15, - marketing: { - $: 1, - succ: { - from: o16, - with: o16 + ], + lipsy: a, + live: [ + 1, + { + hlx: o } - }, - markets: a15, - marriott: a15, - marshalls: a15, - maserati: a15, - mattel: a15, - mba: a15, - mckinsey: a15, - med: a15, - media: H, - meet: a15, - melbourne: a15, - meme: a15, - memorial: a15, - men: { - $: 1, - succ: { - for: o16, - repair: o16 + ], + living: a, + llc: a, + llp: a, + loan: a, + loans: a, + locker: a, + locus: a, + lol: [ + 1, + { + omg: o } - }, - menu: D, - merckmsd: a15, - miami: a15, - microsoft: a15, - mini: a15, - mint: a15, - mit: a15, - mitsubishi: a15, - mlb: a15, - mls: a15, - mma: a15, - mobile: a15, - moda: a15, - moe: a15, - moi: a15, - mom: { - $: 1, - succ: { - and: o16, - for: o16 + ], + london: a, + lotte: a, + lotto: a, + love: a, + lpl: a, + lplfinancial: a, + ltd: a, + ltda: a, + lundbeck: a, + luxe: a, + luxury: a, + madrid: a, + maif: a, + maison: a, + makeup: a, + man: a, + management: [ + 1, + { + router: o } - }, - monash: a15, - money: a15, - monster: a15, - mormon: a15, - mortgage: a15, - moscow: a15, - moto: a15, - motorcycles: a15, - mov: a15, - movie: a15, - msd: a15, - mtn: a15, - mtr: a15, - music: a15, - mutual: a15, - nab: a15, - nagoya: a15, - natura: a15, - navy: a15, - nba: a15, - nec: a15, - netbank: a15, - netflix: a15, - network: { - $: 1, - succ: { - alces: e12, - co: o16, - arvo: o16, - azimuth: o16, - tlon: o16 + ], + mango: a, + map: a, + market: a, + marketing: a, + markets: a, + marriott: a, + marshalls: a, + maserati: a, + mattel: a, + mba: a, + mckinsey: a, + med: a, + media: D, + meet: a, + melbourne: a, + meme: a, + memorial: a, + men: a, + menu: L, + merckmsd: a, + miami: a, + microsoft: a, + mini: a, + mint: a, + mit: a, + mitsubishi: a, + mlb: a, + mls: a, + mma: a, + mobile: a, + moda: a, + moe: a, + moi: a, + mom: a, + monash: a, + money: a, + monster: a, + mormon: a, + mortgage: a, + moscow: a, + moto: a, + motorcycles: a, + mov: a, + movie: a, + msd: a, + mtn: a, + mtr: a, + music: a, + mutual: a, + nab: a, + nagoya: a, + natura: a, + navy: a, + nba: a, + nec: a, + netbank: a, + netflix: a, + network: [ + 1, + { + alces: e, + co: o, + arvo: o, + azimuth: o, + tlon: o } - }, - neustar: a15, - new: a15, - news: { - $: 1, - succ: { - noticeable: o16 + ], + neustar: a, + new: a, + news: [ + 1, + { + noticeable: o } - }, - next: a15, - nextdirect: a15, - nexus: a15, - nfl: a15, - ngo: a15, - nhk: a15, - nico: a15, - nike: a15, - nikon: a15, - ninja: a15, - nissan: a15, - nissay: a15, - nokia: a15, - northwesternmutual: a15, - norton: a15, - now: a15, - nowruz: a15, - nowtv: a15, - nra: a15, - nrw: a15, - ntt: a15, - nyc: a15, - obi: a15, - observer: a15, - office: a15, - okinawa: a15, - olayan: a15, - olayangroup: a15, - oldnavy: a15, - ollo: a15, - omega: a15, - one: { - $: 1, - succ: { - onred: { - $: 2, - succ: { - staging: o16 + ], + next: a, + nextdirect: a, + nexus: a, + nfl: a, + ngo: a, + nhk: a, + nico: a, + nike: a, + nikon: a, + ninja: a, + nissan: a, + nissay: a, + nokia: a, + northwesternmutual: a, + norton: a, + now: a, + nowruz: a, + nowtv: a, + nra: a, + nrw: a, + ntt: a, + nyc: a, + obi: a, + observer: a, + office: a, + okinawa: a, + olayan: a, + olayangroup: a, + oldnavy: a, + ollo: a, + omega: a, + one: [ + 1, + { + onred: [ + 2, + { + staging: o } - }, - for: o16, - under: o16, - service: o16, - homelink: o16 + ], + service: o, + homelink: o } - }, - ong: a15, - onl: a15, - online: { - $: 1, - succ: { - eero: o16, - "eero-stage": o16, - barsy: o16 + ], + ong: a, + onl: a, + online: [ + 1, + { + eero: o, + "eero-stage": o, + barsy: o } - }, - ooo: a15, - open: a15, - oracle: a15, - orange: { - $: 1, - succ: { - tech: o16 + ], + ooo: a, + open: a, + oracle: a, + orange: [ + 1, + { + tech: o } - }, - organic: a15, - origins: a15, - osaka: a15, - otsuka: a15, - ott: a15, - ovh: { - $: 1, - succ: { - nerdpol: o16 + ], + organic: a, + origins: a, + osaka: a, + otsuka: a, + ott: a, + ovh: [ + 1, + { + nerdpol: o } - }, - page: { - $: 1, - succ: { - hlx: o16, - hlx3: o16, - translated: o16, - codeberg: o16, - pdns: o16, - plesk: o16, - prvcy: o16, - rocky: o16, - magnet: o16 + ], + page: [ + 1, + { + hlx: o, + hlx3: o, + translated: o, + codeberg: o, + pdns: o, + plesk: o, + prvcy: o, + rocky: o, + magnet: o } - }, - panasonic: a15, - paris: a15, - pars: a15, - partners: a15, - parts: a15, - party: q, - passagens: a15, - pay: a15, - pccw: a15, - pet: a15, - pfizer: a15, - pharmacy: a15, - phd: a15, - philips: a15, - phone: a15, - photo: a15, - photography: a15, - photos: H, - physio: a15, - pics: a15, - pictet: a15, - pictures: { - $: 1, - succ: { - 1337: o16 + ], + panasonic: a, + paris: a, + pars: a, + partners: a, + parts: a, + party: S, + passagens: a, + pay: a, + pccw: a, + pet: a, + pfizer: a, + pharmacy: a, + phd: a, + philips: a, + phone: a, + photo: a, + photography: a, + photos: D, + physio: a, + pics: a, + pictet: a, + pictures: [ + 1, + { + 1337: o } - }, - pid: a15, - pin: a15, - ping: a15, - pink: a15, - pioneer: a15, - pizza: a15, - place: c3, - play: a15, - playstation: a15, - plumbing: a15, - plus: a15, - pnc: a15, - pohl: a15, - poker: a15, - politie: a15, - porn: { - $: 1, - succ: { - indie: o16 + ], + pid: a, + pin: a, + ping: a, + pink: a, + pioneer: a, + pizza: [ + 1, + { + ngrok: o } - }, - pramerica: a15, - praxi: a15, - press: a15, - prime: a15, - prod: a15, - productions: a15, - prof: a15, - progressive: a15, - promo: a15, - properties: a15, - property: a15, - protection: a15, - pru: a15, - prudential: a15, - pub: D, - pwc: a15, - qpon: a15, - quebec: a15, - quest: a15, - racing: a15, - radio: a15, - read: a15, - realestate: a15, - realtor: a15, - realty: a15, - recipes: a15, - red: a15, - redstone: a15, - redumbrella: a15, - rehab: a15, - reise: a15, - reisen: a15, - reit: a15, - reliance: a15, - ren: a15, - rent: a15, - rentals: a15, - repair: a15, - report: a15, - republican: a15, - rest: a15, - restaurant: a15, - review: q, - reviews: a15, - rexroth: a15, - rich: a15, - richardli: a15, - ricoh: a15, - ril: a15, - rio: a15, - rip: { - $: 1, - succ: { - clan: o16 + ], + place: l, + play: a, + playstation: a, + plumbing: a, + plus: a, + pnc: a, + pohl: a, + poker: a, + politie: a, + porn: [ + 1, + { + indie: o } - }, - rocher: a15, - rocks: { - $: 1, - succ: { - myddns: o16, - "lima-city": o16, - webspace: o16 + ], + pramerica: a, + praxi: a, + press: a, + prime: a, + prod: a, + productions: a, + prof: a, + progressive: a, + promo: a, + properties: a, + property: a, + protection: a, + pru: a, + prudential: a, + pub: L, + pwc: a, + qpon: a, + quebec: a, + quest: a, + racing: a, + radio: a, + read: a, + realestate: a, + realtor: a, + realty: a, + recipes: a, + red: a, + redstone: a, + redumbrella: a, + rehab: a, + reise: a, + reisen: a, + reit: a, + reliance: a, + ren: a, + rent: a, + rentals: a, + repair: a, + report: a, + republican: a, + rest: a, + restaurant: a, + review: S, + reviews: a, + rexroth: a, + rich: a, + richardli: a, + ricoh: a, + ril: a, + rio: a, + rip: [ + 1, + { + clan: o } - }, - rodeo: a15, - rogers: a15, - room: a15, - rsvp: a15, - rugby: a15, - ruhr: a15, - run: { - $: 1, - succ: { - hs: o16, - development: o16, - ravendb: o16, - servers: o16, - build: e12, - code: e12, - database: e12, - migration: e12, - onporter: o16, - repl: o16 + ], + rocher: a, + rocks: [ + 1, + { + myddns: o, + "lima-city": o, + webspace: o } - }, - rwe: a15, - ryukyu: a15, - saarland: a15, - safe: a15, - safety: a15, - sakura: a15, - sale: { - $: 1, - succ: { - for: o16 + ], + rodeo: a, + rogers: a, + room: a, + rsvp: a, + rugby: a, + ruhr: a, + run: [ + 1, + { + hs: o, + development: o, + ravendb: o, + servers: o, + build: e, + code: e, + database: e, + migration: e, + onporter: o, + repl: o } - }, - salon: a15, - samsclub: a15, - samsung: a15, - sandvik: a15, - sandvikcoromant: a15, - sanofi: a15, - sap: a15, - sarl: a15, - sas: a15, - save: a15, - saxo: a15, - sbi: a15, - sbs: a15, - sca: a15, - scb: a15, - schaeffler: a15, - schmidt: a15, - scholarships: a15, - school: a15, - schule: a15, - schwarz: a15, - science: q, - scot: { - $: 1, - succ: { - edu: o16, - gov: { - $: 2, - succ: { - service: o16 + ], + rwe: a, + ryukyu: a, + saarland: a, + safe: a, + safety: a, + sakura: a, + sale: a, + salon: a, + samsclub: a, + samsung: a, + sandvik: a, + sandvikcoromant: a, + sanofi: a, + sap: a, + sarl: a, + sas: a, + save: a, + saxo: a, + sbi: a, + sbs: a, + sca: a, + scb: a, + schaeffler: a, + schmidt: a, + scholarships: a, + school: a, + schule: a, + schwarz: a, + science: S, + scot: [ + 1, + { + edu: o, + gov: [ + 2, + { + service: o } - } - } - }, - search: a15, - seat: a15, - secure: a15, - security: a15, - seek: a15, - select: a15, - sener: a15, - services: { - $: 1, - succ: { - loginline: o16 - } - }, - ses: a15, - seven: a15, - sew: a15, - sex: a15, - sexy: a15, - sfr: a15, - shangrila: a15, - sharp: a15, - shaw: a15, - shell: a15, - shia: a15, - shiksha: a15, - shoes: a15, - shop: { - $: 1, - succ: { - base: o16, - hoplix: o16, - barsy: o16 + ] } - }, - shopping: a15, - shouji: a15, - show: a15, - showtime: a15, - silk: a15, - sina: a15, - singles: a15, - site: { - $: 1, - succ: { - cloudera: e12, - cyon: o16, - fnwk: o16, - folionetwork: o16, - fastvps: o16, - jele: o16, - lelux: o16, - loginline: o16, - barsy: o16, - mintere: o16, - omniwe: o16, - opensocial: o16, - platformsh: e12, - tst: e12, - byen: o16, - srht: o16, - novecore: o16 + ], + search: a, + seat: a, + secure: a, + security: a, + seek: a, + select: a, + sener: a, + services: [ + 1, + { + loginline: o } - }, - ski: a15, - skin: a15, - sky: a15, - skype: a15, - sling: a15, - smart: a15, - smile: a15, - sncf: a15, - soccer: a15, - social: a15, - softbank: a15, - software: a15, - sohu: a15, - solar: a15, - solutions: { - $: 1, - succ: { - diher: e12 + ], + seven: a, + sew: a, + sex: a, + sexy: a, + sfr: a, + shangrila: a, + sharp: a, + shaw: a, + shell: a, + shia: a, + shiksha: a, + shoes: a, + shop: [ + 1, + { + base: o, + hoplix: o, + barsy: o } - }, - song: a15, - sony: a15, - soy: a15, - spa: a15, - space: { - $: 1, - succ: { - myfast: o16, - uber: o16, - xs4all: o16 + ], + shopping: a, + shouji: a, + show: a, + showtime: a, + silk: a, + sina: a, + singles: a, + site: [ + 1, + { + cloudera: e, + cyon: o, + fnwk: o, + folionetwork: o, + fastvps: o, + jele: o, + lelux: o, + loginline: o, + barsy: o, + mintere: o, + omniwe: o, + opensocial: o, + platformsh: e, + tst: e, + byen: o, + srht: o, + novecore: o } - }, - sport: a15, - spot: a15, - srl: a15, - stada: a15, - staples: a15, - star: a15, - statebank: a15, - statefarm: a15, - stc: a15, - stcgroup: a15, - stockholm: a15, - storage: a15, - store: { - $: 1, - succ: { - sellfy: o16, - shopware: o16, - storebase: o16 + ], + ski: a, + skin: a, + sky: a, + skype: a, + sling: a, + smart: a, + smile: a, + sncf: a, + soccer: a, + social: a, + softbank: a, + software: a, + sohu: a, + solar: a, + solutions: [ + 1, + { + diher: e } - }, - stream: a15, - studio: a15, - study: a15, - style: a15, - sucks: a15, - supplies: a15, - supply: a15, - support: D, - surf: a15, - surgery: a15, - suzuki: a15, - swatch: a15, - swiss: a15, - sydney: a15, - systems: { - $: 1, - succ: { - knightpoint: o16 + ], + song: a, + sony: a, + soy: a, + spa: a, + space: [ + 1, + { + myfast: o, + uber: o, + xs4all: o } - }, - tab: a15, - taipei: a15, - talk: a15, - taobao: a15, - target: a15, - tatamotors: a15, - tatar: a15, - tattoo: a15, - tax: a15, - taxi: a15, - tci: a15, - tdk: a15, - team: { - $: 1, - succ: { - discourse: o16, - jelastic: o16 + ], + sport: a, + spot: a, + srl: a, + stada: a, + staples: a, + star: a, + statebank: a, + statefarm: a, + stc: a, + stcgroup: a, + stockholm: a, + storage: a, + store: [ + 1, + { + sellfy: o, + shopware: o, + storebase: o } - }, - tech: a15, - technology: c3, - temasek: a15, - tennis: a15, - teva: a15, - thd: a15, - theater: a15, - theatre: a15, - tiaa: a15, - tickets: a15, - tienda: a15, - tiffany: a15, - tips: a15, - tires: a15, - tirol: a15, - tjmaxx: a15, - tjx: a15, - tkmaxx: a15, - tmall: a15, - today: { - $: 1, - succ: { - prequalifyme: o16 + ], + stream: a, + studio: a, + study: a, + style: a, + sucks: a, + supplies: a, + supply: a, + support: L, + surf: a, + surgery: a, + suzuki: a, + swatch: a, + swiss: a, + sydney: a, + systems: [ + 1, + { + knightpoint: o } - }, - tokyo: a15, - tools: a15, - top: { - $: 1, - succ: { - "now-dns": o16, - ntdll: o16 + ], + tab: a, + taipei: a, + talk: a, + taobao: a, + target: a, + tatamotors: a, + tatar: a, + tattoo: a, + tax: a, + taxi: a, + tci: a, + tdk: a, + team: [ + 1, + { + discourse: o, + jelastic: o } - }, - toray: a15, - toshiba: a15, - total: a15, - tours: a15, - town: a15, - toyota: a15, - toys: a15, - trade: q, - trading: a15, - training: a15, - travel: a15, - travelchannel: a15, - travelers: a15, - travelersinsurance: a15, - trust: a15, - trv: a15, - tube: a15, - tui: a15, - tunes: a15, - tushu: a15, - tvs: a15, - ubank: a15, - ubs: a15, - unicom: a15, - university: a15, - uno: a15, - uol: a15, - ups: a15, - vacations: a15, - vana: a15, - vanguard: a15, - vegas: a15, - ventures: a15, - verisign: a15, - versicherung: a15, - vet: a15, - viajes: a15, - video: a15, - vig: a15, - viking: a15, - villas: a15, - vin: a15, - vip: a15, - virgin: a15, - visa: a15, - vision: a15, - viva: a15, - vivo: a15, - vlaanderen: a15, - vodka: a15, - volkswagen: a15, - volvo: a15, - vote: a15, - voting: a15, - voto: a15, - voyage: a15, - vuelos: a15, - wales: a15, - walmart: a15, - walter: a15, - wang: a15, - wanggou: a15, - watch: a15, - watches: a15, - weather: a15, - weatherchannel: a15, - webcam: a15, - weber: a15, - website: H, - wedding: a15, - weibo: a15, - weir: a15, - whoswho: a15, - wien: a15, - wiki: H, - williamhill: a15, - win: { - $: 1, - succ: { - that: o16 + ], + tech: a, + technology: l, + temasek: a, + tennis: a, + teva: a, + thd: a, + theater: a, + theatre: a, + tiaa: a, + tickets: a, + tienda: a, + tiffany: a, + tips: a, + tires: a, + tirol: a, + tjmaxx: a, + tjx: a, + tkmaxx: a, + tmall: a, + today: [ + 1, + { + prequalifyme: o } - }, - windows: a15, - wine: a15, - winners: a15, - wme: a15, - wolterskluwer: a15, - woodside: a15, - work: { - $: 1, - succ: { - from: o16, - to: o16 + ], + tokyo: a, + tools: a, + top: [ + 1, + { + "now-dns": o, + ntdll: o } - }, - works: a15, - world: a15, - wow: a15, - wtc: a15, - wtf: a15, - xbox: a15, - xerox: a15, - xfinity: a15, - xihuan: a15, - xin: a15, - "xn--11b4c3d": a15, - "कॉम": a15, - "xn--1ck2e1b": a15, - "セール": a15, - "xn--1qqw23a": a15, - "佛山": a15, - "xn--30rr7y": a15, - "慈善": a15, - "xn--3bst00m": a15, - "集团": a15, - "xn--3ds443g": a15, - "在线": a15, - "xn--3pxu8k": a15, - "点看": a15, - "xn--42c2d9a": a15, - "คอม": a15, - "xn--45q11c": a15, - "八卦": a15, - "xn--4gbrim": a15, - "موقع": a15, - "xn--55qw42g": a15, - "公益": a15, - "xn--55qx5d": a15, - "公司": a15, - "xn--5su34j936bgsg": a15, - "香格里拉": a15, - "xn--5tzm5g": a15, - "网站": a15, - "xn--6frz82g": a15, - "移动": a15, - "xn--6qq986b3xl": a15, - "我爱你": a15, - "xn--80adxhks": a15, - "москва": a15, - "xn--80aqecdr1a": a15, - "католик": a15, - "xn--80asehdb": a15, - "онлайн": a15, - "xn--80aswg": a15, - "сайт": a15, - "xn--8y0a063a": a15, - "联通": a15, - "xn--9dbq2a": a15, - "קום": a15, - "xn--9et52u": a15, - "时尚": a15, - "xn--9krt00a": a15, - "微博": a15, - "xn--b4w605ferd": a15, - "淡马锡": a15, - "xn--bck1b9a5dre4c": a15, - "ファッション": a15, - "xn--c1avg": a15, - "орг": a15, - "xn--c2br7g": a15, - "नेट": a15, - "xn--cck2b3b": a15, - "ストア": a15, - "xn--cckwcxetd": a15, - "アマゾン": a15, - "xn--cg4bki": a15, - "삼성": a15, - "xn--czr694b": a15, - "商标": a15, - "xn--czrs0t": a15, - "商店": a15, - "xn--czru2d": a15, - "商城": a15, - "xn--d1acj3b": a15, - "дети": a15, - "xn--eckvdtc9d": a15, - "ポイント": a15, - "xn--efvy88h": a15, - "新闻": a15, - "xn--fct429k": a15, - "家電": a15, - "xn--fhbei": a15, - "كوم": a15, - "xn--fiq228c5hs": a15, - "中文网": a15, - "xn--fiq64b": a15, - "中信": a15, - "xn--fjq720a": a15, - "娱乐": a15, - "xn--flw351e": a15, - "谷歌": a15, - "xn--fzys8d69uvgm": a15, - "電訊盈科": a15, - "xn--g2xx48c": a15, - "购物": a15, - "xn--gckr3f0f": a15, - "クラウド": a15, - "xn--gk3at1e": a15, - "通販": a15, - "xn--hxt814e": a15, - "网店": a15, - "xn--i1b6b1a6a2e": a15, - "संगठन": a15, - "xn--imr513n": a15, - "餐厅": a15, - "xn--io0a7i": a15, - "网络": a15, - "xn--j1aef": a15, - "ком": a15, - "xn--jlq480n2rg": a15, - "亚马逊": a15, - "xn--jlq61u9w7b": a15, - "诺基亚": a15, - "xn--jvr189m": a15, - "食品": a15, - "xn--kcrx77d1x4a": a15, - "飞利浦": a15, - "xn--kput3i": a15, - "手机": a15, - "xn--mgba3a3ejt": a15, - "ارامكو": a15, - "xn--mgba7c0bbn0a": a15, - "العليان": a15, - "xn--mgbaakc7dvf": a15, - "اتصالات": a15, - "xn--mgbab2bd": a15, - "بازار": a15, - "xn--mgbca7dzdo": a15, - "ابوظبي": a15, - "xn--mgbi4ecexp": a15, - "كاثوليك": a15, - "xn--mgbt3dhd": a15, - "همراه": a15, - "xn--mk1bu44c": a15, - "닷컴": a15, - "xn--mxtq1m": a15, - "政府": a15, - "xn--ngbc5azd": a15, - "شبكة": a15, - "xn--ngbe9e0a": a15, - "بيتك": a15, - "xn--ngbrx": a15, - "عرب": a15, - "xn--nqv7f": a15, - "机构": a15, - "xn--nqv7fs00ema": a15, - "组织机构": a15, - "xn--nyqy26a": a15, - "健康": a15, - "xn--otu796d": a15, - "招聘": a15, - "xn--p1acf": { - $: 1, - succ: { - "xn--90amc": o16, - "xn--j1aef": o16, - "xn--j1ael8b": o16, - "xn--h1ahn": o16, - "xn--j1adp": o16, - "xn--c1avg": o16, - "xn--80aaa0cvac": o16, - "xn--h1aliz": o16, - "xn--90a1af": o16, - "xn--41a": o16 + ], + toray: a, + toshiba: a, + total: a, + tours: a, + town: a, + toyota: a, + toys: a, + trade: S, + trading: a, + training: a, + travel: a, + travelchannel: a, + travelers: a, + travelersinsurance: a, + trust: a, + trv: a, + tube: a, + tui: a, + tunes: a, + tushu: a, + tvs: a, + ubank: a, + ubs: a, + unicom: a, + university: a, + uno: a, + uol: a, + ups: a, + vacations: a, + vana: a, + vanguard: a, + vegas: a, + ventures: a, + verisign: a, + versicherung: a, + vet: a, + viajes: a, + video: a, + vig: a, + viking: a, + villas: a, + vin: a, + vip: a, + virgin: a, + visa: a, + vision: a, + viva: a, + vivo: a, + vlaanderen: a, + vodka: a, + volkswagen: a, + volvo: a, + vote: a, + voting: a, + voto: a, + voyage: a, + vuelos: a, + wales: a, + walmart: a, + walter: a, + wang: a, + wanggou: a, + watch: a, + watches: a, + weather: a, + weatherchannel: a, + webcam: a, + weber: a, + website: D, + wedding: a, + weibo: a, + weir: a, + whoswho: a, + wien: a, + wiki: D, + williamhill: a, + win: a, + windows: a, + wine: a, + winners: a, + wme: a, + wolterskluwer: a, + woodside: a, + work: a, + works: a, + world: a, + wow: a, + wtc: a, + wtf: a, + xbox: a, + xerox: a, + xfinity: a, + xihuan: a, + xin: a, + "xn--11b4c3d": a, + "कॉम": a, + "xn--1ck2e1b": a, + "セール": a, + "xn--1qqw23a": a, + "佛山": a, + "xn--30rr7y": a, + "慈善": a, + "xn--3bst00m": a, + "集团": a, + "xn--3ds443g": a, + "在线": a, + "xn--3pxu8k": a, + "点看": a, + "xn--42c2d9a": a, + "คอม": a, + "xn--45q11c": a, + "八卦": a, + "xn--4gbrim": a, + "موقع": a, + "xn--55qw42g": a, + "公益": a, + "xn--55qx5d": a, + "公司": a, + "xn--5su34j936bgsg": a, + "香格里拉": a, + "xn--5tzm5g": a, + "网站": a, + "xn--6frz82g": a, + "移动": a, + "xn--6qq986b3xl": a, + "我爱你": a, + "xn--80adxhks": a, + "москва": a, + "xn--80aqecdr1a": a, + "католик": a, + "xn--80asehdb": a, + "онлайн": a, + "xn--80aswg": a, + "сайт": a, + "xn--8y0a063a": a, + "联通": a, + "xn--9dbq2a": a, + "קום": a, + "xn--9et52u": a, + "时尚": a, + "xn--9krt00a": a, + "微博": a, + "xn--b4w605ferd": a, + "淡马锡": a, + "xn--bck1b9a5dre4c": a, + "ファッション": a, + "xn--c1avg": a, + "орг": a, + "xn--c2br7g": a, + "नेट": a, + "xn--cck2b3b": a, + "ストア": a, + "xn--cckwcxetd": a, + "アマゾン": a, + "xn--cg4bki": a, + "삼성": a, + "xn--czr694b": a, + "商标": a, + "xn--czrs0t": a, + "商店": a, + "xn--czru2d": a, + "商城": a, + "xn--d1acj3b": a, + "дети": a, + "xn--eckvdtc9d": a, + "ポイント": a, + "xn--efvy88h": a, + "新闻": a, + "xn--fct429k": a, + "家電": a, + "xn--fhbei": a, + "كوم": a, + "xn--fiq228c5hs": a, + "中文网": a, + "xn--fiq64b": a, + "中信": a, + "xn--fjq720a": a, + "娱乐": a, + "xn--flw351e": a, + "谷歌": a, + "xn--fzys8d69uvgm": a, + "電訊盈科": a, + "xn--g2xx48c": a, + "购物": a, + "xn--gckr3f0f": a, + "クラウド": a, + "xn--gk3at1e": a, + "通販": a, + "xn--hxt814e": a, + "网店": a, + "xn--i1b6b1a6a2e": a, + "संगठन": a, + "xn--imr513n": a, + "餐厅": a, + "xn--io0a7i": a, + "网络": a, + "xn--j1aef": a, + "ком": a, + "xn--jlq480n2rg": a, + "亚马逊": a, + "xn--jvr189m": a, + "食品": a, + "xn--kcrx77d1x4a": a, + "飞利浦": a, + "xn--kput3i": a, + "手机": a, + "xn--mgba3a3ejt": a, + "ارامكو": a, + "xn--mgba7c0bbn0a": a, + "العليان": a, + "xn--mgbaakc7dvf": a, + "اتصالات": a, + "xn--mgbab2bd": a, + "بازار": a, + "xn--mgbca7dzdo": a, + "ابوظبي": a, + "xn--mgbi4ecexp": a, + "كاثوليك": a, + "xn--mgbt3dhd": a, + "همراه": a, + "xn--mk1bu44c": a, + "닷컴": a, + "xn--mxtq1m": a, + "政府": a, + "xn--ngbc5azd": a, + "شبكة": a, + "xn--ngbe9e0a": a, + "بيتك": a, + "xn--ngbrx": a, + "عرب": a, + "xn--nqv7f": a, + "机构": a, + "xn--nqv7fs00ema": a, + "组织机构": a, + "xn--nyqy26a": a, + "健康": a, + "xn--otu796d": a, + "招聘": a, + "xn--p1acf": [ + 1, + { + "xn--90amc": o, + "xn--j1aef": o, + "xn--j1ael8b": o, + "xn--h1ahn": o, + "xn--j1adp": o, + "xn--c1avg": o, + "xn--80aaa0cvac": o, + "xn--h1aliz": o, + "xn--90a1af": o, + "xn--41a": o } - }, - "рус": { - $: 1, - succ: { - "биз": o16, - "ком": o16, - "крым": o16, - "мир": o16, - "мск": o16, - "орг": o16, - "самара": o16, - "сочи": o16, - "спб": o16, - "я": o16 + ], + "рус": [ + 1, + { + "биз": o, + "ком": o, + "крым": o, + "мир": o, + "мск": o, + "орг": o, + "самара": o, + "сочи": o, + "спб": o, + "я": o } - }, - "xn--pssy2u": a15, - "大拿": a15, - "xn--q9jyb4c": a15, - "みんな": a15, - "xn--qcka1pmc": a15, - "グーグル": a15, - "xn--rhqv96g": a15, - "世界": a15, - "xn--rovu88b": a15, - "書籍": a15, - "xn--ses554g": a15, - "网址": a15, - "xn--t60b56a": a15, - "닷넷": a15, - "xn--tckwe": a15, - "コム": a15, - "xn--tiq49xqyj": a15, - "天主教": a15, - "xn--unup4y": a15, - "游戏": a15, - "xn--vermgensberater-ctb": a15, - "vermögensberater": a15, - "xn--vermgensberatung-pwb": a15, - "vermögensberatung": a15, - "xn--vhquv": a15, - "企业": a15, - "xn--vuq861b": a15, - "信息": a15, - "xn--w4r85el8fhu5dnra": a15, - "嘉里大酒店": a15, - "xn--w4rs40l": a15, - "嘉里": a15, - "xn--xhq521b": a15, - "广东": a15, - "xn--zfr164b": a15, - "政务": a15, - xyz: { - $: 1, - succ: { - blogsite: o16, - localzone: o16, - crafting: o16, - zapto: o16, - telebit: e12 + ], + "xn--pssy2u": a, + "大拿": a, + "xn--q9jyb4c": a, + "みんな": a, + "xn--qcka1pmc": a, + "グーグル": a, + "xn--rhqv96g": a, + "世界": a, + "xn--rovu88b": a, + "書籍": a, + "xn--ses554g": a, + "网址": a, + "xn--t60b56a": a, + "닷넷": a, + "xn--tckwe": a, + "コム": a, + "xn--tiq49xqyj": a, + "天主教": a, + "xn--unup4y": a, + "游戏": a, + "xn--vermgensberater-ctb": a, + "vermögensberater": a, + "xn--vermgensberatung-pwb": a, + "vermögensberatung": a, + "xn--vhquv": a, + "企业": a, + "xn--vuq861b": a, + "信息": a, + "xn--w4r85el8fhu5dnra": a, + "嘉里大酒店": a, + "xn--w4rs40l": a, + "嘉里": a, + "xn--xhq521b": a, + "广东": a, + "xn--zfr164b": a, + "政务": a, + xyz: [ + 1, + { + blogsite: o, + localzone: o, + crafting: o, + zapto: o, + telebit: e } - }, - yachts: a15, - yahoo: a15, - yamaxun: a15, - yandex: a15, - yodobashi: a15, - yoga: a15, - yokohama: a15, - you: a15, - youtube: a15, - yun: a15, - zappos: a15, - zara: a15, - zero: a15, - zip: a15, - zone: { - $: 1, - succ: { - cloud66: o16, - hs: o16, - triton: e12, - lima: o16 + ], + yachts: a, + yahoo: a, + yamaxun: a, + yandex: a, + yodobashi: a, + yoga: a, + yokohama: a, + you: a, + youtube: a, + yun: a, + zappos: a, + zara: a, + zero: a, + zip: a, + zone: [ + 1, + { + cloud66: o, + hs: o, + triton: e, + lima: o } - }, - zuerich: a15 + ], + zuerich: a } - }; + ]; }(); -function r(a16, o17, i13, e13) { - let s9 = null, n8 = o17; - for(; void 0 !== n8 && (0 != (n8.$ & e13) && (s9 = { - index: i13 + 1, - isIcann: 1 === n8.$, - isPrivate: 2 === n8.$ - }), -1 !== i13);){ - const o18 = n8.succ; - n8 = o18 && (o18[a16[i13]] || o18["*"]), i13 -= 1; - } - return s9; -} -function t(a17, o19, i14) { - if (!0 === (function(a18, o20, i15) { - if (!1 === o20.allowPrivateDomains && a18.length > 3) { - const o21 = a18.length - 1, e15 = a18.charCodeAt(o21), s10 = a18.charCodeAt(o21 - 1), n9 = a18.charCodeAt(o21 - 2), r7 = a18.charCodeAt(o21 - 3); - if (109 === e15 && 111 === s10 && 99 === n9 && 46 === r7) return i15.isIcann = !0, i15.isPrivate = !1, i15.publicSuffix = "com", !0; - if (103 === e15 && 114 === s10 && 111 === n9 && 46 === r7) return i15.isIcann = !0, i15.isPrivate = !1, i15.publicSuffix = "org", !0; - if (117 === e15 && 100 === s10 && 101 === n9 && 46 === r7) return i15.isIcann = !0, i15.isPrivate = !1, i15.publicSuffix = "edu", !0; - if (118 === e15 && 111 === s10 && 103 === n9 && 46 === r7) return i15.isIcann = !0, i15.isPrivate = !1, i15.publicSuffix = "gov", !0; - if (116 === e15 && 101 === s10 && 110 === n9 && 46 === r7) return i15.isIcann = !0, i15.isPrivate = !1, i15.publicSuffix = "net", !0; - if (101 === e15 && 100 === s10 && 46 === n9) return i15.isIcann = !0, i15.isPrivate = !1, i15.publicSuffix = "de", !0; +function t(a, o, i, e) { + var n; + let s = null, r = o; + for(; void 0 !== r && (0 != (r[0] & e) && (s = { + index: i + 1, + isIcann: 1 === r[0], + isPrivate: 2 === r[0] + }), -1 !== i);){ + const o = r[1]; + r = null !== (n = o[a[i]]) && void 0 !== n ? n : o["*"], i -= 1; + } + return s; +} +function l(a, o, i) { + var e; + if (function(a, o, i) { + if (!o.allowPrivateDomains && a.length > 3) { + const o = a.length - 1, e = a.charCodeAt(o), n = a.charCodeAt(o - 1), s = a.charCodeAt(o - 2), r = a.charCodeAt(o - 3); + if (109 === e && 111 === n && 99 === s && 46 === r) return i.isIcann = !0, i.isPrivate = !1, i.publicSuffix = "com", !0; + if (103 === e && 114 === n && 111 === s && 46 === r) return i.isIcann = !0, i.isPrivate = !1, i.publicSuffix = "org", !0; + if (117 === e && 100 === n && 101 === s && 46 === r) return i.isIcann = !0, i.isPrivate = !1, i.publicSuffix = "edu", !0; + if (118 === e && 111 === n && 103 === s && 46 === r) return i.isIcann = !0, i.isPrivate = !1, i.publicSuffix = "gov", !0; + if (116 === e && 101 === n && 110 === s && 46 === r) return i.isIcann = !0, i.isPrivate = !1, i.publicSuffix = "net", !0; + if (101 === e && 100 === n && 46 === s) return i.isIcann = !0, i.isPrivate = !1, i.publicSuffix = "de", !0; } return !1; - })(a17, o19, i14)) return; - const e14 = a17.split("."), t5 = (!0 === o19.allowPrivateDomains ? 2 : 0) | (!0 === o19.allowIcannDomains ? 1 : 0), c4 = r(e14, s, e14.length - 1, t5); - if (null !== c4) return i14.isIcann = c4.isIcann, i14.isPrivate = c4.isPrivate, void (i14.publicSuffix = e14.slice(c4.index + 1).join(".")); - const u3 = r(e14, n, e14.length - 1, t5); - if (null !== u3) return i14.isIcann = u3.isIcann, i14.isPrivate = u3.isPrivate, void (i14.publicSuffix = e14.slice(u3.index).join(".")); - i14.isIcann = !1, i14.isPrivate = !1, i14.publicSuffix = e14[e14.length - 1]; -} -function u(a19, o22 = {}) { - return e(a19, 5, t, o22, { + }(a, o, i)) return; + const n = a.split("."), l = (o.allowPrivateDomains ? 2 : 0) | (o.allowIcannDomains ? 1 : 0), m = t(n, s, n.length - 1, l); + if (null !== m) return i.isIcann = m.isIcann, i.isPrivate = m.isPrivate, void (i.publicSuffix = n.slice(m.index + 1).join(".")); + const u = t(n, r, n.length - 1, l); + if (null !== u) return i.isIcann = u.isIcann, i.isPrivate = u.isPrivate, void (i.publicSuffix = n.slice(u.index).join(".")); + i.isIcann = !1, i.isPrivate = !1, i.publicSuffix = null !== (e = n[n.length - 1]) && void 0 !== e ? e : null; +} +function u(a, o = {}) { + return n(a, 5, l, o, { domain: null, domainWithoutSuffix: null, hostname: null, @@ -12086,10 +11642,10 @@ function ucs2decode(string) { const length = string.length; while(counter < length){ const value = string.charCodeAt(counter++); - if (value >= 55296 && value <= 56319 && counter < length) { + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { const extra = string.charCodeAt(counter++); - if ((extra & 64512) == 56320) { - output.push(((value & 1023) << 10) + (extra & 1023) + 65536); + if ((extra & 0xFC00) == 0xDC00) { + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); } else { output.push(value); counter--; @@ -12100,17 +11656,16 @@ function ucs2decode(string) { } return output; } -const ucs2encode = (array)=>String.fromCodePoint(...array) -; +const ucs2encode = (array)=>String.fromCodePoint(...array); const basicToDigit = function(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; + if (codePoint - 0x30 < 0x0A) { + return codePoint - 0x16; } - if (codePoint - 65 < 26) { - return codePoint - 65; + if (codePoint - 0x41 < 0x1A) { + return codePoint - 0x41; } - if (codePoint - 97 < 26) { - return codePoint - 97; + if (codePoint - 0x61 < 0x1A) { + return codePoint - 0x61; } return 36; }; @@ -12129,48 +11684,48 @@ const adapt = function(delta, numPoints, firstTime) { const decode = function(input) { const output = []; const inputLength = input.length; - let i2 = 0; - let n1 = 128; + let i = 0; + let n = 128; let bias = 72; let basic = input.lastIndexOf(delimiter); if (basic < 0) { basic = 0; } for(let j = 0; j < basic; ++j){ - if (input.charCodeAt(j) >= 128) { + if (input.charCodeAt(j) >= 0x80) { error('not-basic'); } output.push(input.charCodeAt(j)); } for(let index = basic > 0 ? basic + 1 : 0; index < inputLength;){ - let oldi = i2; + let oldi = i; for(let w = 1, k = 36;; k += base){ if (index >= inputLength) { error('invalid-input'); } const digit = basicToDigit(input.charCodeAt(index++)); - if (digit >= 36 || digit > floor((2147483647 - i2) / w)) { + if (digit >= 36 || digit > floor((2147483647 - i) / w)) { error('overflow'); } - i2 += digit * w; - const t1 = k <= bias ? 1 : k >= bias + 26 ? 26 : k - bias; - if (digit < t1) { + i += digit * w; + const t = k <= bias ? 1 : k >= bias + 26 ? 26 : k - bias; + if (digit < t) { break; } - const baseMinusT = 36 - t1; + const baseMinusT = 36 - t; if (w > floor(2147483647 / baseMinusT)) { error('overflow'); } w *= baseMinusT; } const out = output.length + 1; - bias = adapt(i2 - oldi, out, oldi == 0); - if (floor(i2 / out) > 2147483647 - n1) { + bias = adapt(i - oldi, out, oldi == 0); + if (floor(i / out) > 2147483647 - n) { error('overflow'); } - n1 += floor(i2 / out); - i2 %= out; - output.splice(i2++, 0, n1); + n += floor(i / out); + i %= out; + output.splice(i++, 0, n); } return String.fromCodePoint(...output); }; @@ -12178,11 +11733,11 @@ const encode = function(input) { const output = []; input = ucs2decode(input); let inputLength = input.length; - let n2 = 128; + let n = 128; let delta = 0; let bias = 72; for (const currentValue of input){ - if (currentValue < 128) { + if (currentValue < 0x80) { output.push(stringFromCharCode(currentValue)); } } @@ -12194,30 +11749,30 @@ const encode = function(input) { while(handledCPCount < inputLength){ let m = 2147483647; for (const currentValue of input){ - if (currentValue >= n2 && currentValue < m) { + if (currentValue >= n && currentValue < m) { m = currentValue; } } const handledCPCountPlusOne = handledCPCount + 1; - if (m - n2 > floor((2147483647 - delta) / handledCPCountPlusOne)) { + if (m - n > floor((2147483647 - delta) / handledCPCountPlusOne)) { error('overflow'); } - delta += (m - n2) * handledCPCountPlusOne; - n2 = m; - for (const currentValue1 of input){ - if (currentValue1 < n2 && ++delta > 2147483647) { + delta += (m - n) * handledCPCountPlusOne; + n = m; + for (const currentValue of input){ + if (currentValue < n && ++delta > 2147483647) { error('overflow'); } - if (currentValue1 == n2) { + if (currentValue == n) { let q = delta; for(let k = 36;; k += base){ - const t2 = k <= bias ? 1 : k >= bias + 26 ? 26 : k - bias; - if (q < t2) { + const t = k <= bias ? 1 : k >= bias + 26 ? 26 : k - bias; + if (q < t) { break; } - const qMinusT = q - t2; - const baseMinusT = 36 - t2; - output.push(stringFromCharCode(digitToBasic(t2 + qMinusT % baseMinusT, 0))); + const qMinusT = q - t; + const baseMinusT = 36 - t; + output.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))); q = floor(qMinusT / baseMinusT); } output.push(stringFromCharCode(digitToBasic(q, 0))); @@ -12227,7 +11782,7 @@ const encode = function(input) { } } ++delta; - ++n2; + ++n; } return output.join(''); }; @@ -12252,26 +11807,24 @@ const __default = { 'toASCII': toASCII, 'toUnicode': toUnicode }; -const isCryptoKey = (key)=>key instanceof CryptoKey -; +const isCryptoKey = (key)=>key instanceof CryptoKey; const encoder = new TextEncoder(); const decoder = new TextDecoder(); function concat(...buffers) { - const size = buffers.reduce((acc, { length })=>acc + length - , 0); + const size = buffers.reduce((acc, { length })=>acc + length, 0); const buf = new Uint8Array(size); - let i3 = 0; + let i = 0; buffers.forEach((buffer)=>{ - buf.set(buffer, i3); - i3 += buffer.length; + buf.set(buffer, i); + i += buffer.length; }); return buf; } const decodeBase64 = (encoded)=>{ const binary = atob(encoded); const bytes = new Uint8Array(binary.length); - for(let i4 = 0; i4 < binary.length; i4++){ - bytes[i4] = binary.charCodeAt(i4); + for(let i = 0; i < binary.length; i++){ + bytes[i] = binary.charCodeAt(i); } return bytes; }; @@ -12292,8 +11845,8 @@ class JOSEError extends Error { return 'ERR_JOSE_GENERIC'; } code = 'ERR_JOSE_GENERIC'; - constructor(message1){ - super(message1); + constructor(message){ + super(message); this.name = this.constructor.name; Error.captureStackTrace?.(this, this.constructor); } @@ -12305,8 +11858,8 @@ class JWTClaimValidationFailed extends JOSEError { code = 'ERR_JWT_CLAIM_VALIDATION_FAILED'; claim; reason; - constructor(message2, claim = 'unspecified', reason = 'unspecified'){ - super(message2); + constructor(message, claim = 'unspecified', reason = 'unspecified'){ + super(message); this.claim = claim; this.reason = reason; } @@ -12318,8 +11871,8 @@ class JWTExpired extends JOSEError { code = 'ERR_JWT_EXPIRED'; claim; reason; - constructor(message3, claim = 'unspecified', reason = 'unspecified'){ - super(message3); + constructor(message, claim = 'unspecified', reason = 'unspecified'){ + super(message); this.claim = claim; this.reason = reason; } @@ -12348,6 +11901,27 @@ class JWTInvalid extends JOSEError { } code = 'ERR_JWT_INVALID'; } +class JWKSInvalid extends JOSEError { + static get code() { + return 'ERR_JWKS_INVALID'; + } + code = 'ERR_JWKS_INVALID'; +} +class JWKSNoMatchingKey extends JOSEError { + static get code() { + return 'ERR_JWKS_NO_MATCHING_KEY'; + } + code = 'ERR_JWKS_NO_MATCHING_KEY'; + message = 'no applicable key found in the JSON Web Key Set'; +} +class JWKSMultipleMatchingKeys extends JOSEError { + [Symbol.asyncIterator]; + static get code() { + return 'ERR_JWKS_MULTIPLE_MATCHING_KEYS'; + } + code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS'; + message = 'multiple matching keys found in the JSON Web Key Set'; +} class JWSSignatureVerificationFailed extends JOSEError { static get code() { return 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED'; @@ -12356,9 +11930,6 @@ class JWSSignatureVerificationFailed extends JOSEError { message = 'signature verification failed'; } crypto.getRandomValues.bind(crypto); -function isCloudflareWorkers() { - return typeof WebSocketPair !== 'undefined' || typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers' || typeof EdgeRuntime !== 'undefined' && EdgeRuntime === 'vercel'; -} function unusable(name, prop = 'algorithm.name') { return new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`); } @@ -12381,8 +11952,7 @@ function getNamedCurve(alg) { } } function checkUsage(key, usages) { - if (usages.length && !usages.some((expected)=>key.usages.includes(expected) - )) { + if (usages.length && !usages.some((expected)=>key.usages.includes(expected))) { let msg = 'CryptoKey does not support this operation, its usages must include '; if (usages.length > 2) { const last = usages.pop(); @@ -12427,11 +11997,6 @@ function checkSigCryptoKey(key, alg, ...usages) { if (actual !== expected) throw unusable(`SHA-${expected}`, 'algorithm.hash'); break; } - case isCloudflareWorkers() && 'EdDSA': - { - if (!isAlgorithm(key.algorithm, 'NODE-ED25519')) throw unusable('NODE-ED25519'); - break; - } case 'EdDSA': { if (key.algorithm.name !== 'Ed25519' && key.algorithm.name !== 'Ed448') { @@ -12454,14 +12019,14 @@ function checkSigCryptoKey(key, alg, ...usages) { } checkUsage(key, usages); } -function message(msg, actual, ...types1) { - if (types1.length > 2) { - const last = types1.pop(); - msg += `one of type ${types1.join(', ')}, or ${last}.`; - } else if (types1.length === 2) { - msg += `one of type ${types1[0]} or ${types1[1]}.`; +function message(msg, actual, ...types) { + if (types.length > 2) { + const last = types.pop(); + msg += `one of type ${types.join(', ')}, or ${last}.`; + } else if (types.length === 2) { + msg += `one of type ${types[0]} or ${types[1]}.`; } else { - msg += `of type ${types1[0]}.`; + msg += `of type ${types[0]}.`; } if (actual == null) { msg += ` Received ${actual}`; @@ -12474,11 +12039,11 @@ function message(msg, actual, ...types1) { } return msg; } -const __default1 = (actual, ...types2)=>{ - return message('Key must be ', actual, ...types2); +const __default1 = (actual, ...types)=>{ + return message('Key must be ', actual, ...types); }; -function withAlg(alg, actual, ...types3) { - return message(`Key for the ${alg} algorithm must be `, actual, ...types3); +function withAlg(alg, actual, ...types) { + return message(`Key for the ${alg} algorithm must be `, actual, ...types); } const types = [ 'CryptoKey' @@ -12534,14 +12099,13 @@ const __default3 = (alg, key)=>{ const findOid = (keyData, oid, from = 0)=>{ if (from === 0) { oid.unshift(oid.length); - oid.unshift(6); + oid.unshift(0x06); } - let i5 = keyData.indexOf(oid[0], from); - if (i5 === -1) return false; - const sub = keyData.subarray(i5, i5 + oid.length); + let i = keyData.indexOf(oid[0], from); + if (i === -1) return false; + const sub = keyData.subarray(i, i + oid.length); if (sub.length !== oid.length) return false; - return sub.every((value, index)=>value === oid[index] - ) || findOid(keyData, oid, i5 + 1); + return sub.every((value, index)=>value === oid[index]) || findOid(keyData, oid, i + 1); }; function subtleMapping(jwk) { let algorithm; @@ -12709,26 +12273,6 @@ function subtleMapping(jwk) { } break; } - case isCloudflareWorkers() && 'OKP': - if (jwk.alg !== 'EdDSA') { - throw new JOSENotSupported('Invalid or unsupported JWK "alg" (Algorithm) Parameter value'); - } - switch(jwk.crv){ - case 'Ed25519': - algorithm = { - name: 'NODE-ED25519', - namedCurve: 'NODE-ED25519' - }; - keyUsages = jwk.d ? [ - 'sign' - ] : [ - 'verify' - ]; - break; - default: - throw new JOSENotSupported('Invalid or unsupported JWK "alg" (Algorithm) Parameter value'); - } - break; case 'OKP': { switch(jwk.alg){ @@ -12767,11 +12311,14 @@ function subtleMapping(jwk) { }; } const parse = async (jwk)=>{ + if (!jwk.alg) { + throw new TypeError('"alg" argument is required when "jwk.alg" is not present'); + } const { algorithm , keyUsages } = subtleMapping(jwk); const rest = [ algorithm, jwk.ext ?? false, - jwk.key_ops ?? keyUsages, + jwk.key_ops ?? keyUsages ]; if (algorithm.name === 'PBKDF2') { return crypto.subtle.importKey('raw', decode1(jwk.k), ...rest); @@ -12780,6 +12327,7 @@ const parse = async (jwk)=>{ ...jwk }; delete keyData.alg; + delete keyData.use; return crypto.subtle.importKey('jwk', keyData, ...rest); }; async function importJWK(jwk, alg, octAsKeyObject) { @@ -12787,9 +12335,6 @@ async function importJWK(jwk, alg, octAsKeyObject) { throw new TypeError('JWK must be an object'); } alg ||= jwk.alg; - if (typeof alg !== 'string' || !alg) { - throw new TypeError('"alg" argument is required when "jwk.alg" is not present'); - } switch(jwk.kty){ case 'oct': if (typeof jwk.k !== 'string' || !jwk.k) { @@ -12800,7 +12345,7 @@ async function importJWK(jwk, alg, octAsKeyObject) { return parse({ ...jwk, alg, - ext: false + ext: jwk.ext ?? false }); } return decode1(jwk.k); @@ -12862,8 +12407,7 @@ function validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, if (!protectedHeader || protectedHeader.crit === undefined) { return new Set(); } - if (!Array.isArray(protectedHeader.crit) || protectedHeader.crit.length === 0 || protectedHeader.crit.some((input)=>typeof input !== 'string' || input.length === 0 - )) { + if (!Array.isArray(protectedHeader.crit) || protectedHeader.crit.length === 0 || protectedHeader.crit.some((input)=>typeof input !== 'string' || input.length === 0)) { throw new Err('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present'); } let recognized; @@ -12888,8 +12432,7 @@ function validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, return new Set(protectedHeader.crit); } const validateAlgorithms = (option, algorithms)=>{ - if (algorithms !== undefined && (!Array.isArray(algorithms) || algorithms.some((s1)=>typeof s1 !== 'string' - ))) { + if (algorithms !== undefined && (!Array.isArray(algorithms) || algorithms.some((s)=>typeof s !== 'string'))) { throw new TypeError(`"${option}" option must be an array of strings`); } if (!algorithms) { @@ -12931,12 +12474,6 @@ function subtleDsa(alg, algorithm) { name: 'ECDSA', namedCurve: algorithm.namedCurve }; - case isCloudflareWorkers() && 'EdDSA': - const { namedCurve } = algorithm; - return { - name: namedCurve, - namedCurve - }; case 'EdDSA': return { name: algorithm.name @@ -13008,14 +12545,14 @@ async function flattenedVerify(jws, key, options) { ...parsedProt, ...jws.header }; - const extensions1 = validateCrit(JWSInvalid, new Map([ + const extensions = validateCrit(JWSInvalid, new Map([ [ 'b64', true ] ]), options?.crit, parsedProt, joseHeader); let b64 = true; - if (extensions1.has('b64')) { + if (extensions.has('b64')) { b64 = parsedProt.b64; if (typeof b64 !== 'boolean') { throw new JWSInvalid('The "b64" (base64url-encode payload) Header Parameter must be a boolean'); @@ -13101,8 +12638,7 @@ async function compactVerify(jws, key, options) { } return result; } -const __default4 = (date)=>Math.floor(date.getTime() / 1000) -; +const __default4 = (date)=>Math.floor(date.getTime() / 1000); const hour = 60 * 60; const day = hour * 24; const week = day * 7; @@ -13146,8 +12682,7 @@ const __default5 = (str)=>{ return Math.round(value * year); } }; -const normalizeTyp = (value)=>value.toLowerCase().replace(/^application\//, '') -; +const normalizeTyp = (value)=>value.toLowerCase().replace(/^application\//, ''); const checkAudiencePresence = (audPayload, audOption)=>{ if (typeof audPayload === 'string') { return audOption.includes(audPayload); @@ -13169,17 +12704,24 @@ const __default6 = (protectedHeader, encodedPayload, options = {})=>{ if (!isObject(payload)) { throw new JWTInvalid('JWT Claims Set must be a top-level JSON object'); } - const { issuer } = options; + const { requiredClaims =[] , issuer , subject , audience , maxTokenAge } = options; + if (maxTokenAge !== undefined) requiredClaims.push('iat'); + if (audience !== undefined) requiredClaims.push('aud'); + if (subject !== undefined) requiredClaims.push('sub'); + if (issuer !== undefined) requiredClaims.push('iss'); + for (const claim of new Set(requiredClaims.reverse())){ + if (!(claim in payload)) { + throw new JWTClaimValidationFailed(`missing required "${claim}" claim`, claim, 'missing'); + } + } if (issuer && !(Array.isArray(issuer) ? issuer : [ issuer ]).includes(payload.iss)) { throw new JWTClaimValidationFailed('unexpected "iss" claim value', 'iss', 'check_failed'); } - const { subject } = options; if (subject && payload.sub !== subject) { throw new JWTClaimValidationFailed('unexpected "sub" claim value', 'sub', 'check_failed'); } - const { audience } = options; if (audience && !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [ audience ] : audience)) { @@ -13201,7 +12743,7 @@ const __default6 = (protectedHeader, encodedPayload, options = {})=>{ } const { currentDate } = options; const now = __default4(currentDate || new Date()); - if ((payload.iat !== undefined || options.maxTokenAge) && typeof payload.iat !== 'number') { + if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') { throw new JWTClaimValidationFailed('"iat" claim must be a number', 'iat', 'invalid'); } if (payload.nbf !== undefined) { @@ -13220,9 +12762,9 @@ const __default6 = (protectedHeader, encodedPayload, options = {})=>{ throw new JWTExpired('"exp" claim timestamp check failed', 'exp', 'check_failed'); } } - if (options.maxTokenAge) { + if (maxTokenAge) { const age = now - payload.iat; - const max = typeof options.maxTokenAge === 'number' ? options.maxTokenAge : __default5(options.maxTokenAge); + const max = typeof maxTokenAge === 'number' ? maxTokenAge : __default5(maxTokenAge); if (age - tolerance > max) { throw new JWTExpired('"iat" claim timestamp check failed (too far in the past)', 'iat', 'check_failed'); } @@ -13250,6 +12792,115 @@ async function jwtVerify(jwt, key, options) { } return result; } +function getKtyFromAlg(alg) { + switch(typeof alg === 'string' && alg.slice(0, 2)){ + case 'RS': + case 'PS': + return 'RSA'; + case 'ES': + return 'EC'; + case 'Ed': + return 'OKP'; + default: + throw new JOSENotSupported('Unsupported "alg" value for a JSON Web Key Set'); + } +} +function isJWKSLike(jwks) { + return jwks && typeof jwks === 'object' && Array.isArray(jwks.keys) && jwks.keys.every(isJWKLike); +} +function isJWKLike(key) { + return isObject(key); +} +function clone(obj) { + if (typeof structuredClone === 'function') { + return structuredClone(obj); + } + return JSON.parse(JSON.stringify(obj)); +} +class LocalJWKSet { + _jwks; + _cached = new WeakMap(); + constructor(jwks){ + if (!isJWKSLike(jwks)) { + throw new JWKSInvalid('JSON Web Key Set malformed'); + } + this._jwks = clone(jwks); + } + async getKey(protectedHeader, token) { + const { alg , kid } = { + ...protectedHeader, + ...token?.header + }; + const kty = getKtyFromAlg(alg); + const candidates = this._jwks.keys.filter((jwk)=>{ + let candidate = kty === jwk.kty; + if (candidate && typeof kid === 'string') { + candidate = kid === jwk.kid; + } + if (candidate && typeof jwk.alg === 'string') { + candidate = alg === jwk.alg; + } + if (candidate && typeof jwk.use === 'string') { + candidate = jwk.use === 'sig'; + } + if (candidate && Array.isArray(jwk.key_ops)) { + candidate = jwk.key_ops.includes('verify'); + } + if (candidate && alg === 'EdDSA') { + candidate = jwk.crv === 'Ed25519' || jwk.crv === 'Ed448'; + } + if (candidate) { + switch(alg){ + case 'ES256': + candidate = jwk.crv === 'P-256'; + break; + case 'ES256K': + candidate = jwk.crv === 'secp256k1'; + break; + case 'ES384': + candidate = jwk.crv === 'P-384'; + break; + case 'ES512': + candidate = jwk.crv === 'P-521'; + break; + } + } + return candidate; + }); + const { 0: jwk , length } = candidates; + if (length === 0) { + throw new JWKSNoMatchingKey(); + } else if (length !== 1) { + const error = new JWKSMultipleMatchingKeys(); + const { _cached } = this; + error[Symbol.asyncIterator] = async function*() { + for (const jwk of candidates){ + try { + yield await importWithAlgCache(_cached, jwk, alg); + } catch { + continue; + } + } + }; + throw error; + } + return importWithAlgCache(this._cached, jwk, alg); + } +} +async function importWithAlgCache(cache, jwk, alg) { + const cached = cache.get(jwk) || cache.set(jwk, {}).get(jwk); + if (cached[alg] === undefined) { + const key = await importJWK({ + ...jwk, + ext: true + }, alg); + if (key instanceof Uint8Array || key.type !== 'public') { + throw new JWKSInvalid('JSON Web Key Set members must be public keys'); + } + cached[alg] = key; + } + return cached[alg]; +} function decodeProtectedHeader(token) { let protectedB64u; if (typeof token === 'string') { @@ -13312,14 +12963,14 @@ class BufferSourceConverter { static isArrayBufferView(data) { return ArrayBuffer.isView(data) || data && this.isArrayBuffer(data.buffer); } - static isEqual(a1, b) { - const aView = BufferSourceConverter.toUint8Array(a1); + static isEqual(a, b) { + const aView = BufferSourceConverter.toUint8Array(a); const bView = BufferSourceConverter.toUint8Array(b); if (aView.length !== bView.byteLength) { return false; } - for(let i6 = 0; i6 < aView.length; i6++){ - if (aView[i6] !== bView[i6]) { + for(let i = 0; i < aView.length; i++){ + if (aView[i] !== bView[i]) { return false; } } @@ -13334,8 +12985,8 @@ class BufferSourceConverter { } const res = new Uint8Array(size); let offset = 0; - for (const buffer1 of buffers){ - const view = this.toUint8Array(buffer1); + for (const buffer of buffers){ + const view = this.toUint8Array(buffer); res.set(view, offset); offset += view.length; } @@ -13350,18 +13001,18 @@ class BufferSourceConverter { } class Utf8Converter { static fromString(text) { - const s2 = unescape(encodeURIComponent(text)); - const uintArray = new Uint8Array(s2.length); - for(let i7 = 0; i7 < s2.length; i7++){ - uintArray[i7] = s2.charCodeAt(i7); + const s = unescape(encodeURIComponent(text)); + const uintArray = new Uint8Array(s.length); + for(let i = 0; i < s.length; i++){ + uintArray[i] = s.charCodeAt(i); } return uintArray.buffer; } static toString(buffer) { const buf = BufferSourceConverter.toUint8Array(buffer); let encodedString = ""; - for(let i8 = 0; i8 < buf.length; i8++){ - encodedString += String.fromCharCode(buf[i8]); + for(let i = 0; i < buf.length; i++){ + encodedString += String.fromCharCode(buf[i]); } const decodedString = decodeURIComponent(escape(encodedString)); return decodedString; @@ -13370,19 +13021,19 @@ class Utf8Converter { class Utf16Converter { static toString(buffer, littleEndian = false) { const arrayBuffer = BufferSourceConverter.toArrayBuffer(buffer); - const dataView1 = new DataView(arrayBuffer); + const dataView = new DataView(arrayBuffer); let res = ""; - for(let i9 = 0; i9 < arrayBuffer.byteLength; i9 += 2){ - const code = dataView1.getUint16(i9, littleEndian); + for(let i = 0; i < arrayBuffer.byteLength; i += 2){ + const code = dataView.getUint16(i, littleEndian); res += String.fromCharCode(code); } return res; } static fromString(text, littleEndian = false) { const res = new ArrayBuffer(text.length * 2); - const dataView2 = new DataView(res); - for(let i10 = 0; i10 < text.length; i10++){ - dataView2.setUint16(i10 * 2, text.charCodeAt(i10), littleEndian); + const dataView = new DataView(res); + for(let i = 0; i < text.length; i++){ + dataView.setUint16(i * 2, text.charCodeAt(i), littleEndian); } return res; } @@ -13452,8 +13103,8 @@ class Convert { return Buffer.from(buf).toString("base64"); } } - static FromBase64(base641) { - const formatted = this.formatString(base641); + static FromBase64(base64) { + const formatted = this.formatString(base64); if (!formatted) { return new ArrayBuffer(0); } @@ -13514,16 +13165,16 @@ class Convert { static FromBinary(text) { const stringLength = text.length; const resultView = new Uint8Array(stringLength); - for(let i12 = 0; i12 < stringLength; i12++){ - resultView[i12] = text.charCodeAt(i12); + for(let i = 0; i < stringLength; i++){ + resultView[i] = text.charCodeAt(i); } return resultView.buffer; } static ToBinary(buffer) { const buf = BufferSourceConverter.toUint8Array(buffer); let res = ""; - for(let i13 = 0; i13 < buf.length; i13++){ - res += String.fromCharCode(buf[i13]); + for(let i = 0; i < buf.length; i++){ + res += String.fromCharCode(buf[i]); } return res; } @@ -13532,8 +13183,8 @@ class Convert { const splitter = ""; const res = []; const len = buf.length; - for(let i14 = 0; i14 < len; i14++){ - const __char = buf[i14].toString(16).padStart(2, "0"); + for(let i = 0; i < len; i++){ + const __char = buf[i].toString(16).padStart(2, "0"); res.push(__char); } return res.join(splitter); @@ -13550,9 +13201,9 @@ class Convert { formatted = `0${formatted}`; } const res = new Uint8Array(formatted.length / 2); - for(let i15 = 0; i15 < formatted.length; i15 = i15 + 2){ - const c = formatted.slice(i15, i15 + 2); - res[i15 / 2] = parseInt(c, 16); + for(let i = 0; i < formatted.length; i = i + 2){ + const c = formatted.slice(i, i + 2); + res[i / 2] = parseInt(c, 16); } return res.buffer; } @@ -13562,14 +13213,14 @@ class Convert { static FromUtf16String(text, littleEndian = false) { return Utf16Converter.fromString(text, littleEndian); } - static Base64Padding(base642) { - const padCount = 4 - base642.length % 4; + static Base64Padding(base64) { + const padCount = 4 - base64.length % 4; if (padCount < 4) { - for(let i16 = 0; i16 < padCount; i16++){ - base642 += "="; + for(let i = 0; i < padCount; i++){ + base64 += "="; } } - return base642; + return base64; } static formatString(data) { return (data === null || data === void 0 ? void 0 : data.replace(/[\n\r\t ]/g, "")) || ""; @@ -13577,11 +13228,11 @@ class Convert { } Convert.DEFAULT_UTF8_ENCODING = "utf8"; function getParametersValue(parameters, name, defaultValue) { - var _a2; + var _a; if (parameters instanceof Object === false) { return defaultValue; } - return (_a2 = parameters[name]) !== null && _a2 !== void 0 ? _a2 : defaultValue; + return (_a = parameters[name]) !== null && _a !== void 0 ? _a : defaultValue; } function bufferToHexCodes(inputBuffer, inputOffset = 0, inputLength = inputBuffer.byteLength - inputOffset, insertSpace = false) { let result = ""; @@ -13602,38 +13253,38 @@ function utilFromBase(inputBuffer, inputBase) { if (inputBuffer.length === 1) { return inputBuffer[0]; } - for(let i17 = inputBuffer.length - 1; i17 >= 0; i17--){ - result += inputBuffer[inputBuffer.length - 1 - i17] * Math.pow(2, inputBase * i17); + for(let i = inputBuffer.length - 1; i >= 0; i--){ + result += inputBuffer[inputBuffer.length - 1 - i] * Math.pow(2, inputBase * i); } return result; } -function utilToBase(value, base1, reserved = -1) { +function utilToBase(value, base, reserved = -1) { const internalReserved = reserved; let internalValue = value; let result = 0; - let biggest = Math.pow(2, base1); - for(let i18 = 1; i18 < 8; i18++){ + let biggest = Math.pow(2, base); + for(let i = 1; i < 8; i++){ if (value < biggest) { let retBuf; if (internalReserved < 0) { - retBuf = new ArrayBuffer(i18); - result = i18; + retBuf = new ArrayBuffer(i); + result = i; } else { - if (internalReserved < i18) { + if (internalReserved < i) { return new ArrayBuffer(0); } retBuf = new ArrayBuffer(internalReserved); result = internalReserved; } const retView = new Uint8Array(retBuf); - for(let j = i18 - 1; j >= 0; j--){ - const basis = Math.pow(2, j * base1); + for(let j = i - 1; j >= 0; j--){ + const basis = Math.pow(2, j * base); retView[result - j - 1] = Math.floor(internalValue / basis); internalValue -= retView[result - j - 1] * basis; } return retBuf; } - biggest *= Math.pow(2, base1); + biggest *= Math.pow(2, base); } return new ArrayBuffer(0); } @@ -13645,9 +13296,9 @@ function utilConcatBuf(...buffers) { } const retBuf = new ArrayBuffer(outputLength); const retView = new Uint8Array(retBuf); - for (const buffer1 of buffers){ - retView.set(new Uint8Array(buffer1), prevLength); - prevLength += buffer1.byteLength; + for (const buffer of buffers){ + retView.set(new Uint8Array(buffer), prevLength); + prevLength += buffer.byteLength; } return retBuf; } @@ -13659,52 +13310,52 @@ function utilConcatView(...views) { } const retBuf = new ArrayBuffer(outputLength); const retView = new Uint8Array(retBuf); - for (const view1 of views){ - retView.set(view1, prevLength); - prevLength += view1.length; + for (const view of views){ + retView.set(view, prevLength); + prevLength += view.length; } return retView; } function utilDecodeTC() { const buf = new Uint8Array(this.valueHex); if (this.valueHex.byteLength >= 2) { - const condition1 = buf[0] === 255 && buf[1] & 128; - const condition2 = buf[0] === 0 && (buf[1] & 128) === 0; + const condition1 = buf[0] === 0xFF && buf[1] & 0x80; + const condition2 = buf[0] === 0x00 && (buf[1] & 0x80) === 0x00; if (condition1 || condition2) { this.warnings.push("Needlessly long format"); } } const bigIntBuffer = new ArrayBuffer(this.valueHex.byteLength); const bigIntView = new Uint8Array(bigIntBuffer); - for(let i19 = 0; i19 < this.valueHex.byteLength; i19++){ - bigIntView[i19] = 0; + for(let i = 0; i < this.valueHex.byteLength; i++){ + bigIntView[i] = 0; } - bigIntView[0] = buf[0] & 128; + bigIntView[0] = buf[0] & 0x80; const bigInt = utilFromBase(bigIntView, 8); const smallIntBuffer = new ArrayBuffer(this.valueHex.byteLength); const smallIntView = new Uint8Array(smallIntBuffer); for(let j = 0; j < this.valueHex.byteLength; j++){ smallIntView[j] = buf[j]; } - smallIntView[0] &= 127; + smallIntView[0] &= 0x7F; const smallInt = utilFromBase(smallIntView, 8); return smallInt - bigInt; } function utilEncodeTC(value) { const modValue = value < 0 ? value * -1 : value; let bigInt = 128; - for(let i20 = 1; i20 < 8; i20++){ + for(let i = 1; i < 8; i++){ if (modValue <= bigInt) { if (value < 0) { const smallInt = bigInt - modValue; - const retBuf = utilToBase(smallInt, 8, i20); + const retBuf = utilToBase(smallInt, 8, i); const retView = new Uint8Array(retBuf); - retView[0] |= 128; + retView[0] |= 0x80; return retBuf; } - let retBuf = utilToBase(modValue, 8, i20); + let retBuf = utilToBase(modValue, 8, i); let retView = new Uint8Array(retBuf); - if (retView[0] & 128) { + if (retView[0] & 0x80) { const tempBuf = retBuf.slice(0); const tempView = new Uint8Array(tempBuf); retBuf = new ArrayBuffer(retBuf.byteLength + 1); @@ -13712,7 +13363,7 @@ function utilEncodeTC(value) { for(let k = 0; k < tempBuf.byteLength; k++){ retView[k + 1] = tempView[k]; } - retView[0] = 0; + retView[0] = 0x00; } return retBuf; } @@ -13726,8 +13377,8 @@ function isEqualBuffer(inputBuffer1, inputBuffer2) { } const view1 = new Uint8Array(inputBuffer1); const view2 = new Uint8Array(inputBuffer2); - for(let i21 = 0; i21 < view1.length; i21++){ - if (view1[i21] !== view2[i21]) { + for(let i = 0; i < view1.length; i++){ + if (view1[i] !== view2[i]) { return false; } } @@ -13740,8 +13391,8 @@ function padNumber(inputNumber, fullLength) { } const dif = fullLength - str.length; const padding = new Array(dif); - for(let i22 = 0; i22 < dif; i22++){ - padding[i22] = "0"; + for(let i = 0; i < dif; i++){ + padding[i] = "0"; } const paddingString = padding.join(""); return paddingString.concat(str); @@ -13749,35 +13400,35 @@ function padNumber(inputNumber, fullLength) { const base64Template = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; const base64UrlTemplate = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_="; function toBase64(input, useUrlTemplate = false, skipPadding = false, skipLeadingZeros = false) { - let i24 = 0; + let i = 0; let flag1 = 0; let flag2 = 0; let output = ""; const template = useUrlTemplate ? base64UrlTemplate : base64Template; if (skipLeadingZeros) { let nonZeroPosition = 0; - for(let i23 = 0; i23 < input.length; i23++){ - if (input.charCodeAt(i23) !== 0) { - nonZeroPosition = i23; + for(let i = 0; i < input.length; i++){ + if (input.charCodeAt(i) !== 0) { + nonZeroPosition = i; break; } } input = input.slice(nonZeroPosition); } - while(i24 < input.length){ - const chr1 = input.charCodeAt(i24++); - if (i24 >= input.length) { + while(i < input.length){ + const chr1 = input.charCodeAt(i++); + if (i >= input.length) { flag1 = 1; } - const chr2 = input.charCodeAt(i24++); - if (i24 >= input.length) { + const chr2 = input.charCodeAt(i++); + if (i >= input.length) { flag2 = 1; } - const chr3 = input.charCodeAt(i24++); + const chr3 = input.charCodeAt(i++); const enc1 = chr1 >> 2; - const enc2 = (chr1 & 3) << 4 | chr2 >> 4; - let enc3 = (chr2 & 15) << 2 | chr3 >> 6; - let enc4 = chr3 & 63; + const enc2 = (chr1 & 0x03) << 4 | chr2 >> 4; + let enc3 = (chr2 & 0x0F) << 2 | chr3 >> 6; + let enc4 = chr3 & 0x3F; if (flag1 === 1) { enc3 = enc4 = 64; } else { @@ -13804,24 +13455,24 @@ function toBase64(input, useUrlTemplate = false, skipPadding = false, skipLeadin function fromBase64(input, useUrlTemplate = false, cutTailZeros = false) { const template = useUrlTemplate ? base64UrlTemplate : base64Template; function indexOf(toSearch) { - for(let i25 = 0; i25 < 64; i25++){ - if (template.charAt(i25) === toSearch) return i25; + for(let i = 0; i < 64; i++){ + if (template.charAt(i) === toSearch) return i; } return 64; } function test(incoming) { - return incoming === 64 ? 0 : incoming; + return incoming === 64 ? 0x00 : incoming; } - let i110 = 0; + let i = 0; let output = ""; - while(i110 < input.length){ - const enc1 = indexOf(input.charAt(i110++)); - const enc2 = i110 >= input.length ? 0 : indexOf(input.charAt(i110++)); - const enc3 = i110 >= input.length ? 0 : indexOf(input.charAt(i110++)); - const enc4 = i110 >= input.length ? 0 : indexOf(input.charAt(i110++)); + while(i < input.length){ + const enc1 = indexOf(input.charAt(i++)); + const enc2 = i >= input.length ? 0x00 : indexOf(input.charAt(i++)); + const enc3 = i >= input.length ? 0x00 : indexOf(input.charAt(i++)); + const enc4 = i >= input.length ? 0x00 : indexOf(input.charAt(i++)); const chr1 = test(enc1) << 2 | test(enc2) >> 4; - const chr2 = (test(enc2) & 15) << 4 | test(enc3) >> 2; - const chr3 = (test(enc3) & 3) << 6 | test(enc4); + const chr2 = (test(enc2) & 0x0F) << 4 | test(enc3) >> 2; + const chr3 = (test(enc3) & 0x03) << 6 | test(enc4); output += String.fromCharCode(chr1); if (enc3 !== 64) { output += String.fromCharCode(chr2); @@ -13833,9 +13484,9 @@ function fromBase64(input, useUrlTemplate = false, cutTailZeros = false) { if (cutTailZeros) { const outputLength = output.length; let nonZeroStart = -1; - for(let i26 = outputLength - 1; i26 >= 0; i26--){ - if (output.charCodeAt(i26) !== 0) { - nonZeroStart = i26; + for(let i = outputLength - 1; i >= 0; i--){ + if (output.charCodeAt(i) !== 0) { + nonZeroStart = i; break; } } @@ -13859,17 +13510,17 @@ function stringToArrayBuffer(str) { const stringLength = str.length; const resultBuffer = new ArrayBuffer(stringLength); const resultView = new Uint8Array(resultBuffer); - for(let i27 = 0; i27 < stringLength; i27++){ - resultView[i27] = str.charCodeAt(i27); + for(let i = 0; i < stringLength; i++){ + resultView[i] = str.charCodeAt(i); } return resultBuffer; } const log2 = Math.log(2); function nearestPowerOf2(length) { - const base2 = Math.log(length) / log2; - const floor1 = Math.floor(base2); - const round = Math.round(base2); - return floor1 === round ? floor1 : round; + const base = Math.log(length) / log2; + const floor = Math.floor(base); + const round = Math.round(base); + return floor === round ? floor : round; } function clearProps(object, propsArray) { for (const prop of propsArray){ @@ -13884,13 +13535,13 @@ function assertBigInt() { function concat1(buffers) { let outputLength = 0; let prevLength = 0; - for(let i28 = 0; i28 < buffers.length; i28++){ - const buffer = buffers[i28]; + for(let i = 0; i < buffers.length; i++){ + const buffer = buffers[i]; outputLength += buffer.byteLength; } const retView = new Uint8Array(outputLength); - for(let i111 = 0; i111 < buffers.length; i111++){ - const buffer = buffers[i111]; + for(let i = 0; i < buffers.length; i++){ + const buffer = buffers[i]; retView.set(new Uint8Array(buffer), prevLength); prevLength += buffer.byteLength; } @@ -13953,13 +13604,13 @@ const END_OF_CONTENT_NAME = "EndOfContent"; const OCTET_STRING_NAME = "OCTET STRING"; const BIT_STRING_NAME = "BIT STRING"; function HexBlock(BaseClass) { - var _a1; - return _a1 = class Some extends BaseClass { + var _a; + return _a = class Some extends BaseClass { constructor(...args){ - var _a2; + var _a; super(...args); const params = args[0] || {}; - this.isHexOnly = (_a2 = params.isHexOnly) !== null && _a2 !== void 0 ? _a2 : false; + this.isHexOnly = (_a = params.isHexOnly) !== null && _a !== void 0 ? _a : false; this.valueHexView = params.valueHex ? BufferSourceConverter.toUint8Array(params.valueHex) : EMPTY_VIEW; } get valueHex() { @@ -13999,12 +13650,12 @@ function HexBlock(BaseClass) { valueHex: Convert.ToHex(this.valueHexView) }; } - }, _a1.NAME = "hexBlock", _a1; + }, _a.NAME = "hexBlock", _a; } class LocalBaseBlock { - constructor({ blockLength =0 , error: error1 = EMPTY_STRING , warnings =[] , valueBeforeDecode =EMPTY_VIEW } = {}){ + constructor({ blockLength =0 , error =EMPTY_STRING , warnings =[] , valueBeforeDecode =EMPTY_VIEW } = {}){ this.blockLength = blockLength; - this.error = error1; + this.error = error; this.warnings = warnings; this.valueBeforeDecodeView = BufferSourceConverter.toUint8Array(valueBeforeDecode); } @@ -14039,10 +13690,10 @@ class ValueBlock extends LocalBaseBlock { ValueBlock.NAME = "valueBlock"; class LocalIdentificationBlock extends HexBlock(LocalBaseBlock) { constructor({ idBlock ={} } = {}){ - var _a3, _b, _c, _d; + var _a, _b, _c, _d; super(); if (idBlock) { - this.isHexOnly = (_a3 = idBlock.isHexOnly) !== null && _a3 !== void 0 ? _a3 : false; + this.isHexOnly = (_a = idBlock.isHexOnly) !== null && _a !== void 0 ? _a : false; this.valueHexView = idBlock.valueHex ? BufferSourceConverter.toUint8Array(idBlock.valueHex) : EMPTY_VIEW; this.tagClass = (_b = idBlock.tagClass) !== null && _b !== void 0 ? _b : -1; this.tagNumber = (_c = idBlock.tagNumber) !== null && _c !== void 0 ? _c : -1; @@ -14057,27 +13708,27 @@ class LocalIdentificationBlock extends HexBlock(LocalBaseBlock) { let firstOctet = 0; switch(this.tagClass){ case 1: - firstOctet |= 0; + firstOctet |= 0x00; break; case 2: - firstOctet |= 64; + firstOctet |= 0x40; break; case 3: - firstOctet |= 128; + firstOctet |= 0x80; break; case 4: - firstOctet |= 192; + firstOctet |= 0xC0; break; default: this.error = "Unknown tag class"; return EMPTY_BUFFER; } - if (this.isConstructed) firstOctet |= 32; + if (this.isConstructed) firstOctet |= 0x20; if (this.tagNumber < 31 && !this.isHexOnly) { const retView = new Uint8Array(1); if (!sizeOnly) { let number = this.tagNumber; - number &= 31; + number &= 0x1F; firstOctet |= number; retView[0] = firstOctet; } @@ -14088,18 +13739,18 @@ class LocalIdentificationBlock extends HexBlock(LocalBaseBlock) { const encodedView = new Uint8Array(encodedBuf); const size = encodedBuf.byteLength; const retView = new Uint8Array(size + 1); - retView[0] = firstOctet | 31; + retView[0] = firstOctet | 0x1F; if (!sizeOnly) { - for(let i29 = 0; i29 < size - 1; i29++)retView[i29 + 1] = encodedView[i29] | 128; + for(let i = 0; i < size - 1; i++)retView[i + 1] = encodedView[i] | 0x80; retView[size] = encodedView[size - 1]; } return retView.buffer; } const retView = new Uint8Array(this.valueHexView.byteLength + 1); - retView[0] = firstOctet | 31; + retView[0] = firstOctet | 0x1F; if (!sizeOnly) { const curView = this.valueHexView; - for(let i30 = 0; i30 < curView.length - 1; i30++)retView[i30 + 1] = curView[i30] | 128; + for(let i = 0; i < curView.length - 1; i++)retView[i + 1] = curView[i] | 0x80; retView[this.valueHexView.byteLength] = curView[curView.length - 1]; } return retView.buffer; @@ -14114,36 +13765,36 @@ class LocalIdentificationBlock extends HexBlock(LocalBaseBlock) { this.error = "Zero buffer length"; return -1; } - const tagClassMask = intBuffer[0] & 192; + const tagClassMask = intBuffer[0] & 0xC0; switch(tagClassMask){ - case 0: + case 0x00: this.tagClass = 1; break; - case 64: + case 0x40: this.tagClass = 2; break; - case 128: + case 0x80: this.tagClass = 3; break; - case 192: + case 0xC0: this.tagClass = 4; break; default: this.error = "Unknown tag class"; return -1; } - this.isConstructed = (intBuffer[0] & 32) === 32; + this.isConstructed = (intBuffer[0] & 0x20) === 0x20; this.isHexOnly = false; - const tagNumberMask = intBuffer[0] & 31; - if (tagNumberMask !== 31) { + const tagNumberMask = intBuffer[0] & 0x1F; + if (tagNumberMask !== 0x1F) { this.tagNumber = tagNumberMask; this.blockLength = 1; } else { let count = 1; let intTagNumberBuffer = this.valueHexView = new Uint8Array(255); let tagNumberBufferMaxLength = 255; - while(intBuffer[count] & 128){ - intTagNumberBuffer[count - 1] = intBuffer[count] & 127; + while(intBuffer[count] & 0x80){ + intTagNumberBuffer[count - 1] = intBuffer[count] & 0x7F; count++; if (count >= intBuffer.length) { this.error = "End of input reached before message was fully decoded"; @@ -14152,14 +13803,14 @@ class LocalIdentificationBlock extends HexBlock(LocalBaseBlock) { if (count === tagNumberBufferMaxLength) { tagNumberBufferMaxLength += 255; const tempBufferView = new Uint8Array(tagNumberBufferMaxLength); - for(let i31 = 0; i31 < intTagNumberBuffer.length; i31++)tempBufferView[i31] = intTagNumberBuffer[i31]; + for(let i = 0; i < intTagNumberBuffer.length; i++)tempBufferView[i] = intTagNumberBuffer[i]; intTagNumberBuffer = this.valueHexView = new Uint8Array(tagNumberBufferMaxLength); } } this.blockLength = count + 1; - intTagNumberBuffer[count - 1] = intBuffer[count] & 127; + intTagNumberBuffer[count - 1] = intBuffer[count] & 0x7F; const tempBufferView = new Uint8Array(count); - for(let i32 = 0; i32 < count; i32++)tempBufferView[i32] = intTagNumberBuffer[i32]; + for(let i = 0; i < count; i++)tempBufferView[i] = intTagNumberBuffer[i]; intTagNumberBuffer = this.valueHexView = new Uint8Array(count); intTagNumberBuffer.set(tempBufferView); if (this.blockLength <= 9) this.tagNumber = utilFromBase(intTagNumberBuffer, 7); @@ -14201,9 +13852,9 @@ class LocalIdentificationBlock extends HexBlock(LocalBaseBlock) { LocalIdentificationBlock.NAME = "identificationBlock"; class LocalLengthBlock extends LocalBaseBlock { constructor({ lenBlock ={} } = {}){ - var _a4, _b, _c; + var _a, _b, _c; super(); - this.isIndefiniteForm = (_a4 = lenBlock.isIndefiniteForm) !== null && _a4 !== void 0 ? _a4 : false; + this.isIndefiniteForm = (_a = lenBlock.isIndefiniteForm) !== null && _a !== void 0 ? _a : false; this.longFormUsed = (_b = lenBlock.longFormUsed) !== null && _b !== void 0 ? _b : false; this.length = (_c = lenBlock.length) !== null && _c !== void 0 ? _c : 0; } @@ -14217,22 +13868,22 @@ class LocalLengthBlock extends LocalBaseBlock { this.error = "Zero buffer length"; return -1; } - if (intBuffer[0] === 255) { + if (intBuffer[0] === 0xFF) { this.error = "Length block 0xFF is reserved by standard"; return -1; } - this.isIndefiniteForm = intBuffer[0] === 128; + this.isIndefiniteForm = intBuffer[0] === 0x80; if (this.isIndefiniteForm) { this.blockLength = 1; return inputOffset + this.blockLength; } - this.longFormUsed = !!(intBuffer[0] & 128); + this.longFormUsed = !!(intBuffer[0] & 0x80); if (this.longFormUsed === false) { this.length = intBuffer[0]; this.blockLength = 1; return inputOffset + this.blockLength; } - const count = intBuffer[0] & 127; + const count = intBuffer[0] & 0x7F; if (count > 8) { this.error = "Too big integer"; return -1; @@ -14243,7 +13894,7 @@ class LocalLengthBlock extends LocalBaseBlock { } const lenOffset = inputOffset + 1; const lengthBufferView = view.subarray(lenOffset, lenOffset + count); - if (lengthBufferView[count - 1] === 0) this.warnings.push("Needlessly long encoded length"); + if (lengthBufferView[count - 1] === 0x00) this.warnings.push("Needlessly long encoded length"); this.length = utilFromBase(lengthBufferView, 8); if (this.longFormUsed && this.length <= 127) this.warnings.push("Unnecessary usage of long length form"); this.blockLength = count + 1; @@ -14257,7 +13908,7 @@ class LocalLengthBlock extends LocalBaseBlock { retBuf = new ArrayBuffer(1); if (sizeOnly === false) { retView = new Uint8Array(retBuf); - retView[0] = 128; + retView[0] = 0x80; } return retBuf; } @@ -14271,8 +13922,8 @@ class LocalLengthBlock extends LocalBaseBlock { if (sizeOnly) return retBuf; const encodedView = new Uint8Array(encodedBuf); retView = new Uint8Array(retBuf); - retView[0] = encodedBuf.byteLength | 128; - for(let i33 = 0; i33 < encodedBuf.byteLength; i33++)retView[i33 + 1] = encodedView[i33]; + retView[0] = encodedBuf.byteLength | 0x80; + for(let i = 0; i < encodedBuf.byteLength; i++)retView[i + 1] = encodedView[i]; return retBuf; } retBuf = new ArrayBuffer(1); @@ -14325,7 +13976,7 @@ class BaseBlock extends LocalBaseBlock { _writer.write(idBlockBuf); if (this.lenBlock.isIndefiniteForm) { _writer.write(new Uint8Array([ - 128 + 0x80 ]).buffer); this.valueBlock.toBER(sizeOnly, _writer); _writer.write(new ArrayBuffer(2)); @@ -14697,8 +14348,8 @@ class LocalConstructedValueBlock extends ValueBlock { } toBER(sizeOnly, writer) { const _writer = writer || new ViewWriter(); - for(let i34 = 0; i34 < this.value.length; i34++){ - this.value[i34].toBER(sizeOnly, _writer); + for(let i = 0; i < this.value.length; i++){ + this.value[i].toBER(sizeOnly, _writer); } if (!writer) { return _writer.final(); @@ -14739,8 +14390,7 @@ class Constructed extends BaseBlock { onAsciiEncoding() { const values = []; for (const value of this.valueBlock.value){ - values.push(value.toString("ascii").split("\n").map((o1)=>` ${o1}` - ).join("\n")); + values.push(value.toString("ascii").split("\n").map((o)=>` ${o}`).join("\n")); } const blockName = this.idBlock.tagClass === 3 ? `[${this.idBlock.tagNumber}]` : this.constructor.NAME; return values.length ? `${blockName} :\n${values.join("\n")}` : `${blockName} :`; @@ -14795,8 +14445,8 @@ class Null extends BaseBlock { const retBuf = new ArrayBuffer(2); if (!sizeOnly) { const retView = new Uint8Array(retBuf); - retView[0] = 5; - retView[1] = 0; + retView[0] = 0x05; + retView[1] = 0x00; } if (writer) { writer.write(retBuf); @@ -14833,7 +14483,7 @@ class LocalBooleanValueBlock extends HexBlock(ValueBlock) { return false; } set value(value) { - this.valueHexView[0] = value ? 255 : 0; + this.valueHexView[0] = value ? 0xFF : 0x00; } fromBER(inputBuffer, inputOffset, inputLength) { const inputView = BufferSourceConverter.toUint8Array(inputBuffer); @@ -14891,8 +14541,8 @@ class LocalOctetStringValueBlock extends HexBlock(LocalConstructedValueBlock) { this.isHexOnly = false; resultOffset = LocalConstructedValueBlock.prototype.fromBER.call(this, inputBuffer, inputOffset, inputLength); if (resultOffset === -1) return resultOffset; - for(let i35 = 0; i35 < this.value.length; i35++){ - const currentBlockName = this.value[i35].constructor.NAME; + for(let i = 0; i < this.value.length; i++){ + const currentBlockName = this.value[i].constructor.NAME; if (currentBlockName === END_OF_CONTENT_NAME) { if (this.isIndefiniteForm) break; else { @@ -15136,7 +14786,7 @@ function viewAdd(first, second) { let value = 0; const max = secondViewCopyLength < firstViewCopyLength ? firstViewCopyLength : secondViewCopyLength; let counter = 0; - for(let i36 = max; i36 >= 0; i36--, counter++){ + for(let i = max; i >= 0; i--, counter++){ switch(true){ case counter < secondViewCopy.length: value = firstViewCopy[firstViewCopyLength - counter] + secondViewCopy[secondViewCopyLength - counter] + c[0]; @@ -15158,25 +14808,25 @@ function viewAdd(first, second) { if (c[0] > 0) firstViewCopy = utilConcatView(c, firstViewCopy); return firstViewCopy; } -function power2(n3) { - if (n3 >= powers2.length) { - for(let p = powers2.length; p <= n3; p++){ +function power2(n) { + if (n >= powers2.length) { + for(let p = powers2.length; p <= n; p++){ const c = new Uint8Array([ 0 ]); let digits = powers2[p - 1].slice(0); - for(let i37 = digits.length - 1; i37 >= 0; i37--){ + for(let i = digits.length - 1; i >= 0; i--){ const newValue = new Uint8Array([ - (digits[i37] << 1) + c[0] + (digits[i] << 1) + c[0] ]); c[0] = newValue[0] / 10; - digits[i37] = newValue[0] % 10; + digits[i] = newValue[0] % 10; } if (c[0] > 0) digits = utilConcatView(c, digits); powers2.push(digits); } } - return powers2[n3]; + return powers2[n]; } function viewSub(first, second) { let b = 0; @@ -15188,7 +14838,7 @@ function viewSub(first, second) { const secondViewCopyLength = secondViewCopy.length - 1; let value; let counter = 0; - for(let i38 = secondViewCopyLength; i38 >= 0; i38--, counter++){ + for(let i = secondViewCopyLength; i >= 0; i--, counter++){ value = firstViewCopy[firstViewCopyLength - counter] - secondViewCopy[secondViewCopyLength - counter] - b; switch(true){ case value < 0: @@ -15201,7 +14851,7 @@ function viewSub(first, second) { } } if (b > 0) { - for(let i39 = firstViewCopyLength - secondViewCopyLength + 1; i39 >= 0; i39--, counter++){ + for(let i = firstViewCopyLength - secondViewCopyLength + 1; i >= 0; i--, counter++){ value = firstViewCopy[firstViewCopyLength - counter] - b; if (value < 0) { b = 1; @@ -15250,7 +14900,7 @@ class LocalIntegerValueBlock extends HexBlock(ValueBlock) { const offset = this.fromBER(inputBuffer, inputOffset, inputLength); if (offset === -1) return offset; const view = this.valueHexView; - if (view[0] === 0 && (view[1] & 128) !== 0) { + if (view[0] === 0x00 && (view[1] & 0x80) !== 0) { this.valueHexView = view.subarray(1); } else { if (expectedLength !== 0) { @@ -15265,15 +14915,15 @@ class LocalIntegerValueBlock extends HexBlock(ValueBlock) { toDER(sizeOnly = false) { const view = this.valueHexView; switch(true){ - case (view[0] & 128) !== 0: + case (view[0] & 0x80) !== 0: { const updatedView = new Uint8Array(this.valueHexView.length + 1); - updatedView[0] = 0; + updatedView[0] = 0x00; updatedView.set(view, 1); this.valueHexView = updatedView; } break; - case view[0] === 0 && (view[1] & 128) === 0: + case view[0] === 0x00 && (view[1] & 0x80) === 0: { this.valueHexView = this.valueHexView.subarray(1); } @@ -15308,7 +14958,7 @@ class LocalIntegerValueBlock extends HexBlock(ValueBlock) { let flag = false; for(let byteNumber = asn1View.byteLength - 1; byteNumber >= 0; byteNumber--){ currentByte = asn1View[byteNumber]; - for(let i40 = 0; i40 < 8; i40++){ + for(let i = 0; i < 8; i++){ if ((currentByte & 1) === 1) { switch(bitNumber){ case firstBit: @@ -15323,9 +14973,9 @@ class LocalIntegerValueBlock extends HexBlock(ValueBlock) { currentByte >>= 1; } } - for(let i41 = 0; i41 < digits.length; i41++){ - if (digits[i41]) flag = true; - if (flag) result += digitsString.charAt(digits[i41]); + for(let i = 0; i < digits.length; i++){ + if (digits[i]) flag = true; + if (flag) result += digitsString.charAt(digits[i]); } if (flag === false) result += digitsString.charAt(0); return result; @@ -15362,15 +15012,15 @@ class Integer extends BaseBlock { const hex = bigIntValue.toString(16).replace(/^-/, ""); const view = new Uint8Array(Convert.FromHex(hex)); if (bigIntValue < 0) { - const first = new Uint8Array(view.length + (view[0] & 128 ? 1 : 0)); - first[0] |= 128; + const first = new Uint8Array(view.length + (view[0] & 0x80 ? 1 : 0)); + first[0] |= 0x80; const firstInt = BigInt(`0x${Convert.ToHex(first)}`); const secondInt = firstInt + bigIntValue; const second = BufferSourceConverter.toUint8Array(Convert.FromHex(secondInt.toString(16))); - second[0] |= 128; + second[0] |= 0x80; writer.write(second); } else { - if (view[0] & 128) { + if (view[0] & 0x80) { writer.write(new Uint8Array([ 0 ])); @@ -15432,21 +15082,21 @@ class LocalSidValueBlock extends HexBlock(ValueBlock) { } const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength); this.valueHexView = new Uint8Array(inputLength); - for(let i42 = 0; i42 < inputLength; i42++){ - this.valueHexView[i42] = intBuffer[i42] & 127; + for(let i = 0; i < inputLength; i++){ + this.valueHexView[i] = intBuffer[i] & 0x7F; this.blockLength++; - if ((intBuffer[i42] & 128) === 0) break; + if ((intBuffer[i] & 0x80) === 0x00) break; } const tempView = new Uint8Array(this.blockLength); - for(let i2 = 0; i2 < this.blockLength; i2++){ - tempView[i2] = this.valueHexView[i2]; + for(let i = 0; i < this.blockLength; i++){ + tempView[i] = this.valueHexView[i]; } this.valueHexView = tempView; - if ((intBuffer[this.blockLength - 1] & 128) !== 0) { + if ((intBuffer[this.blockLength - 1] & 0x80) !== 0x00) { this.error = "End of input reached before message was fully decoded"; return -1; } - if (this.valueHexView[0] === 0) this.warnings.push("Needlessly long format of SID encoding"); + if (this.valueHexView[0] === 0x00) this.warnings.push("Needlessly long format of SID encoding"); if (this.blockLength <= 8) this.valueDec = utilFromBase(this.valueHexView, 7); else { this.isHexOnly = true; @@ -15461,8 +15111,8 @@ class LocalSidValueBlock extends HexBlock(ValueBlock) { bits = "0" + bits; } const bytes = new Uint8Array(bits.length / 7); - for(let i43 = 0; i43 < bytes.length; i43++){ - bytes[i43] = parseInt(bits.slice(i43 * 7, i43 * 7 + 7), 2) + (i43 + 1 < bytes.length ? 128 : 0); + for(let i = 0; i < bytes.length; i++){ + bytes[i] = parseInt(bits.slice(i * 7, i * 7 + 7), 2) + (i + 1 < bytes.length ? 0x80 : 0); } this.fromBER(bytes.buffer, 0, bytes.length); } @@ -15471,7 +15121,7 @@ class LocalSidValueBlock extends HexBlock(ValueBlock) { if (sizeOnly) return new ArrayBuffer(this.valueHexView.byteLength); const curView = this.valueHexView; const retView = new Uint8Array(this.blockLength); - for(let i44 = 0; i44 < this.blockLength - 1; i44++)retView[i44] = curView[i44] | 128; + for(let i = 0; i < this.blockLength - 1; i++)retView[i] = curView[i] | 0x80; retView[this.blockLength - 1] = curView[this.blockLength - 1]; return retView.buffer; } @@ -15484,7 +15134,7 @@ class LocalSidValueBlock extends HexBlock(ValueBlock) { if (!sizeOnly) { const encodedView = new Uint8Array(encodedBuf); const len = encodedBuf.byteLength - 1; - for(let i45 = 0; i45 < len; i45++)retView[i45] = encodedView[i45] | 128; + for(let i = 0; i < len; i++)retView[i] = encodedView[i] | 0x80; retView[len] = encodedView[len]; } return retView; @@ -15546,10 +15196,10 @@ class LocalObjectIdentifierValueBlock extends ValueBlock { } toBER(sizeOnly) { const retBuffers = []; - for(let i46 = 0; i46 < this.value.length; i46++){ - const valueBuf = this.value[i46].toBER(sizeOnly); + for(let i = 0; i < this.value.length; i++){ + const valueBuf = this.value[i].toBER(sizeOnly); if (valueBuf.byteLength === 0) { - this.error = this.value[i46].error; + this.error = this.value[i].error; return EMPTY_BUFFER; } retBuffers.push(valueBuf); @@ -15608,13 +15258,13 @@ class LocalObjectIdentifierValueBlock extends ValueBlock { toString() { let result = ""; let isHexOnly = false; - for(let i47 = 0; i47 < this.value.length; i47++){ - isHexOnly = this.value[i47].isHexOnly; - let sidStr = this.value[i47].toString(); - if (i47 !== 0) result = `${result}.`; + for(let i = 0; i < this.value.length; i++){ + isHexOnly = this.value[i].isHexOnly; + let sidStr = this.value[i].toString(); + if (i !== 0) result = `${result}.`; if (isHexOnly) { sidStr = `{${sidStr}}`; - if (this.value[i47].isFirstSid) result = `2.{${sidStr} - 80}`; + if (this.value[i].isFirstSid) result = `2.{${sidStr} - 80}`; else result += sidStr; } else result += sidStr; } @@ -15626,8 +15276,8 @@ class LocalObjectIdentifierValueBlock extends ValueBlock { value: this.toString(), sidArray: [] }; - for(let i48 = 0; i48 < this.value.length; i48++){ - object.sidArray.push(this.value[i48].toJSON()); + for(let i = 0; i < this.value.length; i++){ + object.sidArray.push(this.value[i].toJSON()); } return object; } @@ -15672,19 +15322,19 @@ class LocalRelativeSidValueBlock extends HexBlock(LocalBaseBlock) { if (!checkBufferParams(this, inputView, inputOffset, inputLength)) return -1; const intBuffer = inputView.subarray(inputOffset, inputOffset + inputLength); this.valueHexView = new Uint8Array(inputLength); - for(let i49 = 0; i49 < inputLength; i49++){ - this.valueHexView[i49] = intBuffer[i49] & 127; + for(let i = 0; i < inputLength; i++){ + this.valueHexView[i] = intBuffer[i] & 0x7F; this.blockLength++; - if ((intBuffer[i49] & 128) === 0) break; + if ((intBuffer[i] & 0x80) === 0x00) break; } const tempView = new Uint8Array(this.blockLength); - for(let i3 = 0; i3 < this.blockLength; i3++)tempView[i3] = this.valueHexView[i3]; + for(let i = 0; i < this.blockLength; i++)tempView[i] = this.valueHexView[i]; this.valueHexView = tempView; - if ((intBuffer[this.blockLength - 1] & 128) !== 0) { + if ((intBuffer[this.blockLength - 1] & 0x80) !== 0x00) { this.error = "End of input reached before message was fully decoded"; return -1; } - if (this.valueHexView[0] === 0) this.warnings.push("Needlessly long format of SID encoding"); + if (this.valueHexView[0] === 0x00) this.warnings.push("Needlessly long format of SID encoding"); if (this.blockLength <= 8) this.valueDec = utilFromBase(this.valueHexView, 7); else { this.isHexOnly = true; @@ -15697,7 +15347,7 @@ class LocalRelativeSidValueBlock extends HexBlock(LocalBaseBlock) { if (sizeOnly) return new ArrayBuffer(this.valueHexView.byteLength); const curView = this.valueHexView; const retView = new Uint8Array(this.blockLength); - for(let i50 = 0; i50 < this.blockLength - 1; i50++)retView[i50] = curView[i50] | 128; + for(let i = 0; i < this.blockLength - 1; i++)retView[i] = curView[i] | 0x80; retView[this.blockLength - 1] = curView[this.blockLength - 1]; return retView.buffer; } @@ -15710,7 +15360,7 @@ class LocalRelativeSidValueBlock extends HexBlock(LocalBaseBlock) { if (!sizeOnly) { const encodedView = new Uint8Array(encodedBuf); const len = encodedBuf.byteLength - 1; - for(let i51 = 0; i51 < len; i51++)retView[i51] = encodedView[i51] | 128; + for(let i = 0; i < len; i++)retView[i] = encodedView[i] | 0x80; retView[len] = encodedView[len]; } return retView.buffer; @@ -15757,10 +15407,10 @@ class LocalRelativeObjectIdentifierValueBlock extends ValueBlock { } toBER(sizeOnly, writer) { const retBuffers = []; - for(let i52 = 0; i52 < this.value.length; i52++){ - const valueBuf = this.value[i52].toBER(sizeOnly); + for(let i = 0; i < this.value.length; i++){ + const valueBuf = this.value[i].toBER(sizeOnly); if (valueBuf.byteLength === 0) { - this.error = this.value[i52].error; + this.error = this.value[i].error; return EMPTY_BUFFER; } retBuffers.push(valueBuf); @@ -15787,10 +15437,10 @@ class LocalRelativeObjectIdentifierValueBlock extends ValueBlock { toString() { let result = ""; let isHexOnly = false; - for(let i53 = 0; i53 < this.value.length; i53++){ - isHexOnly = this.value[i53].isHexOnly; - let sidStr = this.value[i53].toString(); - if (i53 !== 0) result = `${result}.`; + for(let i = 0; i < this.value.length; i++){ + isHexOnly = this.value[i].isHexOnly; + let sidStr = this.value[i].toString(); + if (i !== 0) result = `${result}.`; if (isHexOnly) { sidStr = `{${sidStr}}`; result += sidStr; @@ -15804,7 +15454,7 @@ class LocalRelativeObjectIdentifierValueBlock extends ValueBlock { value: this.toString(), sidArray: [] }; - for(let i54 = 0; i54 < this.value.length; i54++)object.sidArray.push(this.value[i54].toJSON()); + for(let i = 0; i < this.value.length; i++)object.sidArray.push(this.value[i].toJSON()); return object; } } @@ -15890,7 +15540,7 @@ class LocalSimpleStringBlock extends BaseStringBlock { fromString(inputString) { const strLen = inputString.length; const view = this.valueBlock.valueHexView = new Uint8Array(strLen); - for(let i55 = 0; i55 < strLen; i55++)view[i55] = inputString.charCodeAt(i55); + for(let i = 0; i < strLen; i++)view[i] = inputString.charCodeAt(i); this.valueBlock.value = inputString; } } @@ -15952,23 +15602,23 @@ class LocalUniversalStringValueBlock extends LocalSimpleStringBlock { fromBuffer(inputBuffer) { const copyBuffer = ArrayBuffer.isView(inputBuffer) ? inputBuffer.slice().buffer : inputBuffer.slice(0); const valueView = new Uint8Array(copyBuffer); - for(let i56 = 0; i56 < valueView.length; i56 += 4){ - valueView[i56] = valueView[i56 + 3]; - valueView[i56 + 1] = valueView[i56 + 2]; - valueView[i56 + 2] = 0; - valueView[i56 + 3] = 0; + for(let i = 0; i < valueView.length; i += 4){ + valueView[i] = valueView[i + 3]; + valueView[i + 1] = valueView[i + 2]; + valueView[i + 2] = 0x00; + valueView[i + 3] = 0x00; } this.valueBlock.value = String.fromCharCode.apply(null, new Uint32Array(copyBuffer)); } fromString(inputString) { const strLength = inputString.length; const valueHexView = this.valueBlock.valueHexView = new Uint8Array(strLength * 4); - for(let i57 = 0; i57 < strLength; i57++){ - const codeBuf = utilToBase(inputString.charCodeAt(i57), 8); + for(let i = 0; i < strLength; i++){ + const codeBuf = utilToBase(inputString.charCodeAt(i), 8); const codeView = new Uint8Array(codeBuf); if (codeView.length > 4) continue; const dif = 4 - codeView.length; - for(let j = codeView.length - 1; j >= 0; j--)valueHexView[i57 * 4 + j + dif] = codeView[j]; + for(let j = codeView.length - 1; j >= 0; j--)valueHexView[i * 4 + j + dif] = codeView[j]; } this.valueBlock.value = inputString; } @@ -16117,7 +15767,7 @@ class UTCTime extends VisibleString { if (value) { this.fromString(value); this.valueBlock.valueHexView = new Uint8Array(value.length); - for(let i58 = 0; i58 < value.length; i58++)this.valueBlock.valueHexView[i58] = value.charCodeAt(i58); + for(let i = 0; i < value.length; i++)this.valueBlock.valueHexView[i] = value.charCodeAt(i); } if (valueDate) { this.fromDate(valueDate); @@ -16133,7 +15783,7 @@ class UTCTime extends VisibleString { const str = this.toString(); const buffer = new ArrayBuffer(str.length); const view = new Uint8Array(buffer); - for(let i59 = 0; i59 < str.length; i59++)view[i59] = str.charCodeAt(i59); + for(let i = 0; i < str.length; i++)view[i] = str.charCodeAt(i); return buffer; } fromDate(inputDate) { @@ -16154,9 +15804,9 @@ class UTCTime extends VisibleString { this.error = "Wrong input string for conversion"; return; } - const year1 = parseInt(parserArray[1], 10); - if (year1 >= 50) this.year = 1900 + year1; - else this.year = 2000 + year1; + const year = parseInt(parserArray[1], 10); + if (year >= 50) this.year = 1900 + year; + else this.year = 2000 + year; this.month = parseInt(parserArray[2], 10); this.day = parseInt(parserArray[3], 10); this.hour = parseInt(parserArray[4], 10); @@ -16635,8 +16285,8 @@ function compareSchema(root, inputData, inputSchema) { result: root }; } - for(let i60 = 0; i60 < schemaView.length; i60++){ - if (schemaView[i60] !== asn1View[1]) { + for(let i = 0; i < schemaView.length; i++){ + if (schemaView[i] !== asn1View[1]) { return { verified: false, result: root @@ -16670,7 +16320,7 @@ function compareSchema(root, inputData, inputSchema) { } if (inputData.valueBlock.value.length === 0 && inputSchema.valueBlock.value.length !== 0) { let _optional = true; - for(let i61 = 0; i61 < inputSchema.valueBlock.value.length; i61++)_optional = _optional && (inputSchema.valueBlock.value[i61].optional || false); + for(let i = 0; i < inputSchema.valueBlock.value.length; i++)_optional = _optional && (inputSchema.valueBlock.value[i].optional || false); if (_optional) { return { verified: true, @@ -16687,9 +16337,9 @@ function compareSchema(root, inputData, inputSchema) { result: root }; } - for(let i62 = 0; i62 < maxLength; i62++){ - if (i62 - admission >= inputData.valueBlock.value.length) { - if (inputSchema.valueBlock.value[i62].optional === false) { + for(let i = 0; i < maxLength; i++){ + if (i - admission >= inputData.valueBlock.value.length) { + if (inputSchema.valueBlock.value[i].optional === false) { const _result = { verified: false, result: root @@ -16706,7 +16356,7 @@ function compareSchema(root, inputData, inputSchema) { } } else { if (inputSchema.valueBlock.value[0] instanceof Repeated) { - result = compareSchema(root, inputData.valueBlock.value[i62], inputSchema.valueBlock.value[0].value); + result = compareSchema(root, inputData.valueBlock.value[i], inputSchema.valueBlock.value[0].value); if (result.verified === false) { if (inputSchema.valueBlock.value[0].optional) admission++; else { @@ -16722,12 +16372,12 @@ function compareSchema(root, inputData, inputSchema) { if (LOCAL in inputSchema.valueBlock.value[0] && inputSchema.valueBlock.value[0].local) arrayRoot = inputData; else arrayRoot = root; if (typeof arrayRoot[inputSchema.valueBlock.value[0].name] === "undefined") arrayRoot[inputSchema.valueBlock.value[0].name] = []; - arrayRoot[inputSchema.valueBlock.value[0].name].push(inputData.valueBlock.value[i62]); + arrayRoot[inputSchema.valueBlock.value[0].name].push(inputData.valueBlock.value[i]); } } else { - result = compareSchema(root, inputData.valueBlock.value[i62 - admission], inputSchema.valueBlock.value[i62]); + result = compareSchema(root, inputData.valueBlock.value[i - admission], inputSchema.valueBlock.value[i]); if (result.verified === false) { - if (inputSchema.valueBlock.value[i62].optional) admission++; + if (inputSchema.valueBlock.value[i].optional) admission++; else { if (inputSchema.name) { inputSchema.name = inputSchema.name.replace(/^\s+|\s+$/g, EMPTY_STRING); @@ -16795,8 +16445,8 @@ class ByteStream { if ("length" in parameters && parameters.length > 0) { this.length = parameters.length; if (parameters.stub) { - for(let i63 = 0; i63 < this._view.length; i63++){ - this._view[i63] = parameters.stub; + for(let i = 0; i < this._view.length; i++){ + this._view[i] = parameters.stub; } } } else { @@ -16840,7 +16490,7 @@ class ByteStream { fromString(string) { const stringLength = string.length; this.length = stringLength; - for(let i64 = 0; i64 < stringLength; i64++)this.view[i64] = string.charCodeAt(i64); + for(let i = 0; i < stringLength; i++)this.view[i] = string.charCodeAt(i); } toString(start = 0, length = this.view.length - start) { let result = ""; @@ -16850,7 +16500,7 @@ class ByteStream { if (length >= this.view.length || length < 0) { length = this.view.length - start; } - for(let i65 = start; i65 < start + length; i65++)result += String.fromCharCode(this.view[i65]); + for(let i = start; i < start + length; i++)result += String.fromCharCode(this.view[i]); return result; } fromHexString(hexString) { @@ -16858,35 +16508,35 @@ class ByteStream { this.buffer = new ArrayBuffer(stringLength >> 1); this.view = new Uint8Array(this.buffer); const hexMap = new Map(); - hexMap.set("0", 0); - hexMap.set("1", 1); - hexMap.set("2", 2); - hexMap.set("3", 3); - hexMap.set("4", 4); - hexMap.set("5", 5); - hexMap.set("6", 6); - hexMap.set("7", 7); - hexMap.set("8", 8); - hexMap.set("9", 9); - hexMap.set("A", 10); - hexMap.set("a", 10); - hexMap.set("B", 11); - hexMap.set("b", 11); - hexMap.set("C", 12); - hexMap.set("c", 12); - hexMap.set("D", 13); - hexMap.set("d", 13); - hexMap.set("E", 14); - hexMap.set("e", 14); - hexMap.set("F", 15); - hexMap.set("f", 15); + hexMap.set("0", 0x00); + hexMap.set("1", 0x01); + hexMap.set("2", 0x02); + hexMap.set("3", 0x03); + hexMap.set("4", 0x04); + hexMap.set("5", 0x05); + hexMap.set("6", 0x06); + hexMap.set("7", 0x07); + hexMap.set("8", 0x08); + hexMap.set("9", 0x09); + hexMap.set("A", 0x0A); + hexMap.set("a", 0x0A); + hexMap.set("B", 0x0B); + hexMap.set("b", 0x0B); + hexMap.set("C", 0x0C); + hexMap.set("c", 0x0C); + hexMap.set("D", 0x0D); + hexMap.set("d", 0x0D); + hexMap.set("E", 0x0E); + hexMap.set("e", 0x0E); + hexMap.set("F", 0x0F); + hexMap.set("f", 0x0F); let j = 0; - let temp = 0; - for(let i66 = 0; i66 < stringLength; i66++){ - if (!(i66 % 2)) { - temp = hexMap.get(hexString.charAt(i66)) << 4; + let temp = 0x00; + for(let i = 0; i < stringLength; i++){ + if (!(i % 2)) { + temp = hexMap.get(hexString.charAt(i)) << 4; } else { - temp |= hexMap.get(hexString.charAt(i66)); + temp |= hexMap.get(hexString.charAt(i)); this.view[j] = temp; j++; } @@ -16900,8 +16550,8 @@ class ByteStream { if (length >= this.view.length || length < 0) { length = this.view.length - start; } - for(let i67 = start; i67 < start + length; i67++){ - const str = this.view[i67].toString(16).toUpperCase(); + for(let i = start; i < start + length; i++){ + const str = this.view[i].toString(16).toUpperCase(); result = result + (str.length == 1 ? "0" : "") + str; } return result; @@ -16963,15 +16613,15 @@ class ByteStream { } isEqual(stream) { if (this.length != stream.length) return false; - for(let i68 = 0; i68 < stream.length; i68++){ - if (this.view[i68] != stream.view[i68]) return false; + for(let i = 0; i < stream.length; i++){ + if (this.view[i] != stream.view[i]) return false; } return true; } isEqualView(view) { if (view.length != this.view.length) return false; - for(let i69 = 0; i69 < view.length; i69++){ - if (this.view[i69] != view[i69]) return false; + for(let i = 0; i < view.length; i++){ + if (this.view[i] != view[i]) return false; } return true; } @@ -16982,10 +16632,10 @@ class ByteStream { return -1; } const patternArray = []; - for(let i70 = 0; i70 < patternLength; i70++)patternArray.push(pattern.view[i70]); - for(let i112 = 0; i112 <= length - patternLength; i112++){ + for(let i = 0; i < patternLength; i++)patternArray.push(pattern.view[i]); + for(let i = 0; i <= length - patternLength; i++){ let equal = true; - const equalStart = backward ? start - patternLength - i112 : start + i112; + const equalStart = backward ? start - patternLength - i : start + i; for(let j = 0; j < patternLength; j++){ if (this.view[j + equalStart] != patternArray[j]) { equal = false; @@ -16993,7 +16643,7 @@ class ByteStream { } } if (equal) { - return backward ? start - patternLength - i112 : start + patternLength + i112; + return backward ? start - patternLength - i : start + patternLength + i; } } return -1; @@ -17005,19 +16655,19 @@ class ByteStream { position: backward ? 0 : start + length, length: 0 }; - for(let i71 = 0; i71 < patterns.length; i71++){ - const position2 = this.findPattern(patterns[i71], start, length, backward); - if (position2 != -1) { + for(let i = 0; i < patterns.length; i++){ + const position = this.findPattern(patterns[i], start, length, backward); + if (position != -1) { let valid = false; - const patternLength = patterns[i71].length; + const patternLength = patterns[i].length; if (backward) { - if (position2 - patternLength >= result.position - result.length) valid = true; + if (position - patternLength >= result.position - result.length) valid = true; } else { - if (position2 - patternLength <= result.position - result.length) valid = true; + if (position - patternLength <= result.position - result.length) valid = true; } if (valid) { - result.position = position2; - result.id = i71; + result.position = position; + result.id = i; result.length = patternLength; } } @@ -17032,12 +16682,12 @@ class ByteStream { position: start }; do { - const position3 = patternFound.position; + const position = patternFound.position; patternFound = this.findFirstIn(patterns, patternFound.position, length); if (patternFound.id == -1) { break; } - length -= patternFound.position - position3; + length -= patternFound.position - position; result.push({ id: patternFound.id, position: patternFound.position @@ -17053,9 +16703,9 @@ class ByteStream { return -1; } const patternArray = Array.from(pattern.view); - for(let i72 = 0; i72 <= length - patternLength; i72++){ + for(let i = 0; i <= length - patternLength; i++){ let equal = true; - const equalStart = start + i72; + const equalStart = start + i; for(let j = 0; j < patternLength; j++){ if (this.view[j + equalStart] != patternArray[j]) { equal = false; @@ -17063,8 +16713,8 @@ class ByteStream { } } if (equal) { - result.push(start + patternLength + i72); - i72 += patternLength - 1; + result.push(start + patternLength + i); + i += patternLength - 1; } } return result; @@ -17135,9 +16785,9 @@ class ByteStream { value: new ByteStream() }; do { - const position4 = patternFound.right.position; + const position = patternFound.right.position; patternFound = this.findFirstNotIn(patterns, patternFound.right.position, length); - length -= patternFound.right.position - position4; + length -= patternFound.right.position - position; result.push({ left: { id: patternFound.left.id, @@ -17185,10 +16835,10 @@ class ByteStream { value: new ByteStream() }; do { - const position5 = patternFound.position; + const position = patternFound.position; patternFound = this.findFirstSequence(patterns, patternFound.position, length); if (patternFound.position != -1) { - length -= patternFound.position - position5; + length -= patternFound.position - position; result.push({ position: patternFound.position, value: patternFound.value @@ -17240,8 +16890,7 @@ class ByteStream { rightPatterns.splice(0, 1); currentPositionLeft = 0; } - result.sort((a2, b)=>a2.left - b.left - ); + result.sort((a, b)=>a.left - b.left); return result; } findPairedArrays(inputLeftPatterns, inputRightPatterns, start_, length_) { @@ -17282,13 +16931,12 @@ class ByteStream { rightPatterns.splice(0, 1); currentPositionLeft = 0; } - result.sort((a3, b)=>a3.left.position - b.left.position - ); + result.sort((a, b)=>a.left.position - b.left.position); return result; } replacePattern(searchPattern, replacePattern, start_, length_, findAllResult = null) { let result = []; - let i73; + let i; const output = { status: -1, searchPatternPositions: [], @@ -17305,20 +16953,19 @@ class ByteStream { } else { result = findAllResult; } - output.searchPatternPositions.push(...Array.from(result, (element)=>element.position - )); + output.searchPatternPositions.push(...Array.from(result, (element)=>element.position)); const patternDifference = searchPattern.length - replacePattern.length; const changedBuffer = new ArrayBuffer(this.view.length - result.length * patternDifference); const changedView = new Uint8Array(changedBuffer); changedView.set(new Uint8Array(this.buffer, 0, start)); - for(i73 = 0; i73 < result.length; i73++){ - const currentPosition = i73 == 0 ? start : result[i73 - 1].position; - changedView.set(new Uint8Array(this.buffer, currentPosition, result[i73].position - searchPattern.length - currentPosition), currentPosition - i73 * patternDifference); - changedView.set(replacePattern.view, result[i73].position - searchPattern.length - i73 * patternDifference); - output.replacePatternPositions.push(result[i73].position - searchPattern.length - i73 * patternDifference); - } - i73--; - changedView.set(new Uint8Array(this.buffer, result[i73].position, this.length - result[i73].position), result[i73].position - searchPattern.length + replacePattern.length - i73 * patternDifference); + for(i = 0; i < result.length; i++){ + const currentPosition = i == 0 ? start : result[i - 1].position; + changedView.set(new Uint8Array(this.buffer, currentPosition, result[i].position - searchPattern.length - currentPosition), currentPosition - i * patternDifference); + changedView.set(replacePattern.view, result[i].position - searchPattern.length - i * patternDifference); + output.replacePatternPositions.push(result[i].position - searchPattern.length - i * patternDifference); + } + i--; + changedView.set(new Uint8Array(this.buffer, result[i].position, this.length - result[i].position), result[i].position - searchPattern.length + replacePattern.length - i * patternDifference); this.buffer = changedBuffer; this.view = new Uint8Array(this.buffer); output.status = 1; @@ -17353,10 +17000,10 @@ class ByteStream { skipNotPatterns(patterns, start_, length_, backward_) { const { start , length , backward } = this.prepareFindParameters(start_, length_, backward_); let result = -1; - for(let i74 = 0; i74 < length; i74++){ + for(let i = 0; i < length; i++){ for(let k = 0; k < patterns.length; k++){ const patternLength = patterns[k].length; - const equalStart = backward ? start - i74 - patternLength : start + i74; + const equalStart = backward ? start - i - patternLength : start + i; let equal = true; for(let j = 0; j < patternLength; j++){ if (this.view[j + equalStart] != patterns[k].view[j]) { @@ -17365,7 +17012,7 @@ class ByteStream { } } if (equal) { - result = backward ? start - i74 : start + i74; + result = backward ? start - i : start + i; break; } } @@ -17774,8 +17421,8 @@ class SeqStream { if (this.backward) { const view = this._stream.view.subarray(this._length - size, this._length); result = new Uint8Array(size); - for(let i75 = 0; i75 < size; i75++){ - result[size - 1 - i75] = view[i75]; + for(let i = 0; i < size; i++){ + result[size - 1 - i] = view[i]; } } else { result = this._stream.view.subarray(this._start, this._start + size); @@ -17788,691 +17435,42 @@ class SeqStream { getUint16(changeLength = true) { const block = this.getBlock(2, changeLength); if (block.length < 2) return 0; - return block[0] << 8 | block[1]; - } - getInt16(changeLength = true) { - const num = this.getUint16(changeLength); - if (num & 32768) { - return -(32768 - (num ^ 32768)); - } - return num; - } - getUint24(changeLength = true) { - const block = this.getBlock(4, changeLength); - if (block.length < 3) return 0; - return block[0] << 16 | block[1] << 8 | block[2]; - } - getUint32(changeLength = true) { - const block = this.getBlock(4, changeLength); - if (block.length < 4) return 0; - return block[0] * 16777216 + (block[1] << 16) + (block[2] << 8) + block[3]; - } - getInt32(changeLength = true) { - const num = this.getUint32(changeLength); - if (num & 2147483648) { - return -(2147483648 - (num ^ 2147483648)); - } - return num; - } - beforeAppend(size) { - if (this._start + size > this._stream.length) { - if (size > this.appendBlock) { - this.appendBlock = size + SeqStream.APPEND_BLOCK; - } - this._stream.realloc(this._stream.length + this.appendBlock); - } - } -} -SeqStream.APPEND_BLOCK = 1000; -const bitsToStringArray = [ - "00000000", - "00000001", - "00000010", - "00000011", - "00000100", - "00000101", - "00000110", - "00000111", - "00001000", - "00001001", - "00001010", - "00001011", - "00001100", - "00001101", - "00001110", - "00001111", - "00010000", - "00010001", - "00010010", - "00010011", - "00010100", - "00010101", - "00010110", - "00010111", - "00011000", - "00011001", - "00011010", - "00011011", - "00011100", - "00011101", - "00011110", - "00011111", - "00100000", - "00100001", - "00100010", - "00100011", - "00100100", - "00100101", - "00100110", - "00100111", - "00101000", - "00101001", - "00101010", - "00101011", - "00101100", - "00101101", - "00101110", - "00101111", - "00110000", - "00110001", - "00110010", - "00110011", - "00110100", - "00110101", - "00110110", - "00110111", - "00111000", - "00111001", - "00111010", - "00111011", - "00111100", - "00111101", - "00111110", - "00111111", - "01000000", - "01000001", - "01000010", - "01000011", - "01000100", - "01000101", - "01000110", - "01000111", - "01001000", - "01001001", - "01001010", - "01001011", - "01001100", - "01001101", - "01001110", - "01001111", - "01010000", - "01010001", - "01010010", - "01010011", - "01010100", - "01010101", - "01010110", - "01010111", - "01011000", - "01011001", - "01011010", - "01011011", - "01011100", - "01011101", - "01011110", - "01011111", - "01100000", - "01100001", - "01100010", - "01100011", - "01100100", - "01100101", - "01100110", - "01100111", - "01101000", - "01101001", - "01101010", - "01101011", - "01101100", - "01101101", - "01101110", - "01101111", - "01110000", - "01110001", - "01110010", - "01110011", - "01110100", - "01110101", - "01110110", - "01110111", - "01111000", - "01111001", - "01111010", - "01111011", - "01111100", - "01111101", - "01111110", - "01111111", - "10000000", - "10000001", - "10000010", - "10000011", - "10000100", - "10000101", - "10000110", - "10000111", - "10001000", - "10001001", - "10001010", - "10001011", - "10001100", - "10001101", - "10001110", - "10001111", - "10010000", - "10010001", - "10010010", - "10010011", - "10010100", - "10010101", - "10010110", - "10010111", - "10011000", - "10011001", - "10011010", - "10011011", - "10011100", - "10011101", - "10011110", - "10011111", - "10100000", - "10100001", - "10100010", - "10100011", - "10100100", - "10100101", - "10100110", - "10100111", - "10101000", - "10101001", - "10101010", - "10101011", - "10101100", - "10101101", - "10101110", - "10101111", - "10110000", - "10110001", - "10110010", - "10110011", - "10110100", - "10110101", - "10110110", - "10110111", - "10111000", - "10111001", - "10111010", - "10111011", - "10111100", - "10111101", - "10111110", - "10111111", - "11000000", - "11000001", - "11000010", - "11000011", - "11000100", - "11000101", - "11000110", - "11000111", - "11001000", - "11001001", - "11001010", - "11001011", - "11001100", - "11001101", - "11001110", - "11001111", - "11010000", - "11010001", - "11010010", - "11010011", - "11010100", - "11010101", - "11010110", - "11010111", - "11011000", - "11011001", - "11011010", - "11011011", - "11011100", - "11011101", - "11011110", - "11011111", - "11100000", - "11100001", - "11100010", - "11100011", - "11100100", - "11100101", - "11100110", - "11100111", - "11101000", - "11101001", - "11101010", - "11101011", - "11101100", - "11101101", - "11101110", - "11101111", - "11110000", - "11110001", - "11110010", - "11110011", - "11110100", - "11110101", - "11110110", - "11110111", - "11111000", - "11111001", - "11111010", - "11111011", - "11111100", - "11111101", - "11111110", - "11111111" -]; -class BitStream { - constructor(parameters){ - this.buffer = new ArrayBuffer(0); - this.view = new Uint8Array(this.buffer); - this.bitsCount = 0; - if (parameters) { - if ("byteStream" in parameters) { - this.fromByteStream(parameters.byteStream); - } - if ("view" in parameters) { - this.fromUint8Array(parameters.view); - } - if ("buffer" in parameters) { - this.fromArrayBuffer(parameters.buffer); - } - if ("string" in parameters) { - this.fromString(parameters.string); - } - if ("uint32" in parameters) { - this.fromUint32(parameters.uint32); - } - if ("bitsCount" in parameters && parameters.bitsCount) { - this.bitsCount = parameters.bitsCount; - } - } - } - clear() { - this.buffer = new ArrayBuffer(0); - this.view = new Uint8Array(this.buffer); - this.bitsCount = 0; - } - fromByteStream(stream) { - this.fromUint8Array(stream.view); - } - fromArrayBuffer(array) { - this.buffer = array; - this.view = new Uint8Array(array); - this.bitsCount = this.view.length << 3; - } - fromUint8Array(array) { - this.fromArrayBuffer(new Uint8Array(array).buffer); - } - fromString(string) { - const stringLength = string.length; - this.buffer = new ArrayBuffer((stringLength >> 3) + (stringLength % 8 ? 1 : 0)); - this.view = new Uint8Array(this.buffer); - this.bitsCount = (stringLength >> 3) + 1 << 3; - let byteIndex = 0; - for(let i76 = 0; i76 < stringLength; i76++){ - if (string[i76] == "1") this.view[byteIndex] |= 1 << 7 - i76 % 8; - if (i76 && (i76 + 1) % 8 == 0) byteIndex++; - } - if (stringLength % 8) this.shiftRight(8 - stringLength % 8); - this.bitsCount = stringLength; - } - fromUint32(uint32) { - this.buffer = new ArrayBuffer(4); - this.view = new Uint8Array(this.buffer); - const value = new Uint32Array([ - uint32 - ]); - const view = new Uint8Array(value.buffer); - for(let i77 = 3; i77 >= 0; i77--)this.view[i77] = view[3 - i77]; - this.bitsCount = 32; - } - toString(start, length) { - if (start == null) { - start = 0; - } - if (start >= this.view.length || start < 0) { - start = 0; - } - if (length == null) { - length = this.view.length - start; - } - if (length >= this.view.length || length < 0) { - length = this.view.length - start; - } - const result = []; - for(let i78 = start; i78 < start + length; i78++){ - result.push(bitsToStringArray[this.view[i78]]); - } - return result.join("").substring((this.view.length << 3) - this.bitsCount); - } - shiftRight(shift, needShrink = true) { - if (this.view.length == 0) { - return; - } - if (shift < 0 || shift > 8) { - throw new Error("The \"shift\" parameter must be in range 0-8"); - } - if (shift > this.bitsCount) { - throw new Error("The \"shift\" parameter can not be bigger than \"this.bitsCount\""); - } - const shiftMask = 255 >> 8 - shift; - this.view[this.view.length - 1] >>= shift; - for(let i79 = this.view.length - 2; i79 >= 0; i79--){ - this.view[i79 + 1] |= (this.view[i79] & shiftMask) << 8 - shift; - this.view[i79] >>= shift; - } - this.bitsCount -= shift; - if (this.bitsCount == 0) { - this.clear(); - } - if (needShrink) { - this.shrink(); - } - } - shiftLeft(shift) { - if (this.view.length == 0) { - return; - } - if (shift < 0 || shift > 8) { - throw new Error("The \"shift\" parameter must be in range 0-8"); - } - if (shift > this.bitsCount) { - throw new Error("The \"shift\" parameter can not be bigger than \"this.bitsCount\""); - } - const bitsOffset = this.bitsCount & 7; - if (bitsOffset > shift) { - this.view[0] &= 255 >> bitsOffset + shift; - } else { - const view = this.view.slice(1); - view[0] &= 255 >> shift - bitsOffset; - this.buffer = view.buffer; - this.view = view; - } - this.bitsCount -= shift; - if (this.bitsCount == 0) { - this.clear(); - } - } - slice(start = 0, end = 0) { - let valueShift = 0; - if (this.bitsCount % 8) { - valueShift = 8 - this.bitsCount % 8; - } - start += valueShift; - end += valueShift; - const maxEnd = (this.view.length << 3) - 1; - if (start < 0 || start > maxEnd) { - return new BitStream(); - } - if (!end) { - end = maxEnd; - } - if (end < 0 || end > maxEnd) { - return new BitStream(); - } - if (end - start + 1 > this.bitsCount) { - return new BitStream(); - } - const startIndex = start >> 3; - const startOffset = start & 7; - const endIndex = end >> 3; - const endOffset = end & 7; - const bitsLength = endIndex - startIndex == 0 ? 1 : endIndex - startIndex + 1; - const result = new BitStream({ - buffer: this.buffer.slice(startIndex, startIndex + bitsLength), - bitsCount: bitsLength << 3 - }); - result.view[0] &= 255 >> startOffset; - result.view[bitsLength] &= 255 << 7 - endOffset; - if (7 - endOffset) { - result.shiftRight(7 - endOffset, false); - } - result.bitsCount = end - start + 1; - result.shrink(); - return result; - } - copy(start = 0, length = 0) { - const maxEnd = (this.view.length << 3) - 1; - if (start < 0 || start > maxEnd) { - return new BitStream(); - } - if (!length) { - length = (this.view.length << 3) - start - 1; - } - if (length > this.bitsCount) { - return new BitStream(); - } - return this.slice(start, start + length - 1); - } - shrink() { - const currentLength = (this.bitsCount >> 3) + (this.bitsCount % 8 ? 1 : 0); - if (currentLength < this.view.length) { - const view = this.view.slice(this.view.length - currentLength, this.view.length - currentLength + currentLength); - this.view = view; - this.buffer = view.buffer; - } - } - reverseBytes() { - for(let i80 = 0; i80 < this.view.length; i80++){ - this.view[i80] = (this.view[i80] * 2050 & 139536 | this.view[i80] * 32800 & 558144) * 65793 >> 16; - } - if (this.bitsCount % 8) { - const currentLength = (this.bitsCount >> 3) + (this.bitsCount % 8 ? 1 : 0); - this.view[this.view.length - currentLength] >>= 8 - (this.bitsCount & 7); - } - } - reverseValue() { - const initialValue = this.toString(); - const initialValueLength = initialValue.length; - const reversedValue = new Array(initialValueLength); - for(let i81 = 0; i81 < initialValueLength; i81++){ - reversedValue[initialValueLength - 1 - i81] = initialValue[i81]; - } - this.fromString(reversedValue.join("")); - } - getNumberValue() { - const byteLength = this.view.length - 1; - if (byteLength > 3) { - return -1; - } - if (byteLength == -1) { - return 0; - } - const value = new Uint32Array(1); - const view = new Uint8Array(value.buffer); - for(let i82 = byteLength; i82 >= 0; i82--){ - view[byteLength - i82] = this.view[i82]; - } - return value[0]; - } - findPattern(pattern, start, length, backward) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringPattern = new ByteStream({ - string: pattern.toString() - }); - return stringStream.findPattern(stringPattern, start, length, backward); - } - findFirstIn(patterns, start, length, backward) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringPatterns = new Array(patterns.length); - for(let i83 = 0; i83 < patterns.length; i83++){ - stringPatterns[i83] = new ByteStream({ - string: patterns[i83].toString() - }); - } - return stringStream.findFirstIn(stringPatterns, start, length, backward); - } - findAllIn(patterns, start, length) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringPatterns = new Array(patterns.length); - for(let i84 = 0; i84 < patterns.length; i84++){ - stringPatterns[i84] = new ByteStream({ - string: patterns[i84].toString() - }); - } - return stringStream.findAllIn(stringPatterns, start, length); - } - findAllPatternIn(pattern, start, length) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringPattern = new ByteStream({ - string: pattern.toString() - }); - return stringStream.findAllPatternIn(stringPattern, start, length); - } - findFirstNotIn(patterns, start, length, backward) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringPatterns = new Array(patterns.length); - for(let i85 = 0; i85 < patterns.length; i85++){ - stringPatterns[i85] = new ByteStream({ - string: patterns[i85].toString() - }); - } - return stringStream.findFirstNotIn(stringPatterns, start, length, backward); - } - findAllNotIn(patterns, start, length) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringPatterns = new Array(patterns.length); - for(let i86 = 0; i86 < patterns.length; i86++){ - stringPatterns[i86] = new ByteStream({ - string: patterns[i86].toString() - }); - } - return stringStream.findAllNotIn(stringPatterns, start, length); - } - findFirstSequence(patterns, start, length, backward) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringPatterns = new Array(patterns.length); - for(let i87 = 0; i87 < patterns.length; i87++){ - stringPatterns[i87] = new ByteStream({ - string: patterns[i87].toString() - }); - } - return stringStream.findFirstSequence(stringPatterns, start, length, backward); - } - findAllSequences(patterns, start, length) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringPatterns = new Array(patterns.length); - for(let i88 = 0; i88 < patterns.length; i88++){ - stringPatterns[i88] = new ByteStream({ - string: patterns[i88].toString() - }); - } - return stringStream.findAllSequences(stringPatterns, start, length); - } - findPairedPatterns(leftPattern, rightPattern, start, length) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringLeftPattern = new ByteStream({ - string: leftPattern.toString() - }); - const stringRightPattern = new ByteStream({ - string: rightPattern.toString() - }); - return stringStream.findPairedPatterns(stringLeftPattern, stringRightPattern, start, length); - } - findPairedArrays(inputLeftPatterns, inputRightPatterns, start, length) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringLeftPatterns = new Array(inputLeftPatterns.length); - for(let i89 = 0; i89 < inputLeftPatterns.length; i89++){ - stringLeftPatterns[i89] = new ByteStream({ - string: inputLeftPatterns[i89].toString() - }); - } - const stringRightPatterns = new Array(inputRightPatterns.length); - for(let i113 = 0; i113 < inputRightPatterns.length; i113++){ - stringRightPatterns[i113] = new ByteStream({ - string: inputRightPatterns[i113].toString() - }); - } - return stringStream.findPairedArrays(stringLeftPatterns, stringRightPatterns, start, length); + return block[0] << 8 | block[1]; } - replacePattern(searchPattern, replacePattern, start, length) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringSearchPattern = new ByteStream({ - string: searchPattern.toString() - }); - const stringReplacePattern = new ByteStream({ - string: replacePattern.toString() - }); - if (stringStream.replacePattern(stringSearchPattern, stringReplacePattern, start, length)) { - this.fromString(stringStream.toString()); - return true; + getInt16(changeLength = true) { + const num = this.getUint16(changeLength); + if (num & 0x8000) { + return -(0x8000 - (num ^ 0x8000)); } - return false; + return num; } - skipPatterns(patterns, start, length, backward) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringPatterns = new Array(patterns.length); - for(let i90 = 0; i90 < patterns.length; i90++){ - stringPatterns[i90] = new ByteStream({ - string: patterns[i90].toString() - }); - } - return stringStream.skipPatterns(stringPatterns, start, length, backward); + getUint24(changeLength = true) { + const block = this.getBlock(4, changeLength); + if (block.length < 3) return 0; + return block[0] << 16 | block[1] << 8 | block[2]; } - skipNotPatterns(patterns, start, length, backward) { - const stringStream = new ByteStream({ - string: this.toString() - }); - const stringPatterns = new Array(patterns.length); - for(let i91 = 0; i91 < patterns.length; i91++){ - stringPatterns[i91] = new ByteStream({ - string: patterns[i91].toString() - }); + getUint32(changeLength = true) { + const block = this.getBlock(4, changeLength); + if (block.length < 4) return 0; + return block[0] * 16777216 + (block[1] << 16) + (block[2] << 8) + block[3]; + } + getInt32(changeLength = true) { + const num = this.getUint32(changeLength); + if (num & 0x80000000) { + return -(0x80000000 - (num ^ 0x80000000)); } - return stringStream.skipNotPatterns(stringPatterns, start, length, backward); + return num; } - append(stream) { - this.fromString([ - this.toString(), - stream.toString() - ].join("")); + beforeAppend(size) { + if (this._start + size > this._stream.length) { + if (size > this.appendBlock) { + this.appendBlock = size + SeqStream.APPEND_BLOCK; + } + this._stream.realloc(this._stream.length + this.appendBlock); + } } } +SeqStream.APPEND_BLOCK = 1000; const EMPTY_BUFFER1 = new ArrayBuffer(0); const EMPTY_STRING1 = ""; class ArgumentError extends TypeError { @@ -18496,38 +17494,37 @@ class ArgumentError extends TypeError { } return false; } - static assert(value, name, ...types4) { - for (const type of types4){ + static assert(value, name, ...types) { + for (const type of types){ if (this.isType(value, type)) { return; } } - const typeNames = types4.map((o2)=>o2 instanceof Function && "name" in o2 ? o2.name : `${o2}` - ); + const typeNames = types.map((o)=>o instanceof Function && "name" in o ? o.name : `${o}`); throw new ArgumentError(`Parameter '${name}' is not of type ${typeNames.length > 1 ? `(${typeNames.join(" or ")})` : typeNames[0]}`); } } ArgumentError.NAME = "ArgumentError"; class ParameterError extends TypeError { - constructor(field, target1 = null, message4){ + constructor(field, target = null, message){ super(); this.name = ParameterError.NAME; this.field = field; - if (target1) { - this.target = target1; + if (target) { + this.target = target; } - if (message4) { - this.message = message4; + if (message) { + this.message = message; } else { - this.message = `Absent mandatory parameter '${field}' ${target1 ? ` in '${target1}'` : EMPTY_STRING1}`; + this.message = `Absent mandatory parameter '${field}' ${target ? ` in '${target}'` : EMPTY_STRING1}`; } } static assert(...args) { - let target2 = null; + let target = null; let params; let fields; if (typeof args[0] === "string") { - target2 = args[0]; + target = args[0]; params = args[1]; fields = args.slice(2); } else { @@ -18538,30 +17535,30 @@ class ParameterError extends TypeError { for (const field of fields){ const value = params[field]; if (value === undefined || value === null) { - throw new ParameterError(field, target2); + throw new ParameterError(field, target); } } } - static assertEmpty(value, name, target3) { + static assertEmpty(value, name, target) { if (value === undefined || value === null) { - throw new ParameterError(name, target3); + throw new ParameterError(name, target); } } } ParameterError.NAME = "ParameterError"; class AsnError extends Error { - static assertSchema(asn1, target4) { + static assertSchema(asn1, target) { if (!asn1.verified) { - throw new Error(`Object's schema was not verified against input data for ${target4}`); + throw new Error(`Object's schema was not verified against input data for ${target}`); } } - static assert(asn, target5) { + static assert(asn, target) { if (asn.offset === -1) { - throw new AsnError(`Error during parsing of ASN.1 data. Data is not correct for '${target5}'.`); + throw new AsnError(`Error during parsing of ASN.1 data. Data is not correct for '${target}'.`); } } - constructor(message5){ - super(message5); + constructor(message){ + super(message); this.name = "AsnError"; } } @@ -18604,15 +17601,15 @@ function stringPrep(inputString) { let isSpace = false; let cutResult = EMPTY_STRING1; const result = inputString.trim(); - for(let i92 = 0; i92 < result.length; i92++){ - if (result.charCodeAt(i92) === 32) { + for(let i = 0; i < result.length; i++){ + if (result.charCodeAt(i) === 32) { if (isSpace === false) isSpace = true; } else { if (isSpace) { cutResult += " "; isSpace = false; } - cutResult += result[i92]; + cutResult += result[i]; } } return cutResult.toLowerCase(); @@ -18804,8 +17801,7 @@ class RelativeDistinguishedNames extends PkiObject { if (TYPE_AND_VALUES in asn1.result) { this.typesAndValues = Array.from(asn1.result.typesAndValues, (element)=>new AttributeTypeAndValue({ schema: element - }) - ); + })); } this.valueBeforeDecode = asn1.result.RDN.valueBeforeDecodeView.slice().buffer; } @@ -18814,8 +17810,7 @@ class RelativeDistinguishedNames extends PkiObject { return new Sequence({ value: [ new Set1({ - value: Array.from(this.typesAndValues, (o3)=>o3.toSchema() - ) + value: Array.from(this.typesAndValues, (o)=>o.toSchema()) }) ] }); @@ -18829,8 +17824,7 @@ class RelativeDistinguishedNames extends PkiObject { } toJSON() { return { - typesAndValues: Array.from(this.typesAndValues, (o4)=>o4.toJSON() - ) + typesAndValues: Array.from(this.typesAndValues, (o)=>o.toJSON()) }; } isEqual(compareTo) { @@ -19701,20 +18695,17 @@ class AltName extends PkiObject { if (ALT_NAMES in asn1.result) { this.altNames = Array.from(asn1.result.altNames, (element)=>new GeneralName({ schema: element - }) - ); + })); } } toSchema() { return new Sequence({ - value: Array.from(this.altNames, (o5)=>o5.toSchema() - ) + value: Array.from(this.altNames, (o)=>o.toSchema()) }); } toJSON() { return { - altNames: Array.from(this.altNames, (o6)=>o6.toJSON() - ) + altNames: Array.from(this.altNames, (o)=>o.toJSON()) }; } } @@ -19801,8 +18792,7 @@ class Attribute extends PkiObject { toJSON() { return { type: this.type, - values: Array.from(this.values, (o7)=>o7.toJSON() - ) + values: Array.from(this.values, (o)=>o.toJSON()) }; } } @@ -19922,19 +18912,16 @@ class GeneralNames extends PkiObject { AsnError.assertSchema(asn1, this.className); this.names = Array.from(asn1.result.generalNames, (element)=>new GeneralName({ schema: element - }) - ); + })); } toSchema() { return new Sequence({ - value: Array.from(this.names, (o8)=>o8.toSchema() - ) + value: Array.from(this.names, (o)=>o.toSchema()) }); } toJSON() { return { - names: Array.from(this.names, (o9)=>o9.toJSON() - ) + names: Array.from(this.names, (o)=>o.toJSON()) }; } } @@ -20069,10 +19056,9 @@ class AuthorityKeyIdentifier extends PkiObject { if (KEY_IDENTIFIER$1 in asn1.result) this.keyIdentifier = new OctetString({ valueHex: asn1.result.keyIdentifier.valueBlock.valueHex }); - if (AUTHORITY_CERT_ISSUER in asn1.result) this.authorityCertIssuer = Array.from(asn1.result.authorityCertIssuer, (o10)=>new GeneralName({ - schema: o10 - }) - ); + if (AUTHORITY_CERT_ISSUER in asn1.result) this.authorityCertIssuer = Array.from(asn1.result.authorityCertIssuer, (o)=>new GeneralName({ + schema: o + })); if (AUTHORITY_CERT_SERIAL_NUMBER in asn1.result) this.authorityCertSerialNumber = new Integer({ valueHex: asn1.result.authorityCertSerialNumber.valueBlock.valueHex }); @@ -20094,8 +19080,7 @@ class AuthorityKeyIdentifier extends PkiObject { tagClass: 3, tagNumber: 1 }, - value: Array.from(this.authorityCertIssuer, (o11)=>o11.toSchema() - ) + value: Array.from(this.authorityCertIssuer, (o)=>o.toSchema()) })); } if (this.authorityCertSerialNumber) { @@ -20117,8 +19102,7 @@ class AuthorityKeyIdentifier extends PkiObject { object.keyIdentifier = this.keyIdentifier.toJSON(); } if (this.authorityCertIssuer) { - object.authorityCertIssuer = Array.from(this.authorityCertIssuer, (o12)=>o12.toJSON() - ); + object.authorityCertIssuer = Array.from(this.authorityCertIssuer, (o)=>o.toJSON()); } if (this.authorityCertSerialNumber) { object.authorityCertSerialNumber = this.authorityCertSerialNumber.toJSON(); @@ -20439,8 +19423,7 @@ class PolicyInformation extends PkiObject { if (POLICY_QUALIFIERS in asn1.result) { this.policyQualifiers = Array.from(asn1.result.policyQualifiers, (element)=>new PolicyQualifierInfo({ schema: element - }) - ); + })); } } toSchema() { @@ -20450,8 +19433,7 @@ class PolicyInformation extends PkiObject { })); if (this.policyQualifiers) { outputArray.push(new Sequence({ - value: Array.from(this.policyQualifiers, (o13)=>o13.toSchema() - ) + value: Array.from(this.policyQualifiers, (o)=>o.toSchema()) })); } return new Sequence({ @@ -20462,8 +19444,7 @@ class PolicyInformation extends PkiObject { const res = { policyIdentifier: this.policyIdentifier }; - if (this.policyQualifiers) res.policyQualifiers = Array.from(this.policyQualifiers, (o14)=>o14.toJSON() - ); + if (this.policyQualifiers) res.policyQualifiers = Array.from(this.policyQualifiers, (o)=>o.toJSON()); return res; } } @@ -20510,19 +19491,16 @@ class CertificatePolicies extends PkiObject { AsnError.assertSchema(asn1, this.className); this.certificatePolicies = Array.from(asn1.result.certificatePolicies, (element)=>new PolicyInformation({ schema: element - }) - ); + })); } toSchema() { return new Sequence({ - value: Array.from(this.certificatePolicies, (o15)=>o15.toSchema() - ) + value: Array.from(this.certificatePolicies, (o)=>o.toSchema()) }); } toJSON() { return { - certificatePolicies: Array.from(this.certificatePolicies, (o16)=>o16.toJSON() - ) + certificatePolicies: Array.from(this.certificatePolicies, (o)=>o.toJSON()) }; } } @@ -20747,8 +19725,7 @@ class DistributionPoint extends PkiObject { if (asn1.result.distributionPoint.idBlock.tagNumber === 0) { this.distributionPoint = Array.from(asn1.result.distributionPointNames, (element)=>new GeneralName({ schema: element - }) - ); + })); } if (asn1.result.distributionPoint.idBlock.tagNumber === 1) { this.distributionPoint = new RelativeDistinguishedNames({ @@ -20766,8 +19743,7 @@ class DistributionPoint extends PkiObject { if (CRL_ISSUER in asn1.result) { this.cRLIssuer = Array.from(asn1.result.cRLIssuerNames, (element)=>new GeneralName({ schema: element - }) - ); + })); } } toSchema() { @@ -20780,8 +19756,7 @@ class DistributionPoint extends PkiObject { tagClass: 3, tagNumber: 0 }, - value: Array.from(this.distributionPoint, (o17)=>o17.toSchema() - ) + value: Array.from(this.distributionPoint, (o)=>o.toSchema()) }); } else { internalValue = new Constructed({ @@ -20819,8 +19794,7 @@ class DistributionPoint extends PkiObject { tagClass: 3, tagNumber: 2 }, - value: Array.from(this.cRLIssuer, (o18)=>o18.toSchema() - ) + value: Array.from(this.cRLIssuer, (o)=>o.toSchema()) })); } return new Sequence({ @@ -20831,8 +19805,7 @@ class DistributionPoint extends PkiObject { const object = {}; if (this.distributionPoint) { if (this.distributionPoint instanceof Array) { - object.distributionPoint = Array.from(this.distributionPoint, (o19)=>o19.toJSON() - ); + object.distributionPoint = Array.from(this.distributionPoint, (o)=>o.toJSON()); } else { object.distributionPoint = this.distributionPoint.toJSON(); } @@ -20841,8 +19814,7 @@ class DistributionPoint extends PkiObject { object.reasons = this.reasons.toJSON(); } if (this.cRLIssuer) { - object.cRLIssuer = Array.from(this.cRLIssuer, (o20)=>o20.toJSON() - ); + object.cRLIssuer = Array.from(this.cRLIssuer, (o)=>o.toJSON()); } return object; } @@ -20890,19 +19862,16 @@ class CRLDistributionPoints extends PkiObject { AsnError.assertSchema(asn1, this.className); this.distributionPoints = Array.from(asn1.result.distributionPoints, (element)=>new DistributionPoint({ schema: element - }) - ); + })); } toSchema() { return new Sequence({ - value: Array.from(this.distributionPoints, (o21)=>o21.toSchema() - ) + value: Array.from(this.distributionPoints, (o)=>o.toSchema()) }); } toJSON() { return { - distributionPoints: Array.from(this.distributionPoints, (o22)=>o22.toJSON() - ) + distributionPoints: Array.from(this.distributionPoints, (o)=>o.toJSON()) }; } } @@ -20947,15 +19916,13 @@ class ExtKeyUsage extends PkiObject { } })); AsnError.assertSchema(asn1, this.className); - this.keyPurposes = Array.from(asn1.result.keyPurposes, (element)=>element.valueBlock.toString() - ); + this.keyPurposes = Array.from(asn1.result.keyPurposes, (element)=>element.valueBlock.toString()); } toSchema() { return new Sequence({ value: Array.from(this.keyPurposes, (element)=>new ObjectIdentifier({ value: element - }) - ) + })) }); } toJSON() { @@ -21006,19 +19973,16 @@ class InfoAccess extends PkiObject { AsnError.assertSchema(asn1, this.className); this.accessDescriptions = Array.from(asn1.result.accessDescriptions, (element)=>new AccessDescription({ schema: element - }) - ); + })); } toSchema() { return new Sequence({ - value: Array.from(this.accessDescriptions, (o23)=>o23.toSchema() - ) + value: Array.from(this.accessDescriptions, (o)=>o.toSchema()) }); } toJSON() { return { - accessDescriptions: Array.from(this.accessDescriptions, (o24)=>o24.toJSON() - ) + accessDescriptions: Array.from(this.accessDescriptions, (o)=>o.toJSON()) }; } } @@ -21175,8 +20139,7 @@ class IssuingDistributionPoint extends PkiObject { case asn1.result.distributionPoint.idBlock.tagNumber === 0: this.distributionPoint = Array.from(asn1.result.distributionPointNames, (element)=>new GeneralName({ schema: element - }) - ); + })); break; case asn1.result.distributionPoint.idBlock.tagNumber === 1: { @@ -21193,11 +20156,11 @@ class IssuingDistributionPoint extends PkiObject { } if (ONLY_CONTAINS_USER_CERTS in asn1.result) { const view = new Uint8Array(asn1.result.onlyContainsUserCerts.valueBlock.valueHex); - this.onlyContainsUserCerts = view[0] !== 0; + this.onlyContainsUserCerts = view[0] !== 0x00; } if (ONLY_CONTAINS_CA_CERTS in asn1.result) { const view = new Uint8Array(asn1.result.onlyContainsCACerts.valueBlock.valueHex); - this.onlyContainsCACerts = view[0] !== 0; + this.onlyContainsCACerts = view[0] !== 0x00; } if (ONLY_SOME_REASON in asn1.result) { const view = new Uint8Array(asn1.result.onlySomeReasons.valueBlock.valueHex); @@ -21205,11 +20168,11 @@ class IssuingDistributionPoint extends PkiObject { } if (INDIRECT_CRL in asn1.result) { const view = new Uint8Array(asn1.result.indirectCRL.valueBlock.valueHex); - this.indirectCRL = view[0] !== 0; + this.indirectCRL = view[0] !== 0x00; } if (ONLY_CONTAINS_ATTRIBUTE_CERTS in asn1.result) { const view = new Uint8Array(asn1.result.onlyContainsAttributeCerts.valueBlock.valueHex); - this.onlyContainsAttributeCerts = view[0] !== 0; + this.onlyContainsAttributeCerts = view[0] !== 0x00; } } toSchema() { @@ -21222,8 +20185,7 @@ class IssuingDistributionPoint extends PkiObject { tagClass: 3, tagNumber: 0 }, - value: Array.from(this.distributionPoint, (o25)=>o25.toSchema() - ) + value: Array.from(this.distributionPoint, (o)=>o.toSchema()) }); } else { value = this.distributionPoint.toSchema(); @@ -21247,7 +20209,7 @@ class IssuingDistributionPoint extends PkiObject { tagNumber: 1 }, valueHex: new Uint8Array([ - 255 + 0xFF ]).buffer })); } @@ -21258,7 +20220,7 @@ class IssuingDistributionPoint extends PkiObject { tagNumber: 2 }, valueHex: new Uint8Array([ - 255 + 0xFF ]).buffer })); } @@ -21281,7 +20243,7 @@ class IssuingDistributionPoint extends PkiObject { tagNumber: 4 }, valueHex: new Uint8Array([ - 255 + 0xFF ]).buffer })); } @@ -21292,7 +20254,7 @@ class IssuingDistributionPoint extends PkiObject { tagNumber: 5 }, valueHex: new Uint8Array([ - 255 + 0xFF ]).buffer })); } @@ -21304,8 +20266,7 @@ class IssuingDistributionPoint extends PkiObject { const obj = {}; if (this.distributionPoint) { if (this.distributionPoint instanceof Array) { - obj.distributionPoint = Array.from(this.distributionPoint, (o26)=>o26.toJSON() - ); + obj.distributionPoint = Array.from(this.distributionPoint, (o)=>o.toJSON()); } else { obj.distributionPoint = this.distributionPoint.toJSON(); } @@ -21562,12 +20523,10 @@ class NameConstraints extends PkiObject { AsnError.assertSchema(asn1, this.className); if (PERMITTED_SUBTREES in asn1.result) this.permittedSubtrees = Array.from(asn1.result.permittedSubtrees, (element)=>new GeneralSubtree({ schema: element - }) - ); + })); if (EXCLUDED_SUBTREES in asn1.result) this.excludedSubtrees = Array.from(asn1.result.excludedSubtrees, (element)=>new GeneralSubtree({ schema: element - }) - ); + })); } toSchema() { const outputArray = []; @@ -21577,8 +20536,7 @@ class NameConstraints extends PkiObject { tagClass: 3, tagNumber: 0 }, - value: Array.from(this.permittedSubtrees, (o27)=>o27.toSchema() - ) + value: Array.from(this.permittedSubtrees, (o)=>o.toSchema()) })); } if (this.excludedSubtrees) { @@ -21587,8 +20545,7 @@ class NameConstraints extends PkiObject { tagClass: 3, tagNumber: 1 }, - value: Array.from(this.excludedSubtrees, (o28)=>o28.toSchema() - ) + value: Array.from(this.excludedSubtrees, (o)=>o.toSchema()) })); } return new Sequence({ @@ -21598,12 +20555,10 @@ class NameConstraints extends PkiObject { toJSON() { const object = {}; if (this.permittedSubtrees) { - object.permittedSubtrees = Array.from(this.permittedSubtrees, (o29)=>o29.toJSON() - ); + object.permittedSubtrees = Array.from(this.permittedSubtrees, (o)=>o.toJSON()); } if (this.excludedSubtrees) { - object.excludedSubtrees = Array.from(this.excludedSubtrees, (o30)=>o30.toJSON() - ); + object.excludedSubtrees = Array.from(this.excludedSubtrees, (o)=>o.toJSON()); } return object; } @@ -21837,19 +20792,16 @@ class PolicyMappings extends PkiObject { AsnError.assertSchema(asn1, this.className); this.mappings = Array.from(asn1.result.mappings, (element)=>new PolicyMapping({ schema: element - }) - ); + })); } toSchema() { return new Sequence({ - value: Array.from(this.mappings, (o31)=>o31.toSchema() - ) + value: Array.from(this.mappings, (o)=>o.toSchema()) }); } toJSON() { return { - mappings: Array.from(this.mappings, (o32)=>o32.toJSON() - ) + mappings: Array.from(this.mappings, (o)=>o.toJSON()) }; } } @@ -22105,19 +21057,16 @@ class QCStatements extends PkiObject { AsnError.assertSchema(asn1, this.className); this.values = Array.from(asn1.result.values, (element)=>new QCStatement({ schema: element - }) - ); + })); } toSchema() { return new Sequence({ - value: Array.from(this.values, (o33)=>o33.toSchema() - ) + value: Array.from(this.values, (o)=>o.toSchema()) }); } toJSON() { return { - values: Array.from(this.values, (o34)=>o34.toJSON() - ) + values: Array.from(this.values, (o)=>o.toJSON()) }; } } @@ -22188,7 +21137,7 @@ class ECPublicKey extends PkiObject { } fromSchema(schema1) { const view = BufferSourceConverter.toUint8Array(schema1); - if (view[0] !== 4) { + if (view[0] !== 0x04) { throw new Error("Object's schema was not verified against input data for ECPublicKey"); } const namedCurve = ECNamedCurves.find(this.namedCurve); @@ -22206,7 +21155,7 @@ class ECPublicKey extends PkiObject { toSchema() { return new RawData({ data: utilConcatBuf(new Uint8Array([ - 4 + 0x04 ]).buffer, this.x, this.y) }); } @@ -22483,21 +21432,21 @@ class PublicKeyInfo extends PkiObject { }); } } - async importKey(publicKey, crypto = getCrypto(true)) { + async importKey(publicKey, crypto1 = getCrypto(true)) { try { if (!publicKey) { throw new Error("Need to provide publicKey input parameter"); } - const exportedKey = await crypto.exportKey("spki", publicKey); + const exportedKey = await crypto1.exportKey("spki", publicKey); const asn1 = fromBER(exportedKey); try { this.fromSchema(asn1.result); } catch (exception) { throw new Error("Error during initializing object from schema"); } - } catch (e1) { - const message6 = e1 instanceof Error ? e1.message : `${e1}`; - throw new Error(`Error during exporting public key: ${message6}`); + } catch (e) { + const message = e instanceof Error ? e.message : `${e}`; + throw new Error(`Error during exporting public key: ${message}`); } } } @@ -22945,8 +21894,7 @@ class RSAPrivateKey extends PkiObject { this.coefficient = asn1.result.coefficient.convertFromDER(128); if (OTHER_PRIME_INFOS in asn1.result) this.otherPrimeInfos = Array.from(asn1.result.otherPrimeInfos, (element)=>new OtherPrimeInfo({ schema: element - }) - ); + })); } toSchema() { const outputArray = []; @@ -22963,8 +21911,7 @@ class RSAPrivateKey extends PkiObject { outputArray.push(this.coefficient.convertToDER()); if (this.otherPrimeInfos) { outputArray.push(new Sequence({ - value: Array.from(this.otherPrimeInfos, (o35)=>o35.toSchema() - ) + value: Array.from(this.otherPrimeInfos, (o)=>o.toSchema()) })); } return new Sequence({ @@ -22983,8 +21930,7 @@ class RSAPrivateKey extends PkiObject { qi: Convert.ToBase64Url(this.coefficient.valueBlock.valueHexView) }; if (this.otherPrimeInfos) { - jwk.oth = Array.from(this.otherPrimeInfos, (o36)=>o36.toJSON() - ); + jwk.oth = Array.from(this.otherPrimeInfos, (o)=>o.toJSON()); } return jwk; } @@ -23017,8 +21963,7 @@ class RSAPrivateKey extends PkiObject { if (json.oth) { this.otherPrimeInfos = Array.from(json.oth, (element)=>new OtherPrimeInfo({ json: element - }) - ); + })); } } } @@ -23119,8 +22064,7 @@ class PrivateKeyInfo extends PkiObject { this.privateKey = asn1.result.privateKey; if (ATTRIBUTES$5 in asn1.result) this.attributes = Array.from(asn1.result.attributes, (element)=>new Attribute({ schema: element - }) - ); + })); switch(this.privateKeyAlgorithm.algorithmId){ case "1.2.840.113549.1.1.1": { @@ -23160,8 +22104,7 @@ class PrivateKeyInfo extends PkiObject { tagClass: 3, tagNumber: 0 }, - value: Array.from(this.attributes, (o37)=>o37.toSchema() - ) + value: Array.from(this.attributes, (o)=>o.toSchema()) })); } return new Sequence({ @@ -23176,8 +22119,7 @@ class PrivateKeyInfo extends PkiObject { privateKey: this.privateKey.toJSON() }; if (this.attributes) { - object.attributes = Array.from(this.attributes, (o38)=>o38.toJSON() - ); + object.attributes = Array.from(this.attributes, (o)=>o.toJSON()); } return object; } @@ -23243,7 +22185,7 @@ class EncryptedContentInfo extends PkiObject { if (ENCRYPTED_CONTENT in parameters && parameters.encryptedContent) { this.encryptedContent = parameters.encryptedContent; if (this.encryptedContent.idBlock.tagClass === 1 && this.encryptedContent.idBlock.tagNumber === 4) { - if (this.encryptedContent.idBlock.isConstructed === false) { + if (this.encryptedContent.idBlock.isConstructed === false && !parameters.disableSplit) { const constrString = new OctetString({ idBlock: { isConstructed: true @@ -23257,7 +22199,7 @@ class EncryptedContentInfo extends PkiObject { const pieceView = new Uint8Array(valueHex, offset, offset + 1024 > valueHex.byteLength ? valueHex.byteLength - offset : 1024); const _array = new ArrayBuffer(pieceView.length); const _view = new Uint8Array(_array); - for(let i93 = 0; i93 < _view.length; i93++)_view[i93] = pieceView[i93]; + for(let i = 0; i < _view.length; i++)_view[i] = pieceView[i]; constrString.valueBlock.value.push(new OctetString({ valueHex: _array })); @@ -23844,24 +22786,24 @@ class AbstractCryptoEngine { } } async function makePKCS12B2Key(cryptoEngine, hashAlgorithm, keyLength, password, salt, iterationCount) { - let u1; + let u; let v; const result = []; switch(hashAlgorithm.toUpperCase()){ case "SHA-1": - u1 = 20; + u = 20; v = 64; break; case "SHA-256": - u1 = 32; + u = 32; v = 64; break; case "SHA-384": - u1 = 48; + u = 48; v = 128; break; case "SHA-512": - u1 = 64; + u = 64; v = 128; break; default: @@ -23870,36 +22812,36 @@ async function makePKCS12B2Key(cryptoEngine, hashAlgorithm, keyLength, password, const passwordViewInitial = new Uint8Array(password); const passwordTransformed = new ArrayBuffer(password.byteLength * 2 + 2); const passwordTransformedView = new Uint8Array(passwordTransformed); - for(let i94 = 0; i94 < passwordViewInitial.length; i94++){ - passwordTransformedView[i94 * 2] = 0; - passwordTransformedView[i94 * 2 + 1] = passwordViewInitial[i94]; + for(let i = 0; i < passwordViewInitial.length; i++){ + passwordTransformedView[i * 2] = 0x00; + passwordTransformedView[i * 2 + 1] = passwordViewInitial[i]; } - passwordTransformedView[passwordTransformedView.length - 2] = 0; - passwordTransformedView[passwordTransformedView.length - 1] = 0; + passwordTransformedView[passwordTransformedView.length - 2] = 0x00; + passwordTransformedView[passwordTransformedView.length - 1] = 0x00; password = passwordTransformed.slice(0); const D = new ArrayBuffer(v); const dView = new Uint8Array(D); - for(let i114 = 0; i114 < D.byteLength; i114++)dView[i114] = 3; + for(let i = 0; i < D.byteLength; i++)dView[i] = 3; const saltLength = salt.byteLength; const sLen = v * Math.ceil(saltLength / v); const S = new ArrayBuffer(sLen); const sView = new Uint8Array(S); const saltView = new Uint8Array(salt); - for(let i2 = 0; i2 < sLen; i2++)sView[i2] = saltView[i2 % saltLength]; + for(let i = 0; i < sLen; i++)sView[i] = saltView[i % saltLength]; const passwordLength = password.byteLength; const pLen = v * Math.ceil(passwordLength / v); const P = new ArrayBuffer(pLen); const pView = new Uint8Array(P); const passwordView = new Uint8Array(password); - for(let i3 = 0; i3 < pLen; i3++)pView[i3] = passwordView[i3 % passwordLength]; + for(let i = 0; i < pLen; i++)pView[i] = passwordView[i % passwordLength]; const sPlusPLength = S.byteLength + P.byteLength; let I = new ArrayBuffer(sPlusPLength); let iView = new Uint8Array(I); iView.set(sView); iView.set(pView, sView.length); - const c = Math.ceil((keyLength >> 3) / u1); + const c = Math.ceil((keyLength >> 3) / u); let internalSequence = Promise.resolve(I); - for(let i4 = 0; i4 <= c; i4++){ + for(let i = 0; i <= c; i++){ internalSequence = internalSequence.then((_I)=>{ const dAndI = new ArrayBuffer(D.byteLength + _I.byteLength); const dAndIView = new Uint8Array(dAndI); @@ -23907,10 +22849,9 @@ async function makePKCS12B2Key(cryptoEngine, hashAlgorithm, keyLength, password, dAndIView.set(iView, dView.length); return dAndI; }); - for(let j2 = 0; j2 < iterationCount; j2++)internalSequence = internalSequence.then((roundBuffer)=>cryptoEngine.digest({ + for(let j = 0; j < iterationCount; j++)internalSequence = internalSequence.then((roundBuffer)=>cryptoEngine.digest({ name: hashAlgorithm - }, new Uint8Array(roundBuffer)) - ); + }, new Uint8Array(roundBuffer))); internalSequence = internalSequence.then((roundBuffer)=>{ const B = new ArrayBuffer(v); const bView = new Uint8Array(B); @@ -23919,15 +22860,15 @@ async function makePKCS12B2Key(cryptoEngine, hashAlgorithm, keyLength, password, const iRound = []; let sliceStart = 0; let sliceLength = v; - for(let j1 = 0; j1 < k; j1++){ + for(let j = 0; j < k; j++){ const chunk = Array.from(new Uint8Array(I.slice(sliceStart, sliceStart + sliceLength))); sliceStart += v; if (sliceStart + v > I.byteLength) sliceLength = I.byteLength - sliceStart; - let x = 511; + let x = 0x1ff; for(let l = B.byteLength - 1; l >= 0; l--){ x >>= 8; x += bView[l] + chunk[l]; - chunk[l] = x & 255; + chunk[l] = x & 0xff; } iRound.push(...chunk); } @@ -23960,7 +22901,7 @@ function prepareAlgorithm(data) { } class CryptoEngine extends AbstractCryptoEngine { async importKey(format, keyData, algorithm, extractable, keyUsages) { - var _a11, _b, _c, _d, _e, _f; + var _a, _b, _c, _d, _e, _f; let jwk = {}; const alg = prepareAlgorithm(algorithm); switch(format.toLowerCase()){ @@ -24111,7 +23052,7 @@ class CryptoEngine extends AbstractCryptoEngine { switch(alg.name.toUpperCase()){ case "RSA-PSS": { - switch((_a11 = alg.hash) === null || _a11 === void 0 ? void 0 : _a11.name.toUpperCase()){ + switch((_a = alg.hash) === null || _a === void 0 ? void 0 : _a.name.toUpperCase()){ case "SHA-1": jwk.alg = "PS1"; break; @@ -24279,7 +23220,7 @@ class CryptoEngine extends AbstractCryptoEngine { const key = await this.importKey(inputFormat, keyData, algorithm, extractable, keyUsages); return this.exportKey(outputFormat, key); } - getAlgorithmByOID(oid, safety = false, target6) { + getAlgorithmByOID(oid, safety = false, target) { switch(oid){ case "1.2.840.113549.1.1.1": return { @@ -24496,11 +23437,11 @@ class CryptoEngine extends AbstractCryptoEngine { }; } if (safety) { - throw new Error(`Unsupported algorithm identifier ${target6 ? `for ${target6} ` : EMPTY_STRING1}: ${oid}`); + throw new Error(`Unsupported algorithm identifier ${target ? `for ${target} ` : EMPTY_STRING1}: ${oid}`); } return {}; } - getOIDByAlgorithm(algorithm, safety = false, target7) { + getOIDByAlgorithm(algorithm, safety = false, target) { let result = EMPTY_STRING1; switch(algorithm.name.toUpperCase()){ case "RSAES-PKCS1-V1_5": @@ -24665,7 +23606,7 @@ class CryptoEngine extends AbstractCryptoEngine { break; } if (!result && safety) { - throw new Error(`Unsupported algorithm ${target7 ? `for ${target7} ` : EMPTY_STRING1}: ${algorithm.name}`); + throw new Error(`Unsupported algorithm ${target ? `for ${target} ` : EMPTY_STRING1}: ${algorithm.name}`); } return result; } @@ -24684,9 +23625,9 @@ class CryptoEngine extends AbstractCryptoEngine { name: "RSASSA-PKCS1-v1_5", modulusLength: 2048, publicExponent: new Uint8Array([ - 1, - 0, - 1 + 0x01, + 0x00, + 0x01 ]), hash: { name: "SHA-256" @@ -24747,9 +23688,9 @@ class CryptoEngine extends AbstractCryptoEngine { name: "RSA-PSS", modulusLength: 2048, publicExponent: new Uint8Array([ - 1, - 0, - 1 + 0x01, + 0x00, + 0x01 ]), hash: { name: "SHA-1" @@ -24804,9 +23745,9 @@ class CryptoEngine extends AbstractCryptoEngine { name: "RSA-OAEP", modulusLength: 2048, publicExponent: new Uint8Array([ - 1, - 0, - 1 + 0x01, + 0x00, + 0x01 ]), hash: { name: "SHA-256" @@ -25304,7 +24245,7 @@ class CryptoEngine extends AbstractCryptoEngine { pbkdf2Params = new PBKDF2Params({ schema: pbes2Parameters.keyDerivationFunc.algorithmParams }); - } catch (ex1) { + } catch (ex) { throw new Error("Incorrectly encoded \"pbkdf2Params\""); } const contentEncryptionAlgorithm = this.getAlgorithmByOID(pbes2Parameters.encryptionScheme.algorithmId, true); @@ -25560,24 +24501,29 @@ let engine = { name: "none", crypto: null }; -function isCryptoEngine(engine1) { - return engine1 && typeof engine1 === "object" && "crypto" in engine1 ? true : false; +function isCryptoEngine(engine) { + return engine && typeof engine === "object" && "crypto" in engine ? true : false; } function setEngine(name, ...args) { - let crypto = null; - if (args.length === 1) { - crypto = args[0]; + let crypto1 = null; + if (args.length < 2) { + if (args.length) { + crypto1 = args[0]; + } else { + crypto1 = typeof self !== "undefined" && self.crypto ? new CryptoEngine({ + name: "browser", + crypto: self.crypto + }) : null; + } } else { const cryptoArg = args[0]; const subtleArg = args[1]; if (isCryptoEngine(subtleArg)) { - crypto = subtleArg; - } - if (isCryptoEngine(cryptoArg)) { - crypto = cryptoArg; - } - if ("subtle" in cryptoArg && "getRandomValues" in cryptoArg) { - crypto = new CryptoEngine({ + crypto1 = subtleArg; + } else if (isCryptoEngine(cryptoArg)) { + crypto1 = cryptoArg; + } else if ("subtle" in cryptoArg && "getRandomValues" in cryptoArg) { + crypto1 = new CryptoEngine({ crypto: cryptoArg }); } @@ -25599,15 +24545,13 @@ function setEngine(name, ...args) { } global[process.pid].pkijs.engine = { name: name, - crypto + crypto: crypto1 }; } else { - if (engine.name !== name) { - engine = { - name: name, - crypto - }; - } + engine = { + name: name, + crypto: crypto1 + }; } } function getEngine() { @@ -25660,7 +24604,7 @@ function createECDSASignatureFromCMS(cmsSignature, pointSize) { res.set(sValueView, 2 * pointSize - sValueView.byteLength); return res.buffer; } -async function kdfWithCounter(hashFunction, zBuffer, Counter, SharedInfo, crypto) { +async function kdfWithCounter(hashFunction, zBuffer, Counter, SharedInfo, crypto1) { switch(hashFunction.toUpperCase()){ case "SHA-1": case "SHA-256": @@ -25676,15 +24620,15 @@ async function kdfWithCounter(hashFunction, zBuffer, Counter, SharedInfo, crypto if (Counter > 255) throw new ArgumentError("Please set 'Counter' argument to value less or equal to 255"); const counterBuffer = new ArrayBuffer(4); const counterView = new Uint8Array(counterBuffer); - counterView[0] = 0; - counterView[1] = 0; - counterView[2] = 0; + counterView[0] = 0x00; + counterView[1] = 0x00; + counterView[2] = 0x00; counterView[3] = Counter; let combinedBuffer = EMPTY_BUFFER1; combinedBuffer = utilConcatBuf(combinedBuffer, zBuffer); combinedBuffer = utilConcatBuf(combinedBuffer, counterBuffer); combinedBuffer = utilConcatBuf(combinedBuffer, SharedInfo); - const result = await crypto.digest({ + const result = await crypto1.digest({ name: hashFunction }, combinedBuffer); return { @@ -25692,7 +24636,7 @@ async function kdfWithCounter(hashFunction, zBuffer, Counter, SharedInfo, crypto result }; } -async function kdf(hashFunction, Zbuffer, keydatalen, SharedInfo, crypto = getCrypto(true)) { +async function kdf(hashFunction, Zbuffer, keydatalen, SharedInfo, crypto1 = getCrypto(true)) { let hashLength = 0; let maxCounter = 1; switch(hashFunction.toUpperCase()){ @@ -25720,7 +24664,7 @@ async function kdf(hashFunction, Zbuffer, keydatalen, SharedInfo, crypto = getCr if (quotient - maxCounter > 0) maxCounter++; } const incomingResult = []; - for(let i95 = 1; i95 <= maxCounter; i95++)incomingResult.push(await kdfWithCounter(hashFunction, Zbuffer, i95, SharedInfo, crypto)); + for(let i = 1; i <= maxCounter; i++)incomingResult.push(await kdfWithCounter(hashFunction, Zbuffer, i, SharedInfo, crypto1)); let combinedBuffer = EMPTY_BUFFER1; let currentCounter = 1; let found = true; @@ -25740,7 +24684,7 @@ async function kdf(hashFunction, Zbuffer, keydatalen, SharedInfo, crypto = getCr const newBuffer = new ArrayBuffer(keydatalen); const newView = new Uint8Array(newBuffer); const combinedView = new Uint8Array(combinedBuffer); - for(let i96 = 0; i96 < keydatalen; i96++)newView[i96] = combinedView[i96]; + for(let i = 0; i < keydatalen; i++)newView[i] = combinedView[i]; return newBuffer; } return combinedBuffer; @@ -25945,7 +24889,7 @@ class SignedCertificateTimestamp extends PkiObject { signature: this.signature.toJSON() }; } - async verify(logs, data, dataType = 0, crypto = getCrypto(true)) { + async verify(logs, data, dataType = 0, crypto1 = getCrypto(true)) { const logId = toBase64(arrayBufferToString(this.logID)); let publicKeyBase64 = null; const stream = new SeqStream(); @@ -25960,8 +24904,8 @@ class SignedCertificateTimestamp extends PkiObject { } const pki = stringToArrayBuffer(fromBase64(publicKeyBase64)); const publicKeyInfo = PublicKeyInfo.fromBER(pki); - stream.appendChar(0); - stream.appendChar(0); + stream.appendChar(0x00); + stream.appendChar(0x00); const timeBuffer = new ArrayBuffer(8); const timeView = new Uint8Array(timeBuffer); const baseArray = utilToBase(this.timestamp.valueOf(), 8); @@ -25972,7 +24916,7 @@ class SignedCertificateTimestamp extends PkiObject { stream.appendView(new Uint8Array(data)); stream.appendUint16(this.extensions.byteLength); if (this.extensions.byteLength !== 0) stream.appendView(new Uint8Array(this.extensions)); - return crypto.verifyWithPublicKey(stream.buffer.slice(0, stream.length), new OctetString({ + return crypto1.verifyWithPublicKey(stream.buffer.slice(0, stream.length), new OctetString({ valueHex: this.signature.toBER(false) }), publicKeyInfo, { algorithmId: EMPTY_STRING1 @@ -26006,9 +24950,9 @@ class SignedCertificateTimestampList extends PkiObject { } } static schema(parameters = {}) { - var _a2; + var _a; const names = getParametersValue(parameters, "names", {}); - (_a2 = names.optional) !== null && _a2 !== void 0 ? _a2 : names.optional = false; + (_a = names.optional) !== null && _a !== void 0 ? _a : names.optional = false; return new OctetString({ name: names.blockName || "SignedCertificateTimestampList", optional: names.optional @@ -26043,8 +24987,8 @@ class SignedCertificateTimestampList extends PkiObject { overallLength += timestampStream.stream.buffer.byteLength; } stream.appendUint16(overallLength); - for (const timestamp1 of timestampsData){ - stream.appendView(timestamp1.stream.view); + for (const timestamp of timestampsData){ + stream.appendView(timestamp.stream.view); } return new OctetString({ valueHex: stream.stream.buffer.slice(0) @@ -26052,8 +24996,7 @@ class SignedCertificateTimestampList extends PkiObject { } toJSON() { return { - timestamps: Array.from(this.timestamps, (o39)=>o39.toJSON() - ) + timestamps: Array.from(this.timestamps, (o)=>o.toJSON()) }; } } @@ -26100,19 +25043,16 @@ class SubjectDirectoryAttributes extends PkiObject { AsnError.assertSchema(asn1, this.className); this.attributes = Array.from(asn1.result.attributes, (element)=>new Attribute({ schema: element - }) - ); + })); } toSchema() { return new Sequence({ - value: Array.from(this.attributes, (o40)=>o40.toSchema() - ) + value: Array.from(this.attributes, (o)=>o.toSchema()) }); } toJSON() { return { - attributes: Array.from(this.attributes, (o41)=>o41.toJSON() - ) + attributes: Array.from(this.attributes, (o)=>o.toJSON()) }; } } @@ -26166,8 +25106,8 @@ class ExtensionValueFactory { return asn1.result; } static find(id) { - const types5 = this.getItems(); - return types5[id] || null; + const types = this.getItems(); + return types[id] || null; } static register(id, name, type) { this.getItems()[id] = { @@ -26335,19 +25275,16 @@ class Extensions extends PkiObject { AsnError.assertSchema(asn1, this.className); this.extensions = Array.from(asn1.result.extensions, (element)=>new Extension({ schema: element - }) - ); + })); } toSchema() { return new Sequence({ - value: Array.from(this.extensions, (o42)=>o42.toSchema() - ) + value: Array.from(this.extensions, (o)=>o.toSchema()) }); } toJSON() { return { - extensions: this.extensions.map((o43)=>o43.toJSON() - ) + extensions: this.extensions.map((o)=>o.toJSON()) }; } } @@ -26623,8 +25560,7 @@ class AttributeCertificateInfoV1 extends PkiObject { }); this.attributes = Array.from(asn1.result.attributes.valueBlock.value, (element)=>new Attribute({ schema: element - }) - ); + })); if (ISSUER_UNIQUE_ID$2 in asn1.result) { this.issuerUniqueID = asn1.result.issuerUniqueID; } @@ -26665,8 +25601,7 @@ class AttributeCertificateInfoV1 extends PkiObject { result.valueBlock.value.push(this.serialNumber); result.valueBlock.value.push(this.attrCertValidityPeriod.toSchema()); result.valueBlock.value.push(new Sequence({ - value: Array.from(this.attributes, (o44)=>o44.toSchema() - ) + value: Array.from(this.attributes, (o)=>o.toSchema()) })); if (this.issuerUniqueID) { result.valueBlock.value.push(this.issuerUniqueID); @@ -26690,8 +25625,7 @@ class AttributeCertificateInfoV1 extends PkiObject { result.signature = this.signature.toJSON(); result.serialNumber = this.serialNumber.toJSON(); result.attrCertValidityPeriod = this.attrCertValidityPeriod.toJSON(); - result.attributes = Array.from(this.attributes, (o45)=>o45.toJSON() - ); + result.attributes = Array.from(this.attributes, (o)=>o.toJSON()); if (this.issuerUniqueID) { result.issuerUniqueID = this.issuerUniqueID.toJSON(); } @@ -27345,8 +26279,7 @@ class AttributeCertificateInfoV2 extends PkiObject { }); this.attributes = Array.from(asn1.result.attributes.valueBlock.value, (element)=>new Attribute({ schema: element - }) - ); + })); if (ISSUER_UNIQUE_ID$1 in asn1.result) { this.issuerUniqueID = asn1.result.issuerUniqueID; } @@ -27374,8 +26307,7 @@ class AttributeCertificateInfoV2 extends PkiObject { this.serialNumber, this.attrCertValidityPeriod.toSchema(), new Sequence({ - value: Array.from(this.attributes, (o46)=>o46.toSchema() - ) + value: Array.from(this.attributes, (o)=>o.toSchema()) }) ] }); @@ -27395,8 +26327,7 @@ class AttributeCertificateInfoV2 extends PkiObject { signature: this.signature.toJSON(), serialNumber: this.serialNumber.toJSON(), attrCertValidityPeriod: this.attrCertValidityPeriod.toJSON(), - attributes: Array.from(this.attributes, (o47)=>o47.toJSON() - ) + attributes: Array.from(this.attributes, (o)=>o.toJSON()) }; if (this.issuerUniqueID) { result.issuerUniqueID = this.issuerUniqueID.toJSON(); @@ -27605,10 +26536,10 @@ const CLEAR_PROPS$R = [ GENERAL_TIME_NAME ]; var TimeType; -(function(TimeType1) { - TimeType1[TimeType1["UTCTime"] = 0] = "UTCTime"; - TimeType1[TimeType1["GeneralizedTime"] = 1] = "GeneralizedTime"; - TimeType1[TimeType1["empty"] = 2] = "empty"; +(function(TimeType) { + TimeType[TimeType["UTCTime"] = 0] = "UTCTime"; + TimeType[TimeType["GeneralizedTime"] = 1] = "GeneralizedTime"; + TimeType[TimeType["empty"] = 2] = "empty"; })(TimeType || (TimeType = {})); class Time extends PkiObject { constructor(parameters = {}){ @@ -27938,8 +26869,7 @@ class Certificate extends PkiObject { if (TBS_CERTIFICATE_SUBJECT_UNIQUE_ID in asn1.result) this.subjectUniqueID = asn1.result[TBS_CERTIFICATE_SUBJECT_UNIQUE_ID].valueBlock.valueHex; if (TBS_CERTIFICATE_EXTENSIONS in asn1.result) this.extensions = Array.from(asn1.result[TBS_CERTIFICATE_EXTENSIONS], (element)=>new Extension({ schema: element - }) - ); + })); this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm }); @@ -28001,8 +26931,7 @@ class Certificate extends PkiObject { }, value: [ new Sequence({ - value: Array.from(this.extensions, (o48)=>o48.toSchema() - ) + value: Array.from(this.extensions, (o)=>o.toSchema()) }) ] })); @@ -28055,34 +26984,33 @@ class Certificate extends PkiObject { res.subjectUniqueID = Convert.ToHex(this.subjectUniqueID); } if (this.extensions) { - res.extensions = Array.from(this.extensions, (o49)=>o49.toJSON() - ); + res.extensions = Array.from(this.extensions, (o)=>o.toJSON()); } return res; } - async getPublicKey(parameters, crypto = getCrypto(true)) { - return crypto.getPublicKey(this.subjectPublicKeyInfo, this.signatureAlgorithm, parameters); + async getPublicKey(parameters, crypto1 = getCrypto(true)) { + return crypto1.getPublicKey(this.subjectPublicKeyInfo, this.signatureAlgorithm, parameters); } - async getKeyHash(hashAlgorithm = "SHA-1", crypto = getCrypto(true)) { - return crypto.digest({ + async getKeyHash(hashAlgorithm = "SHA-1", crypto1 = getCrypto(true)) { + return crypto1.digest({ name: hashAlgorithm }, this.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView); } - async sign(privateKey, hashAlgorithm = "SHA-1", crypto = getCrypto(true)) { + async sign(privateKey, hashAlgorithm = "SHA-1", crypto1 = getCrypto(true)) { if (!privateKey) { throw new Error("Need to provide a private key for signing"); } - const signatureParameters = await crypto.getSignatureParameters(privateKey, hashAlgorithm); + const signatureParameters = await crypto1.getSignatureParameters(privateKey, hashAlgorithm); const parameters = signatureParameters.parameters; this.signature = signatureParameters.signatureAlgorithm; this.signatureAlgorithm = signatureParameters.signatureAlgorithm; this.tbsView = new Uint8Array(this.encodeTBS().toBER()); - const signature = await crypto.signWithPrivateKey(this.tbsView, privateKey, parameters); + const signature = await crypto1.signWithPrivateKey(this.tbsView, privateKey, parameters); this.signatureValue = new BitString({ valueHex: signature }); } - async verify(issuerCertificate, crypto = getCrypto(true)) { + async verify(issuerCertificate, crypto1 = getCrypto(true)) { let subjectPublicKeyInfo; if (issuerCertificate) { subjectPublicKeyInfo = issuerCertificate.subjectPublicKeyInfo; @@ -28092,7 +27020,7 @@ class Certificate extends PkiObject { if (!(subjectPublicKeyInfo instanceof PublicKeyInfo)) { throw new Error("Please provide issuer certificate as a parameter"); } - return crypto.verifyWithPublicKey(this.tbsView, this.signatureValue, subjectPublicKeyInfo, this.signatureAlgorithm); + return crypto1.verifyWithPublicKey(this.tbsView, this.signatureValue, subjectPublicKeyInfo, this.signatureAlgorithm); } } Certificate.CLASS_NAME = "Certificate"; @@ -28544,8 +27472,7 @@ class CertificateRevocationList extends PkiObject { if (TBS_CERT_LIST_REVOKED_CERTIFICATES in asn1.result) { this.revokedCertificates = Array.from(asn1.result[TBS_CERT_LIST_REVOKED_CERTIFICATES], (element)=>new RevokedCertificate({ schema: element - }) - ); + })); } if (TBS_CERT_LIST_EXTENSIONS in asn1.result) { this.crlExtensions = new Extensions({ @@ -28572,8 +27499,7 @@ class CertificateRevocationList extends PkiObject { } if (this.revokedCertificates) { outputArray.push(new Sequence({ - value: Array.from(this.revokedCertificates, (o50)=>o50.toSchema() - ) + value: Array.from(this.revokedCertificates, (o)=>o.toSchema()) })); } if (this.crlExtensions) { @@ -28627,8 +27553,7 @@ class CertificateRevocationList extends PkiObject { res.nextUpdate = this.nextUpdate.toJSON(); } if (this.revokedCertificates) { - res.revokedCertificates = Array.from(this.revokedCertificates, (o51)=>o51.toJSON() - ); + res.revokedCertificates = Array.from(this.revokedCertificates, (o)=>o.toJSON()); } if (this.crlExtensions) { res.crlExtensions = this.crlExtensions.toJSON(); @@ -28649,21 +27574,21 @@ class CertificateRevocationList extends PkiObject { } return false; } - async sign(privateKey, hashAlgorithm = "SHA-1", crypto = getCrypto(true)) { + async sign(privateKey, hashAlgorithm = "SHA-1", crypto1 = getCrypto(true)) { if (!privateKey) { throw new Error("Need to provide a private key for signing"); } - const signatureParameters = await crypto.getSignatureParameters(privateKey, hashAlgorithm); + const signatureParameters = await crypto1.getSignatureParameters(privateKey, hashAlgorithm); const { parameters } = signatureParameters; this.signature = signatureParameters.signatureAlgorithm; this.signatureAlgorithm = signatureParameters.signatureAlgorithm; this.tbsView = new Uint8Array(this.encodeTBS().toBER()); - const signature = await crypto.signWithPrivateKey(this.tbsView, privateKey, parameters); + const signature = await crypto1.signWithPrivateKey(this.tbsView, privateKey, parameters); this.signatureValue = new BitString({ valueHex: signature }); } - async verify(parameters = {}, crypto = getCrypto(true)) { + async verify(parameters = {}, crypto1 = getCrypto(true)) { let subjectPublicKeyInfo; if (parameters.issuerCertificate) { subjectPublicKeyInfo = parameters.issuerCertificate.subjectPublicKeyInfo; @@ -28684,7 +27609,7 @@ class CertificateRevocationList extends PkiObject { } } } - return crypto.verifyWithPublicKey(this.tbsView, this.signatureValue, subjectPublicKeyInfo, this.signatureAlgorithm); + return crypto1.verifyWithPublicKey(this.tbsView, this.signatureValue, subjectPublicKeyInfo, this.signatureAlgorithm); } } CertificateRevocationList.CLASS_NAME = "CertificateRevocationList"; @@ -28895,8 +27820,7 @@ class EncryptedData extends PkiObject { }); if (UNPROTECTED_ATTRS$1 in asn1.result) this.unprotectedAttrs = Array.from(asn1.result.unprotectedAttrs, (element)=>new Attribute({ schema: element - }) - ); + })); } toSchema() { const outputArray = []; @@ -28911,8 +27835,7 @@ class EncryptedData extends PkiObject { tagClass: 3, tagNumber: 1 }, - value: Array.from(this.unprotectedAttrs, (o52)=>o52.toSchema() - ) + value: Array.from(this.unprotectedAttrs, (o)=>o.toSchema()) })); } return new Sequence({ @@ -28924,25 +27847,24 @@ class EncryptedData extends PkiObject { version: this.version, encryptedContentInfo: this.encryptedContentInfo.toJSON() }; - if (this.unprotectedAttrs) res.unprotectedAttrs = Array.from(this.unprotectedAttrs, (o53)=>o53.toJSON() - ); + if (this.unprotectedAttrs) res.unprotectedAttrs = Array.from(this.unprotectedAttrs, (o)=>o.toJSON()); return res; } - async encrypt(parameters) { + async encrypt(parameters, crypto1 = getCrypto(true)) { ArgumentError.assert(parameters, "parameters", "object"); const encryptParams = { ...parameters, contentType: "1.2.840.113549.1.7.1" }; - this.encryptedContentInfo = await getCrypto(true).encryptEncryptedContentInfo(encryptParams); + this.encryptedContentInfo = await crypto1.encryptEncryptedContentInfo(encryptParams); } - async decrypt(parameters, crypto = getCrypto(true)) { + async decrypt(parameters, crypto1 = getCrypto(true)) { ArgumentError.assert(parameters, "parameters", "object"); const decryptParams = { ...parameters, encryptedContentInfo: this.encryptedContentInfo }; - return crypto.decryptEncryptedContentInfo(decryptParams); + return crypto1.decryptEncryptedContentInfo(decryptParams); } } EncryptedData.CLASS_NAME = "EncryptedData"; @@ -29047,17 +27969,17 @@ class PKCS8ShroudedKeyBag extends PkiObject { encryptedData: this.encryptedData.toJSON() }; } - async parseInternalValues(parameters, crypto = getCrypto(true)) { + async parseInternalValues(parameters, crypto1 = getCrypto(true)) { const cmsEncrypted = new EncryptedData({ encryptedContentInfo: new EncryptedContentInfo({ contentEncryptionAlgorithm: this.encryptionAlgorithm, encryptedContent: this.encryptedData }) }); - const decryptedData = await cmsEncrypted.decrypt(parameters, crypto); + const decryptedData = await cmsEncrypted.decrypt(parameters, crypto1); this.parsedValue = PrivateKeyInfo.fromBER(decryptedData); } - async makeInternalValues(parameters) { + async makeInternalValues(parameters, crypto1 = getCrypto(true)) { if (!this.parsedValue) { throw new Error("Please initialize \"parsedValue\" first"); } @@ -29066,7 +27988,7 @@ class PKCS8ShroudedKeyBag extends PkiObject { ...parameters, contentToEncrypt: this.parsedValue.toSchema().toBER(false) }; - await cmsEncrypted.encrypt(encryptParams); + await cmsEncrypted.encrypt(encryptParams, crypto1); if (!cmsEncrypted.encryptedContentInfo.encryptedContent) { throw new Error("The filed `encryptedContent` in EncryptedContentInfo is empty"); } @@ -29286,8 +28208,7 @@ class SafeBag extends PkiObject { if (BAG_ATTRIBUTES in asn1.result) { this.bagAttributes = Array.from(asn1.result.bagAttributes, (element)=>new Attribute({ schema: element - }) - ); + })); } } toSchema() { @@ -29307,8 +28228,7 @@ class SafeBag extends PkiObject { ]; if (this.bagAttributes) { outputArray.push(new Set1({ - value: Array.from(this.bagAttributes, (o54)=>o54.toSchema() - ) + value: Array.from(this.bagAttributes, (o)=>o.toSchema()) })); } return new Sequence({ @@ -29321,8 +28241,7 @@ class SafeBag extends PkiObject { bagValue: this.bagValue.toJSON() }; if (this.bagAttributes) { - output.bagAttributes = Array.from(this.bagAttributes, (o55)=>o55.toJSON() - ); + output.bagAttributes = Array.from(this.bagAttributes, (o)=>o.toJSON()); } return output; } @@ -29377,19 +28296,16 @@ class SafeContents extends PkiObject { AsnError.assertSchema(asn1, this.className); this.safeBags = Array.from(asn1.result.safeBags, (element)=>new SafeBag({ schema: element - }) - ); + })); } toSchema() { return new Sequence({ - value: Array.from(this.safeBags, (o56)=>o56.toSchema() - ) + value: Array.from(this.safeBags, (o)=>o.toSchema()) }); } toJSON() { return { - safeBags: Array.from(this.safeBags, (o57)=>o57.toJSON() - ) + safeBags: Array.from(this.safeBags, (o)=>o.toJSON()) }; } } @@ -29600,8 +28516,7 @@ class CertificateSet extends PkiObject { } toJSON() { return { - certificates: Array.from(this.certificates, (o58)=>o58.toJSON() - ) + certificates: Array.from(this.certificates, (o)=>o.toJSON()) }; } } @@ -29744,8 +28659,7 @@ class RevocationInfoChoices extends PkiObject { } toSchema() { const outputArray = []; - outputArray.push(...Array.from(this.crls, (o59)=>o59.toSchema() - )); + outputArray.push(...Array.from(this.crls, (o)=>o.toSchema())); outputArray.push(...Array.from(this.otherRevocationInfos, (element)=>{ const schema = element.toSchema(); schema.idBlock.tagClass = 3; @@ -29758,10 +28672,8 @@ class RevocationInfoChoices extends PkiObject { } toJSON() { return { - crls: Array.from(this.crls, (o60)=>o60.toJSON() - ), - otherRevocationInfos: Array.from(this.otherRevocationInfos, (o61)=>o61.toJSON() - ) + crls: Array.from(this.crls, (o)=>o.toJSON()), + otherRevocationInfos: Array.from(this.otherRevocationInfos, (o)=>o.toJSON()) }; } } @@ -30846,19 +29758,16 @@ class RecipientEncryptedKeys extends PkiObject { AsnError.assertSchema(asn1, this.className); this.encryptedKeys = Array.from(asn1.result.RecipientEncryptedKeys, (element)=>new RecipientEncryptedKey({ schema: element - }) - ); + })); } toSchema() { return new Sequence({ - value: Array.from(this.encryptedKeys, (o62)=>o62.toSchema() - ) + value: Array.from(this.encryptedKeys, (o)=>o.toSchema()) }); } toJSON() { return { - encryptedKeys: Array.from(this.encryptedKeys, (o63)=>o63.toJSON() - ) + encryptedKeys: Array.from(this.encryptedKeys, (o)=>o.toJSON()) }; } } @@ -31694,26 +30603,26 @@ class RSAESOAEPParams extends PkiObject { algorithmId: "1.2.840.113549.1.1.9", algorithmParams: new OctetString({ valueHex: new Uint8Array([ - 218, - 57, - 163, - 238, - 94, - 107, - 75, - 13, - 50, - 85, - 191, - 239, - 149, - 96, - 24, - 144, - 175, - 216, - 7, - 9 + 0xda, + 0x39, + 0xa3, + 0xee, + 0x5e, + 0x6b, + 0x4b, + 0x0d, + 0x32, + 0x55, + 0xbf, + 0xef, + 0x95, + 0x60, + 0x18, + 0x90, + 0xaf, + 0xd8, + 0x07, + 0x09 ]).buffer }) }); @@ -32009,6 +30918,9 @@ class EnvelopedData extends PkiObject { if (UNPROTECTED_ATTRS in parameters) { this.unprotectedAttrs = getParametersValue(parameters, UNPROTECTED_ATTRS, EnvelopedData.defaultValues(UNPROTECTED_ATTRS)); } + this.policy = { + disableSplit: !!parameters.disableSplit + }; if (parameters.schema) { this.fromSchema(parameters.schema); } @@ -32110,17 +31022,15 @@ class EnvelopedData extends PkiObject { }) }); } - this.recipientInfos = Array.from(asn1.result.recipientInfos, (o64)=>new RecipientInfo({ - schema: o64 - }) - ); + this.recipientInfos = Array.from(asn1.result.recipientInfos, (o)=>new RecipientInfo({ + schema: o + })); this.encryptedContentInfo = new EncryptedContentInfo({ schema: asn1.result.encryptedContentInfo }); - if (UNPROTECTED_ATTRS in asn1.result) this.unprotectedAttrs = Array.from(asn1.result.unprotectedAttrs, (o65)=>new Attribute({ - schema: o65 - }) - ); + if (UNPROTECTED_ATTRS in asn1.result) this.unprotectedAttrs = Array.from(asn1.result.unprotectedAttrs, (o)=>new Attribute({ + schema: o + })); } toSchema() { const outputArray = []; @@ -32138,8 +31048,7 @@ class EnvelopedData extends PkiObject { })); } outputArray.push(new Set1({ - value: Array.from(this.recipientInfos, (o66)=>o66.toSchema() - ) + value: Array.from(this.recipientInfos, (o)=>o.toSchema()) })); outputArray.push(this.encryptedContentInfo.toSchema()); if (this.unprotectedAttrs) { @@ -32149,8 +31058,7 @@ class EnvelopedData extends PkiObject { tagClass: 3, tagNumber: 1 }, - value: Array.from(this.unprotectedAttrs, (o67)=>o67.toSchema() - ) + value: Array.from(this.unprotectedAttrs, (o)=>o.toSchema()) })); } return new Sequence({ @@ -32160,16 +31068,14 @@ class EnvelopedData extends PkiObject { toJSON() { const res = { version: this.version, - recipientInfos: Array.from(this.recipientInfos, (o68)=>o68.toJSON() - ), + recipientInfos: Array.from(this.recipientInfos, (o)=>o.toJSON()), encryptedContentInfo: this.encryptedContentInfo.toJSON() }; if (this.originatorInfo) res.originatorInfo = this.originatorInfo.toJSON(); - if (this.unprotectedAttrs) res.unprotectedAttrs = Array.from(this.unprotectedAttrs, (o69)=>o69.toJSON() - ); + if (this.unprotectedAttrs) res.unprotectedAttrs = Array.from(this.unprotectedAttrs, (o)=>o.toJSON()); return res; } - addRecipientByCertificate(certificate, parameters, variant, crypto = getCrypto(true)) { + addRecipientByCertificate(certificate, parameters, variant, crypto1 = getCrypto(true)) { const encryptionParameters = Object.assign({ useOAEP: true, oaepHashAlgorithm: "SHA-512" @@ -32185,10 +31091,10 @@ class EnvelopedData extends PkiObject { let algorithmId; let algorithmParams; if (encryptionParameters.useOAEP === true) { - algorithmId = crypto.getOIDByAlgorithm({ + algorithmId = crypto1.getOIDByAlgorithm({ name: "RSA-OAEP" }, true, "keyEncryptionAlgorithm"); - const hashOID = crypto.getOIDByAlgorithm({ + const hashOID = crypto1.getOIDByAlgorithm({ name: encryptionParameters.oaepHashAlgorithm }, true, "RSAES-OAEP-params"); const hashAlgorithm = new AlgorithmIdentifier({ @@ -32204,7 +31110,7 @@ class EnvelopedData extends PkiObject { }); algorithmParams = rsaOAEPParams.toSchema(); } else { - algorithmId = crypto.getOIDByAlgorithm({ + algorithmId = crypto1.getOIDByAlgorithm({ name: "RSAES-PKCS1-v1_5" }); if (algorithmId === EMPTY_STRING1) throw new Error("Can not find OID for RSAES-PKCS1-v1_5"); @@ -32239,7 +31145,7 @@ class EnvelopedData extends PkiObject { }); this._addKeyAgreeRecipientInfo(recipientIdentifier, encryptionParameters, { recipientCertificate: certificate - }, crypto); + }, crypto1); } break; default: @@ -32247,7 +31153,7 @@ class EnvelopedData extends PkiObject { } return true; } - addRecipientByPreDefinedData(preDefinedData, parameters = {}, variant, crypto = getCrypto(true)) { + addRecipientByPreDefinedData(preDefinedData, parameters = {}, variant, crypto1 = getCrypto(true)) { ArgumentError.assert(preDefinedData, "preDefinedData", "ArrayBuffer"); if (!preDefinedData.byteLength) { throw new Error("Pre-defined data could have zero length"); @@ -32255,7 +31161,7 @@ class EnvelopedData extends PkiObject { if (!parameters.keyIdentifier) { const keyIdentifierBuffer = new ArrayBuffer(16); const keyIdentifierView = new Uint8Array(keyIdentifierBuffer); - crypto.getRandomValues(keyIdentifierView); + crypto1.getRandomValues(keyIdentifierView); parameters.keyIdentifier = keyIdentifierBuffer; } if (!parameters.hmacHashAlgorithm) parameters.hmacHashAlgorithm = "SHA-512"; @@ -32272,7 +31178,7 @@ class EnvelopedData extends PkiObject { switch(variant){ case 1: { - const kekOID = crypto.getOIDByAlgorithm(parameters.keyEncryptionAlgorithm, true, "keyEncryptionAlgorithm"); + const kekOID = crypto1.getOIDByAlgorithm(parameters.keyEncryptionAlgorithm, true, "keyEncryptionAlgorithm"); const keyInfo = new KEKRecipientInfo({ version: 4, kekid: new KEKIdentifier({ @@ -32294,13 +31200,13 @@ class EnvelopedData extends PkiObject { break; case 2: { - const pbkdf2OID = crypto.getOIDByAlgorithm({ + const pbkdf2OID = crypto1.getOIDByAlgorithm({ name: "PBKDF2" }, true, "keyDerivationAlgorithm"); const saltBuffer = new ArrayBuffer(64); const saltView = new Uint8Array(saltBuffer); - crypto.getRandomValues(saltView); - const hmacOID = crypto.getOIDByAlgorithm({ + crypto1.getRandomValues(saltView); + const hmacOID = crypto1.getOIDByAlgorithm({ name: "HMAC", hash: { name: parameters.hmacHashAlgorithm @@ -32316,7 +31222,7 @@ class EnvelopedData extends PkiObject { algorithmParams: new Null() }) }); - const kekOID = crypto.getOIDByAlgorithm(parameters.keyEncryptionAlgorithm, true, "keyEncryptionAlgorithm"); + const kekOID = crypto1.getOIDByAlgorithm(parameters.keyEncryptionAlgorithm, true, "keyEncryptionAlgorithm"); const keyInfo = new PasswordRecipientinfo({ version: 0, keyDerivationAlgorithm: new AlgorithmIdentifier({ @@ -32339,7 +31245,7 @@ class EnvelopedData extends PkiObject { throw new Error(`Unknown value for "variant": ${variant}`); } } - addRecipientByKeyIdentifier(key, keyId, parameters, crypto = getCrypto(true)) { + addRecipientByKeyIdentifier(key, keyId, parameters, crypto1 = getCrypto(true)) { const encryptionParameters = Object.assign({}, defaultEncryptionParams, parameters || {}); const recipientIdentifier = new KeyAgreeRecipientIdentifier({ variant: 2, @@ -32351,26 +31257,26 @@ class EnvelopedData extends PkiObject { }); this._addKeyAgreeRecipientInfo(recipientIdentifier, encryptionParameters, { recipientPublicKey: key - }, crypto); + }, crypto1); } - _addKeyAgreeRecipientInfo(recipientIdentifier, encryptionParameters, extraRecipientInfoParams, crypto = getCrypto(true)) { + _addKeyAgreeRecipientInfo(recipientIdentifier, encryptionParameters, extraRecipientInfoParams, crypto1 = getCrypto(true)) { const encryptedKey = new RecipientEncryptedKey({ rid: recipientIdentifier }); - const aesKWoid = crypto.getOIDByAlgorithm({ + const aesKWoid = crypto1.getOIDByAlgorithm({ name: "AES-KW", length: encryptionParameters.kekEncryptionLength }, true, "keyEncryptionAlgorithm"); const aesKW = new AlgorithmIdentifier({ algorithmId: aesKWoid }); - const ecdhOID = crypto.getOIDByAlgorithm({ + const ecdhOID = crypto1.getOIDByAlgorithm({ name: "ECDH", kdf: encryptionParameters.kdfAlgorithm }, true, "KeyAgreeRecipientInfo"); const ukmBuffer = new ArrayBuffer(64); const ukmView = new Uint8Array(ukmBuffer); - crypto.getRandomValues(ukmView); + crypto1.getRandomValues(ukmView); const recipientInfoParams = { version: 3, ukm: new OctetString({ @@ -32392,22 +31298,23 @@ class EnvelopedData extends PkiObject { value: keyInfo })); } - async encrypt(contentEncryptionAlgorithm, contentToEncrypt, crypto = getCrypto(true)) { + async encrypt(contentEncryptionAlgorithm, contentToEncrypt, crypto1 = getCrypto(true)) { const ivBuffer = new ArrayBuffer(16); const ivView = new Uint8Array(ivBuffer); - crypto.getRandomValues(ivView); + crypto1.getRandomValues(ivView); const contentView = new Uint8Array(contentToEncrypt); - const contentEncryptionOID = crypto.getOIDByAlgorithm(contentEncryptionAlgorithm, true, "contentEncryptionAlgorithm"); - const sessionKey = await crypto.generateKey(contentEncryptionAlgorithm, true, [ + const contentEncryptionOID = crypto1.getOIDByAlgorithm(contentEncryptionAlgorithm, true, "contentEncryptionAlgorithm"); + const sessionKey = await crypto1.generateKey(contentEncryptionAlgorithm, true, [ "encrypt" ]); - const encryptedContent = await crypto.encrypt({ + const encryptedContent = await crypto1.encrypt({ name: contentEncryptionAlgorithm.name, iv: ivView }, sessionKey, contentView); - const exportedSessionKey = await crypto.exportKey("raw", sessionKey); + const exportedSessionKey = await crypto1.exportKey("raw", sessionKey); this.version = 2; this.encryptedContentInfo = new EncryptedContentInfo({ + disableSplit: this.policy.disableSplit, contentType: "1.2.840.113549.1.7.1", contentEncryptionAlgorithm: new AlgorithmIdentifier({ algorithmId: contentEncryptionOID, @@ -32451,26 +31358,26 @@ class EnvelopedData extends PkiObject { }, usages: [] } - }, crypto); + }, crypto1); } else { throw new Error("Unsupported RecipientInfo"); } const recipientCurveLength = curveLengthByName[recipientCurve]; - const ecdhKeys = await crypto.generateKey({ + const ecdhKeys = await crypto1.generateKey({ name: "ECDH", namedCurve: recipientCurve }, true, [ "deriveBits" ]); - const exportedECDHPublicKey = await crypto.exportKey("spki", ecdhKeys.publicKey); - const derivedBits = await crypto.deriveBits({ + const exportedECDHPublicKey = await crypto1.exportKey("spki", ecdhKeys.publicKey); + const derivedBits = await crypto1.deriveBits({ name: "ECDH", public: recipientPublicKey }, ecdhKeys.privateKey, recipientCurveLength); const aesKWAlgorithm = new AlgorithmIdentifier({ schema: recipientInfo.keyEncryptionAlgorithm.algorithmParams }); - const kwAlgorithm = crypto.getAlgorithmByOID(aesKWAlgorithm.algorithmId, true, "aesKWAlgorithm"); + const kwAlgorithm = crypto1.getAlgorithmByOID(aesKWAlgorithm.algorithmId, true, "aesKWAlgorithm"); let kwLength = kwAlgorithm.length; const kwLengthBuffer = new ArrayBuffer(4); const kwLengthView = new Uint8Array(kwLengthBuffer); @@ -32488,14 +31395,14 @@ class EnvelopedData extends PkiObject { }) }); const encodedInfo = eccInfo.toSchema().toBER(false); - const ecdhAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "ecdhAlgorithm"); - const derivedKeyRaw = await kdf(ecdhAlgorithm.kdf, derivedBits, kwAlgorithm.length, encodedInfo, crypto); - const awsKW = await crypto.importKey("raw", derivedKeyRaw, { + const ecdhAlgorithm = crypto1.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "ecdhAlgorithm"); + const derivedKeyRaw = await kdf(ecdhAlgorithm.kdf, derivedBits, kwAlgorithm.length, encodedInfo, crypto1); + const awsKW = await crypto1.importKey("raw", derivedKeyRaw, { name: "AES-KW" }, true, [ "wrapKey" ]); - const wrappedKey = await crypto.wrapKey("raw", sessionKey, awsKW, { + const wrappedKey = await crypto1.wrapKey("raw", sessionKey, awsKW, { name: "AES-KW" }); const originator = new OriginatorIdentifierOrKey(); @@ -32511,13 +31418,13 @@ class EnvelopedData extends PkiObject { }; const SubKeyTransRecipientInfo = async (index)=>{ const recipientInfo = this.recipientInfos[index].value; - const algorithmParameters = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "keyEncryptionAlgorithm"); + const algorithmParameters = crypto1.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "keyEncryptionAlgorithm"); if (algorithmParameters.name === "RSA-OAEP") { const schema = recipientInfo.keyEncryptionAlgorithm.algorithmParams; const rsaOAEPParams = new RSAESOAEPParams({ schema }); - algorithmParameters.hash = crypto.getAlgorithmByOID(rsaOAEPParams.hashAlgorithm.algorithmId); + algorithmParameters.hash = crypto1.getAlgorithmByOID(rsaOAEPParams.hashAlgorithm.algorithmId); if ("name" in algorithmParameters.hash === false) throw new Error(`Incorrect OID for hash algorithm: ${rsaOAEPParams.hashAlgorithm.algorithmId}`); } try { @@ -32529,8 +31436,8 @@ class EnvelopedData extends PkiObject { "wrapKey" ] } - }, crypto); - const encryptedKey = await crypto.encrypt(publicKey.algorithm, publicKey, exportedSessionKey); + }, crypto1); + const encryptedKey = await crypto1.encrypt(publicKey.algorithm, publicKey, exportedSessionKey); recipientInfo.encryptedKey = new OctetString({ valueHex: encryptedKey }); @@ -32538,11 +31445,11 @@ class EnvelopedData extends PkiObject { }; const SubKEKRecipientInfo = async (index)=>{ const recipientInfo = this.recipientInfos[index].value; - const kekAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "kekAlgorithm"); - const kekKey = await crypto.importKey("raw", new Uint8Array(recipientInfo.preDefinedKEK), kekAlgorithm, true, [ + const kekAlgorithm = crypto1.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "kekAlgorithm"); + const kekKey = await crypto1.importKey("raw", new Uint8Array(recipientInfo.preDefinedKEK), kekAlgorithm, true, [ "wrapKey" ]); - const wrappedKey = await crypto.wrapKey("raw", sessionKey, kekKey, kekAlgorithm); + const wrappedKey = await crypto1.wrapKey("raw", sessionKey, kekKey, kekAlgorithm); recipientInfo.encryptedKey = new OctetString({ valueHex: wrappedKey }); @@ -32560,18 +31467,18 @@ class EnvelopedData extends PkiObject { throw new Error("Incorrectly encoded \"keyDerivationAlgorithm\""); } const passwordView = new Uint8Array(recipientInfo.password); - const derivationKey = await crypto.importKey("raw", passwordView, "PBKDF2", false, [ + const derivationKey = await crypto1.importKey("raw", passwordView, "PBKDF2", false, [ "deriveKey" ]); - const kekAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "kekAlgorithm"); + const kekAlgorithm = crypto1.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "kekAlgorithm"); let hmacHashAlgorithm = "SHA-1"; if (pbkdf2Params.prf) { - const prfAlgorithm = crypto.getAlgorithmByOID(pbkdf2Params.prf.algorithmId, true, "prfAlgorithm"); + const prfAlgorithm = crypto1.getAlgorithmByOID(pbkdf2Params.prf.algorithmId, true, "prfAlgorithm"); hmacHashAlgorithm = prfAlgorithm.hash.name; } const saltView = new Uint8Array(pbkdf2Params.salt.valueBlock.valueHex); const iterations = pbkdf2Params.iterationCount; - const derivedKey = await crypto.deriveKey({ + const derivedKey = await crypto1.deriveKey({ name: "PBKDF2", hash: { name: hmacHashAlgorithm @@ -32581,33 +31488,33 @@ class EnvelopedData extends PkiObject { }, derivationKey, kekAlgorithm, true, [ "wrapKey" ]); - const wrappedKey = await crypto.wrapKey("raw", sessionKey, derivedKey, kekAlgorithm); + const wrappedKey = await crypto1.wrapKey("raw", sessionKey, derivedKey, kekAlgorithm); recipientInfo.encryptedKey = new OctetString({ valueHex: wrappedKey }); }; const res = []; - for(let i97 = 0; i97 < this.recipientInfos.length; i97++){ - switch(this.recipientInfos[i97].variant){ + for(let i = 0; i < this.recipientInfos.length; i++){ + switch(this.recipientInfos[i].variant){ case 1: - res.push(await SubKeyTransRecipientInfo(i97)); + res.push(await SubKeyTransRecipientInfo(i)); break; case 2: - res.push(await SubKeyAgreeRecipientInfo(i97)); + res.push(await SubKeyAgreeRecipientInfo(i)); break; case 3: - res.push(await SubKEKRecipientInfo(i97)); + res.push(await SubKEKRecipientInfo(i)); break; case 4: - res.push(await SubPasswordRecipientinfo(i97)); + res.push(await SubPasswordRecipientinfo(i)); break; default: - throw new Error(`Unknown recipient type in array with index ${i97}`); + throw new Error(`Unknown recipient type in array with index ${i}`); } } return res; } - async decrypt(recipientIndex, parameters, crypto = getCrypto(true)) { + async decrypt(recipientIndex, parameters, crypto1 = getCrypto(true)) { const decryptionParameters = parameters || {}; if (recipientIndex + 1 > this.recipientInfos.length) { throw new Error(`Maximum value for "index" is: ${this.recipientInfos.length - 1}`); @@ -32650,21 +31557,30 @@ class EnvelopedData extends PkiObject { default: throw new Error(`Incorrect curve OID for index ${index}`); } - const ecdhPrivateKey = await crypto.importKey("pkcs8", decryptionParameters.recipientPrivateKey, { - name: "ECDH", - namedCurve: recipientCurve - }, true, [ - "deriveBits" - ]); + let ecdhPrivateKey; + let keyCrypto = crypto1; + if (BufferSourceConverter.isBufferSource(decryptionParameters.recipientPrivateKey)) { + ecdhPrivateKey = await crypto1.importKey("pkcs8", decryptionParameters.recipientPrivateKey, { + name: "ECDH", + namedCurve: recipientCurve + }, true, [ + "deriveBits" + ]); + } else { + ecdhPrivateKey = decryptionParameters.recipientPrivateKey; + if ("crypto" in decryptionParameters && decryptionParameters.crypto) { + keyCrypto = decryptionParameters.crypto.subtle; + } + } if ("algorithmParams" in originator.value.algorithm === false) originator.value.algorithm.algorithmParams = new ObjectIdentifier({ value: curveOID }); const buffer = originator.value.toSchema().toBER(false); - const ecdhPublicKey = await crypto.importKey("spki", buffer, { + const ecdhPublicKey = await crypto1.importKey("spki", buffer, { name: "ECDH", namedCurve: recipientCurve }, true, []); - const sharedSecret = await crypto.deriveBits({ + const sharedSecret = await keyCrypto.deriveBits({ name: "ECDH", public: ecdhPublicKey }, ecdhPrivateKey, recipientCurveLength); @@ -32673,7 +31589,7 @@ class EnvelopedData extends PkiObject { const aesKWAlgorithm = new AlgorithmIdentifier({ schema: recipientInfo.keyEncryptionAlgorithm.algorithmParams }); - const kwAlgorithm = crypto.getAlgorithmByOID(aesKWAlgorithm.algorithmId, true, "kwAlgorithm"); + const kwAlgorithm = crypto1.getAlgorithmByOID(aesKWAlgorithm.algorithmId, true, "kwAlgorithm"); let kwLength = kwAlgorithm.length; const kwLengthBuffer = new ArrayBuffer(4); const kwLengthView = new Uint8Array(kwLengthBuffer); @@ -32695,32 +31611,32 @@ class EnvelopedData extends PkiObject { }) }); const encodedInfo = eccInfo.toSchema().toBER(false); - const ecdhAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "ecdhAlgorithm"); + const ecdhAlgorithm = crypto1.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "ecdhAlgorithm"); if (!ecdhAlgorithm.name) { throw new Error(`Incorrect OID for key encryption algorithm: ${recipientInfo.keyEncryptionAlgorithm.algorithmId}`); } - return kdf(ecdhAlgorithm.kdf, sharedSecret, kwAlgorithm.length, encodedInfo, crypto); + return kdf(ecdhAlgorithm.kdf, sharedSecret, kwAlgorithm.length, encodedInfo, crypto1); } - const kdfResult1 = await applyKDF(); + const kdfResult = await applyKDF(); const importAesKwKey = async (kdfResult)=>{ - return crypto.importKey("raw", kdfResult, { + return crypto1.importKey("raw", kdfResult, { name: "AES-KW" }, true, [ "unwrapKey" ]); }; - const aesKwKey1 = await importAesKwKey(kdfResult1); + const aesKwKey = await importAesKwKey(kdfResult); const unwrapSessionKey = async (aesKwKey)=>{ const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId; - const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, "contentEncryptionAlgorithm"); - return crypto.unwrapKey("raw", recipientInfo.recipientEncryptedKeys.encryptedKeys[0].encryptedKey.valueBlock.valueHexView, aesKwKey, { + const contentEncryptionAlgorithm = crypto1.getAlgorithmByOID(algorithmId, true, "contentEncryptionAlgorithm"); + return crypto1.unwrapKey("raw", recipientInfo.recipientEncryptedKeys.encryptedKeys[0].encryptedKey.valueBlock.valueHexView, aesKwKey, { name: "AES-KW" }, contentEncryptionAlgorithm, true, [ "decrypt" ]); }; try { - return await unwrapSessionKey(aesKwKey1); + return await unwrapSessionKey(aesKwKey); } catch { const kdfResult = await applyKDF(true); const aesKwKey = await importAesKwKey(kdfResult); @@ -32732,39 +31648,48 @@ class EnvelopedData extends PkiObject { if (!decryptionParameters.recipientPrivateKey) { throw new Error("Parameter \"recipientPrivateKey\" is mandatory for \"KeyTransRecipientInfo\""); } - const algorithmParameters = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "keyEncryptionAlgorithm"); + const algorithmParameters = crypto1.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "keyEncryptionAlgorithm"); if (algorithmParameters.name === "RSA-OAEP") { const schema = recipientInfo.keyEncryptionAlgorithm.algorithmParams; const rsaOAEPParams = new RSAESOAEPParams({ schema }); - algorithmParameters.hash = crypto.getAlgorithmByOID(rsaOAEPParams.hashAlgorithm.algorithmId); + algorithmParameters.hash = crypto1.getAlgorithmByOID(rsaOAEPParams.hashAlgorithm.algorithmId); if ("name" in algorithmParameters.hash === false) throw new Error(`Incorrect OID for hash algorithm: ${rsaOAEPParams.hashAlgorithm.algorithmId}`); } - const privateKey = await crypto.importKey("pkcs8", decryptionParameters.recipientPrivateKey, algorithmParameters, true, [ - "decrypt" - ]); - const sessionKey = await crypto.decrypt(privateKey.algorithm, privateKey, recipientInfo.encryptedKey.valueBlock.valueHexView); + let privateKey; + let keyCrypto = crypto1; + if (BufferSourceConverter.isBufferSource(decryptionParameters.recipientPrivateKey)) { + privateKey = await crypto1.importKey("pkcs8", decryptionParameters.recipientPrivateKey, algorithmParameters, true, [ + "decrypt" + ]); + } else { + privateKey = decryptionParameters.recipientPrivateKey; + if ("crypto" in decryptionParameters && decryptionParameters.crypto) { + keyCrypto = decryptionParameters.crypto.subtle; + } + } + const sessionKey = await keyCrypto.decrypt(privateKey.algorithm, privateKey, recipientInfo.encryptedKey.valueBlock.valueHexView); const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId; - const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, "contentEncryptionAlgorithm"); + const contentEncryptionAlgorithm = crypto1.getAlgorithmByOID(algorithmId, true, "contentEncryptionAlgorithm"); if ("name" in contentEncryptionAlgorithm === false) throw new Error(`Incorrect "contentEncryptionAlgorithm": ${algorithmId}`); - return crypto.importKey("raw", sessionKey, contentEncryptionAlgorithm, true, [ + return crypto1.importKey("raw", sessionKey, contentEncryptionAlgorithm, true, [ "decrypt" ]); }; const SubKEKRecipientInfo = async (index)=>{ const recipientInfo = this.recipientInfos[index].value; if (!decryptionParameters.preDefinedData) throw new Error("Parameter \"preDefinedData\" is mandatory for \"KEKRecipientInfo\""); - const kekAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "kekAlgorithm"); - const importedKey = await crypto.importKey("raw", decryptionParameters.preDefinedData, kekAlgorithm, true, [ + const kekAlgorithm = crypto1.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "kekAlgorithm"); + const importedKey = await crypto1.importKey("raw", decryptionParameters.preDefinedData, kekAlgorithm, true, [ "unwrapKey" ]); const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId; - const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, "contentEncryptionAlgorithm"); + const contentEncryptionAlgorithm = crypto1.getAlgorithmByOID(algorithmId, true, "contentEncryptionAlgorithm"); if (!contentEncryptionAlgorithm.name) { throw new Error(`Incorrect "contentEncryptionAlgorithm": ${algorithmId}`); } - return crypto.unwrapKey("raw", recipientInfo.encryptedKey.valueBlock.valueHexView, importedKey, kekAlgorithm, contentEncryptionAlgorithm, true, [ + return crypto1.unwrapKey("raw", recipientInfo.encryptedKey.valueBlock.valueHexView, importedKey, kekAlgorithm, contentEncryptionAlgorithm, true, [ "decrypt" ]); }; @@ -32787,14 +31712,14 @@ class EnvelopedData extends PkiObject { } catch (ex) { throw new Error("Incorrectly encoded \"keyDerivationAlgorithm\""); } - const pbkdf2Key = await crypto.importKey("raw", decryptionParameters.preDefinedData, "PBKDF2", false, [ + const pbkdf2Key = await crypto1.importKey("raw", decryptionParameters.preDefinedData, "PBKDF2", false, [ "deriveKey" ]); - const kekAlgorithm = crypto.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "keyEncryptionAlgorithm"); - const hmacHashAlgorithm = pbkdf2Params.prf ? crypto.getAlgorithmByOID(pbkdf2Params.prf.algorithmId, true, "prfAlgorithm").hash.name : "SHA-1"; + const kekAlgorithm = crypto1.getAlgorithmByOID(recipientInfo.keyEncryptionAlgorithm.algorithmId, true, "keyEncryptionAlgorithm"); + const hmacHashAlgorithm = pbkdf2Params.prf ? crypto1.getAlgorithmByOID(pbkdf2Params.prf.algorithmId, true, "prfAlgorithm").hash.name : "SHA-1"; const saltView = new Uint8Array(pbkdf2Params.salt.valueBlock.valueHex); const iterations = pbkdf2Params.iterationCount; - const kekKey = await crypto.deriveKey({ + const kekKey = await crypto1.deriveKey({ name: "PBKDF2", hash: { name: hmacHashAlgorithm @@ -32805,8 +31730,8 @@ class EnvelopedData extends PkiObject { "unwrapKey" ]); const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId; - const contentEncryptionAlgorithm = crypto.getAlgorithmByOID(algorithmId, true, "contentEncryptionAlgorithm"); - return crypto.unwrapKey("raw", recipientInfo.encryptedKey.valueBlock.valueHexView, kekKey, kekAlgorithm, contentEncryptionAlgorithm, true, [ + const contentEncryptionAlgorithm = crypto1.getAlgorithmByOID(algorithmId, true, "contentEncryptionAlgorithm"); + return crypto1.unwrapKey("raw", recipientInfo.encryptedKey.valueBlock.valueHexView, kekKey, kekAlgorithm, contentEncryptionAlgorithm, true, [ "decrypt" ]); }; @@ -32827,16 +31752,16 @@ class EnvelopedData extends PkiObject { default: throw new Error(`Unknown recipient type in array with index ${recipientIndex}`); } - const algorithmId1 = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId; - const contentEncryptionAlgorithm1 = crypto.getAlgorithmByOID(algorithmId1, true, "contentEncryptionAlgorithm"); + const algorithmId = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmId; + const contentEncryptionAlgorithm = crypto1.getAlgorithmByOID(algorithmId, true, "contentEncryptionAlgorithm"); const ivBuffer = this.encryptedContentInfo.contentEncryptionAlgorithm.algorithmParams.valueBlock.valueHex; const ivView = new Uint8Array(ivBuffer); if (!this.encryptedContentInfo.encryptedContent) { throw new Error("Required property `encryptedContent` is empty"); } const dataBuffer = this.encryptedContentInfo.getEncryptedContent(); - return crypto.decrypt({ - name: contentEncryptionAlgorithm1.name, + return crypto1.decrypt({ + name: contentEncryptionAlgorithm.name, iv: ivView }, unwrappedKey, dataBuffer); } @@ -32900,22 +31825,19 @@ class AuthenticatedSafe extends PkiObject { AsnError.assertSchema(asn1, this.className); this.safeContents = Array.from(asn1.result.contentInfos, (element)=>new ContentInfo({ schema: element - }) - ); + })); } toSchema() { return new Sequence({ - value: Array.from(this.safeContents, (o70)=>o70.toSchema() - ) + value: Array.from(this.safeContents, (o)=>o.toSchema()) }); } toJSON() { return { - safeContents: Array.from(this.safeContents, (o71)=>o71.toJSON() - ) + safeContents: Array.from(this.safeContents, (o)=>o.toJSON()) }; } - async parseInternalValues(parameters, crypto = getCrypto(true)) { + async parseInternalValues(parameters, crypto1 = getCrypto(true)) { ParameterError.assert(parameters, SAFE_CONTENTS); ArgumentError.assert(parameters.safeContents, SAFE_CONTENTS, "Array"); if (parameters.safeContents.length !== this.safeContents.length) { @@ -32950,7 +31872,7 @@ class AuthenticatedSafe extends PkiObject { const decrypted = await cmsEnveloped.decrypt(0, { recipientCertificate, recipientPrivateKey: recipientKey - }, crypto); + }, crypto1); this.parsedValue.safeContents.push({ privacyMode: 2, value: SafeContents.fromBER(decrypted) @@ -32966,7 +31888,7 @@ class AuthenticatedSafe extends PkiObject { const password = safeContent.password; const decrypted = await cmsEncrypted.decrypt({ password - }, crypto); + }, crypto1); this.parsedValue.safeContents.push({ privacyMode: 1, value: SafeContents.fromBER(decrypted) @@ -32978,7 +31900,7 @@ class AuthenticatedSafe extends PkiObject { } } } - async makeInternalValues(parameters, crypto = getCrypto(true)) { + async makeInternalValues(parameters, crypto1 = getCrypto(true)) { if (!this.parsedValue) { throw new Error("Please run \"parseValues\" first or add \"parsedValue\" manually"); } @@ -33011,7 +31933,7 @@ class AuthenticatedSafe extends PkiObject { const cmsEncrypted = new EncryptedData(); const currentParameters = parameters.safeContents[index]; currentParameters.contentToEncrypt = content.value.toSchema().toBER(false); - await cmsEncrypted.encrypt(currentParameters); + await cmsEncrypted.encrypt(currentParameters, crypto1); this.safeContents.push(new ContentInfo({ contentType: "1.2.840.113549.1.7.6", content: cmsEncrypted.toSchema() @@ -33040,8 +31962,8 @@ class AuthenticatedSafe extends PkiObject { throw new Error(`Incorrect parameter "encryptionAlgorithm.length" in "parameters.safeContents[i]": ${safeContent.encryptionAlgorithm.length}`); } const encryptionAlgorithm = safeContent.encryptionAlgorithm; - cmsEnveloped.addRecipientByCertificate(safeContent.encryptingCertificate, {}, undefined, crypto); - await cmsEnveloped.encrypt(encryptionAlgorithm, contentToEncrypt, crypto); + cmsEnveloped.addRecipientByCertificate(safeContent.encryptingCertificate, {}, undefined, crypto1); + await cmsEnveloped.encrypt(encryptionAlgorithm, contentToEncrypt, crypto1); this.safeContents.push(new ContentInfo({ contentType: "1.2.840.113549.1.7.3", content: cmsEnveloped.toSchema() @@ -33077,9 +31999,9 @@ class CertID extends PkiObject { this.fromSchema(parameters.schema); } } - static async create(certificate, parameters, crypto = getCrypto(true)) { + static async create(certificate, parameters, crypto1 = getCrypto(true)) { const certID = new CertID(); - await certID.createForCertificate(certificate, parameters, crypto); + await certID.createForCertificate(certificate, parameters, crypto1); return certID; } static defaultValues(memberName) { @@ -33180,9 +32102,9 @@ class CertID extends PkiObject { } return true; } - async createForCertificate(certificate, parameters, crypto = getCrypto(true)) { + async createForCertificate(certificate, parameters, crypto1 = getCrypto(true)) { ParameterError.assert(parameters, HASH_ALGORITHM$1, "issuerCertificate"); - const hashOID = crypto.getOIDByAlgorithm({ + const hashOID = crypto1.getOIDByAlgorithm({ name: parameters.hashAlgorithm }, true, "hashAlgorithm"); this.hashAlgorithm = new AlgorithmIdentifier({ @@ -33191,14 +32113,14 @@ class CertID extends PkiObject { }); const issuerCertificate = parameters.issuerCertificate; this.serialNumber = certificate.serialNumber; - const hashIssuerName = await crypto.digest({ + const hashIssuerName = await crypto1.digest({ name: parameters.hashAlgorithm }, issuerCertificate.subject.toSchema().toBER(false)); this.issuerNameHash = new OctetString({ valueHex: hashIssuerName }); const issuerKeyBuffer = issuerCertificate.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView; - const hashIssuerKey = await crypto.digest({ + const hashIssuerKey = await crypto1.digest({ name: parameters.hashAlgorithm }, issuerKeyBuffer); this.issuerKeyHash = new OctetString({ @@ -33366,8 +32288,7 @@ class SingleResponse extends PkiObject { if (NEXT_UPDATE in asn1.result) this.nextUpdate = asn1.result.nextUpdate.toDate(); if (SINGLE_EXTENSIONS in asn1.result) this.singleExtensions = Array.from(asn1.result.singleExtensions.valueBlock.value, (element)=>new Extension({ schema: element - }) - ); + })); } toSchema() { const outputArray = []; @@ -33391,8 +32312,7 @@ class SingleResponse extends PkiObject { } if (this.singleExtensions) { outputArray.push(new Sequence({ - value: Array.from(this.singleExtensions, (o72)=>o72.toSchema() - ) + value: Array.from(this.singleExtensions, (o)=>o.toSchema()) })); } return new Sequence({ @@ -33409,8 +32329,7 @@ class SingleResponse extends PkiObject { res.nextUpdate = this.nextUpdate; } if (this.singleExtensions) { - res.singleExtensions = Array.from(this.singleExtensions, (o73)=>o73.toJSON() - ); + res.singleExtensions = Array.from(this.singleExtensions, (o)=>o.toJSON()); } return res; } @@ -33579,12 +32498,10 @@ class ResponseData extends PkiObject { this.producedAt = asn1.result[RESPONSE_DATA_PRODUCED_AT].toDate(); this.responses = Array.from(asn1.result[RESPONSE_DATA_RESPONSES], (element)=>new SingleResponse({ schema: element - }) - ); + })); if (RESPONSE_DATA_RESPONSE_EXTENSIONS in asn1.result) this.responseExtensions = Array.from(asn1.result[RESPONSE_DATA_RESPONSE_EXTENSIONS].valueBlock.value, (element)=>new Extension({ schema: element - }) - ); + })); } toSchema(encodeFlag = false) { let tbsSchema; @@ -33635,8 +32552,7 @@ class ResponseData extends PkiObject { valueDate: this.producedAt })); outputArray.push(new Sequence({ - value: Array.from(this.responses, (o74)=>o74.toSchema() - ) + value: Array.from(this.responses, (o)=>o.toSchema()) })); if (this.responseExtensions) { outputArray.push(new Constructed({ @@ -33646,8 +32562,7 @@ class ResponseData extends PkiObject { }, value: [ new Sequence({ - value: Array.from(this.responseExtensions, (o75)=>o75.toSchema() - ) + value: Array.from(this.responseExtensions, (o)=>o.toSchema()) }) ] })); @@ -33670,12 +32585,10 @@ class ResponseData extends PkiObject { res.producedAt = this.producedAt; } if (this.responses) { - res.responses = Array.from(this.responses, (o76)=>o76.toJSON() - ); + res.responses = Array.from(this.responses, (o)=>o.toJSON()); } if (this.responseExtensions) { - res.responseExtensions = Array.from(this.responseExtensions, (o77)=>o77.toJSON() - ); + res.responseExtensions = Array.from(this.responseExtensions, (o)=>o.toJSON()); } return res; } @@ -33688,6 +32601,31 @@ const OCSPS$1 = "ocsps"; const CHECK_DATE = "checkDate"; const FIND_ORIGIN = "findOrigin"; const FIND_ISSUER = "findIssuer"; +var ChainValidationCode; +(function(ChainValidationCode) { + ChainValidationCode[ChainValidationCode["unknown"] = -1] = "unknown"; + ChainValidationCode[ChainValidationCode["success"] = 0] = "success"; + ChainValidationCode[ChainValidationCode["noRevocation"] = 11] = "noRevocation"; + ChainValidationCode[ChainValidationCode["noPath"] = 60] = "noPath"; + ChainValidationCode[ChainValidationCode["noValidPath"] = 97] = "noValidPath"; +})(ChainValidationCode || (ChainValidationCode = {})); +class ChainValidationError extends Error { + constructor(code, message){ + super(message); + this.name = ChainValidationError.NAME; + this.code = code; + this.message = message; + } +} +ChainValidationError.NAME = "ChainValidationError"; +function isTrusted(cert, trustedList) { + for(let i = 0; i < trustedList.length; i++){ + if (BufferSourceConverter.isEqual(cert.tbsView, trustedList[i].tbsView)) { + return true; + } + } + return false; +} class CertificateChainValidationEngine { constructor(parameters = {}){ this.trustedCerts = getParametersValue(parameters, TRUSTED_CERTS, this.defaultValues(TRUSTED_CERTS)); @@ -33714,14 +32652,14 @@ class CertificateChainValidationEngine { } return "Unknown"; } - async defaultFindIssuer(certificate, validationEngine, crypto = getCrypto(true)) { + async defaultFindIssuer(certificate, validationEngine, crypto1 = getCrypto(true)) { const result = []; let keyIdentifier = null; let authorityCertIssuer = null; let authorityCertSerialNumber = null; if (certificate.subject.isEqual(certificate.issuer)) { try { - const verificationResult = await certificate.verify(undefined, crypto); + const verificationResult = await certificate.verify(undefined, crypto1); if (verificationResult) { return [ certificate @@ -33780,12 +32718,12 @@ class CertificateChainValidationEngine { for (const intermediateCert of validationEngine.certs){ checkCertificate(intermediateCert); } - for(let i98 = 0; i98 < result.length; i98++){ + for(let i = 0; i < result.length; i++){ try { - const verificationResult = await certificate.verify(result[i98], crypto); - if (verificationResult === false) result.splice(i98, 1); + const verificationResult = await certificate.verify(result[i], crypto1); + if (verificationResult === false) result.splice(i, 1); } catch (ex) { - result.splice(i98, 1); + result.splice(i, 1); } } return result; @@ -33812,14 +32750,14 @@ class CertificateChainValidationEngine { } async sort(passedWhenNotRevValues = false, crypto1 = getCrypto(true)) { const localCerts = []; - const buildPath = async (certificate, crypto)=>{ + const buildPath = async (certificate, crypto1)=>{ const result = []; function checkUnique(array) { let unique = true; - for(let i99 = 0; i99 < array.length; i99++){ + for(let i = 0; i < array.length; i++){ for(let j = 0; j < array.length; j++){ - if (j === i99) continue; - if (array[i99] === array[j]) { + if (j === i) continue; + if (array[i] === array[j]) { unique = false; break; } @@ -33828,21 +32766,28 @@ class CertificateChainValidationEngine { } return unique; } - const findIssuerResult = await this.findIssuer(certificate, this, crypto); + if (isTrusted(certificate, this.trustedCerts)) { + return [ + [ + certificate + ] + ]; + } + const findIssuerResult = await this.findIssuer(certificate, this, crypto1); if (findIssuerResult.length === 0) { throw new Error("No valid certificate paths found"); } - for(let i9 = 0; i9 < findIssuerResult.length; i9++){ - if (BufferSourceConverter.isEqual(findIssuerResult[i9].tbsView, certificate.tbsView)) { + for(let i = 0; i < findIssuerResult.length; i++){ + if (BufferSourceConverter.isEqual(findIssuerResult[i].tbsView, certificate.tbsView)) { result.push([ - findIssuerResult[i9] + findIssuerResult[i] ]); continue; } - const buildPathResult = await buildPath(findIssuerResult[i9], crypto); + const buildPathResult = await buildPath(findIssuerResult[i], crypto1); for(let j = 0; j < buildPathResult.length; j++){ const copy = buildPathResult[j].slice(); - copy.splice(0, 0, findIssuerResult[i9]); + copy.splice(0, 0, findIssuerResult[i]); if (checkUnique(copy)) result.push(copy); else result.push(buildPathResult[j]); } @@ -33853,35 +32798,33 @@ class CertificateChainValidationEngine { const issuerCertificates = []; const crls = []; const crlsAndCertificates = []; - issuerCertificates.push(...localCerts.filter((element)=>certificate.issuer.isEqual(element.subject) - )); + issuerCertificates.push(...localCerts.filter((element)=>certificate.issuer.isEqual(element.subject))); if (issuerCertificates.length === 0) { return { status: 1, statusMessage: "No certificate's issuers" }; } - crls.push(...this.crls.filter((o78)=>o78.issuer.isEqual(certificate.issuer) - )); + crls.push(...this.crls.filter((o)=>o.issuer.isEqual(certificate.issuer))); if (crls.length === 0) { return { status: 2, statusMessage: "No CRLs for specific certificate issuer" }; } - for(let i100 = 0; i100 < crls.length; i100++){ - const crl = crls[i100]; + for(let i = 0; i < crls.length; i++){ + const crl = crls[i]; if (crl.nextUpdate && crl.nextUpdate.value < this.checkDate) { continue; } for(let j = 0; j < issuerCertificates.length; j++){ try { - const result = await crls[i100].verify({ + const result = await crls[i].verify({ issuerCertificate: issuerCertificates[j] }, crypto1); if (result) { crlsAndCertificates.push({ - crl: crls[i100], + crl: crls[i], certificate: issuerCertificates[j] }); break; @@ -33909,8 +32852,8 @@ class CertificateChainValidationEngine { if (!hashAlgorithm.hash) { return 1; } - for(let i101 = 0; i101 < this.ocsps.length; i101++){ - const ocsp = this.ocsps[i101]; + for(let i = 0; i < this.ocsps.length; i++){ + const ocsp = this.ocsps[i]; const result = await ocsp.getCertificateStatus(certificate, issuerCertificate, crypto1); if (result.isForCertificate) { if (result.status === 0) return 0; @@ -33937,8 +32880,8 @@ class CertificateChainValidationEngine { if (extension.extnID === id_KeyUsage) { keyUsagePresent = true; const view = new Uint8Array(extension.parsedValue.valueBlock.valueHex); - if ((view[0] & 4) === 4) mustBeCA = true; - if ((view[0] & 2) === 2) cRLSign = true; + if ((view[0] & 0x04) === 0x04) mustBeCA = true; + if ((view[0] & 0x02) === 0x02) cRLSign = true; } if (extension.extnID === id_BasicConstraints) { if ("cA" in extension.parsedValue) { @@ -33982,8 +32925,8 @@ class CertificateChainValidationEngine { }; } const basicCheck = async (path, checkDate)=>{ - for(let i102 = 0; i102 < path.length; i102++){ - if (path[i102].notBefore.value > checkDate || path[i102].notAfter.value < checkDate) { + for(let i = 0; i < path.length; i++){ + if (path[i].notBefore.value > checkDate || path[i].notAfter.value < checkDate) { return { result: false, resultCode: 8, @@ -33998,9 +32941,9 @@ class CertificateChainValidationEngine { resultMessage: "Too short certificate path" }; } - for(let i10 = path.length - 2; i10 >= 0; i10--){ - if (path[i10].issuer.isEqual(path[i10].subject) === false) { - if (path[i10].issuer.isEqual(path[i10 + 1].subject) === false) { + for(let i = path.length - 2; i >= 0; i--){ + if (path[i].issuer.isEqual(path[i].subject) === false) { + if (path[i].issuer.isEqual(path[i + 1].subject) === false) { return { result: false, resultCode: 10, @@ -34010,14 +32953,14 @@ class CertificateChainValidationEngine { } } if (this.crls.length !== 0 || this.ocsps.length !== 0) { - for(let i103 = 0; i103 < path.length - 1; i103++){ + for(let i = 0; i < path.length - 1; i++){ let ocspResult = 2; let crlResult = { status: 0, statusMessage: EMPTY_STRING1 }; if (this.ocsps.length !== 0) { - ocspResult = await findOCSP(path[i103], path[i103 + 1]); + ocspResult = await findOCSP(path[i], path[i + 1]); switch(ocspResult){ case 0: continue; @@ -34030,10 +32973,10 @@ class CertificateChainValidationEngine { } } if (this.crls.length !== 0) { - crlResult = await findCRL(path[i103]); + crlResult = await findCRL(path[i]); if (crlResult.status === 0 && crlResult.result) { for(let j = 0; j < crlResult.result.length; j++){ - const isCertificateRevoked = crlResult.result[j].crl.isCertificateRevoked(path[i103]); + const isCertificateRevoked = crlResult.result[j].crl.isCertificateRevoked(path[i]); if (isCertificateRevoked) { return { result: false, @@ -34052,11 +32995,7 @@ class CertificateChainValidationEngine { } } else { if (passedWhenNotRevValues === false) { - throw { - result: false, - resultCode: 11, - resultMessage: `No revocation values found for one of certificates: ${crlResult.statusMessage}` - }; + throw new ChainValidationError(ChainValidationCode.noRevocation, `No revocation values found for one of certificates: ${crlResult.statusMessage}`); } } } else { @@ -34069,7 +33008,7 @@ class CertificateChainValidationEngine { } } if (ocspResult === 2 && crlResult.status === 2 && passedWhenNotRevValues) { - const issuerCertificate = path[i103 + 1]; + const issuerCertificate = path[i + 1]; let extensionFound = false; if (issuerCertificate.extensions) { for (const extension of issuerCertificate.extensions){ @@ -34083,17 +33022,13 @@ class CertificateChainValidationEngine { } } if (extensionFound) { - throw { - result: false, - resultCode: 11, - resultMessage: `No revocation values found for one of certificates: ${crlResult.statusMessage}` - }; + throw new ChainValidationError(ChainValidationCode.noRevocation, `No revocation values found for one of certificates: ${crlResult.statusMessage}`); } } } } - for (const [i11, cert] of path.entries()){ - if (!i11) { + for (const [i, cert] of path.entries()){ + if (!i) { continue; } const result = await checkForCA(cert); @@ -34111,32 +33046,29 @@ class CertificateChainValidationEngine { }; localCerts.push(...this.trustedCerts); localCerts.push(...this.certs); - for(let i8 = 0; i8 < localCerts.length; i8++){ + for(let i = 0; i < localCerts.length; i++){ for(let j = 0; j < localCerts.length; j++){ - if (i8 === j) continue; - if (BufferSourceConverter.isEqual(localCerts[i8].tbsView, localCerts[j].tbsView)) { + if (i === j) continue; + if (BufferSourceConverter.isEqual(localCerts[i].tbsView, localCerts[j].tbsView)) { localCerts.splice(j, 1); - i8 = 0; + i = 0; break; } } } - let result1; + const leafCert = localCerts[localCerts.length - 1]; + let result; const certificatePath = [ - localCerts[localCerts.length - 1] + leafCert ]; - result1 = await buildPath(localCerts[localCerts.length - 1], crypto1); - if (result1.length === 0) { - throw { - result: false, - resultCode: 60, - resultMessage: "Unable to find certificate path" - }; + result = await buildPath(leafCert, crypto1); + if (result.length === 0) { + throw new ChainValidationError(ChainValidationCode.noPath, "Unable to find certificate path"); } - for(let i5 = 0; i5 < result1.length; i5++){ + for(let i = 0; i < result.length; i++){ let found = false; - for(let j = 0; j < result1[i5].length; j++){ - const certificate = result1[i5][j]; + for(let j = 0; j < result[i].length; j++){ + const certificate = result[i][j]; for(let k = 0; k < this.trustedCerts.length; k++){ if (BufferSourceConverter.isEqual(certificate.tbsView, this.trustedCerts[k].tbsView)) { found = true; @@ -34146,31 +33078,27 @@ class CertificateChainValidationEngine { if (found) break; } if (!found) { - result1.splice(i5, 1); - i5 = 0; + result.splice(i, 1); + i = 0; } } - if (result1.length === 0) { - throw { - result: false, - resultCode: 97, - resultMessage: "No valid certificate paths found" - }; + if (result.length === 0) { + throw new ChainValidationError(ChainValidationCode.noValidPath, "No valid certificate paths found"); } - let shortestLength = result1[0].length; + let shortestLength = result[0].length; let shortestIndex = 0; - for(let i6 = 0; i6 < result1.length; i6++){ - if (result1[i6].length < shortestLength) { - shortestLength = result1[i6].length; - shortestIndex = i6; + for(let i = 0; i < result.length; i++){ + if (result[i].length < shortestLength) { + shortestLength = result[i].length; + shortestIndex = i; } } - for(let i7 = 0; i7 < result1[shortestIndex].length; i7++)certificatePath.push(result1[shortestIndex][i7]); - result1 = await basicCheck(certificatePath, this.checkDate); - if (result1.result === false) throw result1; + for(let i = 0; i < result[shortestIndex].length; i++)certificatePath.push(result[shortestIndex][i]); + result = await basicCheck(certificatePath, this.checkDate); + if (result.result === false) throw result; return certificatePath; } - async verify(parameters = {}, crypto = getCrypto(true)) { + async verify(parameters = {}, crypto1 = getCrypto(true)) { function compareDNSName(name, constraint) { const namePrepared = stringPrep(name); const constraintPrepared = stringPrep(constraint); @@ -34181,14 +33109,14 @@ class CertificateChainValidationEngine { if (nameLen === 0 || constrLen === 0 || nameLen < constrLen) { return false; } - for(let i104 = 0; i104 < nameLen; i104++){ - if (nameSplitted[i104].length === 0) { + for(let i = 0; i < nameLen; i++){ + if (nameSplitted[i].length === 0) { return false; } } - for(let i12 = 0; i12 < constrLen; i12++){ - if (constraintSplitted[i12].length === 0) { - if (i12 === 0) { + for(let i = 0; i < constrLen; i++){ + if (constraintSplitted[i].length === 0) { + if (i === 0) { if (constrLen === 1) { return false; } @@ -34197,11 +33125,11 @@ class CertificateChainValidationEngine { return false; } } - for(let i13 = 0; i13 < constrLen; i13++){ - if (constraintSplitted[constrLen - 1 - i13].length === 0) { + for(let i = 0; i < constrLen; i++){ + if (constraintSplitted[constrLen - 1 - i].length === 0) { continue; } - if (nameSplitted[nameLen - 1 - i13].localeCompare(constraintSplitted[constrLen - 1 - i13]) !== 0) { + if (nameSplitted[nameLen - 1 - i].localeCompare(constraintSplitted[constrLen - 1 - i]) !== 0) { return false; } } @@ -34232,9 +33160,9 @@ class CertificateChainValidationEngine { const cs = constraintPrepared.split("/"); if (cs.length > 1) return false; if (ns.length > 1) { - for(let i105 = 0; i105 < ns.length; i105++){ - if (ns[i105].length > 0 && ns[i105].charAt(ns[i105].length - 1) !== ":") { - const nsPort = ns[i105].split(":"); + for(let i = 0; i < ns.length; i++){ + if (ns[i].length > 0 && ns[i].charAt(ns[i].length - 1) !== ":") { + const nsPort = ns[i].split(":"); namePrepared = nsPort[0]; break; } @@ -34253,14 +33181,14 @@ class CertificateChainValidationEngine { const nameView = name.valueBlock.valueHexView; const constraintView = constraint.valueBlock.valueHexView; if (nameView.length === 4 && constraintView.length === 8) { - for(let i106 = 0; i106 < 4; i106++){ - if ((nameView[i106] ^ constraintView[i106]) & constraintView[i106 + 4]) return false; + for(let i = 0; i < 4; i++){ + if ((nameView[i] ^ constraintView[i]) & constraintView[i + 4]) return false; } return true; } if (nameView.length === 16 && constraintView.length === 32) { - for(let i107 = 0; i107 < 16; i107++){ - if ((nameView[i107] ^ constraintView[i107]) & constraintView[i107 + 16]) return false; + for(let i = 0; i < 16; i++){ + if ((nameView[i] ^ constraintView[i]) & constraintView[i + 16]) return false; } return true; } @@ -34271,11 +33199,11 @@ class CertificateChainValidationEngine { if (name.typesAndValues.length < constraint.typesAndValues.length) return false; let result = true; let nameStart = 0; - for(let i108 = 0; i108 < constraint.typesAndValues.length; i108++){ + for(let i = 0; i < constraint.typesAndValues.length; i++){ let localResult = false; for(let j = nameStart; j < name.typesAndValues.length; j++){ - localResult = name.typesAndValues[j].isEqual(constraint.typesAndValues[i108]); - if (name.typesAndValues[j].type === constraint.typesAndValues[i108].type) result = result && localResult; + localResult = name.typesAndValues[j].isEqual(constraint.typesAndValues[i]); + if (name.typesAndValues[j].type === constraint.typesAndValues[i].type) result = result && localResult; if (localResult === true) { if (nameStart === 0 || nameStart === j) { nameStart = j + 1; @@ -34314,7 +33242,7 @@ class CertificateChainValidationEngine { let excludedSubtrees = initialExcludedSubtreesSet; const requiredNameForms = initialRequiredNameForms; let pathDepth = 1; - this.certs = await this.sort(passedWhenNotRevValues, crypto); + this.certs = await this.sort(passedWhenNotRevValues, crypto1); const allPolicies = []; allPolicies.push(id_AnyPolicy); const policiesAndCerts = []; @@ -34324,34 +33252,34 @@ class CertificateChainValidationEngine { const policyMappings = new Array(this.certs.length - 1); const certPolicies = new Array(this.certs.length - 1); let explicitPolicyStart = explicitPolicyIndicator ? this.certs.length - 1 : -1; - for(let i109 = this.certs.length - 2; i109 >= 0; i109--, pathDepth++){ - const cert = this.certs[i109]; + for(let i = this.certs.length - 2; i >= 0; i--, pathDepth++){ + const cert = this.certs[i]; if (cert.extensions) { for(let j = 0; j < cert.extensions.length; j++){ const extension = cert.extensions[j]; if (extension.extnID === id_CertificatePolicies) { - certPolicies[i109] = extension.parsedValue; - for(let s3 = 0; s3 < allPolicies.length; s3++){ - if (allPolicies[s3] === id_AnyPolicy) { - delete policiesAndCerts[s3][i109]; + certPolicies[i] = extension.parsedValue; + for(let s = 0; s < allPolicies.length; s++){ + if (allPolicies[s] === id_AnyPolicy) { + delete policiesAndCerts[s][i]; break; } } for(let k = 0; k < extension.parsedValue.certificatePolicies.length; k++){ let policyIndex = -1; const policyId = extension.parsedValue.certificatePolicies[k].policyIdentifier; - for(let s4 = 0; s4 < allPolicies.length; s4++){ - if (policyId === allPolicies[s4]) { - policyIndex = s4; + for(let s = 0; s < allPolicies.length; s++){ + if (policyId === allPolicies[s]) { + policyIndex = s; break; } } if (policyIndex === -1) { allPolicies.push(policyId); const certArray = new Array(this.certs.length - 1); - certArray[i109] = true; + certArray[i] = true; policiesAndCerts.push(certArray); - } else policiesAndCerts[policyIndex][i109] = true; + } else policiesAndCerts[policyIndex][i] = true; } } if (extension.extnID === id_PolicyMappings) { @@ -34362,13 +33290,13 @@ class CertificateChainValidationEngine { resultMessage: "Policy mapping prohibited" }; } - policyMappings[i109] = extension.parsedValue; + policyMappings[i] = extension.parsedValue; } if (extension.extnID === id_PolicyConstraints) { if (explicitPolicyIndicator === false) { if (extension.parsedValue.requireExplicitPolicy === 0) { explicitPolicyIndicator = true; - explicitPolicyStart = i109; + explicitPolicyStart = i; } else { if (pendingConstraints[0] === false) { pendingConstraints[0] = true; @@ -34404,14 +33332,14 @@ class CertificateChainValidationEngine { break; } } - if (policyIndex !== -1) delete policiesAndCerts[0][i109]; + if (policyIndex !== -1) delete policiesAndCerts[0][i]; } if (explicitPolicyIndicator === false) { if (pendingConstraints[0] === true) { explicitPolicyPending--; if (explicitPolicyPending === 0) { explicitPolicyIndicator = true; - explicitPolicyStart = i109; + explicitPolicyStart = i; pendingConstraints[0] = false; } } @@ -34436,10 +33364,10 @@ class CertificateChainValidationEngine { } } } - for(let i14 = 0; i14 < this.certs.length - 1; i14++){ - if (i14 < this.certs.length - 2 && typeof policyMappings[i14 + 1] !== "undefined") { - for(let k = 0; k < policyMappings[i14 + 1].mappings.length; k++){ - if (policyMappings[i14 + 1].mappings[k].issuerDomainPolicy === id_AnyPolicy || policyMappings[i14 + 1].mappings[k].subjectDomainPolicy === id_AnyPolicy) { + for(let i = 0; i < this.certs.length - 1; i++){ + if (i < this.certs.length - 2 && typeof policyMappings[i + 1] !== "undefined") { + for(let k = 0; k < policyMappings[i + 1].mappings.length; k++){ + if (policyMappings[i + 1].mappings[k].issuerDomainPolicy === id_AnyPolicy || policyMappings[i + 1].mappings[k].subjectDomainPolicy === id_AnyPolicy) { return { result: false, resultCode: 99, @@ -34448,15 +33376,15 @@ class CertificateChainValidationEngine { } let issuerDomainPolicyIndex = -1; let subjectDomainPolicyIndex = -1; - for(let n4 = 0; n4 < allPolicies.length; n4++){ - if (allPolicies[n4] === policyMappings[i14 + 1].mappings[k].issuerDomainPolicy) issuerDomainPolicyIndex = n4; - if (allPolicies[n4] === policyMappings[i14 + 1].mappings[k].subjectDomainPolicy) subjectDomainPolicyIndex = n4; + for(let n = 0; n < allPolicies.length; n++){ + if (allPolicies[n] === policyMappings[i + 1].mappings[k].issuerDomainPolicy) issuerDomainPolicyIndex = n; + if (allPolicies[n] === policyMappings[i + 1].mappings[k].subjectDomainPolicy) subjectDomainPolicyIndex = n; } - if (typeof policiesAndCerts[issuerDomainPolicyIndex][i14] !== "undefined") delete policiesAndCerts[issuerDomainPolicyIndex][i14]; - for(let j = 0; j < certPolicies[i14].certificatePolicies.length; j++){ - if (policyMappings[i14 + 1].mappings[k].subjectDomainPolicy === certPolicies[i14].certificatePolicies[j].policyIdentifier) { + if (typeof policiesAndCerts[issuerDomainPolicyIndex][i] !== "undefined") delete policiesAndCerts[issuerDomainPolicyIndex][i]; + for(let j = 0; j < certPolicies[i].certificatePolicies.length; j++){ + if (policyMappings[i + 1].mappings[k].subjectDomainPolicy === certPolicies[i].certificatePolicies[j].policyIdentifier) { if (issuerDomainPolicyIndex !== -1 && subjectDomainPolicyIndex !== -1) { - for(let m = 0; m <= i14; m++){ + for(let m = 0; m <= i; m++){ if (typeof policiesAndCerts[subjectDomainPolicyIndex][m] !== "undefined") { policiesAndCerts[issuerDomainPolicyIndex][m] = true; delete policiesAndCerts[subjectDomainPolicyIndex][m]; @@ -34468,21 +33396,21 @@ class CertificateChainValidationEngine { } } } - for(let i15 = 0; i15 < allPolicies.length; i15++){ - if (allPolicies[i15] === id_AnyPolicy) { - for(let j = 0; j < explicitPolicyStart; j++)delete policiesAndCerts[i15][j]; + for(let i = 0; i < allPolicies.length; i++){ + if (allPolicies[i] === id_AnyPolicy) { + for(let j = 0; j < explicitPolicyStart; j++)delete policiesAndCerts[i][j]; } } const authConstrPolicies = []; - for(let i16 = 0; i16 < policiesAndCerts.length; i16++){ + for(let i = 0; i < policiesAndCerts.length; i++){ let found = true; for(let j = 0; j < this.certs.length - 1; j++){ let anyPolicyFound = false; - if (j < explicitPolicyStart && allPolicies[i16] === id_AnyPolicy && allPolicies.length > 1) { + if (j < explicitPolicyStart && allPolicies[i] === id_AnyPolicy && allPolicies.length > 1) { found = false; break; } - if (typeof policiesAndCerts[i16][j] === "undefined") { + if (typeof policiesAndCerts[i][j] === "undefined") { if (j >= explicitPolicyStart) { for(let k = 0; k < allPolicies.length; k++){ if (allPolicies[k] === id_AnyPolicy) { @@ -34497,17 +33425,17 @@ class CertificateChainValidationEngine { } } } - if (found === true) authConstrPolicies.push(allPolicies[i16]); + if (found === true) authConstrPolicies.push(allPolicies[i]); } let userConstrPolicies = []; if (initialPolicySet.length === 1 && initialPolicySet[0] === id_AnyPolicy && explicitPolicyIndicator === false) userConstrPolicies = initialPolicySet; else { if (authConstrPolicies.length === 1 && authConstrPolicies[0] === id_AnyPolicy) userConstrPolicies = initialPolicySet; else { - for(let i115 = 0; i115 < authConstrPolicies.length; i115++){ + for(let i = 0; i < authConstrPolicies.length; i++){ for(let j = 0; j < initialPolicySet.length; j++){ - if (initialPolicySet[j] === authConstrPolicies[i115] || initialPolicySet[j] === id_AnyPolicy) { - userConstrPolicies.push(authConstrPolicies[i115]); + if (initialPolicySet[j] === authConstrPolicies[i] || initialPolicySet[j] === id_AnyPolicy) { + userConstrPolicies.push(authConstrPolicies[i]); break; } } @@ -34527,8 +33455,8 @@ class CertificateChainValidationEngine { if (userConstrPolicies.length === 0) return policyResult; if (policyResult.result === false) return policyResult; pathDepth = 1; - for(let i17 = this.certs.length - 2; i17 >= 0; i17--, pathDepth++){ - const cert = this.certs[i17]; + for(let i = this.certs.length - 2; i >= 0; i--, pathDepth++){ + const cert = this.certs[i]; let subjectAltNames = []; let certPermittedSubtrees = []; let certExcludedSubtrees = []; @@ -34574,22 +33502,22 @@ class CertificateChainValidationEngine { [], [] ]; - for(let j4 = 0; j4 < permittedSubtrees.length; j4++){ - switch(permittedSubtrees[j4].base.type){ + for(let j = 0; j < permittedSubtrees.length; j++){ + switch(permittedSubtrees[j].base.type){ case 1: - constrGroups[0].push(permittedSubtrees[j4]); + constrGroups[0].push(permittedSubtrees[j]); break; case 2: - constrGroups[1].push(permittedSubtrees[j4]); + constrGroups[1].push(permittedSubtrees[j]); break; case 4: - constrGroups[2].push(permittedSubtrees[j4]); + constrGroups[2].push(permittedSubtrees[j]); break; case 6: - constrGroups[3].push(permittedSubtrees[j4]); + constrGroups[3].push(permittedSubtrees[j]); break; case 7: - constrGroups[4].push(permittedSubtrees[j4]); + constrGroups[4].push(permittedSubtrees[j]); break; default: } @@ -34663,40 +33591,40 @@ class CertificateChainValidationEngine { } } let excluded = false; - for(let j5 = 0; j5 < excludedSubtrees.length; j5++){ - switch(excludedSubtrees[j5].base.type){ + for(let j = 0; j < excludedSubtrees.length; j++){ + switch(excludedSubtrees[j].base.type){ case 1: if (subjectAltNames.length >= 0) { for(let k = 0; k < subjectAltNames.length; k++){ - if (subjectAltNames[k].type === 1) excluded = excluded || compareRFC822Name(subjectAltNames[k].value, excludedSubtrees[j5].base.value); + if (subjectAltNames[k].type === 1) excluded = excluded || compareRFC822Name(subjectAltNames[k].value, excludedSubtrees[j].base.value); } } else { for(let k = 0; k < cert.subject.typesAndValues.length; k++){ - if (cert.subject.typesAndValues[k].type === "1.2.840.113549.1.9.1" || cert.subject.typesAndValues[k].type === "0.9.2342.19200300.100.1.3") excluded = excluded || compareRFC822Name(cert.subject.typesAndValues[k].value.valueBlock.value, excludedSubtrees[j5].base.value); + if (cert.subject.typesAndValues[k].type === "1.2.840.113549.1.9.1" || cert.subject.typesAndValues[k].type === "0.9.2342.19200300.100.1.3") excluded = excluded || compareRFC822Name(cert.subject.typesAndValues[k].value.valueBlock.value, excludedSubtrees[j].base.value); } } break; case 2: if (subjectAltNames.length > 0) { for(let k = 0; k < subjectAltNames.length; k++){ - if (subjectAltNames[k].type === 2) excluded = excluded || compareDNSName(subjectAltNames[k].value, excludedSubtrees[j5].base.value); + if (subjectAltNames[k].type === 2) excluded = excluded || compareDNSName(subjectAltNames[k].value, excludedSubtrees[j].base.value); } } break; case 4: - excluded = excluded || compareDirectoryName(cert.subject, excludedSubtrees[j5].base.value); + excluded = excluded || compareDirectoryName(cert.subject, excludedSubtrees[j].base.value); break; case 6: if (subjectAltNames.length > 0) { for(let k = 0; k < subjectAltNames.length; k++){ - if (subjectAltNames[k].type === 6) excluded = excluded || compareUniformResourceIdentifier(subjectAltNames[k].value, excludedSubtrees[j5].base.value); + if (subjectAltNames[k].type === 6) excluded = excluded || compareUniformResourceIdentifier(subjectAltNames[k].value, excludedSubtrees[j].base.value); } } break; case 7: if (subjectAltNames.length > 0) { for(let k = 0; k < subjectAltNames.length; k++){ - if (subjectAltNames[k].type === 7) excluded = excluded || compareIPAddress(subjectAltNames[k].value, excludedSubtrees[j5].base.value); + if (subjectAltNames[k].type === 7) excluded = excluded || compareIPAddress(subjectAltNames[k].value, excludedSubtrees[j].base.value); } } break; @@ -34714,21 +33642,30 @@ class CertificateChainValidationEngine { excludedSubtrees = excludedSubtrees.concat(certExcludedSubtrees); } return policyResult; - } catch (error2) { - if (error2 instanceof Object) { - if ("resultMessage" in error2) return error2; - if ("message" in error2) { + } catch (error) { + if (error instanceof Error) { + if (error instanceof ChainValidationError) { return { result: false, - resultCode: -1, - resultMessage: error2.message + resultCode: error.code, + resultMessage: error.message, + error: error }; } + return { + result: false, + resultCode: ChainValidationCode.unknown, + resultMessage: error.message, + error: error + }; + } + if (error && typeof error === "object" && "resultMessage" in error) { + return error; } return { result: false, resultCode: -1, - resultMessage: error2 + resultMessage: `${error}` }; } } @@ -34845,8 +33782,7 @@ class BasicOCSPResponse extends PkiObject { if (BASIC_OCSP_RESPONSE_CERTS in asn1.result) { this.certs = Array.from(asn1.result[BASIC_OCSP_RESPONSE_CERTS], (element)=>new Certificate({ schema: element - }) - ); + })); } } toSchema() { @@ -34862,8 +33798,7 @@ class BasicOCSPResponse extends PkiObject { }, value: [ new Sequence({ - value: Array.from(this.certs, (o79)=>o79.toSchema() - ) + value: Array.from(this.certs, (o)=>o.toSchema()) }) ] })); @@ -34879,12 +33814,11 @@ class BasicOCSPResponse extends PkiObject { signature: this.signature.toJSON() }; if (this.certs) { - res.certs = Array.from(this.certs, (o80)=>o80.toJSON() - ); + res.certs = Array.from(this.certs, (o)=>o.toJSON()); } return res; } - async getCertificateStatus(certificate, issuerCertificate, crypto = getCrypto(true)) { + async getCertificateStatus(certificate, issuerCertificate, crypto1 = getCrypto(true)) { const result = { isForCertificate: false, status: 2 @@ -34892,7 +33826,7 @@ class BasicOCSPResponse extends PkiObject { const hashesObject = {}; const certIDs = []; for (const response of this.tbsResponseData.responses){ - const hashAlgorithm = crypto.getAlgorithmByOID(response.certID.hashAlgorithm.algorithmId, true, "CertID.hashAlgorithm"); + const hashAlgorithm = crypto1.getAlgorithmByOID(response.certID.hashAlgorithm.algorithmId, true, "CertID.hashAlgorithm"); if (!hashesObject[hashAlgorithm.name]) { hashesObject[hashAlgorithm.name] = 1; const certID = new CertID(); @@ -34900,20 +33834,20 @@ class BasicOCSPResponse extends PkiObject { await certID.createForCertificate(certificate, { hashAlgorithm: hashAlgorithm.name, issuerCertificate - }, crypto); + }, crypto1); } } - for (const response1 of this.tbsResponseData.responses){ + for (const response of this.tbsResponseData.responses){ for (const id of certIDs){ - if (response1.certID.isEqual(id)) { + if (response.certID.isEqual(id)) { result.isForCertificate = true; try { - switch(response1.certStatus.idBlock.isConstructed){ + switch(response.certStatus.idBlock.isConstructed){ case true: - if (response1.certStatus.idBlock.tagNumber === 1) result.status = 1; + if (response.certStatus.idBlock.tagNumber === 1) result.status = 1; break; case false: - switch(response1.certStatus.idBlock.tagNumber){ + switch(response.certStatus.idBlock.tagNumber){ case 0: result.status = 0; break; @@ -34932,25 +33866,25 @@ class BasicOCSPResponse extends PkiObject { } return result; } - async sign(privateKey, hashAlgorithm = "SHA-1", crypto = getCrypto(true)) { + async sign(privateKey, hashAlgorithm = "SHA-1", crypto1 = getCrypto(true)) { if (!privateKey) { throw new Error("Need to provide a private key for signing"); } - const signatureParams = await crypto.getSignatureParameters(privateKey, hashAlgorithm); + const signatureParams = await crypto1.getSignatureParameters(privateKey, hashAlgorithm); const algorithm = signatureParams.parameters.algorithm; if (!("name" in algorithm)) { throw new Error("Empty algorithm"); } this.signatureAlgorithm = signatureParams.signatureAlgorithm; this.tbsResponseData.tbsView = new Uint8Array(this.tbsResponseData.toSchema(true).toBER()); - const signature = await crypto.signWithPrivateKey(this.tbsResponseData.tbsView, privateKey, { + const signature = await crypto1.signWithPrivateKey(this.tbsResponseData.tbsView, privateKey, { algorithm }); this.signature = new BitString({ valueHex: signature }); } - async verify(params = {}, crypto = getCrypto(true)) { + async verify(params = {}, crypto1 = getCrypto(true)) { let signerCert = null; let certIndex = -1; const trustedCerts = params.trustedCerts || []; @@ -34967,12 +33901,12 @@ class BasicOCSPResponse extends PkiObject { } break; case this.tbsResponseData.responderID instanceof OctetString: - for (const [index1, cert] of this.certs.entries()){ - const hash = await crypto.digest({ + for (const [index, cert] of this.certs.entries()){ + const hash = await crypto1.digest({ name: "sha-1" }, cert.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView); if (isEqualBuffer(hash, this.tbsResponseData.responderID.valueBlock.valueHex)) { - certIndex = index1; + certIndex = index; break; } } @@ -34985,8 +33919,8 @@ class BasicOCSPResponse extends PkiObject { const additionalCerts = [ signerCert ]; - for (const cert1 of this.certs){ - const caCert = await checkCA(cert1, signerCert); + for (const cert of this.certs){ + const caCert = await checkCA(cert, signerCert); if (caCert) { additionalCerts.push(caCert); } @@ -34995,11 +33929,11 @@ class BasicOCSPResponse extends PkiObject { certs: additionalCerts, trustedCerts }); - const verificationResult = await certChain.verify({}, crypto); + const verificationResult = await certChain.verify({}, crypto1); if (!verificationResult.result) { throw new Error("Validation of signer's certificate failed"); } - return crypto.verifyWithPublicKey(this.tbsResponseData.tbsView, this.signature, this.certs[certIndex].subjectPublicKeyInfo, this.signatureAlgorithm); + return crypto1.verifyWithPublicKey(this.tbsResponseData.tbsView, this.signature, this.certs[certIndex].subjectPublicKeyInfo, this.signatureAlgorithm); } } BasicOCSPResponse.CLASS_NAME = "BasicOCSPResponse"; @@ -35136,8 +34070,7 @@ class CertificationRequest extends PkiObject { if (CSR_INFO_ATTRS in asn1.result) { this.attributes = Array.from(asn1.result[CSR_INFO_ATTRS], (element)=>new Attribute({ schema: element - }) - ); + })); } this.signatureAlgorithm = new AlgorithmIdentifier({ schema: asn1.result.signatureAlgorithm @@ -35158,8 +34091,7 @@ class CertificationRequest extends PkiObject { tagClass: 3, tagNumber: 0 }, - value: Array.from(this.attributes || [], (o81)=>o81.toSchema() - ) + value: Array.from(this.attributes || [], (o)=>o.toSchema()) })); } return new Sequence({ @@ -35196,29 +34128,28 @@ class CertificationRequest extends PkiObject { signatureValue: this.signatureValue.toJSON() }; if (ATTRIBUTES$1 in this) { - object.attributes = Array.from(this.attributes || [], (o82)=>o82.toJSON() - ); + object.attributes = Array.from(this.attributes || [], (o)=>o.toJSON()); } return object; } - async sign(privateKey, hashAlgorithm = "SHA-1", crypto = getCrypto(true)) { + async sign(privateKey, hashAlgorithm = "SHA-1", crypto1 = getCrypto(true)) { if (!privateKey) { throw new Error("Need to provide a private key for signing"); } - const signatureParams = await crypto.getSignatureParameters(privateKey, hashAlgorithm); + const signatureParams = await crypto1.getSignatureParameters(privateKey, hashAlgorithm); const parameters = signatureParams.parameters; this.signatureAlgorithm = signatureParams.signatureAlgorithm; this.tbsView = new Uint8Array(this.encodeTBS().toBER()); - const signature = await crypto.signWithPrivateKey(this.tbsView, privateKey, parameters); + const signature = await crypto1.signWithPrivateKey(this.tbsView, privateKey, parameters); this.signatureValue = new BitString({ valueHex: signature }); } - async verify(crypto = getCrypto(true)) { - return crypto.verifyWithPublicKey(this.tbsView, this.signatureValue, this.subjectPublicKeyInfo, this.signatureAlgorithm); + async verify(crypto1 = getCrypto(true)) { + return crypto1.verifyWithPublicKey(this.tbsView, this.signatureValue, this.subjectPublicKeyInfo, this.signatureAlgorithm); } - async getPublicKey(parameters, crypto = getCrypto(true)) { - return crypto.getPublicKey(this.subjectPublicKeyInfo, this.signatureAlgorithm, parameters); + async getPublicKey(parameters, crypto1 = getCrypto(true)) { + return crypto1.getPublicKey(this.subjectPublicKeyInfo, this.signatureAlgorithm, parameters); } } CertificationRequest.CLASS_NAME = "CertificationRequest"; @@ -35334,8 +34265,8 @@ class EncapsulatedContentInfo extends PkiObject { const pieceView = new Uint8Array(viewHex, offset, offset + 65536 > viewHex.byteLength ? viewHex.byteLength - offset : 65536); const _array = new ArrayBuffer(pieceView.length); const _view = new Uint8Array(_array); - for(let i116 = 0; i116 < _view.length; i116++){ - _view[i116] = pieceView[i116]; + for(let i = 0; i < _view.length; i++){ + _view[i] = pieceView[i]; } constrString.valueBlock.value.push(new OctetString({ valueHex: _array @@ -35569,11 +34500,11 @@ class MessageImprint extends PkiObject { this.fromSchema(parameters.schema); } } - static async create(hashAlgorithm, message7, crypto = getCrypto(true)) { - const hashAlgorithmOID = crypto.getOIDByAlgorithm({ + static async create(hashAlgorithm, message, crypto1 = getCrypto(true)) { + const hashAlgorithmOID = crypto1.getOIDByAlgorithm({ name: hashAlgorithm }, true, "hashAlgorithm"); - const hashedMessage = await crypto.digest(hashAlgorithm, message7); + const hashedMessage = await crypto1.digest(hashAlgorithm, message); const res = new MessageImprint({ hashAlgorithm: new AlgorithmIdentifier({ algorithmId: hashAlgorithmOID, @@ -35734,8 +34665,7 @@ class Request extends PkiObject { if (SINGLE_REQUEST_EXTENSIONS in asn1.result) { this.singleRequestExtensions = Array.from(asn1.result.singleRequestExtensions.valueBlock.value, (element)=>new Extension({ schema: element - }) - ); + })); } } toSchema() { @@ -35750,8 +34680,7 @@ class Request extends PkiObject { }, value: [ new Sequence({ - value: Array.from(this.singleRequestExtensions, (o83)=>o83.toSchema() - ) + value: Array.from(this.singleRequestExtensions, (o)=>o.toSchema()) }) ] })); @@ -35765,8 +34694,7 @@ class Request extends PkiObject { reqCert: this.reqCert.toJSON() }; if (this.singleRequestExtensions) { - res.singleRequestExtensions = Array.from(this.singleRequestExtensions, (o84)=>o84.toJSON() - ); + res.singleRequestExtensions = Array.from(this.singleRequestExtensions, (o)=>o.toJSON()); } return res; } @@ -35911,12 +34839,10 @@ class TBSRequest extends PkiObject { }); this.requestList = Array.from(asn1.result[TBS_REQUEST_REQUESTS], (element)=>new Request({ schema: element - }) - ); + })); if (TBS_REQUEST_REQUEST_EXTENSIONS in asn1.result) this.requestExtensions = Array.from(asn1.result[TBS_REQUEST_REQUEST_EXTENSIONS].valueBlock.value, (element)=>new Extension({ schema: element - }) - ); + })); } toSchema(encodeFlag = false) { let tbsSchema; @@ -35955,8 +34881,7 @@ class TBSRequest extends PkiObject { })); } outputArray.push(new Sequence({ - value: Array.from(this.requestList, (o85)=>o85.toSchema() - ) + value: Array.from(this.requestList, (o)=>o.toSchema()) })); if (this.requestExtensions) { outputArray.push(new Constructed({ @@ -35966,8 +34891,7 @@ class TBSRequest extends PkiObject { }, value: [ new Sequence({ - value: Array.from(this.requestExtensions, (o86)=>o86.toSchema() - ) + value: Array.from(this.requestExtensions, (o)=>o.toSchema()) }) ] })); @@ -35984,11 +34908,9 @@ class TBSRequest extends PkiObject { if (this.requestorName) { res.requestorName = this.requestorName.toJSON(); } - res.requestList = Array.from(this.requestList, (o87)=>o87.toJSON() - ); + res.requestList = Array.from(this.requestList, (o)=>o.toJSON()); if (this.requestExtensions) { - res.requestExtensions = Array.from(this.requestExtensions, (o88)=>o88.toJSON() - ); + res.requestExtensions = Array.from(this.requestExtensions, (o)=>o.toJSON()); } return res; } @@ -36086,8 +35008,7 @@ class Signature extends PkiObject { this.signature = asn1.result.signature; if (CERTS in asn1.result) this.certs = Array.from(asn1.result.certs, (element)=>new Certificate({ schema: element - }) - ); + })); } toSchema() { const outputArray = []; @@ -36102,8 +35023,7 @@ class Signature extends PkiObject { }, value: [ new Sequence({ - value: Array.from(this.certs, (o89)=>o89.toSchema() - ) + value: Array.from(this.certs, (o)=>o.toSchema()) }) ] })); @@ -36118,8 +35038,7 @@ class Signature extends PkiObject { signature: this.signature.toJSON() }; if (this.certs) { - res.certs = Array.from(this.certs, (o90)=>o90.toJSON() - ); + res.certs = Array.from(this.certs, (o)=>o.toJSON()); } return res; } @@ -36226,23 +35145,23 @@ class OCSPRequest extends PkiObject { } return res; } - async createForCertificate(certificate, parameters, crypto = getCrypto(true)) { + async createForCertificate(certificate, parameters, crypto1 = getCrypto(true)) { const certID = new CertID(); - await certID.createForCertificate(certificate, parameters, crypto); + await certID.createForCertificate(certificate, parameters, crypto1); this.tbsRequest.requestList.push(new Request({ reqCert: certID })); } - async sign(privateKey, hashAlgorithm = "SHA-1", crypto = getCrypto(true)) { + async sign(privateKey, hashAlgorithm = "SHA-1", crypto1 = getCrypto(true)) { ParameterError.assertEmpty(privateKey, "privateKey", "OCSPRequest.sign method"); if (!this.optionalSignature) { throw new Error("Need to create \"optionalSignature\" field before signing"); } - const signatureParams = await crypto.getSignatureParameters(privateKey, hashAlgorithm); + const signatureParams = await crypto1.getSignatureParameters(privateKey, hashAlgorithm); const parameters = signatureParams.parameters; this.optionalSignature.signatureAlgorithm = signatureParams.signatureAlgorithm; const tbs = this.tbsRequest.toSchema(true).toBER(false); - const signature = await crypto.signWithPrivateKey(tbs, privateKey, parameters); + const signature = await crypto1.signWithPrivateKey(tbs, privateKey, parameters); this.optionalSignature.signature = new BitString({ valueHex: signature }); @@ -36426,7 +35345,7 @@ class OCSPResponse extends PkiObject { } return res; } - async getCertificateStatus(certificate, issuerCertificate, crypto = getCrypto(true)) { + async getCertificateStatus(certificate, issuerCertificate, crypto1 = getCrypto(true)) { let basicResponse; const result = { isForCertificate: false, @@ -36443,18 +35362,18 @@ class OCSPResponse extends PkiObject { } catch (ex) { return result; } - return basicResponse.getCertificateStatus(certificate, issuerCertificate, crypto); + return basicResponse.getCertificateStatus(certificate, issuerCertificate, crypto1); } - async sign(privateKey, hashAlgorithm, crypto = getCrypto(true)) { - var _a3; + async sign(privateKey, hashAlgorithm, crypto1 = getCrypto(true)) { + var _a; if (this.responseBytes && this.responseBytes.responseType === id_PKIX_OCSP_Basic) { const basicResponse = BasicOCSPResponse.fromBER(this.responseBytes.response.valueBlock.valueHexView); - return basicResponse.sign(privateKey, hashAlgorithm, crypto); + return basicResponse.sign(privateKey, hashAlgorithm, crypto1); } - throw new Error(`Unknown ResponseBytes type: ${((_a3 = this.responseBytes) === null || _a3 === void 0 ? void 0 : _a3.responseType) || "Unknown"}`); + throw new Error(`Unknown ResponseBytes type: ${((_a = this.responseBytes) === null || _a === void 0 ? void 0 : _a.responseType) || "Unknown"}`); } - async verify(issuerCertificate = null, crypto = getCrypto(true)) { - var _a4; + async verify(issuerCertificate = null, crypto1 = getCrypto(true)) { + var _a; if (RESPONSE_BYTES in this === false) throw new Error("Empty ResponseBytes field"); if (this.responseBytes && this.responseBytes.responseType === id_PKIX_OCSP_Basic) { const basicResponse = BasicOCSPResponse.fromBER(this.responseBytes.response.valueBlock.valueHexView); @@ -36464,9 +35383,9 @@ class OCSPResponse extends PkiObject { } basicResponse.certs.push(issuerCertificate); } - return basicResponse.verify({}, crypto); + return basicResponse.verify({}, crypto1); } - throw new Error(`Unknown ResponseBytes type: ${((_a4 = this.responseBytes) === null || _a4 === void 0 ? void 0 : _a4.responseType) || "Unknown"}`); + throw new Error(`Unknown ResponseBytes type: ${((_a = this.responseBytes) === null || _a === void 0 ? void 0 : _a.responseType) || "Unknown"}`); } } OCSPResponse.CLASS_NAME = "OCSPResponse"; @@ -36539,15 +35458,14 @@ class SignedAndUnsignedAttributes extends PkiObject { this.type = asn1.result.idBlock.tagNumber; this.encodedValue = BufferSourceConverter.toArrayBuffer(asn1.result.valueBeforeDecodeView); const encodedView = new Uint8Array(this.encodedValue); - encodedView[0] = 49; + encodedView[0] = 0x31; if (ATTRIBUTES in asn1.result === false) { if (this.type === 0) throw new Error("Wrong structure of SignedUnsignedAttributes"); else return; } this.attributes = Array.from(asn1.result.attributes, (element)=>new Attribute({ schema: element - }) - ); + })); } toSchema() { if (SignedAndUnsignedAttributes.compareWithDefault(TYPE, this.type) || SignedAndUnsignedAttributes.compareWithDefault(ATTRIBUTES, this.attributes)) throw new Error("Incorrectly initialized \"SignedAndUnsignedAttributes\" class"); @@ -36557,16 +35475,14 @@ class SignedAndUnsignedAttributes extends PkiObject { tagClass: 3, tagNumber: this.type }, - value: Array.from(this.attributes, (o91)=>o91.toSchema() - ) + value: Array.from(this.attributes, (o)=>o.toSchema()) }); } toJSON() { if (SignedAndUnsignedAttributes.compareWithDefault(TYPE, this.type) || SignedAndUnsignedAttributes.compareWithDefault(ATTRIBUTES, this.attributes)) throw new Error("Incorrectly initialized \"SignedAndUnsignedAttributes\" class"); return { type: this.type, - attributes: Array.from(this.attributes, (o92)=>o92.toJSON() - ) + attributes: Array.from(this.attributes, (o)=>o.toJSON()) }; } } @@ -36988,8 +35904,7 @@ class TSTInfo extends PkiObject { }); if (TST_INFO_EXTENSIONS in asn1.result) this.extensions = Array.from(asn1.result[TST_INFO_EXTENSIONS], (element)=>new Extension({ schema: element - }) - ); + })); } toSchema() { const outputArray = []; @@ -37028,8 +35943,7 @@ class TSTInfo extends PkiObject { tagClass: 3, tagNumber: 1 }, - value: Array.from(this.extensions, (o93)=>o93.toSchema() - ) + value: Array.from(this.extensions, (o)=>o.toSchema()) })); } return new Sequence({ @@ -37048,11 +35962,10 @@ class TSTInfo extends PkiObject { if (this.ordering !== undefined) res.ordering = this.ordering; if (this.nonce) res.nonce = this.nonce.toJSON(); if (this.tsa) res.tsa = this.tsa.toJSON(); - if (this.extensions) res.extensions = Array.from(this.extensions, (o94)=>o94.toJSON() - ); + if (this.extensions) res.extensions = Array.from(this.extensions, (o)=>o.toJSON()); return res; } - async verify(params, crypto = getCrypto(true)) { + async verify(params, crypto1 = getCrypto(true)) { if (!params.data) { throw new Error("\"data\" is a mandatory attribute for TST_INFO verification"); } @@ -37063,8 +35976,8 @@ class TSTInfo extends PkiObject { if (params.notAfter) { if (this.genTime > params.notAfter) throw new Error("Generation time for TSTInfo object is more than notAfter value"); } - const shaAlgorithm = crypto.getAlgorithmByOID(this.messageImprint.hashAlgorithm.algorithmId, true, "MessageImprint.hashAlgorithm"); - const hash = await crypto.digest(shaAlgorithm.name, new Uint8Array(data)); + const shaAlgorithm = crypto1.getAlgorithmByOID(this.messageImprint.hashAlgorithm.algorithmId, true, "MessageImprint.hashAlgorithm"); + const hash = await crypto1.digest(shaAlgorithm.name, new Uint8Array(data)); return BufferSourceConverter.isEqual(hash, this.messageImprint.hashedMessage.valueBlock.valueHexView); } } @@ -37092,8 +36005,8 @@ const CLEAR_PROPS$3 = [ SIGNED_DATA_SIGNER_INFOS ]; class SignedDataVerifyError extends Error { - constructor({ message: message8 , code =0 , date =new Date() , signatureVerified =null , signerCertificate =null , signerCertificateVerified =null , timestampSerial =null , certificatePath =[] }){ - super(message8); + constructor({ message , code =0 , date =new Date() , signatureVerified =null , signerCertificate =null , signerCertificateVerified =null , timestampSerial =null , certificatePath =[] }){ + super(message); this.name = "SignedDataVerifyError"; this.date = date; this.code = code; @@ -37224,8 +36137,7 @@ class SignedData extends PkiObject { this.version = asn1.result[SIGNED_DATA_VERSION].valueBlock.valueDec; if (SIGNED_DATA_DIGEST_ALGORITHMS in asn1.result) this.digestAlgorithms = Array.from(asn1.result[SIGNED_DATA_DIGEST_ALGORITHMS], (algorithm)=>new AlgorithmIdentifier({ schema: algorithm - }) - ); + })); this.encapContentInfo = new EncapsulatedContentInfo({ schema: asn1.result[SIGNED_DATA_ENCAP_CONTENT_INFO] }); @@ -37251,21 +36163,15 @@ class SignedData extends PkiObject { } if (SIGNED_DATA_SIGNER_INFOS in asn1.result) this.signerInfos = Array.from(asn1.result[SIGNED_DATA_SIGNER_INFOS], (signerInfoSchema)=>new SignerInfo({ schema: signerInfoSchema - }) - ); + })); } toSchema(encodeFlag = false) { const outputArray = []; - if (this.certificates && this.certificates.length && this.certificates.some((o95)=>o95 instanceof OtherCertificateFormat - ) || this.crls && this.crls.length && this.crls.some((o96)=>o96 instanceof OtherRevocationInfoFormat - )) { + if (this.certificates && this.certificates.length && this.certificates.some((o)=>o instanceof OtherCertificateFormat) || this.crls && this.crls.length && this.crls.some((o)=>o instanceof OtherRevocationInfoFormat)) { this.version = 5; - } else if (this.certificates && this.certificates.length && this.certificates.some((o97)=>o97 instanceof AttributeCertificateV2 - )) { + } else if (this.certificates && this.certificates.length && this.certificates.some((o)=>o instanceof AttributeCertificateV2)) { this.version = 4; - } else if (this.certificates && this.certificates.length && this.certificates.some((o98)=>o98 instanceof AttributeCertificateV1 - ) || this.signerInfos.some((o99)=>o99.version === 3 - ) || this.encapContentInfo.eContentType !== SignedData.ID_DATA) { + } else if (this.certificates && this.certificates.length && this.certificates.some((o)=>o instanceof AttributeCertificateV1) || this.signerInfos.some((o)=>o.version === 3) || this.encapContentInfo.eContentType !== SignedData.ID_DATA) { this.version = 3; } else { this.version = 1; @@ -37274,8 +36180,7 @@ class SignedData extends PkiObject { value: this.version })); outputArray.push(new Set1({ - value: Array.from(this.digestAlgorithms, (algorithm)=>algorithm.toSchema() - ) + value: Array.from(this.digestAlgorithms, (algorithm)=>algorithm.toSchema()) })); outputArray.push(this.encapContentInfo.toSchema()); if (this.certificates) { @@ -37309,8 +36214,7 @@ class SignedData extends PkiObject { })); } outputArray.push(new Set1({ - value: Array.from(this.signerInfos, (signerInfo)=>signerInfo.toSchema() - ) + value: Array.from(this.signerInfos, (signerInfo)=>signerInfo.toSchema()) })); return new Sequence({ value: outputArray @@ -37319,23 +36223,19 @@ class SignedData extends PkiObject { toJSON() { const res = { version: this.version, - digestAlgorithms: Array.from(this.digestAlgorithms, (algorithm)=>algorithm.toJSON() - ), + digestAlgorithms: Array.from(this.digestAlgorithms, (algorithm)=>algorithm.toJSON()), encapContentInfo: this.encapContentInfo.toJSON(), - signerInfos: Array.from(this.signerInfos, (signerInfo)=>signerInfo.toJSON() - ) + signerInfos: Array.from(this.signerInfos, (signerInfo)=>signerInfo.toJSON()) }; if (this.certificates) { - res.certificates = Array.from(this.certificates, (certificate)=>certificate.toJSON() - ); + res.certificates = Array.from(this.certificates, (certificate)=>certificate.toJSON()); } if (this.crls) { - res.crls = Array.from(this.crls, (crl)=>crl.toJSON() - ); + res.crls = Array.from(this.crls, (crl)=>crl.toJSON()); } return res; } - async verify({ signer =-1 , data =EMPTY_BUFFER1 , trustedCerts =[] , checkDate =new Date() , checkChain =false , passedWhenNotRevValues =false , extendedMode =false , findOrigin =null , findIssuer =null } = {}, crypto = getCrypto(true)) { + async verify({ signer =-1 , data =EMPTY_BUFFER1 , trustedCerts =[] , checkDate =new Date() , checkChain =false , passedWhenNotRevValues =false , extendedMode =false , findOrigin =null , findIssuer =null } = {}, crypto1 = getCrypto(true)) { let signerCert = null; let timestampSerial = null; try { @@ -37372,7 +36272,7 @@ class SignedData extends PkiObject { if (!(certificate instanceof Certificate)) { continue; } - const digest = await crypto.digest({ + const digest = await crypto1.digest({ name: "sha-1" }, certificate.subjectPublicKeyInfo.subjectPublicKey.valueBlock.valueHexView); if (isEqualBuffer(digest, keyId)) { @@ -37425,7 +36325,7 @@ class SignedData extends PkiObject { } if (!await tstInfo.verify({ data - }, crypto)) { + }, crypto1)) { throw new SignedDataVerifyError({ date: checkDate, code: 15, @@ -37438,8 +36338,7 @@ class SignedData extends PkiObject { } } if (checkChain) { - const certs = this.certificates.filter((certificate)=>certificate instanceof Certificate && !!checkCA(certificate, signerCert) - ); + const certs = this.certificates.filter((certificate)=>certificate instanceof Certificate && !!checkCA(certificate, signerCert)); const chainParams = { checkDate, certs, @@ -37468,11 +36367,11 @@ class SignedData extends PkiObject { } const verificationResult = await chainEngine.verify({ passedWhenNotRevValues - }, crypto).catch((e2)=>{ + }, crypto1).catch((e)=>{ throw new SignedDataVerifyError({ date: checkDate, code: 5, - message: `Validation of signer's certificate failed with error: ${e2 instanceof Object ? e2.resultMessage : e2}`, + message: `Validation of signer's certificate failed with error: ${e instanceof Object ? e.resultMessage : e}`, signerCertificate: signerCert, signerCertificateVerified: false }); @@ -37488,7 +36387,7 @@ class SignedData extends PkiObject { signerCertificateVerified: false }); } - const signerInfoHashAlgorithm = crypto.getAlgorithmByOID(signerInfo.digestAlgorithm.algorithmId); + const signerInfoHashAlgorithm = crypto1.getAlgorithmByOID(signerInfo.digestAlgorithm.algorithmId); if (!("name" in signerInfoHashAlgorithm)) { throw new SignedDataVerifyError({ date: checkDate, @@ -37547,7 +36446,7 @@ class SignedData extends PkiObject { } } if (signerInfo.signedAttrs) { - const messageDigest = await crypto.digest(shaAlgorithm, new Uint8Array(data)); + const messageDigest = await crypto1.digest(shaAlgorithm, new Uint8Array(data)); if (!isEqualBuffer(messageDigest, messageDigestValue)) { throw new SignedDataVerifyError({ date: checkDate, @@ -37561,7 +36460,7 @@ class SignedData extends PkiObject { } data = signerInfo.signedAttrs.encodedValue; } - const verifyResult = await crypto.verifyWithPublicKey(data, signerInfo.signature, signerCert.subjectPublicKeyInfo, signerCert.signatureAlgorithm, shaAlgorithm); + const verifyResult = await crypto1.verifyWithPublicKey(data, signerInfo.signature, signerCert.subjectPublicKeyInfo, signerCert.signatureAlgorithm, shaAlgorithm); if (extendedMode) { return { date: checkDate, @@ -37576,14 +36475,14 @@ class SignedData extends PkiObject { } else { return verifyResult; } - } catch (e3) { - if (e3 instanceof SignedDataVerifyError) { - throw e3; + } catch (e) { + if (e instanceof SignedDataVerifyError) { + throw e; } throw new SignedDataVerifyError({ date: checkDate, code: 15, - message: `Error during verification: ${e3 instanceof Error ? e3.message : e3}`, + message: `Error during verification: ${e instanceof Error ? e.message : e}`, signatureVerified: null, signerCertificate: signerCert, timestampSerial, @@ -37591,13 +36490,12 @@ class SignedData extends PkiObject { }); } } - async sign(privateKey, signerIndex, hashAlgorithm = "SHA-1", data = EMPTY_BUFFER1, crypto = getCrypto(true)) { + async sign(privateKey, signerIndex, hashAlgorithm = "SHA-1", data = EMPTY_BUFFER1, crypto1 = getCrypto(true)) { if (!privateKey) throw new Error("Need to provide a private key for signing"); - const hashAlgorithmOID = crypto.getOIDByAlgorithm({ + const hashAlgorithmOID = crypto1.getOIDByAlgorithm({ name: hashAlgorithm }, true, "hashAlgorithm"); - if (this.digestAlgorithms.filter((algorithm)=>algorithm.algorithmId === hashAlgorithmOID - ).length === 0) { + if (this.digestAlgorithms.filter((algorithm)=>algorithm.algorithmId === hashAlgorithmOID).length === 0) { this.digestAlgorithms.push(new AlgorithmIdentifier({ algorithmId: hashAlgorithmOID, algorithmParams: new Null() @@ -37611,7 +36509,7 @@ class SignedData extends PkiObject { algorithmId: hashAlgorithmOID, algorithmParams: new Null() }); - const signatureParams = await crypto.getSignatureParameters(privateKey, hashAlgorithm); + const signatureParams = await crypto1.getSignatureParameters(privateKey, hashAlgorithm); const parameters = signatureParams.parameters; signerInfo.signatureAlgorithm = signatureParams.signatureAlgorithm; if (signerInfo.signedAttrs) { @@ -37619,7 +36517,7 @@ class SignedData extends PkiObject { else { data = signerInfo.signedAttrs.toSchema().toBER(); const view = BufferSourceConverter.toUint8Array(data); - view[0] = 49; + view[0] = 0x31; } } else { const eContent = this.encapContentInfo.eContent; @@ -37631,7 +36529,7 @@ class SignedData extends PkiObject { if (data.byteLength === 0) throw new Error("Missed detached data input array"); } } - const signature = await crypto.signWithPrivateKey(data, privateKey, parameters); + const signature = await crypto1.signWithPrivateKey(data, privateKey, parameters); signerInfo.signature = new OctetString({ valueHex: signature }); @@ -37763,7 +36661,7 @@ class PFX extends PkiObject { } return output; } - async makeInternalValues(parameters = {}, crypto = getCrypto(true)) { + async makeInternalValues(parameters = {}, crypto1 = getCrypto(true)) { ArgumentError.assert(parameters, "parameters", "object"); if (!this.parsedValue) { throw new Error("Please call \"parseValues\" function first in order to make \"parsedValue\" data"); @@ -37779,7 +36677,7 @@ class PFX extends PkiObject { ParameterError.assertEmpty(parameters.password, "password"); const saltBuffer = new ArrayBuffer(64); const saltView = new Uint8Array(saltBuffer); - crypto.getRandomValues(saltView); + crypto1.getRandomValues(saltView); const data = this.parsedValue.authenticatedSafe.toSchema().toBER(false); this.authSafe = new ContentInfo({ contentType: ContentInfo.DATA, @@ -37787,7 +36685,7 @@ class PFX extends PkiObject { valueHex: data }) }); - const result = await crypto.stampDataWithPassword({ + const result = await crypto1.stampDataWithPassword({ password: parameters.password, hashAlgorithm: parameters.hmacHashAlgorithm, salt: saltBuffer, @@ -37797,7 +36695,7 @@ class PFX extends PkiObject { this.macData = new MacData({ mac: new DigestInfo({ digestAlgorithm: new AlgorithmIdentifier({ - algorithmId: crypto.getOIDByAlgorithm({ + algorithmId: crypto1.getOIDByAlgorithm({ name: parameters.hmacHashAlgorithm }, true, "hmacHashAlgorithm") }), @@ -37832,7 +36730,7 @@ class PFX extends PkiObject { parameters.signingCertificate ] }); - const result = await crypto.digest({ + const result = await crypto1.digest({ name: parameters.hashAlgorithm }, new Uint8Array(toBeSigned)); const signedAttr = []; @@ -37871,7 +36769,7 @@ class PFX extends PkiObject { attributes: signedAttr }) })); - await cmsSigned.sign(parameters.privateKey, 0, parameters.hashAlgorithm, undefined, crypto); + await cmsSigned.sign(parameters.privateKey, 0, parameters.hashAlgorithm, undefined, crypto1); this.authSafe = new ContentInfo({ contentType: "1.2.840.113549.1.7.2", content: cmsSigned.toSchema(true) @@ -37882,7 +36780,7 @@ class PFX extends PkiObject { throw new Error(`Parameter "integrityMode" has unknown value: ${this.parsedValue.integrityMode}`); } } - async parseInternalValues(parameters, crypto = getCrypto(true)) { + async parseInternalValues(parameters, crypto1 = getCrypto(true)) { ArgumentError.assert(parameters, "parameters", "object"); if (parameters.checkIntegrity === undefined) { parameters.checkIntegrity = true; @@ -37900,12 +36798,12 @@ class PFX extends PkiObject { if (!this.macData) { throw new Error("Absent \"macData\" value, can not check PKCS#12 data integrity"); } - const hashAlgorithm = crypto.getAlgorithmByOID(this.macData.mac.digestAlgorithm.algorithmId, true, "digestAlgorithm"); - const result = await crypto.verifyDataStampedWithPassword({ + const hashAlgorithm = crypto1.getAlgorithmByOID(this.macData.mac.digestAlgorithm.algorithmId, true, "digestAlgorithm"); + const result = await crypto1.verifyDataStampedWithPassword({ password: parameters.password, hashAlgorithm: hashAlgorithm.name, salt: BufferSourceConverter.toArrayBuffer(this.macData.macSalt.valueBlock.valueHexView), - iterationCount: this.macData.iterations || 0, + iterationCount: this.macData.iterations || 1, contentToVerify: authSafeContent, signatureToVerify: BufferSourceConverter.toArrayBuffer(this.macData.mac.digest.valueBlock.valueHexView) }); @@ -37929,7 +36827,7 @@ class PFX extends PkiObject { const ok = await cmsSigned.verify({ signer: 0, checkChain: false - }, crypto); + }, crypto1); if (!ok) { throw new Error("Integrity for the PKCS#12 data is broken!"); } @@ -37950,13 +36848,13 @@ const CLEAR_PROPS$2 = [ FAIL_INFO ]; var PKIStatus; -(function(PKIStatus1) { - PKIStatus1[PKIStatus1["granted"] = 0] = "granted"; - PKIStatus1[PKIStatus1["grantedWithMods"] = 1] = "grantedWithMods"; - PKIStatus1[PKIStatus1["rejection"] = 2] = "rejection"; - PKIStatus1[PKIStatus1["waiting"] = 3] = "waiting"; - PKIStatus1[PKIStatus1["revocationWarning"] = 4] = "revocationWarning"; - PKIStatus1[PKIStatus1["revocationNotification"] = 5] = "revocationNotification"; +(function(PKIStatus) { + PKIStatus[PKIStatus["granted"] = 0] = "granted"; + PKIStatus[PKIStatus["grantedWithMods"] = 1] = "grantedWithMods"; + PKIStatus[PKIStatus["rejection"] = 2] = "rejection"; + PKIStatus[PKIStatus["waiting"] = 3] = "waiting"; + PKIStatus[PKIStatus["revocationWarning"] = 4] = "revocationWarning"; + PKIStatus[PKIStatus["revocationNotification"] = 5] = "revocationNotification"; })(PKIStatus || (PKIStatus = {})); class PKIStatusInfo extends PkiObject { constructor(parameters = {}){ @@ -38059,8 +36957,7 @@ class PKIStatusInfo extends PkiObject { status: this.status }; if (this.statusStrings) { - res.statusStrings = Array.from(this.statusStrings, (o100)=>o100.toJSON() - ); + res.statusStrings = Array.from(this.statusStrings, (o)=>o.toJSON()); } if (this.failInfo) { res.failInfo = this.failInfo.toJSON(); @@ -38199,8 +37096,7 @@ class TimeStampReq extends PkiObject { if (TIME_STAMP_REQ_CERT_REQ in asn1.result) this.certReq = asn1.result[TIME_STAMP_REQ_CERT_REQ].valueBlock.value; if (TIME_STAMP_REQ_EXTENSIONS in asn1.result) this.extensions = Array.from(asn1.result[TIME_STAMP_REQ_EXTENSIONS], (element)=>new Extension({ schema: element - }) - ); + })); } toSchema() { const outputArray = []; @@ -38221,8 +37117,7 @@ class TimeStampReq extends PkiObject { tagClass: 3, tagNumber: 0 }, - value: Array.from(this.extensions, (o101)=>o101.toSchema() - ) + value: Array.from(this.extensions, (o)=>o.toSchema()) })); } return new Sequence({ @@ -38238,8 +37133,7 @@ class TimeStampReq extends PkiObject { if (this.nonce !== undefined) res.nonce = this.nonce.toJSON(); if (this.certReq !== undefined && TimeStampReq.compareWithDefault(CERT_REQ, this.certReq) === false) res.certReq = this.certReq; if (this.extensions) { - res.extensions = Array.from(this.extensions, (o102)=>o102.toJSON() - ); + res.extensions = Array.from(this.extensions, (o)=>o.toJSON()); } return res; } @@ -38334,23 +37228,23 @@ class TimeStampResp extends PkiObject { } return res; } - async sign(privateKey, hashAlgorithm, crypto = getCrypto(true)) { + async sign(privateKey, hashAlgorithm, crypto1 = getCrypto(true)) { this.assertContentType(); const signed = new SignedData({ schema: this.timeStampToken.content }); - return signed.sign(privateKey, 0, hashAlgorithm, undefined, crypto); + return signed.sign(privateKey, 0, hashAlgorithm, undefined, crypto1); } async verify(verificationParameters = { signer: 0, trustedCerts: [], data: EMPTY_BUFFER1 - }, crypto = getCrypto(true)) { + }, crypto1 = getCrypto(true)) { this.assertContentType(); const signed = new SignedData({ schema: this.timeStampToken.content }); - return signed.verify(verificationParameters, crypto); + return signed.verify(verificationParameters, crypto1); } assertContentType() { if (!this.timeStampToken) { @@ -38387,7 +37281,7 @@ initCryptoEngine(); let decoder1; try { decoder1 = new TextDecoder(); -} catch (error3) {} +} catch (error) {} let src; let srcEnd; let position = 0; @@ -38439,19 +37333,18 @@ class Decoder { } encodeKeys(rec) { if (!this._keyMap) return rec; - let map1 = new Map(); - for (let [k, v] of Object.entries(rec))map1.set(this._keyMap.hasOwnProperty(k) ? this._keyMap[k] : k, v); - return map1; + let map = new Map(); + for (let [k, v] of Object.entries(rec))map.set(this._keyMap.hasOwnProperty(k) ? this._keyMap[k] : k, v); + return map; } - decodeKeys(map2) { - if (!this._keyMap || map2.constructor.name != 'Map') return map2; + decodeKeys(map) { + if (!this._keyMap || map.constructor.name != 'Map') return map; if (!this._mapKey) { this._mapKey = new Map(); for (let [k, v] of Object.entries(this._keyMap))this._mapKey.set(v, k); } let res = {}; - map2.forEach((v, k)=>res[this._mapKey.has(k) ? this._mapKey.get(k) : k] = v - ); + map.forEach((v, k)=>res[safeKey(this._mapKey.has(k) ? this._mapKey.get(k) : k)] = v); return res; } mapDecode(source, end) { @@ -38459,8 +37352,7 @@ class Decoder { if (this._keyMap) { switch(res.constructor.name){ case 'Array': - return res.map((r1)=>this.decodeKeys(r1) - ); + return res.map((r)=>this.decodeKeys(r)); } } return res; @@ -38482,9 +37374,9 @@ class Decoder { src = source; try { dataView = source.dataView || (source.dataView = new DataView(source.buffer, source.byteOffset, source.byteLength)); - } catch (error1) { + } catch (error) { src = null; - if (source instanceof Uint8Array) throw error1; + if (source instanceof Uint8Array) throw error; throw new Error('Source must be a Uint8Array or Buffer but was a ' + (source && typeof source == 'object' ? source.constructor.name : typeof source)); } if (this instanceof Decoder) { @@ -38529,10 +37421,10 @@ class Decoder { } return values; } - } catch (error2) { - error2.lastPosition = lastPosition; - error2.values = values; - throw error2; + } catch (error) { + error.lastPosition = lastPosition; + error.values = values; + throw error; } finally{ sequentialMode = false; clearSource(); @@ -38544,53 +37436,54 @@ function checkedRead() { let result = read(); if (bundledStrings) { if (position >= bundledStrings.postBundlePosition) { - let error3 = new Error('Unexpected bundle position'); - error3.incomplete = true; - throw error3; + let error = new Error('Unexpected bundle position'); + error.incomplete = true; + throw error; } position = bundledStrings.postBundlePosition; + bundledStrings = null; } if (position == srcEnd) { currentStructures = null; src = null; if (referenceMap) referenceMap = null; } else if (position > srcEnd) { - let error4 = new Error('Unexpected end of CBOR data'); - error4.incomplete = true; - throw error4; + let error = new Error('Unexpected end of CBOR data'); + error.incomplete = true; + throw error; } else if (!sequentialMode) { throw new Error('Data read, but end of buffer not reached'); } return result; - } catch (error5) { + } catch (error) { clearSource(); - if (error5 instanceof RangeError || error5.message.startsWith('Unexpected end of buffer')) { - error5.incomplete = true; + if (error instanceof RangeError || error.message.startsWith('Unexpected end of buffer')) { + error.incomplete = true; } - throw error5; + throw error; } } function read() { let token = src[position++]; let majorType = token >> 5; - token = token & 31; - if (token > 23) { + token = token & 0x1f; + if (token > 0x17) { switch(token){ - case 24: + case 0x18: token = src[position++]; break; - case 25: + case 0x19: if (majorType == 7) { return getFloat16(); } token = dataView.getUint16(position); position += 2; break; - case 26: + case 0x1a: if (majorType == 7) { let value = dataView.getFloat32(position); if (currentDecoder.useFloat32 > 2) { - let multiplier = mult10[(src[position] & 127) << 1 | src[position + 1] >> 7]; + let multiplier = mult10[(src[position] & 0x7f) << 1 | src[position + 1] >> 7]; position += 4; return (multiplier * value + (value > 0 ? 0.5 : -0.5) >> 0) / multiplier; } @@ -38600,7 +37493,7 @@ function read() { token = dataView.getUint32(position); position += 4; break; - case 27: + case 0x1b: if (majorType == 7) { let value = dataView.getFloat64(position); position += 8; @@ -38610,39 +37503,39 @@ function read() { if (dataView.getUint32(position) > 0) throw new Error('JavaScript does not support arrays, maps, or strings with length over 4294967295'); token = dataView.getUint32(position + 4); } else if (currentDecoder.int64AsNumber) { - token = dataView.getUint32(position) * 4294967296; + token = dataView.getUint32(position) * 0x100000000; token += dataView.getUint32(position + 4); } else token = dataView.getBigUint64(position); position += 8; break; - case 31: + case 0x1f: switch(majorType){ case 2: case 3: throw new Error('Indefinite length not supported for byte or text strings'); case 4: let array = []; - let value, i2 = 0; + let value, i = 0; while((value = read()) != STOP_CODE){ - array[i2++] = value; + array[i++] = value; } return majorType == 4 ? array : majorType == 3 ? array.join('') : Buffer.concat(array); case 5: let key; if (currentDecoder.mapsAsObjects) { let object = {}; - if (currentDecoder.keyMap) while((key = read()) != STOP_CODE)object[currentDecoder.decodeKey(key)] = read(); - else while((key = read()) != STOP_CODE)object[key] = read(); + if (currentDecoder.keyMap) while((key = read()) != STOP_CODE)object[safeKey(currentDecoder.decodeKey(key))] = read(); + else while((key = read()) != STOP_CODE)object[safeKey(key)] = read(); return object; } else { if (restoreMapsAsObject) { currentDecoder.mapsAsObjects = true; restoreMapsAsObject = false; } - let map3 = new Map(); - if (currentDecoder.keyMap) while((key = read()) != STOP_CODE)map3.set(currentDecoder.decodeKey(key), read()); - else while((key = read()) != STOP_CODE)map3.set(key, read()); - return map3; + let map = new Map(); + if (currentDecoder.keyMap) while((key = read()) != STOP_CODE)map.set(currentDecoder.decodeKey(key), read()); + else while((key = read()) != STOP_CODE)map.set(key, read()); + return map; } case 7: return STOP_CODE; @@ -38671,49 +37564,60 @@ function read() { return readFixedString(token); case 4: let array = new Array(token); - for(let i3 = 0; i3 < token; i3++)array[i3] = read(); + for(let i = 0; i < token; i++)array[i] = read(); return array; case 5: if (currentDecoder.mapsAsObjects) { let object = {}; - if (currentDecoder.keyMap) for(let i5 = 0; i5 < token; i5++)object[currentDecoder.decodeKey(read())] = read(); - else for(let i4 = 0; i4 < token; i4++)object[read()] = read(); + if (currentDecoder.keyMap) for(let i = 0; i < token; i++)object[safeKey(currentDecoder.decodeKey(read()))] = read(); + else for(let i = 0; i < token; i++)object[safeKey(read())] = read(); return object; } else { if (restoreMapsAsObject) { currentDecoder.mapsAsObjects = true; restoreMapsAsObject = false; } - let map4 = new Map(); - if (currentDecoder.keyMap) for(let i7 = 0; i7 < token; i7++)map4.set(currentDecoder.decodeKey(read()), read()); - else for(let i6 = 0; i6 < token; i6++)map4.set(read(), read()); - return map4; + let map = new Map(); + if (currentDecoder.keyMap) for(let i = 0; i < token; i++)map.set(currentDecoder.decodeKey(read()), read()); + else for(let i = 0; i < token; i++)map.set(read(), read()); + return map; } case 6: - if (token >= 57337) { - let structure = currentStructures[token & 8191]; + if (token >= 0xdff9) { + let structure = currentStructures[token & 0x1fff]; if (structure) { if (!structure.read) structure.read = createStructureReader(structure); return structure.read(); } - if (token < 65536) { - if (token == 57343) return recordDefinition(read()); - else if (token == 57342) { + if (token < 0x10000) { + if (token == 0xdfff) { + let length = readJustLength(); + let id = read(); + let structure = read(); + recordDefinition(id, structure); + let object = {}; + if (currentDecoder.keyMap) for(let i = 2; i < length; i++){ + let key = currentDecoder.decodeKey(structure[i - 2]); + object[safeKey(key)] = read(); + } + else for(let i = 2; i < length; i++){ + let key = structure[i - 2]; + object[safeKey(key)] = read(); + } + return object; + } else if (token == 0xdffe) { let length = readJustLength(); let id = read(); - for(let i8 = 2; i8 < length; i8++){ - recordDefinition([ - id++, - read() - ]); + for(let i = 2; i < length; i++){ + recordDefinition(id++, read()); } return read(); - } else if (token == 57337) { + } else if (token == 0xdff9) { return readBundleExt(); } if (currentDecoder.getShared) { loadShared(); - structure = currentStructures[token & 8191]; + structure = currentStructures[token & 0x1fff]; if (structure) { if (!structure.read) structure.read = createStructureReader(structure); return structure.read(); @@ -38727,23 +37631,23 @@ function read() { else return extension(read()); } else { let input = read(); - for(let i9 = 0; i9 < currentExtensionRanges.length; i9++){ - let value = currentExtensionRanges[i9](token, input); + for(let i = 0; i < currentExtensionRanges.length; i++){ + let value = currentExtensionRanges[i](token, input); if (value !== undefined) return value; } return new Tag(input, token); } case 7: switch(token){ - case 20: + case 0x14: return false; - case 21: + case 0x15: return true; - case 22: + case 0x16: return null; - case 23: + case 0x17: return; - case 31: + case 0x1f: default: let packedValue = (packedValues || getPackedValues())[token]; if (packedValue !== undefined) return packedValue; @@ -38751,9 +37655,9 @@ function read() { } default: if (isNaN(token)) { - let error6 = new Error('Unexpected end of CBOR data'); - error6.incomplete = true; - throw error6; + let error = new Error('Unexpected end of CBOR data'); + error.incomplete = true; + throw error; } throw new Error('Unknown CBOR token ' + token); } @@ -38762,17 +37666,17 @@ const validName = /^[a-zA-Z_$][a-zA-Z\d_$]*$/; function createStructureReader(structure) { function readObject() { let length = src[position++]; - length = length & 31; - if (length > 23) { + length = length & 0x1f; + if (length > 0x17) { switch(length){ - case 24: + case 0x18: length = src[position++]; break; - case 25: + case 0x19: length = dataView.getUint16(position); position += 2; break; - case 26: + case 0x1a: length = dataView.getUint32(position); position += 4; break; @@ -38787,23 +37691,25 @@ function createStructureReader(structure) { } if (this.slowReads++ >= 3) { let array = this.length == length ? this : this.slice(0, length); - compiledReader = currentDecoder.keyMap ? new Function('r', 'return {' + array.map((k)=>currentDecoder.decodeKey(k) - ).map((k)=>validName.test(k) ? k + ':r()' : '[' + JSON.stringify(k) + ']:r()' - ).join(',') + '}') : new Function('r', 'return {' + array.map((key)=>validName.test(key) ? key + ':r()' : '[' + JSON.stringify(key) + ']:r()' - ).join(',') + '}'); + compiledReader = currentDecoder.keyMap ? new Function('r', 'return {' + array.map((k)=>currentDecoder.decodeKey(k)).map((k)=>validName.test(k) ? safeKey(k) + ':r()' : '[' + JSON.stringify(k) + ']:r()').join(',') + '}') : new Function('r', 'return {' + array.map((key)=>validName.test(key) ? safeKey(key) + ':r()' : '[' + JSON.stringify(key) + ']:r()').join(',') + '}'); if (this.compiledReader) compiledReader.next = this.compiledReader; compiledReader.propertyCount = length; this.compiledReader = compiledReader; return compiledReader(read); } let object = {}; - if (currentDecoder.keyMap) for(let i11 = 0; i11 < length; i11++)object[currentDecoder.decodeKey(this[i11])] = read(); - else for(let i10 = 0; i10 < length; i10++)object[this[i10]] = read(); + if (currentDecoder.keyMap) for(let i = 0; i < length; i++)object[safeKey(currentDecoder.decodeKey(this[i]))] = read(); + else for(let i = 0; i < length; i++){ + object[safeKey(this[i])] = read(); + } return object; } structure.slowReads = 0; return readObject; } +function safeKey(key) { + return key === '__proto__' ? '__proto_' : key; +} let readFixedString = readStringJS; let isNativeAccelerationEnabled = false; function readStringJS(length) { @@ -38817,30 +37723,30 @@ function readStringJS(length) { result = ''; while(position < end){ const byte1 = src[position++]; - if ((byte1 & 128) === 0) { + if ((byte1 & 0x80) === 0) { units.push(byte1); - } else if ((byte1 & 224) === 192) { - const byte2 = src[position++] & 63; - units.push((byte1 & 31) << 6 | byte2); - } else if ((byte1 & 240) === 224) { - const byte2 = src[position++] & 63; - const byte3 = src[position++] & 63; - units.push((byte1 & 31) << 12 | byte2 << 6 | byte3); - } else if ((byte1 & 248) === 240) { - const byte2 = src[position++] & 63; - const byte3 = src[position++] & 63; - const byte4 = src[position++] & 63; - let unit = (byte1 & 7) << 18 | byte2 << 12 | byte3 << 6 | byte4; - if (unit > 65535) { - unit -= 65536; - units.push(unit >>> 10 & 1023 | 55296); - unit = 56320 | unit & 1023; + } else if ((byte1 & 0xe0) === 0xc0) { + const byte2 = src[position++] & 0x3f; + units.push((byte1 & 0x1f) << 6 | byte2); + } else if ((byte1 & 0xf0) === 0xe0) { + const byte2 = src[position++] & 0x3f; + const byte3 = src[position++] & 0x3f; + units.push((byte1 & 0x1f) << 12 | byte2 << 6 | byte3); + } else if ((byte1 & 0xf8) === 0xf0) { + const byte2 = src[position++] & 0x3f; + const byte3 = src[position++] & 0x3f; + const byte4 = src[position++] & 0x3f; + let unit = (byte1 & 0x07) << 0x12 | byte2 << 0x0c | byte3 << 0x06 | byte4; + if (unit > 0xffff) { + unit -= 0x10000; + units.push(unit >>> 10 & 0x3ff | 0xd800); + unit = 0xdc00 | unit & 0x3ff; } units.push(unit); } else { units.push(byte1); } - if (units.length >= 4096) { + if (units.length >= 0x1000) { result += fromCharCode.apply(String, units); units.length = 0; } @@ -38854,13 +37760,13 @@ let fromCharCode = String.fromCharCode; function longStringInJS(length) { let start = position; let bytes = new Array(length); - for(let i12 = 0; i12 < length; i12++){ + for(let i = 0; i < length; i++){ const __byte = src[position++]; - if ((__byte & 128) > 0) { + if ((__byte & 0x80) > 0) { position = start; return; } - bytes[i12] = __byte; + bytes[i] = __byte; } return fromCharCode.apply(String, bytes); } @@ -38869,127 +37775,127 @@ function shortStringInJS(length) { if (length < 2) { if (length === 0) return ''; else { - let a4 = src[position++]; - if ((a4 & 128) > 1) { + let a = src[position++]; + if ((a & 0x80) > 1) { position -= 1; return; } - return fromCharCode(a4); + return fromCharCode(a); } } else { - let a5 = src[position++]; + let a = src[position++]; let b = src[position++]; - if ((a5 & 128) > 0 || (b & 128) > 0) { + if ((a & 0x80) > 0 || (b & 0x80) > 0) { position -= 2; return; } - if (length < 3) return fromCharCode(a5, b); + if (length < 3) return fromCharCode(a, b); let c = src[position++]; - if ((c & 128) > 0) { + if ((c & 0x80) > 0) { position -= 3; return; } - return fromCharCode(a5, b, c); + return fromCharCode(a, b, c); } } else { - let a6 = src[position++]; + let a = src[position++]; let b = src[position++]; let c = src[position++]; let d = src[position++]; - if ((a6 & 128) > 0 || (b & 128) > 0 || (c & 128) > 0 || (d & 128) > 0) { + if ((a & 0x80) > 0 || (b & 0x80) > 0 || (c & 0x80) > 0 || (d & 0x80) > 0) { position -= 4; return; } if (length < 6) { - if (length === 4) return fromCharCode(a6, b, c, d); + if (length === 4) return fromCharCode(a, b, c, d); else { - let e4 = src[position++]; - if ((e4 & 128) > 0) { + let e = src[position++]; + if ((e & 0x80) > 0) { position -= 5; return; } - return fromCharCode(a6, b, c, d, e4); + return fromCharCode(a, b, c, d, e); } } else if (length < 8) { - let e5 = src[position++]; + let e = src[position++]; let f = src[position++]; - if ((e5 & 128) > 0 || (f & 128) > 0) { + if ((e & 0x80) > 0 || (f & 0x80) > 0) { position -= 6; return; } - if (length < 7) return fromCharCode(a6, b, c, d, e5, f); + if (length < 7) return fromCharCode(a, b, c, d, e, f); let g = src[position++]; - if ((g & 128) > 0) { + if ((g & 0x80) > 0) { position -= 7; return; } - return fromCharCode(a6, b, c, d, e5, f, g); + return fromCharCode(a, b, c, d, e, f, g); } else { - let e6 = src[position++]; + let e = src[position++]; let f = src[position++]; let g = src[position++]; let h = src[position++]; - if ((e6 & 128) > 0 || (f & 128) > 0 || (g & 128) > 0 || (h & 128) > 0) { + if ((e & 0x80) > 0 || (f & 0x80) > 0 || (g & 0x80) > 0 || (h & 0x80) > 0) { position -= 8; return; } if (length < 10) { - if (length === 8) return fromCharCode(a6, b, c, d, e6, f, g, h); + if (length === 8) return fromCharCode(a, b, c, d, e, f, g, h); else { - let i13 = src[position++]; - if ((i13 & 128) > 0) { + let i = src[position++]; + if ((i & 0x80) > 0) { position -= 9; return; } - return fromCharCode(a6, b, c, d, e6, f, g, h, i13); + return fromCharCode(a, b, c, d, e, f, g, h, i); } } else if (length < 12) { - let i14 = src[position++]; + let i = src[position++]; let j = src[position++]; - if ((i14 & 128) > 0 || (j & 128) > 0) { + if ((i & 0x80) > 0 || (j & 0x80) > 0) { position -= 10; return; } - if (length < 11) return fromCharCode(a6, b, c, d, e6, f, g, h, i14, j); + if (length < 11) return fromCharCode(a, b, c, d, e, f, g, h, i, j); let k = src[position++]; - if ((k & 128) > 0) { + if ((k & 0x80) > 0) { position -= 11; return; } - return fromCharCode(a6, b, c, d, e6, f, g, h, i14, j, k); + return fromCharCode(a, b, c, d, e, f, g, h, i, j, k); } else { - let i15 = src[position++]; + let i = src[position++]; let j = src[position++]; let k = src[position++]; let l = src[position++]; - if ((i15 & 128) > 0 || (j & 128) > 0 || (k & 128) > 0 || (l & 128) > 0) { + if ((i & 0x80) > 0 || (j & 0x80) > 0 || (k & 0x80) > 0 || (l & 0x80) > 0) { position -= 12; return; } if (length < 14) { - if (length === 12) return fromCharCode(a6, b, c, d, e6, f, g, h, i15, j, k, l); + if (length === 12) return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l); else { let m = src[position++]; - if ((m & 128) > 0) { + if ((m & 0x80) > 0) { position -= 13; return; } - return fromCharCode(a6, b, c, d, e6, f, g, h, i15, j, k, l, m); + return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m); } } else { let m = src[position++]; - let n5 = src[position++]; - if ((m & 128) > 0 || (n5 & 128) > 0) { + let n = src[position++]; + if ((m & 0x80) > 0 || (n & 0x80) > 0) { position -= 14; return; } - if (length < 15) return fromCharCode(a6, b, c, d, e6, f, g, h, i15, j, k, l, m, n5); - let o103 = src[position++]; - if ((o103 & 128) > 0) { + if (length < 15) return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n); + let o = src[position++]; + if ((o & 0x80) > 0) { position -= 15; return; } - return fromCharCode(a6, b, c, d, e6, f, g, h, i15, j, k, l, m, n5, o103); + return fromCharCode(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o); } } } @@ -38998,17 +37904,25 @@ function shortStringInJS(length) { function readBin(length) { return currentDecoder.copyBuffers ? Uint8Array.prototype.slice.call(src, position, position += length) : src.subarray(position, position += length); } +let f32Array = new Float32Array(1); +let u8Array = new Uint8Array(f32Array.buffer, 0, 4); function getFloat16() { let byte0 = src[position++]; let byte1 = src[position++]; - let half = (byte0 << 8) + byte1; - let exp = half >> 10 & 31; - let mant = half & 1023; - let val; - if (exp == 0) val = Math.exp(mant, -24); - else if (exp != 31) val = Math.exp(mant + 1024, exp - 25); - else val = mant == 0 ? Infinity : NaN; - return half & 32768 ? -val : val; + let exponent = (byte0 & 0x7f) >> 2; + if (exponent === 0x1f) { + if (byte1 || byte0 & 3) return NaN; + return byte0 & 0x80 ? -Infinity : Infinity; + } + if (exponent === 0) { + let abs = ((byte0 & 3) << 8 | byte1) / (1 << 24); + return byte0 & 0x80 ? -abs : abs; + } + u8Array[3] = byte0 & 0x80 | (exponent >> 1) + 56; + u8Array[2] = (byte0 & 7) << 5 | byte1 >> 3; + u8Array[1] = byte1 << 5; + u8Array[0] = 0; + return f32Array[0]; } new Array(4096); class Tag { @@ -39025,8 +37939,8 @@ currentExtensions[1] = (epochSec)=>{ }; currentExtensions[2] = (buffer)=>{ let value = BigInt(0); - for(let i17 = 0, l = buffer.byteLength; i17 < l; i17++){ - value = BigInt(buffer[i17]) + value << BigInt(8); + for(let i = 0, l = buffer.byteLength; i < l; i++){ + value = BigInt(buffer[i]) + value << BigInt(8); } return value; }; @@ -39039,27 +37953,26 @@ currentExtensions[4] = (fraction)=>{ currentExtensions[5] = (fraction)=>{ return fraction[1] * Math.exp(fraction[0] * Math.log(2)); }; -const recordDefinition = (definition)=>{ - let id = definition[0] - 57344; - let structure = definition[1]; +const recordDefinition = (id, structure)=>{ + id = id - 0xe000; let existingStructure = currentStructures[id]; if (existingStructure && existingStructure.isShared) { (currentStructures.restoreStructures || (currentStructures.restoreStructures = []))[id] = existingStructure; } currentStructures[id] = structure; structure.read = createStructureReader(structure); +}; +currentExtensions[LEGACY_RECORD_INLINE_ID] = (data)=>{ + let length = data.length; + let structure = data[1]; + recordDefinition(data[0], structure); let object = {}; - if (currentDecoder.keyMap) for(let i19 = 2, l = definition.length; i19 < l; i19++){ - let key = currentDecoder.decodeKey(structure[i19 - 2]); - object[key] = definition[i19]; - } - else for(let i18 = 2, l1 = definition.length; i18 < l1; i18++){ - let key = structure[i18 - 2]; - object[key] = definition[i18]; + for(let i = 2; i < length; i++){ + let key = structure[i - 2]; + object[safeKey(key)] = data[i]; } return object; }; -currentExtensions[LEGACY_RECORD_INLINE_ID] = recordDefinition; currentExtensions[14] = (value)=>{ if (bundledStrings) return bundledStrings[0].slice(bundledStrings.position0, bundledStrings.position0 += value); return new Tag(value, 14); @@ -39075,13 +37988,13 @@ let glbl = { currentExtensions[27] = (data)=>{ return (glbl[data[0]] || Error)(data[1], data[2]); }; -const packedTable = (read1)=>{ - if (src[position++] != 132) throw new Error('Packed values structure must be followed by a 4 element array'); - let newPackedValues = read1(); +const packedTable = (read)=>{ + if (src[position++] != 0x84) throw new Error('Packed values structure must be followed by a 4 element array'); + let newPackedValues = read(); packedValues = packedValues ? newPackedValues.concat(packedValues.slice(newPackedValues.length)) : newPackedValues; - packedValues.prefixes = read1(); - packedValues.suffixes = read1(); - return read1(); + packedValues.prefixes = read(); + packedValues.suffixes = read(); + return read(); }; packedTable.handlesRead = true; currentExtensions[51] = packedTable; @@ -39093,34 +38006,22 @@ currentExtensions[PACKED_REFERENCE_TAG_ID] = (data)=>{ if (typeof data == 'number') return packedValues[16 + (data >= 0 ? 2 * data : -2 * data - 1)]; throw new Error('No support for non-integer packed references yet'); }; -currentExtensions[25] = (id)=>{ - return stringRefs[id]; -}; -currentExtensions[256] = (read2)=>{ - stringRefs = []; - try { - return read2(); - } finally{ - stringRefs = null; - } -}; -currentExtensions[256].handlesRead = true; -currentExtensions[28] = (read3)=>{ +currentExtensions[28] = (read)=>{ if (!referenceMap) { referenceMap = new Map(); referenceMap.id = 0; } let id = referenceMap.id++; let token = src[position]; - let target8; - if (token >> 5 == 4) target8 = []; - else target8 = {}; + let target; + if (token >> 5 == 4) target = []; + else target = {}; let refEntry = { - target: target8 + target }; referenceMap.set(id, refEntry); - let targetProperties = read3(); - if (refEntry.used) return Object.assign(target8, targetProperties); + let targetProperties = read(); + if (refEntry.used) return Object.assign(target, targetProperties); refEntry.target = targetProperties; return targetProperties; }; @@ -39130,19 +38031,18 @@ currentExtensions[29] = (id)=>{ refEntry.used = true; return refEntry.target; }; -currentExtensions[258] = (array)=>new Set(array) -; -(currentExtensions[259] = (read4)=>{ +currentExtensions[258] = (array)=>new Set(array); +(currentExtensions[259] = (read)=>{ if (currentDecoder.mapsAsObjects) { currentDecoder.mapsAsObjects = false; restoreMapsAsObject = true; } - return read4(); + return read(); }).handlesRead = true; -function combine(a7, b) { - if (typeof a7 === 'string') return a7 + b; - if (a7 instanceof Array) return a7.concat(b); - return Object.assign({}, a7, b); +function combine(a, b) { + if (typeof a === 'string') return a + b; + if (a instanceof Array) return a.concat(b); + return Object.assign({}, a, b); } function getPackedValues() { if (!packedValues) { @@ -39158,7 +38058,7 @@ currentExtensionRanges.push((tag, input)=>{ if (tag >= 216 && tag <= 223) return combine(input, getPackedValues().suffixes[tag - 216]); if (tag >= 27647 && tag <= 28671) return combine(input, getPackedValues().suffixes[tag - 27639]); if (tag >= 1811940352 && tag <= 1879048191) return combine(input, getPackedValues().suffixes[tag - 1811939328]); - if (tag == 1399353956) { + if (tag == 0x53687264) { return { packedValues: packedValues, structures: currentStructures.slice(0), @@ -39200,13 +38100,14 @@ const typedArrayTags = [ 85, 86 ]; -for(let i1 = 0; i1 < typedArrays.length; i1++){ - registerTypedArray(typedArrays[i1], typedArrayTags[i1]); +for(let i = 0; i < typedArrays.length; i++){ + registerTypedArray(typedArrays[i], typedArrayTags[i]); } function registerTypedArray(TypedArray, tag) { let dvMethod = 'get' + TypedArray.name.slice(0, -5); - if (typeof TypedArray !== 'function') TypedArray = null; - let bytesPerElement = TypedArray.BYTES_PER_ELEMENT; + let bytesPerElement; + if (typeof TypedArray === 'function') bytesPerElement = TypedArray.BYTES_PER_ELEMENT; + else TypedArray = null; for(let littleEndian = 0; littleEndian < 2; littleEndian++){ if (!littleEndian && bytesPerElement == 1) continue; let sizeShift = bytesPerElement == 2 ? 1 : bytesPerElement == 4 ? 2 : 3; @@ -39219,8 +38120,8 @@ function registerTypedArray(TypedArray, tag) { let elements = buffer.length >> sizeShift; let ta = new TypedArray(elements); let method = dv[dvMethod]; - for(let i20 = 0; i20 < elements; i20++){ - ta[i20] = method.call(dv, i20 << sizeShift, littleEndian); + for(let i = 0; i < elements; i++){ + ta[i] = method.call(dv, i << sizeShift, littleEndian); } return ta; }; @@ -39229,7 +38130,7 @@ function registerTypedArray(TypedArray, tag) { function readBundleExt() { let length = readJustLength(); let bundlePosition = position + read(); - for(let i21 = 2; i21 < length; i21++){ + for(let i = 2; i < length; i++){ let bundleLength = readJustLength(); position += bundleLength; } @@ -39246,17 +38147,17 @@ function readBundleExt() { return read(); } function readJustLength() { - let token = src[position++] & 31; - if (token > 23) { + let token = src[position++] & 0x1f; + if (token > 0x17) { switch(token){ - case 24: + case 0x18: token = src[position++]; break; - case 25: + case 0x19: token = dataView.getUint16(position); position += 2; break; - case 26: + case 0x1a: token = dataView.getUint32(position); position += 4; break; @@ -39320,8 +38221,8 @@ function addExtension(extension) { currentExtensions[extension.tag] = extension.decode; } const mult10 = new Array(147); -for(let i118 = 0; i118 < 256; i118++){ - mult10[i118] = +('1e' + Math.floor(45.15 - i118 * 0.30103)); +for(let i = 0; i < 256; i++){ + mult10[i] = +('1e' + Math.floor(45.15 - i * 0.30103)); } let defaultDecoder = new Decoder({ useRecords: false @@ -39334,22 +38235,22 @@ const FLOAT32_OPTIONS = { DECIMAL_ROUND: 3, DECIMAL_FIT: 4 }; -let f32Array = new Float32Array(1); -let u8Array = new Uint8Array(f32Array.buffer, 0, 4); function roundFloat32(float32Number) { f32Array[0] = float32Number; - let multiplier = mult10[(u8Array[3] & 127) << 1 | u8Array[2] >> 7]; + let multiplier = mult10[(u8Array[3] & 0x7f) << 1 | u8Array[2] >> 7]; return (multiplier * float32Number + (float32Number > 0 ? 0.5 : -0.5) >> 0) / multiplier; } let textEncoder; try { textEncoder = new TextEncoder(); -} catch (error4) {} +} catch (error) {} let extensions, extensionClasses; -const hasNodeBuffer = typeof Buffer !== 'undefined'; -const ByteArrayAllocate = hasNodeBuffer ? Buffer.allocUnsafeSlow : Uint8Array; -const ByteArray = hasNodeBuffer ? Buffer : Uint8Array; -const MAX_BUFFER_SIZE = hasNodeBuffer ? 4294967296 : 2144337920; +const Buffer1 = globalThis.Buffer; +const hasNodeBuffer = typeof Buffer1 !== 'undefined'; +const ByteArrayAllocate = hasNodeBuffer ? Buffer1.allocUnsafeSlow : Uint8Array; +const ByteArray = hasNodeBuffer ? Buffer1 : Uint8Array; +const MAX_BUFFER_SIZE = hasNodeBuffer ? 0x100000000 : 0x7fd00000; +let throwOnIterable; let target; let targetView; let position1 = 0; @@ -39358,37 +38259,37 @@ let bundledStrings1 = null; const hasNonLatin = /[\u0080-\uFFFF]/; const RECORD_SYMBOL = Symbol('record-id'); class Encoder extends Decoder { - constructor(options1){ - super(options1); + constructor(options){ + super(options); this.offset = 0; let start; let sharedStructures; let hasSharedUpdate; let structures; - let referenceMap1; - options1 = options1 || {}; - let encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position11, maxBytes) { - return target.utf8Write(string, position11, maxBytes); - } : textEncoder && textEncoder.encodeInto ? function(string, position2) { - return textEncoder.encodeInto(string, target.subarray(position2)).written; + let referenceMap; + options = options || {}; + let encodeUtf8 = ByteArray.prototype.utf8Write ? function(string, position, maxBytes) { + return target.utf8Write(string, position, maxBytes); + } : textEncoder && textEncoder.encodeInto ? function(string, position) { + return textEncoder.encodeInto(string, target.subarray(position)).written; } : false; - let encoder1 = this; - let hasSharedStructures = options1.structures || options1.saveStructures; - let maxSharedStructures = options1.maxSharedStructures; + let encoder = this; + let hasSharedStructures = options.structures || options.saveStructures; + let maxSharedStructures = options.maxSharedStructures; if (maxSharedStructures == null) maxSharedStructures = hasSharedStructures ? 128 : 0; if (maxSharedStructures > 8190) throw new Error('Maximum maxSharedStructure is 8190'); - let isSequential = options1.sequential; + let isSequential = options.sequential; if (isSequential) { maxSharedStructures = 0; } if (!this.structures) this.structures = []; if (this.saveStructures) this.saveShared = this.saveStructures; - let samplingPackedValues, packedObjectMap, sharedValues1 = options1.sharedValues; - let sharedPackedObjectMap; - if (sharedValues1) { - sharedPackedObjectMap = Object.create(null); - for(let i119 = 0, l = sharedValues1.length; i119 < l; i119++){ - sharedPackedObjectMap[sharedValues1[i119]] = i119; + let samplingPackedValues, packedObjectMap1, sharedValues = options.sharedValues; + let sharedPackedObjectMap1; + if (sharedValues) { + sharedPackedObjectMap1 = Object.create(null); + for(let i = 0, l = sharedValues.length; i < l; i++){ + sharedPackedObjectMap1[sharedValues[i]] = i; } } let recordIdsToRemove = []; @@ -39398,8 +38299,7 @@ class Encoder extends Decoder { if (this._keyMap && !this._mapped) { switch(value.constructor.name){ case 'Array': - value = value.map((r2)=>this.encodeKeys(r2) - ); + value = value.map((r)=>this.encodeKeys(r)); break; } } @@ -39412,44 +38312,44 @@ class Encoder extends Decoder { position1 = 0; } safeEnd = target.length - 10; - if (safeEnd - position1 < 2048) { + if (safeEnd - position1 < 0x800) { target = new ByteArrayAllocate(target.length); targetView = new DataView(target.buffer, 0, target.length); safeEnd = target.length - 10; position1 = 0; - } else if (encodeOptions === REUSE_BUFFER_MODE) position1 = position1 + 7 & 2147483640; + } else if (encodeOptions === REUSE_BUFFER_MODE) position1 = position1 + 7 & 0x7ffffff8; start = position1; - if (encoder1.useSelfDescribedHeader) { - targetView.setUint32(position1, 3654940416); + if (encoder.useSelfDescribedHeader) { + targetView.setUint32(position1, 0xd9d9f700); position1 += 3; } - referenceMap1 = encoder1.structuredClone ? new Map() : null; - if (encoder1.bundleStrings && typeof value !== 'string') { + referenceMap = encoder.structuredClone ? new Map() : null; + if (encoder.bundleStrings && typeof value !== 'string') { bundledStrings1 = []; bundledStrings1.size = Infinity; } else bundledStrings1 = null; - sharedStructures = encoder1.structures; + sharedStructures = encoder.structures; if (sharedStructures) { if (sharedStructures.uninitialized) { - let sharedData = encoder1.getShared() || {}; - encoder1.structures = sharedStructures = sharedData.structures || []; - encoder1.sharedVersion = sharedData.version; - let sharedValues = encoder1.sharedValues = sharedData.packedValues; + let sharedData = encoder.getShared() || {}; + encoder.structures = sharedStructures = sharedData.structures || []; + encoder.sharedVersion = sharedData.version; + let sharedValues = encoder.sharedValues = sharedData.packedValues; if (sharedValues) { - sharedPackedObjectMap = {}; - for(let i120 = 0, l = sharedValues.length; i120 < l; i120++)sharedPackedObjectMap[sharedValues[i120]] = i120; + sharedPackedObjectMap1 = {}; + for(let i = 0, l = sharedValues.length; i < l; i++)sharedPackedObjectMap1[sharedValues[i]] = i; } } let sharedStructuresLength = sharedStructures.length; if (sharedStructuresLength > maxSharedStructures && !isSequential) sharedStructuresLength = maxSharedStructures; if (!sharedStructures.transitions) { sharedStructures.transitions = Object.create(null); - for(let i121 = 0; i121 < sharedStructuresLength; i121++){ - let keys = sharedStructures[i121]; + for(let i = 0; i < sharedStructuresLength; i++){ + let keys = sharedStructures[i]; if (!keys) continue; let nextTransition, transition = sharedStructures.transitions; for(let j = 0, l = keys.length; j < l; j++){ - if (transition[RECORD_SYMBOL] === undefined) transition[RECORD_SYMBOL] = i121; + if (transition[RECORD_SYMBOL] === undefined) transition[RECORD_SYMBOL] = i; let key = keys[j]; nextTransition = transition[key]; if (!nextTransition) { @@ -39457,48 +38357,50 @@ class Encoder extends Decoder { } transition = nextTransition; } - transition[RECORD_SYMBOL] = i121 | 1048576; + transition[RECORD_SYMBOL] = i | 0x100000; } } if (!isSequential) sharedStructures.nextId = sharedStructuresLength; } if (hasSharedUpdate) hasSharedUpdate = false; structures = sharedStructures || []; - packedObjectMap = sharedPackedObjectMap; - if (options1.pack) { - let packedValues1 = new Map(); - packedValues1.values = []; - packedValues1.encoder = encoder1; - packedValues1.maxValues = options1.maxPrivatePackedValues || (sharedPackedObjectMap ? 16 : Infinity); - packedValues1.objectMap = sharedPackedObjectMap || false; - packedValues1.samplingPackedValues = samplingPackedValues; - findRepetitiveStrings(value, packedValues1); - if (packedValues1.values.length > 0) { - target[position1++] = 216; + packedObjectMap1 = sharedPackedObjectMap1; + if (options.pack) { + let packedValues = new Map(); + packedValues.values = []; + packedValues.encoder = encoder; + packedValues.maxValues = options.maxPrivatePackedValues || (sharedPackedObjectMap1 ? 16 : Infinity); + packedValues.objectMap = sharedPackedObjectMap1 || false; + packedValues.samplingPackedValues = samplingPackedValues; + findRepetitiveStrings(value, packedValues); + if (packedValues.values.length > 0) { + target[position1++] = 0xd8; target[position1++] = 51; writeArrayHeader(4); - let valuesArray = packedValues1.values; - encode1(valuesArray); + let valuesArray = packedValues.values; + encode(valuesArray); writeArrayHeader(0); writeArrayHeader(0); - packedObjectMap = Object.create(sharedPackedObjectMap || null); - for(let i122 = 0, l = valuesArray.length; i122 < l; i122++){ - packedObjectMap[valuesArray[i122]] = i122; + packedObjectMap1 = Object.create(sharedPackedObjectMap1 || null); + for(let i = 0, l = valuesArray.length; i < l; i++){ + packedObjectMap1[valuesArray[i]] = i; } } } + throwOnIterable = encodeOptions & THROW_ON_ITERABLE; try { - encode1(value); + if (throwOnIterable) return; + encode(value); if (bundledStrings1) { - writeBundles(start, encode1); + writeBundles(start, encode); } - encoder1.offset = position1; - if (referenceMap1 && referenceMap1.idsToInsert) { - position1 += referenceMap1.idsToInsert.length * 2; + encoder.offset = position1; + if (referenceMap && referenceMap.idsToInsert) { + position1 += referenceMap.idsToInsert.length * 2; if (position1 > safeEnd) makeRoom(position1); - encoder1.offset = position1; - let serialized = insertIds(target.subarray(start, position1), referenceMap1.idsToInsert); - referenceMap1 = null; + encoder.offset = position1; + let serialized = insertIds(target.subarray(start, position1), referenceMap.idsToInsert); + referenceMap = null; return serialized; } if (encodeOptions & REUSE_BUFFER_MODE) { @@ -39517,18 +38419,18 @@ class Encoder extends Decoder { transitionsCount = 0; if (recordIdsToRemove.length > 0) recordIdsToRemove = []; } else if (recordIdsToRemove.length > 0 && !isSequential) { - for(let i123 = 0, l = recordIdsToRemove.length; i123 < l; i123++){ - recordIdsToRemove[i123][RECORD_SYMBOL] = undefined; + for(let i = 0, l = recordIdsToRemove.length; i < l; i++){ + recordIdsToRemove[i][RECORD_SYMBOL] = undefined; } recordIdsToRemove = []; } } - if (hasSharedUpdate && encoder1.saveShared) { - if (encoder1.structures.length > maxSharedStructures) { - encoder1.structures = encoder1.structures.slice(0, maxSharedStructures); + if (hasSharedUpdate && encoder.saveShared) { + if (encoder.structures.length > maxSharedStructures) { + encoder.structures = encoder.structures.slice(0, maxSharedStructures); } let returnBuffer = target.subarray(start, position1); - if (encoder1.updateSharedData() === false) return encoder1.encode(value); + if (encoder.updateSharedData() === false) return encoder.encode(value); return returnBuffer; } if (encodeOptions & RESET_BUFFER_MODE) position1 = start; @@ -39536,15 +38438,15 @@ class Encoder extends Decoder { }; this.findCommonStringsToPack = ()=>{ samplingPackedValues = new Map(); - if (!sharedPackedObjectMap) sharedPackedObjectMap = Object.create(null); + if (!sharedPackedObjectMap1) sharedPackedObjectMap1 = Object.create(null); return (options)=>{ let threshold = options && options.threshold || 4; - let position3 = this.pack ? options.maxPrivatePackedValues || 16 : 0; - if (!sharedValues1) sharedValues1 = this.sharedValues = []; + let position = this.pack ? options.maxPrivatePackedValues || 16 : 0; + if (!sharedValues) sharedValues = this.sharedValues = []; for (let [key, status] of samplingPackedValues){ if (status.count > threshold) { - sharedPackedObjectMap[key] = position3++; - sharedValues1.push(key); + sharedPackedObjectMap1[key] = position++; + sharedValues.push(key); hasSharedUpdate = true; } } @@ -39552,22 +38454,22 @@ class Encoder extends Decoder { samplingPackedValues = null; }; }; - const encode1 = (value)=>{ + const encode = (value)=>{ if (position1 > safeEnd) target = makeRoom(position1); var type = typeof value; var length; if (type === 'string') { - if (packedObjectMap) { - let packedPosition = packedObjectMap[value]; + if (packedObjectMap1) { + let packedPosition = packedObjectMap1[value]; if (packedPosition >= 0) { - if (packedPosition < 16) target[position1++] = packedPosition + 224; + if (packedPosition < 16) target[position1++] = packedPosition + 0xe0; else { - target[position1++] = 198; - if (packedPosition & 1) encode1(15 - packedPosition >> 1); - else encode1(packedPosition - 16 >> 1); + target[position1++] = 0xc6; + if (packedPosition & 1) encode(15 - packedPosition >> 1); + else encode(packedPosition - 16 >> 1); } return; - } else if (samplingPackedValues && !options1.pack) { + } else if (samplingPackedValues && !options.pack) { let status = samplingPackedValues.get(value); if (status) status.count++; else samplingPackedValues.set(value, { @@ -39576,20 +38478,20 @@ class Encoder extends Decoder { } } let strLength = value.length; - if (bundledStrings1 && strLength >= 4 && strLength < 1024) { - if ((bundledStrings1.size += strLength) > 61440) { + if (bundledStrings1 && strLength >= 4 && strLength < 0x400) { + if ((bundledStrings1.size += strLength) > 0xf000) { let extStart; let maxBytes = (bundledStrings1[0] ? bundledStrings1[0].length * 3 + bundledStrings1[1].length : 0) + 10; if (position1 + maxBytes > safeEnd) target = makeRoom(position1 + maxBytes); - target[position1++] = 217; - target[position1++] = 223; - target[position1++] = 249; - target[position1++] = bundledStrings1.position ? 132 : 130; - target[position1++] = 26; + target[position1++] = 0xd9; + target[position1++] = 0xdf; + target[position1++] = 0xf9; + target[position1++] = bundledStrings1.position ? 0x84 : 0x82; + target[position1++] = 0x1a; extStart = position1 - start; position1 += 4; if (bundledStrings1.position) { - writeBundles(start, encode1); + writeBundles(start, encode); } bundledStrings1 = [ '', @@ -39600,136 +38502,136 @@ class Encoder extends Decoder { } let twoByte = hasNonLatin.test(value); bundledStrings1[twoByte ? 0 : 1] += value; - target[position1++] = twoByte ? 206 : 207; - encode1(strLength); + target[position1++] = twoByte ? 0xce : 0xcf; + encode(strLength); return; } let headerSize; - if (strLength < 32) { + if (strLength < 0x20) { headerSize = 1; - } else if (strLength < 256) { + } else if (strLength < 0x100) { headerSize = 2; - } else if (strLength < 65536) { + } else if (strLength < 0x10000) { headerSize = 3; } else { headerSize = 5; } let maxBytes = strLength * 3; if (position1 + maxBytes > safeEnd) target = makeRoom(position1 + maxBytes); - if (strLength < 64 || !encodeUtf8) { - let i124, c1, c2, strPosition = position1 + headerSize; - for(i124 = 0; i124 < strLength; i124++){ - c1 = value.charCodeAt(i124); - if (c1 < 128) { + if (strLength < 0x40 || !encodeUtf8) { + let i, c1, c2, strPosition = position1 + headerSize; + for(i = 0; i < strLength; i++){ + c1 = value.charCodeAt(i); + if (c1 < 0x80) { target[strPosition++] = c1; - } else if (c1 < 2048) { - target[strPosition++] = c1 >> 6 | 192; - target[strPosition++] = c1 & 63 | 128; - } else if ((c1 & 64512) === 55296 && ((c2 = value.charCodeAt(i124 + 1)) & 64512) === 56320) { - c1 = 65536 + ((c1 & 1023) << 10) + (c2 & 1023); - i124++; - target[strPosition++] = c1 >> 18 | 240; - target[strPosition++] = c1 >> 12 & 63 | 128; - target[strPosition++] = c1 >> 6 & 63 | 128; - target[strPosition++] = c1 & 63 | 128; + } else if (c1 < 0x800) { + target[strPosition++] = c1 >> 6 | 0xc0; + target[strPosition++] = c1 & 0x3f | 0x80; + } else if ((c1 & 0xfc00) === 0xd800 && ((c2 = value.charCodeAt(i + 1)) & 0xfc00) === 0xdc00) { + c1 = 0x10000 + ((c1 & 0x03ff) << 10) + (c2 & 0x03ff); + i++; + target[strPosition++] = c1 >> 18 | 0xf0; + target[strPosition++] = c1 >> 12 & 0x3f | 0x80; + target[strPosition++] = c1 >> 6 & 0x3f | 0x80; + target[strPosition++] = c1 & 0x3f | 0x80; } else { - target[strPosition++] = c1 >> 12 | 224; - target[strPosition++] = c1 >> 6 & 63 | 128; - target[strPosition++] = c1 & 63 | 128; + target[strPosition++] = c1 >> 12 | 0xe0; + target[strPosition++] = c1 >> 6 & 0x3f | 0x80; + target[strPosition++] = c1 & 0x3f | 0x80; } } length = strPosition - position1 - headerSize; } else { length = encodeUtf8(value, position1 + headerSize, maxBytes); } - if (length < 24) { - target[position1++] = 96 | length; - } else if (length < 256) { + if (length < 0x18) { + target[position1++] = 0x60 | length; + } else if (length < 0x100) { if (headerSize < 2) { target.copyWithin(position1 + 2, position1 + 1, position1 + 1 + length); } - target[position1++] = 120; + target[position1++] = 0x78; target[position1++] = length; - } else if (length < 65536) { + } else if (length < 0x10000) { if (headerSize < 3) { target.copyWithin(position1 + 3, position1 + 2, position1 + 2 + length); } - target[position1++] = 121; + target[position1++] = 0x79; target[position1++] = length >> 8; - target[position1++] = length & 255; + target[position1++] = length & 0xff; } else { if (headerSize < 5) { target.copyWithin(position1 + 5, position1 + 3, position1 + 3 + length); } - target[position1++] = 122; + target[position1++] = 0x7a; targetView.setUint32(position1, length); position1 += 4; } position1 += length; } else if (type === 'number') { - if (value >>> 0 === value) { - if (value < 24) { + if (!this.alwaysUseFloat && value >>> 0 === value) { + if (value < 0x18) { target[position1++] = value; - } else if (value < 256) { - target[position1++] = 24; + } else if (value < 0x100) { + target[position1++] = 0x18; target[position1++] = value; - } else if (value < 65536) { - target[position1++] = 25; + } else if (value < 0x10000) { + target[position1++] = 0x19; target[position1++] = value >> 8; - target[position1++] = value & 255; + target[position1++] = value & 0xff; } else { - target[position1++] = 26; + target[position1++] = 0x1a; targetView.setUint32(position1, value); position1 += 4; } - } else if (value >> 0 === value) { - if (value >= -24) { - target[position1++] = 31 - value; - } else if (value >= -256) { - target[position1++] = 56; + } else if (!this.alwaysUseFloat && value >> 0 === value) { + if (value >= -0x18) { + target[position1++] = 0x1f - value; + } else if (value >= -0x100) { + target[position1++] = 0x38; target[position1++] = ~value; - } else if (value >= -65536) { - target[position1++] = 57; + } else if (value >= -0x10000) { + target[position1++] = 0x39; targetView.setUint16(position1, ~value); position1 += 2; } else { - target[position1++] = 58; + target[position1++] = 0x3a; targetView.setUint32(position1, ~value); position1 += 4; } } else { let useFloat32; - if ((useFloat32 = this.useFloat32) > 0 && value < 4294967296 && value >= -2147483648) { - target[position1++] = 250; + if ((useFloat32 = this.useFloat32) > 0 && value < 0x100000000 && value >= -0x80000000) { + target[position1++] = 0xfa; targetView.setFloat32(position1, value); let xShifted; - if (useFloat32 < 4 || (xShifted = value * mult10[(target[position1] & 127) << 1 | target[position1 + 1] >> 7]) >> 0 === xShifted) { + if (useFloat32 < 4 || (xShifted = value * mult10[(target[position1] & 0x7f) << 1 | target[position1 + 1] >> 7]) >> 0 === xShifted) { position1 += 4; return; } else position1--; } - target[position1++] = 251; + target[position1++] = 0xfb; targetView.setFloat64(position1, value); position1 += 8; } } else if (type === 'object') { - if (!value) target[position1++] = 246; + if (!value) target[position1++] = 0xf6; else { - if (referenceMap1) { - let referee = referenceMap1.get(value); + if (referenceMap) { + let referee = referenceMap.get(value); if (referee) { - target[position1++] = 216; + target[position1++] = 0xd8; target[position1++] = 29; - target[position1++] = 25; + target[position1++] = 0x19; if (!referee.references) { - let idsToInsert = referenceMap1.idsToInsert || (referenceMap1.idsToInsert = []); + let idsToInsert = referenceMap.idsToInsert || (referenceMap.idsToInsert = []); referee.references = []; idsToInsert.push(referee); } referee.references.push(position1 - start); position1 += 2; return; - } else referenceMap1.set(value, { + } else referenceMap.set(value, { offset: position1 - start }); } @@ -39738,94 +38640,104 @@ class Encoder extends Decoder { writeObject(value, true); } else if (constructor === Array) { length = value.length; - if (length < 24) { - target[position1++] = 128 | length; + if (length < 0x18) { + target[position1++] = 0x80 | length; } else { writeArrayHeader(length); } - for(let i125 = 0; i125 < length; i125++){ - encode1(value[i125]); + for(let i = 0; i < length; i++){ + encode(value[i]); } } else if (constructor === Map) { if (this.mapsAsObjects ? this.useTag259ForMaps !== false : this.useTag259ForMaps) { - target[position1++] = 217; + target[position1++] = 0xd9; target[position1++] = 1; target[position1++] = 3; } length = value.size; - if (length < 24) { - target[position1++] = 160 | length; - } else if (length < 256) { - target[position1++] = 184; + if (length < 0x18) { + target[position1++] = 0xa0 | length; + } else if (length < 0x100) { + target[position1++] = 0xb8; target[position1++] = length; - } else if (length < 65536) { - target[position1++] = 185; + } else if (length < 0x10000) { + target[position1++] = 0xb9; target[position1++] = length >> 8; - target[position1++] = length & 255; + target[position1++] = length & 0xff; } else { - target[position1++] = 186; + target[position1++] = 0xba; targetView.setUint32(position1, length); position1 += 4; } - if (encoder1.keyMap) { + if (encoder.keyMap) { for (let [key, entryValue] of value){ - encode1(encoder1.encodeKey(key)); - encode1(entryValue); + encode(encoder.encodeKey(key)); + encode(entryValue); } } else { for (let [key, entryValue] of value){ - encode1(key); - encode1(entryValue); + encode(key); + encode(entryValue); } } } else { - for(let i126 = 0, l = extensions.length; i126 < l; i126++){ - let extensionClass = extensionClasses[i126]; + for(let i = 0, l = extensions.length; i < l; i++){ + let extensionClass = extensionClasses[i]; if (value instanceof extensionClass) { - let extension = extensions[i126]; + let extension = extensions[i]; let tag = extension.tag; if (tag == undefined) tag = extension.getTag && extension.getTag.call(this, value); - if (tag < 24) { - target[position1++] = 192 | tag; - } else if (tag < 256) { - target[position1++] = 216; + if (tag < 0x18) { + target[position1++] = 0xc0 | tag; + } else if (tag < 0x100) { + target[position1++] = 0xd8; target[position1++] = tag; - } else if (tag < 65536) { - target[position1++] = 217; + } else if (tag < 0x10000) { + target[position1++] = 0xd9; target[position1++] = tag >> 8; - target[position1++] = tag & 255; + target[position1++] = tag & 0xff; } else if (tag > -1) { - target[position1++] = 218; + target[position1++] = 0xda; targetView.setUint32(position1, tag); position1 += 4; } - extension.encode.call(this, value, encode1, makeRoom); + extension.encode.call(this, value, encode, makeRoom); return; } } if (value[Symbol.iterator]) { - target[position1++] = 159; + if (throwOnIterable) { + let error = new Error('Iterable should be serialized as iterator'); + error.iteratorNotHandled = true; + throw error; + } + target[position1++] = 0x9f; for (let entry of value){ - encode1(entry); + encode(entry); } - target[position1++] = 255; + target[position1++] = 0xff; return; } + if (value[Symbol.asyncIterator] || isBlob(value)) { + let error = new Error('Iterable/blob should be serialized as iterator'); + error.iteratorNotHandled = true; + throw error; + } writeObject(value, !value.hasOwnProperty); } } } else if (type === 'boolean') { - target[position1++] = value ? 245 : 244; + target[position1++] = value ? 0xf5 : 0xf4; } else if (type === 'bigint') { if (value < BigInt(1) << BigInt(64) && value >= 0) { - target[position1++] = 27; + target[position1++] = 0x1b; targetView.setBigUint64(position1, value); } else if (value > -(BigInt(1) << BigInt(64)) && value < 0) { - target[position1++] = 59; + target[position1++] = 0x3b; targetView.setBigUint64(position1, -value - BigInt(1)); } else { if (this.largeBigIntToFloat) { - target[position1++] = 251; + target[position1++] = 0xfb; targetView.setFloat64(position1, Number(value)); } else { throw new RangeError(value + ' was too large to fit in CBOR 64-bit integer format, set largeBigIntToFloat to convert to float-64'); @@ -39833,7 +38745,7 @@ class Encoder extends Decoder { } position1 += 8; } else if (type === 'undefined') { - target[position1++] = 247; + target[position1++] = 0xf7; } else { throw new Error('Unknown type: ' + type); } @@ -39842,51 +38754,51 @@ class Encoder extends Decoder { let keys = Object.keys(object); let vals = Object.values(object); let length = keys.length; - if (length < 24) { - target[position1++] = 160 | length; - } else if (length < 256) { - target[position1++] = 184; + if (length < 0x18) { + target[position1++] = 0xa0 | length; + } else if (length < 0x100) { + target[position1++] = 0xb8; target[position1++] = length; - } else if (length < 65536) { - target[position1++] = 185; + } else if (length < 0x10000) { + target[position1++] = 0xb9; target[position1++] = length >> 8; - target[position1++] = length & 255; + target[position1++] = length & 0xff; } else { - target[position1++] = 186; + target[position1++] = 0xba; targetView.setUint32(position1, length); position1 += 4; } - if (encoder1.keyMap) { - for(let i127 = 0; i127 < length; i127++){ - encode1(encodeKey(keys[i127])); - encode1(vals[i127]); + if (encoder.keyMap) { + for(let i = 0; i < length; i++){ + encode(encodeKey(keys[i])); + encode(vals[i]); } } else { - for(let i128 = 0; i128 < length; i128++){ - encode1(keys[i128]); - encode1(vals[i128]); + for(let i = 0; i < length; i++){ + encode(keys[i]); + encode(vals[i]); } } } : (object, safePrototype)=>{ - target[position1++] = 185; + target[position1++] = 0xb9; let objectOffset = position1 - start; position1 += 2; let size = 0; - if (encoder1.keyMap) { + if (encoder.keyMap) { for(let key in object)if (safePrototype || object.hasOwnProperty(key)) { - encode1(encoder1.encodeKey(key)); - encode1(object[key]); + encode(encoder.encodeKey(key)); + encode(object[key]); size++; } } else { for(let key in object)if (safePrototype || object.hasOwnProperty(key)) { - encode1(key); - encode1(object[key]); + encode(key); + encode(object[key]); size++; } } - target[(objectOffset++) + start] = size >> 8; - target[objectOffset + start] = size & 255; + target[objectOffset++ + start] = size >> 8; + target[objectOffset + start] = size & 0xff; } : (object, safePrototype)=>{ let nextTransition, transition = structures.transitions || (structures.transitions = Object.create(null)); let newTransitions = 0; @@ -39894,11 +38806,10 @@ class Encoder extends Decoder { let parentRecordId; let keys; if (this.keyMap) { - keys = Object.keys(object).map((k)=>this.encodeKey(k) - ); + keys = Object.keys(object).map((k)=>this.encodeKey(k)); length = keys.length; - for(let i129 = 0; i129 < length; i129++){ - let key = keys[i129]; + for(let i = 0; i < length; i++){ + let key = keys[i]; nextTransition = transition[key]; if (!nextTransition) { nextTransition = transition[key] = Object.create(null); @@ -39910,8 +38821,8 @@ class Encoder extends Decoder { for(let key in object)if (safePrototype || object.hasOwnProperty(key)) { nextTransition = transition[key]; if (!nextTransition) { - if (transition[RECORD_SYMBOL] & 1048576) { - parentRecordId = transition[RECORD_SYMBOL] & 65535; + if (transition[RECORD_SYMBOL] & 0x100000) { + parentRecordId = transition[RECORD_SYMBOL] & 0xffff; } nextTransition = transition[key] = Object.create(null); newTransitions++; @@ -39922,10 +38833,10 @@ class Encoder extends Decoder { } let recordId = transition[RECORD_SYMBOL]; if (recordId !== undefined) { - recordId &= 65535; - target[position1++] = 217; - target[position1++] = recordId >> 8 | 224; - target[position1++] = recordId & 255; + recordId &= 0xffff; + target[position1++] = 0xd9; + target[position1++] = recordId >> 8 | 0xe0; + target[position1++] = recordId & 0xff; } else { if (!keys) keys = transition.__keys__ || (transition.__keys__ = Object.keys(object)); if (parentRecordId === undefined) { @@ -39934,7 +38845,7 @@ class Encoder extends Decoder { recordId = 0; structures.nextId = 1; } - if (recordId >= 256) { + if (recordId >= 0x100) { structures.nextId = (recordId = maxSharedStructures) + 1; } } else { @@ -39942,42 +38853,44 @@ class Encoder extends Decoder { } structures[recordId] = keys; if (recordId < maxSharedStructures) { - target[position1++] = 217; - target[position1++] = recordId >> 8 | 224; - target[position1++] = recordId & 255; + target[position1++] = 0xd9; + target[position1++] = recordId >> 8 | 0xe0; + target[position1++] = recordId & 0xff; transition = structures.transitions; - for(let i130 = 0; i130 < length; i130++){ - if (transition[RECORD_SYMBOL] === undefined || transition[RECORD_SYMBOL] & 1048576) transition[RECORD_SYMBOL] = recordId; - transition = transition[keys[i130]]; + for(let i = 0; i < length; i++){ + if (transition[RECORD_SYMBOL] === undefined || transition[RECORD_SYMBOL] & 0x100000) transition[RECORD_SYMBOL] = recordId; + transition = transition[keys[i]]; } - transition[RECORD_SYMBOL] = recordId | 1048576; + transition[RECORD_SYMBOL] = recordId | 0x100000; hasSharedUpdate = true; } else { transition[RECORD_SYMBOL] = recordId; - targetView.setUint32(position1, 3655335680); + targetView.setUint32(position1, 0xd9dfff00); position1 += 3; if (newTransitions) transitionsCount += serializationsSinceTransitionRebuild * newTransitions; - if (recordIdsToRemove.length >= 256 - maxSharedStructures) recordIdsToRemove.shift()[RECORD_SYMBOL] = undefined; + if (recordIdsToRemove.length >= 0x100 - maxSharedStructures) recordIdsToRemove.shift()[RECORD_SYMBOL] = undefined; recordIdsToRemove.push(transition); writeArrayHeader(length + 2); - encode1(57344 + recordId); - encode1(keys); - for (let v of Object.values(object))encode1(v); + encode(0xe000 + recordId); + encode(keys); + if (safePrototype === null) return; + for(let key in object)if (safePrototype || object.hasOwnProperty(key)) encode(object[key]); return; } } - if (length < 24) { - target[position1++] = 128 | length; + if (length < 0x18) { + target[position1++] = 0x80 | length; } else { writeArrayHeader(length); } - for(let key in object)if (safePrototype || object.hasOwnProperty(key)) encode1(object[key]); + if (safePrototype === null) return; + for(let key in object)if (safePrototype || object.hasOwnProperty(key)) encode(object[key]); }; const makeRoom = (end)=>{ let newSize; - if (end > 16777216) { + if (end > 0x1000000) { if (end - start > MAX_BUFFER_SIZE) throw new Error('Encoded buffer would be larger than maximum buffer size'); - newSize = Math.min(MAX_BUFFER_SIZE, Math.round(Math.max((end - start) * (end > 67108864 ? 1.25 : 2), 4194304) / 4096) * 4096); + newSize = Math.min(MAX_BUFFER_SIZE, Math.round(Math.max((end - start) * (end > 0x4000000 ? 1.25 : 2), 0x400000) / 0x1000) * 0x1000); } else newSize = (Math.max(end - start << 2, target.length - 1) >> 12) + 1 << 12; let newBuffer = new ByteArrayAllocate(newSize); targetView = new DataView(newBuffer.buffer, 0, newSize); @@ -39988,6 +38901,119 @@ class Encoder extends Decoder { safeEnd = newBuffer.length - 10; return target = newBuffer; }; + let chunkThreshold = 100; + let continuedChunkThreshold = 1000; + this.encodeAsIterable = function(value, options) { + return startEncoding(value, options, encodeObjectAsIterable); + }; + this.encodeAsAsyncIterable = function(value, options) { + return startEncoding(value, options, encodeObjectAsAsyncIterable); + }; + function* encodeObjectAsIterable(object, iterateProperties, finalIterable) { + let constructor = object.constructor; + if (constructor === Object) { + let useRecords = encoder.useRecords !== false; + if (useRecords) writeObject(object, null); + else writeEntityLength(Object.keys(object).length, 0xa0); + for(let key in object){ + let value = object[key]; + if (!useRecords) encode(key); + if (value && typeof value === 'object') { + if (iterateProperties[key]) yield* encodeObjectAsIterable(value, iterateProperties[key]); + else yield* tryEncode(value, iterateProperties, key); + } else encode(value); + } + } else if (constructor === Array) { + let length = object.length; + writeArrayHeader(length); + for(let i = 0; i < length; i++){ + let value = object[i]; + if (value && (typeof value === 'object' || position1 - start > chunkThreshold)) { + if (iterateProperties.element) yield* encodeObjectAsIterable(value, iterateProperties.element); + else yield* tryEncode(value, iterateProperties, 'element'); + } else encode(value); + } + } else if (object[Symbol.iterator]) { + target[position1++] = 0x9f; + for (let value of object){ + if (value && (typeof value === 'object' || position1 - start > chunkThreshold)) { + if (iterateProperties.element) yield* encodeObjectAsIterable(value, iterateProperties.element); + else yield* tryEncode(value, iterateProperties, 'element'); + } else encode(value); + } + target[position1++] = 0xff; + } else if (isBlob(object)) { + writeEntityLength(object.size, 0x40); + yield target.subarray(start, position1); + yield object; + restartEncoding(); + } else if (object[Symbol.asyncIterator]) { + target[position1++] = 0x9f; + yield target.subarray(start, position1); + yield object; + restartEncoding(); + target[position1++] = 0xff; + } else { + encode(object); + } + if (finalIterable && position1 > start) yield target.subarray(start, position1); + else if (position1 - start > chunkThreshold) { + yield target.subarray(start, position1); + restartEncoding(); + } + } + function* tryEncode(value, iterateProperties, key) { + let restart = position1 - start; + try { + encode(value); + if (position1 - start > chunkThreshold) { + yield target.subarray(start, position1); + restartEncoding(); + } + } catch (error) { + if (error.iteratorNotHandled) { + iterateProperties[key] = {}; + position1 = start + restart; + yield* encodeObjectAsIterable.call(this, value, iterateProperties[key]); + } else throw error; + } + } + function restartEncoding() { + chunkThreshold = continuedChunkThreshold; + encoder.encode(null, THROW_ON_ITERABLE); + } + function startEncoding(value, options, encodeIterable) { + if (options && options.chunkThreshold) chunkThreshold = continuedChunkThreshold = options.chunkThreshold; + else chunkThreshold = 100; + if (value && typeof value === 'object') { + encoder.encode(null, THROW_ON_ITERABLE); + return encodeIterable(value, encoder.iterateProperties || (encoder.iterateProperties = {}), true); + } + return [ + encoder.encode(value) + ]; + } + async function* encodeObjectAsAsyncIterable(value, iterateProperties) { + for (let encodedValue of encodeObjectAsIterable(value, iterateProperties, true)){ + let constructor = encodedValue.constructor; + if (constructor === ByteArray || constructor === Uint8Array) yield encodedValue; + else if (isBlob(encodedValue)) { + let reader = encodedValue.stream().getReader(); + let next; + while(!(next = await reader.read()).done){ + yield next.value; + } + } else if (encodedValue[Symbol.asyncIterator]) { + for await (let asyncValue of encodedValue){ + restartEncoding(); + if (asyncValue) yield* encodeObjectAsAsyncIterable(asyncValue, iterateProperties.async || (iterateProperties.async = {})); + else yield encoder.encode(asyncValue); + } + } else { + yield encodedValue; + } + } + } } useBuffer(buffer) { target = buffer; @@ -40003,8 +39029,7 @@ class Encoder extends Decoder { this.sharedVersion = lastVersion + 1; let structuresCopy = this.structures.slice(0); let sharedData = new SharedData(structuresCopy, this.sharedValues, this.sharedVersion); - let saveResults = this.saveShared(sharedData, (existingShared)=>(existingShared && existingShared.version || 0) == lastVersion - ); + let saveResults = this.saveShared(sharedData, (existingShared)=>(existingShared && existingShared.version || 0) == lastVersion); if (saveResults === false) { sharedData = this.getShared() || {}; this.structures = sharedData.structures || []; @@ -40012,12 +39037,26 @@ class Encoder extends Decoder { this.sharedVersion = sharedData.version; this.structures.nextId = this.structures.length; } else { - structuresCopy.forEach((structure, i131)=>this.structures[i131] = structure - ); + structuresCopy.forEach((structure, i)=>this.structures[i] = structure); } return saveResults; } } +function writeEntityLength(length, majorValue) { + if (length < 0x18) target[position1++] = majorValue | length; + else if (length < 0x100) { + target[position1++] = majorValue | 0x18; + target[position1++] = length; + } else if (length < 0x10000) { + target[position1++] = majorValue | 0x19; + target[position1++] = length >> 8; + target[position1++] = length & 0xff; + } else { + target[position1++] = majorValue | 0x1a; + targetView.setUint32(position1, length); + position1 += 4; + } +} class SharedData { constructor(structures, values, version){ this.structures = structures; @@ -40026,38 +39065,44 @@ class SharedData { } } function writeArrayHeader(length) { - if (length < 24) target[position1++] = 128 | length; - else if (length < 256) { - target[position1++] = 152; + if (length < 0x18) target[position1++] = 0x80 | length; + else if (length < 0x100) { + target[position1++] = 0x98; target[position1++] = length; - } else if (length < 65536) { - target[position1++] = 153; + } else if (length < 0x10000) { + target[position1++] = 0x99; target[position1++] = length >> 8; - target[position1++] = length & 255; + target[position1++] = length & 0xff; } else { - target[position1++] = 154; + target[position1++] = 0x9a; targetView.setUint32(position1, length); position1 += 4; } } -function findRepetitiveStrings(value, packedValues2) { +const BlobConstructor = typeof Blob === 'undefined' ? function() {} : Blob; +function isBlob(object) { + if (object instanceof BlobConstructor) return true; + let tag = object[Symbol.toStringTag]; + return tag === 'Blob' || tag === 'File'; +} +function findRepetitiveStrings(value, packedValues) { switch(typeof value){ case 'string': if (value.length > 3) { - if (packedValues2.objectMap[value] > -1 || packedValues2.values.length >= packedValues2.maxValues) return; - let packedStatus = packedValues2.get(value); + if (packedValues.objectMap[value] > -1 || packedValues.values.length >= packedValues.maxValues) return; + let packedStatus = packedValues.get(value); if (packedStatus) { if (++packedStatus.count == 2) { - packedValues2.values.push(value); + packedValues.values.push(value); } } else { - packedValues2.set(value, { + packedValues.set(value, { count: 1 }); - if (packedValues2.samplingPackedValues) { - let status = packedValues2.samplingPackedValues.get(value); + if (packedValues.samplingPackedValues) { + let status = packedValues.samplingPackedValues.get(value); if (status) status.count++; - else packedValues2.samplingPackedValues.set(value, { + else packedValues.samplingPackedValues.set(value, { count: 1 }); } @@ -40067,15 +39112,15 @@ function findRepetitiveStrings(value, packedValues2) { case 'object': if (value) { if (value instanceof Array) { - for(let i132 = 0, l = value.length; i132 < l; i132++){ - findRepetitiveStrings(value[i132], packedValues2); + for(let i = 0, l = value.length; i < l; i++){ + findRepetitiveStrings(value[i], packedValues); } } else { - let includeKeys = !packedValues2.encoder.useRecords; + let includeKeys = !packedValues.encoder.useRecords; for(var key in value){ if (value.hasOwnProperty(key)) { - if (includeKeys) findRepetitiveStrings(key, packedValues2); - findRepetitiveStrings(value[key], packedValues2); + if (includeKeys) findRepetitiveStrings(key, packedValues); + findRepetitiveStrings(value[key], packedValues); } } } @@ -40113,12 +39158,12 @@ extensions = [ tag: 1, encode (date, encode) { let seconds = date.getTime() / 1000; - if ((this.useTimestamp32 || date.getMilliseconds() === 0) && seconds >= 0 && seconds < 4294967296) { - target[position1++] = 26; + if ((this.useTimestamp32 || date.getMilliseconds() === 0) && seconds >= 0 && seconds < 0x100000000) { + target[position1++] = 0x1a; targetView.setUint32(position1, seconds); position1 += 4; } else { - target[position1++] = 251; + target[position1++] = 0xfb; targetView.setFloat64(position1, seconds); position1 += 8; } @@ -40126,24 +39171,24 @@ extensions = [ }, { tag: 258, - encode (set, encode2) { + encode (set, encode) { let array = Array.from(set); - encode2(array); + encode(array); } }, { tag: 27, - encode (error1, encode3) { - encode3([ - error1.name, - error1.message + encode (error, encode) { + encode([ + error.name, + error.message ]); } }, { tag: 27, - encode (regex, encode4) { - encode4([ + encode (regex, encode) { + encode([ 'RegExp', regex.source, regex.flags @@ -40154,8 +39199,8 @@ extensions = [ getTag (tag) { return tag.tag; }, - encode (tag, encode5) { - encode5(tag.value); + encode (tag, encode) { + encode(tag.value); } }, { @@ -40184,30 +39229,30 @@ extensions = [ typedArrayEncoder(85, 4), typedArrayEncoder(86, 8), { - encode (sharedData, encode6) { - let packedValues3 = sharedData.packedValues || []; + encode (sharedData, encode) { + let packedValues = sharedData.packedValues || []; let sharedStructures = sharedData.structures || []; - if (packedValues3.values.length > 0) { - target[position1++] = 216; + if (packedValues.values.length > 0) { + target[position1++] = 0xd8; target[position1++] = 51; writeArrayHeader(4); - let valuesArray = packedValues3.values; - encode6(valuesArray); + let valuesArray = packedValues.values; + encode(valuesArray); writeArrayHeader(0); writeArrayHeader(0); packedObjectMap = Object.create(sharedPackedObjectMap || null); - for(let i133 = 0, l = valuesArray.length; i133 < l; i133++){ - packedObjectMap[valuesArray[i133]] = i133; + for(let i = 0, l = valuesArray.length; i < l; i++){ + packedObjectMap[valuesArray[i]] = i; } } if (sharedStructures) { - targetView.setUint32(position1, 3655335424); + targetView.setUint32(position1, 0xd9dffe00); position1 += 3; let definitions = sharedStructures.slice(0); - definitions.unshift(57344); - definitions.push(new Tag(sharedData.version, 1399353956)); - encode6(definitions); - } else encode6(new Tag(sharedData.version, 1399353956)); + definitions.unshift(0xe000); + definitions.push(new Tag(sharedData.version, 0x53687264)); + encode(definitions); + } else encode(new Tag(sharedData.version, 0x53687264)); } } ]; @@ -40215,27 +39260,27 @@ function typedArrayEncoder(tag, size) { if (!isLittleEndianMachine1 && size > 1) tag -= 4; return { tag: tag, - encode: function writeExtBuffer(typedArray, encode7) { + encode: function writeExtBuffer(typedArray, encode) { let length = typedArray.byteLength; let offset = typedArray.byteOffset || 0; let buffer = typedArray.buffer || typedArray; - encode7(hasNodeBuffer ? Buffer.from(buffer, offset, length) : new Uint8Array(buffer, offset, length)); + encode(hasNodeBuffer ? Buffer1.from(buffer, offset, length) : new Uint8Array(buffer, offset, length)); } }; } function writeBuffer(buffer, makeRoom) { let length = buffer.byteLength; - if (length < 24) { - target[position1++] = 64 + length; - } else if (length < 256) { - target[position1++] = 88; + if (length < 0x18) { + target[position1++] = 0x40 + length; + } else if (length < 0x100) { + target[position1++] = 0x58; target[position1++] = length; - } else if (length < 65536) { - target[position1++] = 89; + } else if (length < 0x10000) { + target[position1++] = 0x59; target[position1++] = length >> 8; - target[position1++] = length & 255; + target[position1++] = length & 0xff; } else { - target[position1++] = 90; + target[position1++] = 0x5a; targetView.setUint32(position1, length); position1 += 4; } @@ -40249,33 +39294,32 @@ function insertIds(serialized, idsToInsert) { let nextId; let distanceToMove = idsToInsert.length * 2; let lastEnd = serialized.length - distanceToMove; - idsToInsert.sort((a8, b)=>a8.offset > b.offset ? 1 : -1 - ); + idsToInsert.sort((a, b)=>a.offset > b.offset ? 1 : -1); for(let id = 0; id < idsToInsert.length; id++){ let referee = idsToInsert[id]; referee.id = id; - for (let position4 of referee.references){ - serialized[position4++] = id >> 8; - serialized[position4] = id & 255; + for (let position of referee.references){ + serialized[position++] = id >> 8; + serialized[position] = id & 0xff; } } while(nextId = idsToInsert.pop()){ let offset = nextId.offset; serialized.copyWithin(offset + distanceToMove, offset, lastEnd); distanceToMove -= 2; - let position5 = offset + distanceToMove; - serialized[position5++] = 216; - serialized[position5++] = 28; + let position = offset + distanceToMove; + serialized[position++] = 0xd8; + serialized[position++] = 28; lastEnd = offset; } return serialized; } -function writeBundles(start, encode8) { +function writeBundles(start, encode) { targetView.setUint32(bundledStrings1.position + start, position1 - bundledStrings1.position - start + 1); let writeStrings = bundledStrings1; bundledStrings1 = null; - encode8(writeStrings[0]); - encode8(writeStrings[1]); + encode(writeStrings[0]); + encode(writeStrings[1]); } function addExtension1(extension) { if (extension.Class) { @@ -40289,9 +39333,12 @@ let defaultEncoder = new Encoder({ useRecords: false }); const encode1 = defaultEncoder.encode; +const encodeAsIterable = defaultEncoder.encodeAsIterable; +const encodeAsAsyncIterable = defaultEncoder.encodeAsAsyncIterable; const { NEVER , ALWAYS , DECIMAL_ROUND , DECIMAL_FIT } = FLOAT32_OPTIONS; const REUSE_BUFFER_MODE = 512; const RESET_BUFFER_MODE = 1024; +const THROW_ON_ITERABLE = 2048; function encodeIter(objectIterator, options = {}) { if (!objectIterator || typeof objectIterator !== 'object') { throw new Error('first argument must be an Iterable, Async Iterable, or a Promise for an Async Iterable'); @@ -40304,22 +39351,22 @@ function encodeIter(objectIterator, options = {}) { } } function* encodeIterSync(objectIterator, options) { - const encoder2 = new Encoder(options); + const encoder = new Encoder(options); for (const value of objectIterator){ - yield encoder2.encode(value); + yield encoder.encode(value); } } async function* encodeIterAsync(objectIterator, options) { - const encoder3 = new Encoder(options); + const encoder = new Encoder(options); for await (const value of objectIterator){ - yield encoder3.encode(value); + yield encoder.encode(value); } } function decodeIter(bufferIterator, options = {}) { if (!bufferIterator || typeof bufferIterator !== 'object') { throw new Error('first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a promise'); } - const decoder2 = new Decoder(options); + const decoder = new Decoder(options); let incomplete; const parser = (chunk)=>{ let yields; @@ -40331,7 +39378,7 @@ function decodeIter(bufferIterator, options = {}) { incomplete = undefined; } try { - yields = decoder2.decodeMultiple(chunk); + yields = decoder.decodeMultiple(chunk); } catch (err) { if (err.incomplete) { incomplete = chunk.slice(err.lastPosition); @@ -40343,17 +39390,17 @@ function decodeIter(bufferIterator, options = {}) { return yields; }; if (typeof bufferIterator[Symbol.iterator] === 'function') { - return (function* iter() { + return function* iter() { for (const value of bufferIterator){ yield* parser(value); } - })(); + }(); } else if (typeof bufferIterator[Symbol.asyncIterator] === 'function') { - return (async function* iter() { + return async function* iter() { for await (const value of bufferIterator){ yield* parser(value); } - })(); + }(); } } const mod = function() { @@ -40361,6 +39408,8 @@ const mod = function() { Encoder: Encoder, addExtension: addExtension1, encode: encode1, + encodeAsIterable: encodeAsIterable, + encodeAsAsyncIterable: encodeAsAsyncIterable, NEVER: NEVER, ALWAYS: ALWAYS, DECIMAL_ROUND: DECIMAL_ROUND, @@ -40378,28 +39427,29 @@ const mod = function() { encodeIter: encodeIter }; }(); -const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", charsUrl = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", genLookup = (target9)=>{ - let lookupTemp = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); - for(let i134 = 0; i134 < chars.length; i134++){ - lookupTemp[target9.charCodeAt(i134)] = i134; +const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", charsUrl = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", genLookup = (target)=>{ + const lookupTemp = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); + for(let i = 0; i < chars.length; i++){ + lookupTemp[target.charCodeAt(i)] = i; } return lookupTemp; }, lookup = genLookup(chars), lookupUrl = genLookup(charsUrl); -let base64 = {}; +const base64 = {}; base64.toArrayBuffer = (data, urlMode)=>{ - let bufferLength = data.length * 0.75, len = data.length, i135, p = 0, encoded1, encoded2, encoded3, encoded4; + const len = data.length; + let bufferLength = data.length * .75, i, p = 0, encoded1, encoded2, encoded3, encoded4; if (data[data.length - 1] === "=") { bufferLength--; if (data[data.length - 2] === "=") { bufferLength--; } } - const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer), target10 = urlMode ? lookupUrl : lookup; - for(i135 = 0; i135 < len; i135 += 4){ - encoded1 = target10[data.charCodeAt(i135)]; - encoded2 = target10[data.charCodeAt(i135 + 1)]; - encoded3 = target10[data.charCodeAt(i135 + 2)]; - encoded4 = target10[data.charCodeAt(i135 + 3)]; + const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer), target = urlMode ? lookupUrl : lookup; + for(i = 0; i < len; i += 4){ + encoded1 = target[data.charCodeAt(i)]; + encoded2 = target[data.charCodeAt(i + 1)]; + encoded3 = target[data.charCodeAt(i + 2)]; + encoded4 = target[data.charCodeAt(i + 3)]; bytes[p++] = encoded1 << 2 | encoded2 >> 4; bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2; bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63; @@ -40407,12 +39457,14 @@ base64.toArrayBuffer = (data, urlMode)=>{ return arraybuffer; }; base64.fromArrayBuffer = (arrBuf, urlMode)=>{ - let bytes = new Uint8Array(arrBuf), i136, len = bytes.length, result = "", target11 = urlMode ? charsUrl : chars; - for(i136 = 0; i136 < len; i136 += 3){ - result += target11[bytes[i136] >> 2]; - result += target11[(bytes[i136] & 3) << 4 | bytes[i136 + 1] >> 4]; - result += target11[(bytes[i136 + 1] & 15) << 2 | bytes[i136 + 2] >> 6]; - result += target11[bytes[i136 + 2] & 63]; + const bytes = new Uint8Array(arrBuf); + let i, result = ""; + const len = bytes.length, target = urlMode ? charsUrl : chars; + for(i = 0; i < len; i += 3){ + result += target[bytes[i] >> 2]; + result += target[(bytes[i] & 3) << 4 | bytes[i + 1] >> 4]; + result += target[(bytes[i + 1] & 15) << 2 | bytes[i + 2] >> 6]; + result += target[bytes[i + 2] & 63]; } if (len % 3 === 2) { result = result.substring(0, result.length - 1) + (urlMode ? "" : "="); @@ -40461,8 +39513,8 @@ function isPem(pem) { const pemRegex = /^-----BEGIN .+-----$\n([A-Za-z0-9+/=]|\n)*^-----END .+-----$/m; return !!pem.match(pemRegex); } -function isPositiveInteger(n6) { - return n6 >>> 0 === parseFloat(n6); +function isPositiveInteger(n) { + return n >>> 0 === parseFloat(n); } function abToBuf(ab) { return new Uint8Array(ab).buffer; @@ -40487,9 +39539,8 @@ function abToPem(type, ab) { const str = coerceToBase64(ab, "pem buffer"); return [ `-----BEGIN ${type}-----\n`, - ...str.match(/.{1,64}/g).map((s5)=>s5 + "\n" - ), - `-----END ${type}-----\n`, + ...str.match(/.{1,64}/g).map((s)=>s + "\n"), + `-----END ${type}-----\n` ].join(""); } const appendBuffer = function(buffer1, buffer2) { @@ -40539,8 +39590,8 @@ function coerceToBase64(thing, name) { function str2ab(str) { const buf = new ArrayBuffer(str.length); const bufView = new Uint8Array(buf); - for(let i137 = 0, strLen = str.length; i137 < strLen; i137++){ - bufView[i137] = str.charCodeAt(i137); + for(let i = 0, strLen = str.length; i < strLen; i++){ + bufView[i] = str.charCodeAt(i); } return buf; } @@ -40569,8 +39620,8 @@ function arrayBufferEquals(b1, b2) { } b1 = new Uint8Array(b1); b2 = new Uint8Array(b2); - for(let i138 = 0; i138 < b1.byteLength; i138++){ - if (b1[i138] !== b2[i138]) return false; + for(let i = 0; i < b1.byteLength; i++){ + if (b1[i] !== b2[i]) return false; } return true; } @@ -40578,8 +39629,7 @@ function abToHex(ab) { if (!(ab instanceof ArrayBuffer)) { throw new TypeError("Invalid argument passed to abToHex"); } - const result = Array.prototype.map.call(new Uint8Array(ab), (x)=>("00" + x.toString(16)).slice(-2) - ).join(""); + const result = Array.prototype.map.call(new Uint8Array(ab), (x)=>("00" + x.toString(16)).slice(-2)).join(""); return result; } function b64ToJsObject(b64, desc) { @@ -40619,7 +39669,7 @@ function derToRaw(signature) { const sStart = rEnd + 2; return new Uint8Array([ ...extractBigNum(signature, 4, rEnd, 32), - ...extractBigNum(signature, sStart, signature.length, 32), + ...extractBigNum(signature, sStart, signature.length, 32) ]); } function isAndroidFacetId(str) { @@ -40702,8 +39752,8 @@ function validDomainName(value) { } const labels = ascii.split("."); let label; - for(let i139 = 0; i139 < labels.length; ++i139){ - label = labels[i139]; + for(let i = 0; i < labels.length; ++i){ + label = labels[i]; if (!label.length) { return false; } @@ -40773,15 +39823,15 @@ async function verifySignature(publicKey, expectedSignature, data, hashName) { console.error(_e); } } -async function hashDigest(o104, alg) { - if (typeof o104 === "string") { - o104 = new TextEncoder().encode(o104); +async function hashDigest(o, alg) { + if (typeof o === "string") { + o = new TextEncoder().encode(o); } - const result = await webcrypto.subtle.digest(alg || "SHA-256", o104); + const result = await webcrypto.subtle.digest(alg || "SHA-256", o); return result; } -function randomValues(n7) { - const byteArray = new Uint8Array(n7); +function randomValues(n) { + const byteArray = new Uint8Array(n); webcrypto.getRandomValues(byteArray); return byteArray; } @@ -41116,8 +40166,7 @@ function decodeValue(valueBlock) { return valueBlock.value; case "LocalConstructedValueBlock": if (typeof valueBlock === "object" && Array.isArray(valueBlock.value)) { - return valueBlock.value.map((v)=>decodeValue(v) - ); + return valueBlock.value.map((v)=>decodeValue(v)); } return valueBlock; case "Constructed": @@ -41134,8 +40183,8 @@ function decodeU2FTransportType(u2fRawTransports) { const bitCount = 8 - 3 - 1; let type = u2fRawTransports >> 3; const ret = new Set(); - for(let i140 = bitCount; i140 >= 0; i140--){ - if (type & 1) switch(i140){ + for(let i = bitCount; i >= 0; i--){ + if (type & 0x1) switch(i){ case 0: ret.add("bluetooth-classic"); break; @@ -41163,15 +40212,15 @@ function decodeKeyUsage(value) { throw new Error("certificate: expected 'keyUsage' value to be number"); } const retSet = new Set(); - if (value & 128) retSet.add("digitalSignature"); - if (value & 64) retSet.add("contentCommitment"); - if (value & 32) retSet.add("keyEncipherment"); - if (value & 16) retSet.add("dataEncipherment"); - if (value & 8) retSet.add("keyAgreement"); - if (value & 4) retSet.add("keyCertSign"); - if (value & 2) retSet.add("cRLSign"); - if (value & 1) retSet.add("encipherOnly"); - if (value & 1) retSet.add("decipherOnly"); + if (value & 0x80) retSet.add("digitalSignature"); + if (value & 0x40) retSet.add("contentCommitment"); + if (value & 0x20) retSet.add("keyEncipherment"); + if (value & 0x10) retSet.add("dataEncipherment"); + if (value & 0x08) retSet.add("keyAgreement"); + if (value & 0x04) retSet.add("keyCertSign"); + if (value & 0x02) retSet.add("cRLSign"); + if (value & 0x01) retSet.add("encipherOnly"); + if (value & 0x01) retSet.add("decipherOnly"); return retSet; } function decodeExtKeyUsage(value) { @@ -41179,21 +40228,18 @@ function decodeExtKeyUsage(value) { if (typeof value !== "object" || !Array.isArray(keyPurposes)) { throw new Error("expected extended key purposes to be an Array"); } - keyPurposes = keyPurposes.map((oid)=>resolveOid(oid).id - ); + keyPurposes = keyPurposes.map((oid)=>resolveOid(oid).id); return keyPurposes; } function decodeCertificatePolicies(value) { if (value && Array.isArray(value.certificatePolicies)) { - value = value.certificatePolicies.map((_policy)=>resolveOid(value.certificatePolicies[0].policyIdentifier, value.certificatePolicies[0].policyQualifiers) - ); + value = value.certificatePolicies.map((_policy)=>resolveOid(value.certificatePolicies[0].policyIdentifier, value.certificatePolicies[0].policyQualifiers)); } return value; } function decodePolicyQualifiers(value) { if (value && Array.isArray(value)) { - value = value.map((qual)=>resolveOid(qual.policyQualifierId, qual.qualifier) - ); + value = value.map((qual)=>resolveOid(qual.policyQualifierId, qual.qualifier)); } return value; } @@ -41314,11 +40360,11 @@ class CertManager { if (!Array.isArray(roots) || roots.length < 1) { throw new Error("expected 'roots' to be non-empty Array, got: " + roots); } - roots = roots.map((r3)=>{ - if (!(r3 instanceof Certificate1)) { - r3 = new Certificate1(r3); + roots = roots.map((r)=>{ + if (!(r instanceof Certificate1)) { + r = new Certificate1(r); } - return r3._cert; + return r._cert; }); crls = crls || []; if (!Array.isArray(crls)) { @@ -41575,9 +40621,9 @@ class PublicKey { retKey[name] = value; } const keyParams = coseKeyParamList[retKey.kty]; - for (const kv1 of extraMap){ - const key = kv1[0].toString(); - let value = kv1[1]; + for (const kv of extraMap){ + const key = kv[0].toString(); + let value = kv[1]; if (!keyParams[key]) { throw new Error("unknown COSE key label: " + retKey.kty + " " + key); } @@ -41692,11 +40738,11 @@ function coseAlgToHashStr(alg) { const fidoMdsRootCert = "-----BEGIN CERTIFICATE-----\n" + "MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G\n" + "A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp\n" + "Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4\n" + "MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG\n" + "A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI\n" + "hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8\n" + "RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT\n" + "gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm\n" + "KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd\n" + "QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ\n" + "XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw\n" + "DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o\n" + "LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU\n" + "RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp\n" + "jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK\n" + "6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX\n" + "mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs\n" + "Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH\n" + "WD9f\n" + "-----END CERTIFICATE-----\n"; class MdsEntry { constructor(mdsEntry, tocEntry){ - for (const key2 of Object.keys(tocEntry)){ - this[key2] = tocEntry[key2]; + for (const key of Object.keys(tocEntry)){ + this[key] = tocEntry[key]; } - for (const key1 of Object.keys(mdsEntry)){ - this[key1] = mdsEntry[key1]; + for (const key of Object.keys(mdsEntry)){ + this[key] = mdsEntry[key]; } if (this.metadataStatement) { delete this.metadataStatement; @@ -41704,27 +40750,26 @@ class MdsEntry { this.attachmentHint = this.attachmentHint instanceof Array ? this.attachmentHint : attachmentHintToArr(this.attachmentHint); function attachmentHintToArr(hint) { const ret = []; - if (hint & 1) ret.push("internal"); - if (hint & 2) ret.push("external"); - if (hint & 4) ret.push("wired"); - if (hint & 8) ret.push("wireless"); - if (hint & 16) ret.push("nfc"); - if (hint & 32) ret.push("bluetooth"); - if (hint & 64) ret.push("network"); - if (hint & 128) ret.push("ready"); - if (hint & 65280) throw new Error("unknown attachment hint flags: " + hint & 65280); + if (hint & 0x0001) ret.push("internal"); + if (hint & 0x0002) ret.push("external"); + if (hint & 0x0004) ret.push("wired"); + if (hint & 0x0008) ret.push("wireless"); + if (hint & 0x0010) ret.push("nfc"); + if (hint & 0x0020) ret.push("bluetooth"); + if (hint & 0x0040) ret.push("network"); + if (hint & 0x0080) ret.push("ready"); + if (hint & 0xFF00) throw new Error("unknown attachment hint flags: " + hint & 0xFF00); return ret; } if (!Array.isArray(this.attestationTypes)) throw new Error("expected attestationTypes to be Array, got: " + this.attestationTypes); - this.attestationTypes = this.attestationTypes.map((att)=>typeof att === "string" ? att : attestationTypeToStr(att) - ); + this.attestationTypes = this.attestationTypes.map((att)=>typeof att === "string" ? att : attestationTypeToStr(att)); function attestationTypeToStr(att) { switch(att){ - case 15879: + case 0x3E07: return "basic-full"; - case 15880: + case 0x3E08: return "basic-surrogate"; - case 15881: + case 0x3E09: return "ecdaa"; default: throw new Error("uknown attestation type: " + att); @@ -41736,23 +40781,23 @@ class MdsEntry { this.authenticationAlgorithm = typeof this.authenticationAlgorithm === "string" ? this.authenticationAlgorithm : algToStr(this.authenticationAlgorithm); function algToStr(alg) { switch(alg){ - case 1: + case 0x0001: return "ALG_SIGN_SECP256R1_ECDSA_SHA256_RAW"; - case 2: + case 0x0002: return "ALG_SIGN_SECP256R1_ECDSA_SHA256_DER"; - case 3: + case 0x0003: return "ALG_SIGN_RSASSA_PSS_SHA256_RAW"; - case 4: + case 0x0004: return "ALG_SIGN_RSASSA_PSS_SHA256_DER"; - case 5: + case 0x0005: return "ALG_SIGN_SECP256K1_ECDSA_SHA256_RAW"; - case 6: + case 0x0006: return "ALG_SIGN_SECP256K1_ECDSA_SHA256_DER"; - case 7: + case 0x0007: return "ALG_SIGN_SM2_SM3_RAW"; - case 8: + case 0x0008: return "ALG_SIGN_RSA_EMSA_PKCS1_SHA256_RAW"; - case 9: + case 0x0009: return "ALG_SIGN_RSA_EMSA_PKCS1_SHA256_DER"; default: throw new Error("unknown authentication algorithm: " + alg); @@ -41766,36 +40811,36 @@ class MdsEntry { this.keyProtection = this.keyProtection instanceof Array ? this.keyProtection : keyProtToArr(this.keyProtection); function keyProtToArr(kp) { const ret = []; - if (kp & 1) ret.push("software"); - if (kp & 2) ret.push("hardware"); - if (kp & 4) ret.push("tee"); - if (kp & 8) ret.push("secure-element"); - if (kp & 16) ret.push("remote-handle"); - if (kp & 65504) throw new Error("unknown key protection flags: " + kp & 65504); + if (kp & 0x0001) ret.push("software"); + if (kp & 0x0002) ret.push("hardware"); + if (kp & 0x0004) ret.push("tee"); + if (kp & 0x0008) ret.push("secure-element"); + if (kp & 0x0010) ret.push("remote-handle"); + if (kp & 0xFFE0) throw new Error("unknown key protection flags: " + kp & 0xFFE0); return ret; } this.matcherProtection = this.matcherProtection instanceof Array ? this.matcherProtection : matcherProtToArr(this.matcherProtection); function matcherProtToArr(mp) { const ret = []; - if (mp & 1) ret.push("software"); - if (mp & 2) ret.push("hardware"); - if (mp & 4) ret.push("tee"); - if (mp & 65528) throw new Error("unknown key protection flags: " + mp & 65528); + if (mp & 0x0001) ret.push("software"); + if (mp & 0x0002) ret.push("hardware"); + if (mp & 0x0004) ret.push("tee"); + if (mp & 0xFFF8) throw new Error("unknown key protection flags: " + mp & 0xFFF8); return ret; } if (this.publicKeyAlgAndEncodings) this.publicKeyAlgAndEncoding = `ALG_KEY_${this.publicKeyAlgAndEncodings[0].toUpperCase()}`; this.publicKeyAlgAndEncoding = typeof this.publicKeyAlgAndEncoding === "string" ? this.publicKeyAlgAndEncoding : pkAlgAndEncodingToStr(this.publicKeyAlgAndEncoding); function pkAlgAndEncodingToStr(pkalg) { switch(pkalg){ - case 256: + case 0x0100: return "ALG_KEY_ECC_X962_RAW"; - case 257: + case 0x0101: return "ALG_KEY_ECC_X962_DER"; - case 258: + case 0x0102: return "ALG_KEY_RSA_2048_RAW"; - case 259: + case 0x0103: return "ALG_KEY_RSA_2048_DER"; - case 260: + case 0x0104: return "ALG_KEY_COSE"; default: throw new Error("unknown public key algorithm and encoding: " + pkalg); @@ -41804,12 +40849,12 @@ class MdsEntry { this.tcDisplay = this.tcDisplay instanceof Array ? this.tcDisplay : tcDisplayToArr(this.tcDisplay); function tcDisplayToArr(tcd) { const ret = []; - if (tcd & 1) ret.push("any"); - if (tcd & 2) ret.push("priviledged-software"); - if (tcd & 4) ret.push("tee"); - if (tcd & 8) ret.push("hardware"); - if (tcd & 16) ret.push("remote"); - if (tcd & 65504) throw new Error("unknown transaction confirmation display flags: " + tcd & 65504); + if (tcd & 0x0001) ret.push("any"); + if (tcd & 0x0002) ret.push("priviledged-software"); + if (tcd & 0x0004) ret.push("tee"); + if (tcd & 0x0008) ret.push("hardware"); + if (tcd & 0x0010) ret.push("remote"); + if (tcd & 0xFFE0) throw new Error("unknown transaction confirmation display flags: " + tcd & 0xFFE0); return ret; } this.userVerificationDetails = uvDetailsToSet(this.userVerificationDetails); @@ -41849,17 +40894,17 @@ class MdsEntry { } function uvToArr(uv) { const ret = []; - if (uv & 1) ret.push("presence"); - if (uv & 2) ret.push("fingerprint"); - if (uv & 4) ret.push("passcode"); - if (uv & 8) ret.push("voiceprint"); - if (uv & 16) ret.push("faceprint"); - if (uv & 32) ret.push("location"); - if (uv & 64) ret.push("eyeprint"); - if (uv & 128) ret.push("pattern"); - if (uv & 256) ret.push("handprint"); - if (uv & 512) ret.push("none"); - if (uv & 1024) ret.push("all"); + if (uv & 0x00000001) ret.push("presence"); + if (uv & 0x00000002) ret.push("fingerprint"); + if (uv & 0x00000004) ret.push("passcode"); + if (uv & 0x00000008) ret.push("voiceprint"); + if (uv & 0x00000010) ret.push("faceprint"); + if (uv & 0x00000020) ret.push("location"); + if (uv & 0x00000040) ret.push("eyeprint"); + if (uv & 0x00000080) ret.push("pattern"); + if (uv & 0x00000100) ret.push("handprint"); + if (uv & 0x00000200) ret.push("none"); + if (uv & 0x00000400) ret.push("all"); return ret; } if (this.protocolFamily === undefined) this.protocolFamily = "uaf"; @@ -41891,9 +40936,9 @@ class MdsCollection { parsedJws.header = protectedHeader; parsedJws.key = publicKey; this.toc = parsedJws.payload; - } catch (e7) { - e7.message = "could not parse and validate MDS TOC: " + e7.message; - throw e7; + } catch (e) { + e.message = "could not parse and validate MDS TOC: " + e.message; + throw e; } if (rootCert === undefined) { if (parsedJws.kid === "Metadata TOC Signer 3" || parsedJws.key && parsedJws.key.kid === "Metadata TOC Signer 3") { @@ -41910,8 +40955,7 @@ class MdsCollection { const certHeader = parsedJws.header ? parsedJws.header : parsedJws.protectedHeader; await CertManager.verifyCertChain(certHeader.x5c, rootCerts, crls); this.toc.raw = tocStr; - if (this.toc.entries.some((entry)=>!entry.metadataStatement - )) console.warn("[DEPRECATION WARNING] FIDO MDS v2 will be removed in October 2022. Please update to MDS v3!"); + if (this.toc.entries.some((entry)=>!entry.metadataStatement)) console.warn("[DEPRECATION WARNING] FIDO MDS v2 will be removed in October 2022. Please update to MDS v3!"); return this.toc; } getToc() { @@ -42015,8 +41059,7 @@ function idEquals(id1, id2) { } if (Array.isArray(id1) && Array.isArray(id2)) { if (id1.length !== id2.length) return false; - const allSame = id1.reduce((acc, val)=>acc && id2.includes(val) - , true); + const allSame = id1.reduce((acc, val)=>acc && id2.includes(val), true); if (!allSame) return false; return true; } @@ -42042,7 +41085,7 @@ const noneAttestation = { validateFn: noneValidateFn }; const u2fRootCerts = [ - "MIIDHjCCAgagAwIBAgIEG0BT9zANBgkqhkiG9w0BAQsFADAuMSwwKgYDVQQDEyNZ\n" + "dWJpY28gVTJGIFJvb3QgQ0EgU2VyaWFsIDQ1NzIwMDYzMTAgFw0xNDA4MDEwMDAw\n" + "MDBaGA8yMDUwMDkwNDAwMDAwMFowLjEsMCoGA1UEAxMjWXViaWNvIFUyRiBSb290\n" + "IENBIFNlcmlhbCA0NTcyMDA2MzEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQC/jwYuhBVlqaiYWEMsrWFisgJ+PtM91eSrpI4TK7U53mwCIawSDHy8vUmk\n" + "5N2KAj9abvT9NP5SMS1hQi3usxoYGonXQgfO6ZXyUA9a+KAkqdFnBnlyugSeCOep\n" + "8EdZFfsaRFtMjkwz5Gcz2Py4vIYvCdMHPtwaz0bVuzneueIEz6TnQjE63Rdt2zbw\n" + "nebwTG5ZybeWSwbzy+BJ34ZHcUhPAY89yJQXuE0IzMZFcEBbPNRbWECRKgjq//qT\n" + "9nmDOFVlSRCt2wiqPSzluwn+v+suQEBsUjTGMEd25tKXXTkNW21wIWbxeSyUoTXw\n" + "LvGS6xlwQSgNpk2qXYwf8iXg7VWZAgMBAAGjQjBAMB0GA1UdDgQWBBQgIvz0bNGJ\n" + "hjgpToksyKpP9xv9oDAPBgNVHRMECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAN\n" + "BgkqhkiG9w0BAQsFAAOCAQEAjvjuOMDSa+JXFCLyBKsycXtBVZsJ4Ue3LbaEsPY4\n" + "MYN/hIQ5ZM5p7EjfcnMG4CtYkNsfNHc0AhBLdq45rnT87q/6O3vUEtNMafbhU6kt\n" + "hX7Y+9XFN9NpmYxr+ekVY5xOxi8h9JDIgoMP4VB1uS0aunL1IGqrNooL9mmFnL2k\n" + "LVVee6/VR6C5+KSTCMCWppMuJIZII2v9o4dkoZ8Y7QRjQlLfYzd3qGtKbw7xaF1U\n" + "sG/5xUb/Btwb2X2g4InpiB/yt/3CpQXpiWX/K4mBvUKiGn05ZsqeY1gx4g0xLBqc\n" + "U9psmyPzK+Vsgw2jeRQ5JlKDyqE0hebfC1tvFu0CCrJFcw==", + "MIIDHjCCAgagAwIBAgIEG0BT9zANBgkqhkiG9w0BAQsFADAuMSwwKgYDVQQDEyNZ\n" + "dWJpY28gVTJGIFJvb3QgQ0EgU2VyaWFsIDQ1NzIwMDYzMTAgFw0xNDA4MDEwMDAw\n" + "MDBaGA8yMDUwMDkwNDAwMDAwMFowLjEsMCoGA1UEAxMjWXViaWNvIFUyRiBSb290\n" + "IENBIFNlcmlhbCA0NTcyMDA2MzEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\n" + "AoIBAQC/jwYuhBVlqaiYWEMsrWFisgJ+PtM91eSrpI4TK7U53mwCIawSDHy8vUmk\n" + "5N2KAj9abvT9NP5SMS1hQi3usxoYGonXQgfO6ZXyUA9a+KAkqdFnBnlyugSeCOep\n" + "8EdZFfsaRFtMjkwz5Gcz2Py4vIYvCdMHPtwaz0bVuzneueIEz6TnQjE63Rdt2zbw\n" + "nebwTG5ZybeWSwbzy+BJ34ZHcUhPAY89yJQXuE0IzMZFcEBbPNRbWECRKgjq//qT\n" + "9nmDOFVlSRCt2wiqPSzluwn+v+suQEBsUjTGMEd25tKXXTkNW21wIWbxeSyUoTXw\n" + "LvGS6xlwQSgNpk2qXYwf8iXg7VWZAgMBAAGjQjBAMB0GA1UdDgQWBBQgIvz0bNGJ\n" + "hjgpToksyKpP9xv9oDAPBgNVHRMECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjAN\n" + "BgkqhkiG9w0BAQsFAAOCAQEAjvjuOMDSa+JXFCLyBKsycXtBVZsJ4Ue3LbaEsPY4\n" + "MYN/hIQ5ZM5p7EjfcnMG4CtYkNsfNHc0AhBLdq45rnT87q/6O3vUEtNMafbhU6kt\n" + "hX7Y+9XFN9NpmYxr+ekVY5xOxi8h9JDIgoMP4VB1uS0aunL1IGqrNooL9mmFnL2k\n" + "LVVee6/VR6C5+KSTCMCWppMuJIZII2v9o4dkoZ8Y7QRjQlLfYzd3qGtKbw7xaF1U\n" + "sG/5xUb/Btwb2X2g4InpiB/yt/3CpQXpiWX/K4mBvUKiGn05ZsqeY1gx4g0xLBqc\n" + "U9psmyPzK+Vsgw2jeRQ5JlKDyqE0hebfC1tvFu0CCrJFcw==" ]; const algMap = new Map([ [ @@ -42072,7 +41115,7 @@ const algMap = new Map([ algName: "RSASSA-PKCS1-v1_5_w_SHA256", hashAlg: "SHA-256" } - ], + ] ]); function packedParseFn(attStmt) { const ret = new Map(); @@ -42114,7 +41157,7 @@ async function packedValidateFn() { return await packedValidateSurrogate.call(this); } async function packedValidateBasic() { - const { algName , hashAlg , } = this.authnrData.get("alg"); + const { algName , hashAlg } = this.authnrData.get("alg"); if (algName === undefined) { throw new Error("packed attestation: unknown algorithm " + algName); } @@ -42135,19 +41178,18 @@ async function validateSignature(rawClientData, authenticatorData, sig, hashAlg, const attCertPem = abToPem("CERTIFICATE", parsedAttCert); const cert = new Certificate1(attCertPem); const publicKey = await cert.getPublicKey(); - const verify1 = await mod2.verifySignature(publicKey, sig, appendBuffer(authenticatorData, clientDataHash), hashAlg); - return verify1; + const verify = await mod2.verifySignature(publicKey, sig, appendBuffer(authenticatorData, clientDataHash), hashAlg); + return verify; } async function validateCerts(parsedAttCert, aaguid, _x5c, audit) { if (CertManager.getCerts().size === 0) { - u2fRootCerts.forEach((cert)=>CertManager.addCert(cert) - ); + u2fRootCerts.forEach((cert)=>CertManager.addCert(cert)); } const attCert = new Certificate1(coerceToBase64(parsedAttCert, "parsedAttCert")); try { await attCert.verify(); - } catch (e8) { - const err = e8; + } catch (e) { + const err = e; if (err.message === "Please provide issuer certificate as a parameter") { audit.warning.set("attesation-not-validated", "could not validate attestation because the root attestation certification could not be found"); } else { @@ -42159,12 +41201,9 @@ async function validateCerts(parsedAttCert, aaguid, _x5c, audit) { throw new Error("expected packed attestation certificate to be x.509v3"); } const exts = attCert.getExtensions(); - exts.forEach((v, k)=>audit.info.set(k, v) - ); - attCert.info.forEach((v, k)=>audit.info.set(k, v) - ); - attCert.warning.forEach((v, k)=>audit.warning.set(k, v) - ); + exts.forEach((v, k)=>audit.info.set(k, v)); + attCert.info.forEach((v, k)=>audit.info.set(k, v)); + attCert.warning.forEach((v, k)=>audit.warning.set(k, v)); audit.journal.add("attCert"); if (attCert.getVersion() !== 3) { throw new Error("expected packed attestation certificate to be x.509v3"); @@ -42193,11 +41232,11 @@ async function validateCerts(parsedAttCert, aaguid, _x5c, audit) { } async function validateSelfSignature(rawClientData, authenticatorData, sig, hashAlg, publicKeyPem) { const clientDataHash = await mod2.hashDigest(rawClientData, hashAlg); - const verify2 = await mod2.verifySignature(publicKeyPem, sig, appendBuffer(authenticatorData, clientDataHash), hashAlg); - return verify2; + const verify = await mod2.verifySignature(publicKeyPem, sig, appendBuffer(authenticatorData, clientDataHash), hashAlg); + return verify; } async function packedValidateSurrogate() { - const { algName , hashAlg , } = this.authnrData.get("alg"); + const { algName , hashAlg } = this.authnrData.get("alg"); if (algName === undefined) { throw new Error("packed attestation: unknown algorithm " + algName); } @@ -42249,8 +41288,7 @@ async function fidoU2fValidateFn() { } this.audit.journal.add("x5c"); if (CertManager.getCerts().size === 0) { - u2fRootCerts.forEach((cert)=>CertManager.addCert(cert) - ); + u2fRootCerts.forEach((cert)=>CertManager.addCert(cert)); } const attCert = new Certificate1(coerceToBase64(parsedAttCert, "parsedAttCert")); try { @@ -42265,12 +41303,9 @@ async function fidoU2fValidateFn() { if (attCert.getVersion() !== 3) { throw new Error("expected U2F attestation certificate to be x.509v3"); } - attCert.getExtensions().forEach((v, k)=>this.audit.info.set(k, v) - ); - attCert.info.forEach((v, k)=>this.audit.info.set(k, v) - ); - attCert.warning.forEach((v, k)=>this.audit.warning.set(k, v) - ); + attCert.getExtensions().forEach((v, k)=>this.audit.info.set(k, v)); + attCert.info.forEach((v, k)=>this.audit.info.set(k, v)); + attCert.warning.forEach((v, k)=>this.audit.warning.set(k, v)); this.audit.journal.add("attCert"); const jwk = this.authnrData.get("credentialPublicKeyJwk"); if (jwk.kty !== "EC" || jwk.crv !== "P-256") { @@ -42289,18 +41324,18 @@ async function fidoU2fValidateFn() { throw new Error("U2F public key y component was wrong size"); } const verificationData = new Uint8Array([ - 0, + 0x00, ...new Uint8Array(rpIdHash), ...new Uint8Array(clientDataHash), ...new Uint8Array(credId), - 4, + 0x04, ...new Uint8Array(x), - ...new Uint8Array(y), + ...new Uint8Array(y) ]); const sig = this.authnrData.get("sig"); const attCertPem = abToPem("CERTIFICATE", parsedAttCert); - const cert1 = new Certificate1(attCertPem); - const publicKey = await cert1.getPublicKey(); + const cert = new Certificate1(attCertPem); + const publicKey = await cert.getPublicKey(); const res = await mod2.verifySignature(publicKey, abToBuf(sig), abToBuf(verificationData), "SHA-256"); if (!res) { throw new Error("U2F attestation signature verification failed"); @@ -42407,7 +41442,7 @@ function parseCertInfo(certInfo) { const ci = new Map(); ci.set("rawCertInfo", certInfo); const magic = dv.getUint32(offset); - if (magic !== 4283712327) { + if (magic !== 0xff544347) { throw new Error("tpm attestation: certInfo had bad magic number: " + magic.toString(16)); } ci.set("magic", magic); @@ -42488,50 +41523,50 @@ function parsePubArea(pubArea) { } return pa; } -function decodeStructureTag(t3) { - switch(t3){ - case 196: +function decodeStructureTag(t) { + switch(t){ + case 0x00C4: return "TPM_ST_RSP_COMMAND"; - case 32768: + case 0x8000: return "TPM_ST_NULL"; - case 32769: + case 0x8001: return "TPM_ST_NO_SESSIONS"; - case 32770: + case 0x8002: return "TPM_ST_SESSIONS"; - case 32771: + case 0x8003: return "TPM_RESERVED_0x8003"; - case 32772: + case 0x8004: return "TPM_RESERVED_0x8004"; - case 32788: + case 0x8014: return "TPM_ST_ATTEST_NV"; - case 32789: + case 0x8015: return "TPM_ST_ATTEST_COMMAND_AUDIT"; - case 32790: + case 0x8016: return "TPM_ST_ATTEST_SESSION_AUDIT"; - case 32791: + case 0x8017: return "TPM_ST_ATTEST_CERTIFY"; - case 32792: + case 0x8018: return "TPM_ST_ATTEST_QUOTE"; - case 32793: + case 0x8019: return "TPM_ST_ATTEST_TIME"; - case 32794: + case 0x801A: return "TPM_ST_ATTEST_CREATION"; - case 32795: + case 0x801B: return "TPM_RESERVED_0x801B"; - case 32801: + case 0x8021: return "TPM_ST_CREATION"; - case 32802: + case 0x8022: return "TPM_ST_VERIFIED"; - case 32803: + case 0x8023: return "TPM_ST_AUTH_SECRET"; - case 32804: + case 0x8024: return "TPM_ST_HASHCHECK"; - case 32805: + case 0x8025: return "TPM_ST_AUTH_SIGNED"; - case 32809: + case 0x8029: return "TPM_ST_FU_MANIFEST"; default: - throw new Error("tpm attestation: unknown structure tag: " + t3.toString(16)); + throw new Error("tpm attestation: unknown structure tag: " + t.toString(16)); } } function decodeObjectAttributes(oa) { @@ -42567,13 +41602,13 @@ function decodeObjectAttributes(oa) { "RESERVED_28", "RESERVED_29", "RESERVED_30", - "RESERVED_31", + "RESERVED_31" ]; const ret = new Set(); - for(let i141 = 0; i141 < 32; i141++){ - const bit = 1 << i141; + for(let i = 0; i < 32; i++){ + const bit = 1 << i; if (oa & bit) { - ret.add(attrList[i141]); + ret.add(attrList[i]); } } return ret; @@ -42592,7 +41627,7 @@ function getSizedElement(dv, offset) { }; } function getTpm2bName(dvIn, oIn) { - const { offset , dv , } = getSizedElement(dvIn, oIn); + const { offset , dv } = getSizedElement(dvIn, oIn); const hashType = algIdToStr(dv.getUint16(0)); const nameHash = dv.buffer.slice(2); return { @@ -42656,7 +41691,7 @@ async function tpmValidateFn() { throw new Error("tpm attestation: RSA 'n' of WebAuthn credentialPublicKey and TPM publicArea did not match"); } const magic = certInfo.get("magic"); - if (magic !== 4283712327) { + if (magic !== 0xff544347) { throw new Error("tpm attestation: certInfo had bad magic number: " + magic.toString(16)); } const type = certInfo.get("type"); @@ -42699,8 +41734,8 @@ async function tpmValidateFn() { const attCert = new Certificate1(coerceToBase64(parsedAttCert, "parsedAttCert")); try { await attCert.verify(); - } catch (e9) { - const err = e9; + } catch (e) { + const err = e; if (err.message === "Please provide issuer certificate as a parameter") { this.audit.warning.set("attesation-not-validated", "could not validate attestation because the root attestation certification could not be found"); } else { @@ -42715,12 +41750,9 @@ async function tpmValidateFn() { throw new Error("tpm attestation: attestation certificate MUST have empty subject"); } const attCertExt = attCert.getExtensions(); - attCertExt.forEach((v, k)=>this.audit.info.set(k, v) - ); - attCert.info.forEach((v, k)=>this.audit.info.set(k, v) - ); - attCert.warning.forEach((v, k)=>this.audit.warning.set(k, v) - ); + attCertExt.forEach((v, k)=>this.audit.info.set(k, v)); + attCert.info.forEach((v, k)=>this.audit.info.set(k, v)); + attCert.warning.forEach((v, k)=>this.audit.warning.set(k, v)); const altName = attCertExt.get("subject-alt-name"); if (altName === undefined || !Array.isArray(altName) || altName.length < 1) { throw new Error("tpm attestation: Subject Alternative Name extension MUST be set as defined in [TPMv2-EK-Profile] section 3.2.9"); @@ -42810,9 +41842,9 @@ async function appleValidateFn() { const nonce = await mod2.hashDigest(nonceToHash); const credCert = new Certificate1(coerceToBase64(parsedCredCert, "parsedCredCert")); this.audit.journal.add("credCert"); - const extensions2 = credCert.getExtensions(); + const extensions = credCert.getExtensions(); let expectedNonce; - for (const ext of extensions2){ + for (const ext of extensions){ if (Array.isArray(ext) && ext.length > 1) { if (ext[0] === "1.2.840.113635.100.8.2") { if (Array.isArray(ext[1]) && ext[1].length) { @@ -42847,7 +41879,7 @@ const appleAttestation = { parseFn: appleParseFn, validateFn: appleValidateFn }; -const { coerceToArrayBuffer: coerceToArrayBuffer1 , abToBuf: abToBuf1 , tools , appendBuffer: appendBuffer1 , } = mod3; +const { coerceToArrayBuffer: coerceToArrayBuffer1 , abToBuf: abToBuf1 , tools , appendBuffer: appendBuffer1 } = mod3; const lockSym = Symbol(); async function validateExpectations() { let req = this.requiredExpectations; @@ -42878,8 +41910,8 @@ async function validateExpectations() { } } let optCount = 0; - for (const [field1] of exp){ - if (opt.has(field1)) { + for (const [field] of exp){ + if (opt.has(field)) { optCount++; } } @@ -42960,8 +41992,7 @@ async function validateExpectations() { "ble", "cable", "internal" - ].includes(el) - )) { + ].includes(el))) { throw new Error("expected transports of allowCredentials[" + index + "] to be string with value 'usb', 'nfc', 'ble', 'cable', 'internal' or null"); } }); @@ -43258,7 +42289,7 @@ class Fido2Lib { "fmt", fmt ], - ...ret, + ...ret ]); } async attestationResult(res, expected) { @@ -43295,7 +42326,7 @@ class Fido2Lib { rp: {}, user: {} }; - const extensions3 = createExtensions.call(this, "attestation", opts.extensionOptions); + const extensions = createExtensions.call(this, "attestation", opts.extensionOptions); setOpt(options.rp, "name", this.config.rpName); setOpt(options.rp, "id", this.config.rpId); setOpt(options.rp, "icon", this.config.rpIcon); @@ -43310,8 +42341,8 @@ class Fido2Lib { setOpt(options.authenticatorSelection, "userVerification", this.config.authenticatorUserVerification); } setOpt(options, "rawChallenge", rawChallenge); - if (Object.keys(extensions3).length > 0) { - options.extensions = extensions3; + if (Object.keys(extensions).length > 0) { + options.extensions = extensions; } return options; } @@ -43326,14 +42357,14 @@ class Fido2Lib { const extraData = coerceToArrayBuffer1(opts.extraData, "extraData"); challenge = abToBuf1(await tools.hashDigest(appendBuffer1(challenge, extraData))); } - const extensions4 = createExtensions.call(this, "assertion", opts.extensionOptions); + const extensions = createExtensions.call(this, "assertion", opts.extensionOptions); setOpt(options, "challenge", challenge); setOpt(options, "timeout", this.config.timeout); setOpt(options, "rpId", this.config.rpId); setOpt(options, "userVerification", this.config.authenticatorUserVerification); setOpt(options, "rawChallenge", rawChallenge); - if (Object.keys(extensions4).length > 0) { - options.extensions = extensions4; + if (Object.keys(extensions).length > 0) { + options.extensions = extensions; } return options; } @@ -43376,7 +42407,7 @@ function factorToFlags(expectedFactor, flags) { return flags; } function createExtensions(type, extObj) { - const extensions5 = {}; + const extensions = {}; let enabledExtensions = this.extSet; let extensionsOptions = this.extOptMap; if (typeof extObj === "object") { @@ -43388,9 +42419,9 @@ function createExtensions(type, extObj) { } for (const extension of enabledExtensions){ const extVal = this.generateExtensionOptions(extension, type, extensionsOptions.get(extension)); - if (extVal !== undefined) extensions5[extension] = extVal; + if (extVal !== undefined) extensions[extension] = extVal; } - return extensions5; + return extensions; } Fido2Lib.addAttestationFormat(noneAttestation.name, noneAttestation.parseFn, noneAttestation.validateFn); Fido2Lib.addAttestationFormat(packedAttestation.name, packedAttestation.parseFn, packedAttestation.validateFn); @@ -43446,7 +42477,7 @@ function parseClientResponse(msg) { [ "rawId", rawId - ], + ] ]); return ret; } @@ -43480,7 +42511,7 @@ async function parseAttestationObject(attestationObject) { "transports", undefined ], - ...await parseAuthenticatorData(parsed.authData), + ...await parseAuthenticatorData(parsed.authData) ]); return ret; } @@ -43524,7 +42555,7 @@ async function parseAuthnrAttestationResponse(msg) { "transports", msg.transports ], - ...await parseAuthenticatorData(parsed.authData), + ...await parseAuthenticatorData(parsed.authData) ]); return ret; } @@ -43538,19 +42569,19 @@ async function parseAuthenticatorData(authnrDataArrayBuffer) { const flags = authnrDataBuf.getUint8(offset); const flagsSet = new Set(); ret.set("flags", flagsSet); - if (flags & 1) flagsSet.add("UP"); - if (flags & 2) flagsSet.add("RFU1"); - if (flags & 4) flagsSet.add("UV"); - if (flags & 8) flagsSet.add("RFU3"); - if (flags & 16) flagsSet.add("RFU4"); - if (flags & 32) flagsSet.add("RFU5"); - if (flags & 64) flagsSet.add("AT"); - if (flags & 128) flagsSet.add("ED"); + if (flags & 0x01) flagsSet.add("UP"); + if (flags & 0x02) flagsSet.add("RFU1"); + if (flags & 0x04) flagsSet.add("UV"); + if (flags & 0x08) flagsSet.add("RFU3"); + if (flags & 0x10) flagsSet.add("RFU4"); + if (flags & 0x20) flagsSet.add("RFU5"); + if (flags & 0x40) flagsSet.add("AT"); + if (flags & 0x80) flagsSet.add("ED"); offset++; ret.set("counter", authnrDataBuf.getUint32(offset, false)); offset += 4; const attestation = flagsSet.has("AT"); - const extensions6 = flagsSet.has("ED"); + const extensions = flagsSet.has("ED"); if (attestation) { ret.set("aaguid", authnrDataBuf.buffer.slice(offset, offset + 16)); offset += 16; @@ -43565,7 +42596,7 @@ async function parseAuthenticatorData(authnrDataArrayBuffer) { ret.set("credentialPublicKeyJwk", await publicKey.toJwk()); ret.set("credentialPublicKeyPem", await publicKey.toPem()); } - if (extensions6) { + if (extensions) { const cborObjects = mod2.cbor.decodeMultiple(new Uint8Array(authnrDataBuf.buffer.slice(offset, authnrDataBuf.buffer.byteLength))); if (attestation) { cborObjects.shift(); @@ -43605,7 +42636,7 @@ async function parseAuthnrAssertionResponse(msg) { "rawAuthnrData", coerceToArrayBuffer(msg.response.authenticatorData, "response.authenticatorData") ], - ...await parseAuthenticatorData(msg.response.authenticatorData), + ...await parseAuthenticatorData(msg.response.authenticatorData) ]); return ret; } @@ -43655,10 +42686,10 @@ class Fido2AttestationResult extends Fido2Result { this.requiredExpectations = new Set([ "origin", "challenge", - "flags", + "flags" ]); this.optionalExpectations = new Set([ - "rpId", + "rpId" ]); } async parse() { @@ -43689,11 +42720,11 @@ class Fido2AssertionResult extends Fido2Result { "flags", "prevCounter", "publicKey", - "userHandle", + "userHandle" ]); this.optionalExpectations = new Set([ "rpId", - "allowCredentials", + "allowCredentials" ]); } async parse() { @@ -43898,8 +42929,8 @@ async function validateRpIdHash() { } rpIdHash = new Uint8Array(rpIdHash); createdHash = new Uint8Array(createdHash); - for(let i142 = 0; i142 < rpIdHash.byteLength; i142++){ - if (rpIdHash[i142] !== createdHash[i142]) { + for(let i = 0; i < rpIdHash.byteLength; i++){ + if (rpIdHash[i] !== createdHash[i]) { throw new TypeError("authnrData rpIdHash mismatch"); } } @@ -44021,17 +43052,16 @@ async function validatePublicKey() { return true; } function validateExtensions() { - const extensions7 = this.authnrData.get("webAuthnExtensions"); + const extensions = this.authnrData.get("webAuthnExtensions"); const shouldHaveExtensions = this.authnrData.get("flags").has("ED"); if (shouldHaveExtensions) { - if (Array.isArray(extensions7) && extensions7.every((item)=>typeof item === "object" - )) { + if (Array.isArray(extensions) && extensions.every((item)=>typeof item === "object")) { this.audit.journal.add("webAuthnExtensions"); } else { throw new Error("webAuthnExtensions aren't valid"); } } else { - if (extensions7 !== undefined) { + if (extensions !== undefined) { throw new Error("unexpected webAuthnExtensions found"); } } @@ -44072,8 +43102,8 @@ async function validateAudit() { throw new Error(`internal audit failed: ${val} was not validated`); } } - for (let kv1 of authnrData){ - let val = kv1[0]; + for (let kv of authnrData){ + let val = kv[0]; if (!journal.has(val)) { throw new Error(`internal audit failed: ${val} was not validated`); } @@ -44090,7 +43120,7 @@ async function validateAudit() { this.audit.complete = true; return true; } -function attach(o105) { +function attach(o) { let mixins = { validateExpectations, validateCreateRequest, @@ -44126,7 +43156,7 @@ function attach(o105) { validateAudit }; for (let key of Object.keys(mixins)){ - o105[key] = mixins[key]; + o[key] = mixins[key]; } } export { attach as attach };