UNPKG

rf-touchstone

Version:

A Javascript/TypeScript library for reading, manipulating, and writing Touchstone files (.snp files) used in radio frequency (RF) and microwave engineering.

1,383 lines (1,382 loc) 312 kB
function at() { return at = Object.assign ? Object.assign.bind() : function(e) { for (var r = 1; r < arguments.length; r++) { var t = arguments[r]; for (var n in t) ({}).hasOwnProperty.call(t, n) && (e[n] = t[n]); } return e; }, at.apply(null, arguments); } var ti = { // minimum relative difference between two compared values, // used by all comparison functions relTol: 1e-12, // minimum absolute difference between two compared values, // used by all comparison functions absTol: 1e-15, // type of default matrix output. Choose 'matrix' (default) or 'array' matrix: "Matrix", // type of default number output. Choose 'number' (default) 'BigNumber', 'bigint', or 'Fraction' number: "number", // type of fallback used for config { number: 'bigint' } when a value cannot be represented // in the configured numeric type. Choose 'number' (default) or 'BigNumber'. numberFallback: "number", // number of significant digits in BigNumbers precision: 64, // predictable output type of functions. When true, output type depends only // on the input types. When false (default), output type can vary depending // on input values. For example `math.sqrt(-4)` returns `complex('2i')` when // predictable is false, and returns `NaN` when true. predictable: !1, // random seed for seeded pseudo random number generation // null = randomly seed randomSeed: null, // legacy behavior for matrix subset. When true, the subset function // returns a matrix or array with the same size as the index (except for scalars). // When false, it returns a matrix or array with a size depending on the type of index. legacySubset: !1 }; function ni(e, r) { if (st(e, r)) return e[r]; throw typeof e[r] == "function" && Ou(e, r) ? new Error('Cannot access method "' + r + '" as a property') : new Error('No access to property "' + r + '"'); } function ii(e, r, t) { if (st(e, r)) return e[r] = t, t; throw new Error('No access to property "' + r + '"'); } function st(e, r) { return !$u(e) && !Array.isArray(e) ? !1 : Zr(Pu, r) ? !0 : !(r in Object.prototype || r in Function.prototype); } function Ou(e, r) { return e == null || typeof e[r] != "function" || Zr(e, r) && Object.getPrototypeOf && r in Object.getPrototypeOf(e) ? !1 : Zr(qu, r) ? !0 : !(r in Object.prototype || r in Function.prototype); } function $u(e) { return typeof e == "object" && e && e.constructor === Object; } var Pu = { length: !0, name: !0 }, qu = { toString: !0, valueOf: !0, toLocaleString: !0 }; class Uu { constructor(r) { this.wrappedObject = r, this[Symbol.iterator] = this.entries; } keys() { return Object.keys(this.wrappedObject).filter((r) => this.has(r)).values(); } get(r) { return ni(this.wrappedObject, r); } set(r, t) { return ii(this.wrappedObject, r, t), this; } has(r) { return st(this.wrappedObject, r) && r in this.wrappedObject; } entries() { return Ru(this.keys(), (r) => [r, this.get(r)]); } forEach(r) { for (var t of this.keys()) r(this.get(t), t, this); } delete(r) { st(this.wrappedObject, r) && delete this.wrappedObject[r]; } clear() { for (var r of this.keys()) this.delete(r); } get size() { return Object.keys(this.wrappedObject).length; } } function Ru(e, r) { return { next: () => { var t = e.next(); return t.done ? t : { value: r(t.value), done: !1 }; } }; } function ne(e) { return typeof e == "number"; } function Ee(e) { return !e || typeof e != "object" || typeof e.constructor != "function" ? !1 : e.isBigNumber === !0 && typeof e.constructor.prototype == "object" && e.constructor.prototype.isBigNumber === !0 || typeof e.constructor.isDecimal == "function" && e.constructor.isDecimal(e) === !0; } function Lu(e) { return typeof e == "bigint"; } function ui(e) { return e && typeof e == "object" && Object.getPrototypeOf(e).isComplex === !0 || !1; } function oi(e) { return e && typeof e == "object" && Object.getPrototypeOf(e).isFraction === !0 || !1; } function ai(e) { return e && e.constructor.prototype.isUnit === !0 || !1; } function Te(e) { return typeof e == "string"; } var ve = Array.isArray; function ye(e) { return e && e.constructor.prototype.isMatrix === !0 || !1; } function ft(e) { return Array.isArray(e) || ye(e); } function Hu(e) { return e && e.isDenseMatrix && e.constructor.prototype.isMatrix === !0 || !1; } function Zu(e) { return e && e.isSparseMatrix && e.constructor.prototype.isMatrix === !0 || !1; } function si(e) { return e && e.constructor.prototype.isRange === !0 || !1; } function Ct(e) { return e && e.constructor.prototype.isIndex === !0 || !1; } function Wu(e) { return typeof e == "boolean"; } function Vu(e) { return e && e.constructor.prototype.isResultSet === !0 || !1; } function Gu(e) { return e && e.constructor.prototype.isHelp === !0 || !1; } function Ju(e) { return typeof e == "function"; } function ku(e) { return e instanceof Date; } function Yu(e) { return e instanceof RegExp; } function jt(e) { return !!(e && typeof e == "object" && e.constructor === Object && !ui(e) && !oi(e)); } function Xu(e) { return e ? e instanceof Map || e instanceof Uu || typeof e.set == "function" && typeof e.get == "function" && typeof e.keys == "function" && typeof e.has == "function" : !1; } function Qu(e) { return e === null; } function Ku(e) { return e === void 0; } function ju(e) { return e && e.isAccessorNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function eo(e) { return e && e.isArrayNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function ro(e) { return e && e.isAssignmentNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function to(e) { return e && e.isBlockNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function no(e) { return e && e.isConditionalNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function io(e) { return e && e.isConstantNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function uo(e) { return e && e.isFunctionAssignmentNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function oo(e) { return e && e.isFunctionNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function ao(e) { return e && e.isIndexNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function so(e) { return e && e.isNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function fo(e) { return e && e.isObjectNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function co(e) { return e && e.isOperatorNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function lo(e) { return e && e.isParenthesisNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function ho(e) { return e && e.isRangeNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function po(e) { return e && e.isRelationalNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function mo(e) { return e && e.isSymbolNode === !0 && e.constructor.prototype.isNode === !0 || !1; } function Do(e) { return e && e.constructor.prototype.isChain === !0 || !1; } function ur(e) { var r = typeof e; return r === "object" ? e === null ? "null" : Ee(e) ? "BigNumber" : e.constructor && e.constructor.name ? e.constructor.name : "Object" : r; } function de(e) { var r = typeof e; if (r === "number" || r === "bigint" || r === "string" || r === "boolean" || e === null || e === void 0) return e; if (typeof e.clone == "function") return e.clone(); if (Array.isArray(e)) return e.map(function(t) { return de(t); }); if (e instanceof Date) return new Date(e.valueOf()); if (Ee(e)) return e; if (jt(e)) return go(e, de); if (r === "function") return e; throw new TypeError("Cannot clone: unknown type of value (value: ".concat(e, ")")); } function go(e, r) { var t = {}; for (var n in e) Zr(e, n) && (t[n] = r(e[n])); return t; } function vo(e, r) { for (var t in r) Zr(r, t) && (e[t] = r[t]); return e; } function Dr(e, r) { var t, n, i; if (Array.isArray(e)) { if (!Array.isArray(r) || e.length !== r.length) return !1; for (n = 0, i = e.length; n < i; n++) if (!Dr(e[n], r[n])) return !1; return !0; } else { if (typeof e == "function") return e === r; if (e instanceof Object) { if (Array.isArray(r) || !(r instanceof Object)) return !1; for (t in e) if (!(t in r) || !Dr(e[t], r[t])) return !1; for (t in r) if (!(t in e)) return !1; return !0; } else return e === r; } } function Zr(e, r) { return e && Object.hasOwnProperty.call(e, r); } function wo(e, r) { for (var t = {}, n = 0; n < r.length; n++) { var i = r[n], u = e[i]; u !== void 0 && (t[i] = u); } return t; } var yo = ["Matrix", "Array"], Fo = ["number", "BigNumber", "bigint", "Fraction"], qe = function(r) { if (r) throw new Error(`The global config is readonly. Please create a mathjs instance if you want to change the default configuration. Example: import { create, all } from 'mathjs'; const mathjs = create(all); mathjs.config({ number: 'BigNumber' }); `); return Object.freeze(ti); }; at(qe, ti, { MATRIX_OPTIONS: yo, NUMBER_OPTIONS: Fo }); function sn() { return !0; } function Ye() { return !1; } function _r() { } const fn = "Argument is not a typed-function."; function fi() { function e(E) { return typeof E == "object" && E !== null && E.constructor === Object; } const r = [{ name: "number", test: function(E) { return typeof E == "number"; } }, { name: "string", test: function(E) { return typeof E == "string"; } }, { name: "boolean", test: function(E) { return typeof E == "boolean"; } }, { name: "Function", test: function(E) { return typeof E == "function"; } }, { name: "Array", test: Array.isArray }, { name: "Date", test: function(E) { return E instanceof Date; } }, { name: "RegExp", test: function(E) { return E instanceof RegExp; } }, { name: "Object", test: e }, { name: "null", test: function(E) { return E === null; } }, { name: "undefined", test: function(E) { return E === void 0; } }], t = { name: "any", test: sn, isAny: !0 }; let n, i, u = 0, o = { createCount: 0 }; function a(E) { const C = n.get(E); if (C) return C; let N = 'Unknown type "' + E + '"'; const T = E.toLowerCase(); let P; for (P of i) if (P.toLowerCase() === T) { N += '. Did you mean "' + P + '" ?'; break; } throw new TypeError(N); } function s(E) { let C = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "any"; const N = C ? a(C).index : i.length, T = []; for (let I = 0; I < E.length; ++I) { if (!E[I] || typeof E[I].name != "string" || typeof E[I].test != "function") throw new TypeError("Object with properties {name: string, test: function} expected"); const Z = E[I].name; if (n.has(Z)) throw new TypeError('Duplicate type name "' + Z + '"'); T.push(Z), n.set(Z, { name: Z, test: E[I].test, isAny: E[I].isAny, index: N + I, conversionsTo: [] // Newly added type can't have any conversions to it }); } const P = i.slice(N); i = i.slice(0, N).concat(T).concat(P); for (let I = N + T.length; I < i.length; ++I) n.get(i[I]).index = I; } function f() { n = /* @__PURE__ */ new Map(), i = [], u = 0, s([t], !1); } f(), s(r); function D() { let E; for (E of i) n.get(E).conversionsTo = []; u = 0; } function l(E) { const C = i.filter((N) => { const T = n.get(N); return !T.isAny && T.test(E); }); return C.length ? C : ["any"]; } function h(E) { return E && typeof E == "function" && "_typedFunctionData" in E; } function p(E, C, N) { if (!h(E)) throw new TypeError(fn); const T = N && N.exact, P = Array.isArray(C) ? C.join(",") : C, I = A(P), Z = d(I); if (!T || Z in E.signatures) { const fe = E._typedFunctionData.signatureMap.get(Z); if (fe) return fe; } const U = I.length; let W; if (T) { W = []; let fe; for (fe in E.signatures) W.push(E._typedFunctionData.signatureMap.get(fe)); } else W = E._typedFunctionData.signatures; for (let fe = 0; fe < U; ++fe) { const me = I[fe], _e = []; let He; for (He of W) { const Le = b(He.params, fe); if (!(!Le || me.restParam && !Le.restParam)) { if (!Le.hasAny) { const Ke = g(Le); if (me.types.some((je) => !Ke.has(je.name))) continue; } _e.push(He); } } if (W = _e, W.length === 0) break; } let q; for (q of W) if (q.params.length <= U) return q; throw new TypeError("Signature not found (signature: " + (E.name || "unnamed") + "(" + d(I, ", ") + "))"); } function m(E, C, N) { return p(E, C, N).implementation; } function c(E, C) { const N = a(C); if (N.test(E)) return E; const T = N.conversionsTo; if (T.length === 0) throw new Error("There are no conversions to " + C + " defined."); for (let P = 0; P < T.length; P++) if (a(T[P].from).test(E)) return T[P].convert(E); throw new Error("Cannot convert " + E + " to " + C); } function d(E) { let C = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : ","; return E.map((N) => N.name).join(C); } function v(E) { const C = E.indexOf("...") === 0, T = (C ? E.length > 3 ? E.slice(3) : "any" : E).split("|").map((U) => a(U.trim())); let P = !1, I = C ? "..." : ""; return { types: T.map(function(U) { return P = U.isAny || P, I += U.name + "|", { name: U.name, typeIndex: U.index, test: U.test, isAny: U.isAny, conversion: null, conversionIndex: -1 }; }), name: I.slice(0, -1), // remove trailing '|' from above hasAny: P, hasConversion: !1, restParam: C }; } function y(E) { const C = E.types.map((Z) => Z.name), N = Q(C); let T = E.hasAny, P = E.name; const I = N.map(function(Z) { const U = a(Z.from); return T = U.isAny || T, P += "|" + Z.from, { name: Z.from, typeIndex: U.index, test: U.test, isAny: U.isAny, conversion: Z, conversionIndex: Z.index }; }); return { types: E.types.concat(I), name: P, hasAny: T, hasConversion: I.length > 0, restParam: E.restParam }; } function g(E) { return E.typeSet || (E.typeSet = /* @__PURE__ */ new Set(), E.types.forEach((C) => E.typeSet.add(C.name))), E.typeSet; } function A(E) { const C = []; if (typeof E != "string") throw new TypeError("Signatures must be strings"); const N = E.trim(); if (N === "") return C; const T = N.split(","); for (let P = 0; P < T.length; ++P) { const I = v(T[P].trim()); if (I.restParam && P !== T.length - 1) throw new SyntaxError('Unexpected rest parameter "' + T[P] + '": only allowed for the last parameter'); if (I.types.length === 0) return null; C.push(I); } return C; } function F(E) { const C = le(E); return C ? C.restParam : !1; } function w(E) { if (!E || E.types.length === 0) return sn; if (E.types.length === 1) return a(E.types[0].name).test; if (E.types.length === 2) { const C = a(E.types[0].name).test, N = a(E.types[1].name).test; return function(P) { return C(P) || N(P); }; } else { const C = E.types.map(function(N) { return a(N.name).test; }); return function(T) { for (let P = 0; P < C.length; P++) if (C[P](T)) return !0; return !1; }; } } function _(E) { let C, N, T; if (F(E)) { C = Re(E).map(w); const P = C.length, I = w(le(E)), Z = function(U) { for (let W = P; W < U.length; W++) if (!I(U[W])) return !1; return !0; }; return function(W) { for (let q = 0; q < C.length; q++) if (!C[q](W[q])) return !1; return Z(W) && W.length >= P + 1; }; } else return E.length === 0 ? function(I) { return I.length === 0; } : E.length === 1 ? (N = w(E[0]), function(I) { return N(I[0]) && I.length === 1; }) : E.length === 2 ? (N = w(E[0]), T = w(E[1]), function(I) { return N(I[0]) && T(I[1]) && I.length === 2; }) : (C = E.map(w), function(I) { for (let Z = 0; Z < C.length; Z++) if (!C[Z](I[Z])) return !1; return I.length === C.length; }); } function b(E, C) { return C < E.length ? E[C] : F(E) ? le(E) : null; } function B(E, C) { const N = b(E, C); return N ? g(N) : /* @__PURE__ */ new Set(); } function S(E) { return E.conversion === null || E.conversion === void 0; } function x(E, C) { const N = /* @__PURE__ */ new Set(); return E.forEach((T) => { const P = B(T.params, C); let I; for (I of P) N.add(I); }), N.has("any") ? ["any"] : Array.from(N); } function O(E, C, N) { let T, P; const I = E || "unnamed"; let Z = N, U; for (U = 0; U < C.length; U++) { const me = []; if (Z.forEach((_e) => { const He = b(_e.params, U), Le = w(He); (U < _e.params.length || F(_e.params)) && Le(C[U]) && me.push(_e); }), me.length === 0) { if (P = x(Z, U), P.length > 0) { const _e = l(C[U]); return T = new TypeError("Unexpected type of argument in function " + I + " (expected: " + P.join(" or ") + ", actual: " + _e.join(" | ") + ", index: " + U + ")"), T.data = { category: "wrongType", fn: I, index: U, actual: _e, expected: P }, T; } } else Z = me; } const W = Z.map(function(me) { return F(me.params) ? 1 / 0 : me.params.length; }); if (C.length < Math.min.apply(null, W)) return P = x(Z, U), T = new TypeError("Too few arguments in function " + I + " (expected: " + P.join(" or ") + ", index: " + C.length + ")"), T.data = { category: "tooFewArgs", fn: I, index: C.length, expected: P }, T; const q = Math.max.apply(null, W); if (C.length > q) return T = new TypeError("Too many arguments in function " + I + " (expected: " + q + ", actual: " + C.length + ")"), T.data = { category: "tooManyArgs", fn: I, index: C.length, expectedLength: q }, T; const fe = []; for (let me = 0; me < C.length; ++me) fe.push(l(C[me]).join("|")); return T = new TypeError('Arguments of type "' + fe.join(", ") + '" do not match any of the defined signatures of function ' + I + "."), T.data = { category: "mismatch", actual: fe }, T; } function V(E) { let C = i.length + 1; for (let N = 0; N < E.types.length; N++) S(E.types[N]) && (C = Math.min(C, E.types[N].typeIndex)); return C; } function R(E) { let C = u + 1; for (let N = 0; N < E.types.length; N++) S(E.types[N]) || (C = Math.min(C, E.types[N].conversionIndex)); return C; } function H(E, C) { if (E.hasAny) { if (!C.hasAny) return 1; } else if (C.hasAny) return -1; if (E.restParam) { if (!C.restParam) return 1; } else if (C.restParam) return -1; if (E.hasConversion) { if (!C.hasConversion) return 1; } else if (C.hasConversion) return -1; const N = V(E) - V(C); if (N < 0) return -1; if (N > 0) return 1; const T = R(E) - R(C); return T < 0 ? -1 : T > 0 ? 1 : 0; } function $(E, C) { const N = E.params, T = C.params, P = le(N), I = le(T), Z = F(N), U = F(T); if (Z && P.hasAny) { if (!U || !I.hasAny) return 1; } else if (U && I.hasAny) return -1; let W = 0, q = 0, fe; for (fe of N) fe.hasAny && ++W, fe.hasConversion && ++q; let me = 0, _e = 0; for (fe of T) fe.hasAny && ++me, fe.hasConversion && ++_e; if (W !== me) return W - me; if (Z && P.hasConversion) { if (!U || !I.hasConversion) return 1; } else if (U && I.hasConversion) return -1; if (q !== _e) return q - _e; if (Z) { if (!U) return 1; } else if (U) return -1; const He = (N.length - T.length) * (Z ? -1 : 1); if (He !== 0) return He; const Le = []; let Ke = 0; for (let Cr = 0; Cr < N.length; ++Cr) { const Qr = H(N[Cr], T[Cr]); Le.push(Qr), Ke += Qr; } if (Ke !== 0) return Ke; let je; for (je of Le) if (je !== 0) return je; return 0; } function Q(E) { if (E.length === 0) return []; const C = E.map(a); E.length > 1 && C.sort((P, I) => P.index - I.index); let N = C[0].conversionsTo; if (E.length === 1) return N; N = N.concat([]); const T = new Set(E); for (let P = 1; P < C.length; ++P) { let I; for (I of C[P].conversionsTo) T.has(I.from) || (N.push(I), T.add(I.from)); } return N; } function J(E, C) { let N = C; if (E.some((P) => P.hasConversion)) { const P = F(E), I = E.map(X); N = function() { const U = [], W = P ? arguments.length - 1 : arguments.length; for (let q = 0; q < W; q++) U[q] = I[q](arguments[q]); return P && (U[W] = arguments[W].map(I[W])), C.apply(this, U); }; } let T = N; if (F(E)) { const P = E.length - 1; T = function() { return N.apply(this, se(arguments, 0, P).concat([se(arguments, P)])); }; } return T; } function X(E) { let C, N, T, P; const I = [], Z = []; switch (E.types.forEach(function(U) { U.conversion && (I.push(a(U.conversion.from).test), Z.push(U.conversion.convert)); }), Z.length) { case 0: return function(W) { return W; }; case 1: return C = I[0], T = Z[0], function(W) { return C(W) ? T(W) : W; }; case 2: return C = I[0], N = I[1], T = Z[0], P = Z[1], function(W) { return C(W) ? T(W) : N(W) ? P(W) : W; }; default: return function(W) { for (let q = 0; q < Z.length; q++) if (I[q](W)) return Z[q](W); return W; }; } } function ee(E) { function C(N, T, P) { if (T < N.length) { const I = N[T]; let Z = []; if (I.restParam) { const U = I.types.filter(S); U.length < I.types.length && Z.push({ types: U, name: "..." + U.map((W) => W.name).join("|"), hasAny: U.some((W) => W.isAny), hasConversion: !1, restParam: !0 }), Z.push(I); } else Z = I.types.map(function(U) { return { types: [U], name: U.name, hasAny: U.isAny, hasConversion: U.conversion, restParam: !1 }; }); return Ie(Z, function(U) { return C(N, T + 1, P.concat([U])); }); } else return [P]; } return C(E, 0, []); } function ue(E, C) { const N = Math.max(E.length, C.length); for (let U = 0; U < N; U++) { const W = B(E, U), q = B(C, U); let fe = !1, me; for (me of q) if (W.has(me)) { fe = !0; break; } if (!fe) return !1; } const T = E.length, P = C.length, I = F(E), Z = F(C); return I ? Z ? T === P : P >= T : Z ? T >= P : T === P; } function oe(E) { return E.map((C) => sr(C) ? ke(C.referToSelf.callback) : ar(C) ? Se(C.referTo.references, C.referTo.callback) : C); } function ce(E, C, N) { const T = []; let P; for (P of E) { let I = N[P]; if (typeof I != "number") throw new TypeError('No definition for referenced signature "' + P + '"'); if (I = C[I], typeof I != "function") return !1; T.push(I); } return T; } function Ce(E, C, N) { const T = oe(E), P = new Array(T.length).fill(!1); let I = !0; for (; I; ) { I = !1; let Z = !0; for (let U = 0; U < T.length; ++U) { if (P[U]) continue; const W = T[U]; if (sr(W)) T[U] = W.referToSelf.callback(N), T[U].referToSelf = W.referToSelf, P[U] = !0, Z = !1; else if (ar(W)) { const q = ce(W.referTo.references, T, C); q ? (T[U] = W.referTo.callback.apply(this, q), T[U].referTo = W.referTo, P[U] = !0, Z = !1) : I = !0; } } if (Z && I) throw new SyntaxError("Circular reference detected in resolving typed.referTo"); } return T; } function be(E) { const C = /\bthis(\(|\.signatures\b)/; Object.keys(E).forEach((N) => { const T = E[N]; if (C.test(T.toString())) throw new SyntaxError("Using `this` to self-reference a function is deprecated since typed-function@3. Use typed.referTo and typed.referToSelf instead."); }); } function Ae(E, C) { if (o.createCount++, Object.keys(C).length === 0) throw new SyntaxError("No signatures provided"); o.warnAgainstDeprecatedThis && be(C); const N = [], T = [], P = {}, I = []; let Z; for (Z in C) { if (!Object.prototype.hasOwnProperty.call(C, Z)) continue; const ae = A(Z); if (!ae) continue; N.forEach(function(Lr) { if (ue(Lr, ae)) throw new TypeError('Conflicting signatures "' + d(Lr) + '" and "' + d(ae) + '".'); }), N.push(ae); const Ze = T.length; T.push(C[Z]); const Iu = ae.map(y); let Kr; for (Kr of ee(Iu)) { const Lr = d(Kr); I.push({ params: Kr, name: Lr, fn: Ze }), Kr.every((zu) => !zu.hasConversion) && (P[Lr] = Ze); } } I.sort($); const U = Ce(T, P, Rr); let W; for (W in P) Object.prototype.hasOwnProperty.call(P, W) && (P[W] = U[P[W]]); const q = [], fe = /* @__PURE__ */ new Map(); for (W of I) fe.has(W.name) || (W.fn = U[W.fn], q.push(W), fe.set(W.name, W)); const me = q[0] && q[0].params.length <= 2 && !F(q[0].params), _e = q[1] && q[1].params.length <= 2 && !F(q[1].params), He = q[2] && q[2].params.length <= 2 && !F(q[2].params), Le = q[3] && q[3].params.length <= 2 && !F(q[3].params), Ke = q[4] && q[4].params.length <= 2 && !F(q[4].params), je = q[5] && q[5].params.length <= 2 && !F(q[5].params), Cr = me && _e && He && Le && Ke && je; for (let ae = 0; ae < q.length; ++ae) q[ae].test = _(q[ae].params); const Qr = me ? w(q[0].params[0]) : Ye, uu = _e ? w(q[1].params[0]) : Ye, ou = He ? w(q[2].params[0]) : Ye, au = Le ? w(q[3].params[0]) : Ye, su = Ke ? w(q[4].params[0]) : Ye, fu = je ? w(q[5].params[0]) : Ye, cu = me ? w(q[0].params[1]) : Ye, lu = _e ? w(q[1].params[1]) : Ye, hu = He ? w(q[2].params[1]) : Ye, pu = Le ? w(q[3].params[1]) : Ye, mu = Ke ? w(q[4].params[1]) : Ye, Du = je ? w(q[5].params[1]) : Ye; for (let ae = 0; ae < q.length; ++ae) q[ae].implementation = J(q[ae].params, q[ae].fn); const du = me ? q[0].implementation : _r, gu = _e ? q[1].implementation : _r, vu = He ? q[2].implementation : _r, wu = Le ? q[3].implementation : _r, yu = Ke ? q[4].implementation : _r, Fu = je ? q[5].implementation : _r, Eu = me ? q[0].params.length : -1, Au = _e ? q[1].params.length : -1, bu = He ? q[2].params.length : -1, Cu = Le ? q[3].params.length : -1, _u = Ke ? q[4].params.length : -1, Bu = je ? q[5].params.length : -1, Nu = Cr ? 6 : 0, Su = q.length, Mu = q.map((ae) => ae.test), xu = q.map((ae) => ae.implementation), Tu = function() { for (let Ze = Nu; Ze < Su; Ze++) if (Mu[Ze](arguments)) return xu[Ze].apply(this, arguments); return o.onMismatch(E, arguments, q); }; function Rr(ae, Ze) { return arguments.length === Eu && Qr(ae) && cu(Ze) ? du.apply(this, arguments) : arguments.length === Au && uu(ae) && lu(Ze) ? gu.apply(this, arguments) : arguments.length === bu && ou(ae) && hu(Ze) ? vu.apply(this, arguments) : arguments.length === Cu && au(ae) && pu(Ze) ? wu.apply(this, arguments) : arguments.length === _u && su(ae) && mu(Ze) ? yu.apply(this, arguments) : arguments.length === Bu && fu(ae) && Du(Ze) ? Fu.apply(this, arguments) : Tu.apply(this, arguments); } try { Object.defineProperty(Rr, "name", { value: E }); } catch { } return Rr.signatures = P, Rr._typedFunctionData = { signatures: q, signatureMap: fe }, Rr; } function ge(E, C, N) { throw O(E, C, N); } function Re(E) { return se(E, 0, E.length - 1); } function le(E) { return E[E.length - 1]; } function se(E, C, N) { return Array.prototype.slice.call(E, C, N); } function Je(E, C) { for (let N = 0; N < E.length; N++) if (C(E[N])) return E[N]; } function Ie(E, C) { return Array.prototype.concat.apply([], E.map(C)); } function he() { const E = Re(arguments).map((N) => d(A(N))), C = le(arguments); if (typeof C != "function") throw new TypeError("Callback function expected as last argument"); return Se(E, C); } function Se(E, C) { return { referTo: { references: E, callback: C } }; } function ke(E) { if (typeof E != "function") throw new TypeError("Callback function expected as first argument"); return { referToSelf: { callback: E } }; } function ar(E) { return E && typeof E.referTo == "object" && Array.isArray(E.referTo.references) && typeof E.referTo.callback == "function"; } function sr(E) { return E && typeof E.referToSelf == "object" && typeof E.referToSelf.callback == "function"; } function Ar(E, C) { if (!E) return C; if (C && C !== E) { const N = new Error("Function names do not match (expected: " + E + ", actual: " + C + ")"); throw N.data = { actual: C, expected: E }, N; } return E; } function br(E) { let C; for (const N in E) Object.prototype.hasOwnProperty.call(E, N) && (h(E[N]) || typeof E[N].signature == "string") && (C = Ar(C, E[N].name)); return C; } function Pt(E, C) { let N; for (N in C) if (Object.prototype.hasOwnProperty.call(C, N)) { if (N in E && C[N] !== E[N]) { const T = new Error('Signature "' + N + '" is defined twice'); throw T.data = { signature: N, sourceFunction: C[N], destFunction: E[N] }, T; } E[N] = C[N]; } } const iu = o; o = function(E) { const C = typeof E == "string", N = C ? 1 : 0; let T = C ? E : ""; const P = {}; for (let I = N; I < arguments.length; ++I) { const Z = arguments[I]; let U = {}, W; if (typeof Z == "function" ? (W = Z.name, typeof Z.signature == "string" ? U[Z.signature] = Z : h(Z) && (U = Z.signatures)) : e(Z) && (U = Z, C || (W = br(Z))), Object.keys(U).length === 0) { const q = new TypeError("Argument to 'typed' at index " + I + " is not a (typed) function, nor an object with signatures as keys and functions as values."); throw q.data = { index: I, argument: Z }, q; } C || (T = Ar(T, W)), Pt(P, U); } return Ae(T || "", P); }, o.create = fi, o.createCount = iu.createCount, o.onMismatch = ge, o.throwMismatchError = ge, o.createError = O, o.clear = f, o.clearConversions = D, o.addTypes = s, o._findType = a, o.referTo = he, o.referToSelf = ke, o.convert = c, o.findSignature = p, o.find = m, o.isTypedFunction = h, o.warnAgainstDeprecatedThis = !0, o.addType = function(E, C) { let N = "any"; C !== !1 && n.has("Object") && (N = "Object"), o.addTypes([E], N); }; function an(E) { if (!E || typeof E.from != "string" || typeof E.to != "string" || typeof E.convert != "function") throw new TypeError("Object with properties {from: string, to: string, convert: function} expected"); if (E.to === E.from) throw new SyntaxError('Illegal to define conversion from "' + E.from + '" to itself.'); } return o.addConversion = function(E) { let C = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : { override: !1 }; an(E); const N = a(E.to), T = N.conversionsTo.find((P) => P.from === E.from); if (T) if (C && C.override) o.removeConversion({ from: T.from, to: E.to, convert: T.convert }); else throw new Error('There is already a conversion from "' + E.from + '" to "' + N.name + '"'); N.conversionsTo.push({ from: E.from, convert: E.convert, index: u++ }); }, o.addConversions = function(E, C) { E.forEach((N) => o.addConversion(N, C)); }, o.removeConversion = function(E) { an(E); const C = a(E.to), N = Je(C.conversionsTo, (P) => P.from === E.from); if (!N) throw new Error("Attempt to remove nonexistent conversion from " + E.from + " to " + E.to); if (N.convert !== E.convert) throw new Error("Conversion to remove does not match existing conversion"); const T = C.conversionsTo.indexOf(N); C.conversionsTo.splice(T, 1); }, o.resolve = function(E, C) { if (!h(E)) throw new TypeError(fn); const N = E._typedFunctionData.signatures; for (let T = 0; T < N.length; ++T) if (N[T].test(C)) return N[T]; return null; }, o; } const ct = fi(); function G(e, r, t, n) { function i(u) { var o = wo(u, r.map(bo)); return Eo(e, r, u), t(o); } return i.isFactory = !0, i.fn = e, i.dependencies = r.slice().sort(), n && (i.meta = n), i; } function Eo(e, r, t) { var n = r.filter((u) => !Ao(u)).every((u) => t[u] !== void 0); if (!n) { var i = r.filter((u) => t[u] === void 0); throw new Error('Cannot create function "'.concat(e, '", ') + "some dependencies are missing: ".concat(i.map((u) => '"'.concat(u, '"')).join(", "), ".")); } } function Ao(e) { return e && e[0] === "?"; } function bo(e) { return e && e[0] === "?" ? e.slice(1) : e; } function we(e) { return typeof e == "boolean" ? !0 : Number.isFinite(e) ? e === Math.round(e) : !1; } var Co = Math.log10 || function(r) { return Math.log(r) / Math.LN10; }; function qt(e, r, t) { var n = { 2: "0b", 8: "0o", 16: "0x" }, i = n[r], u = ""; if (t) { if (t < 1) throw new Error("size must be in greater than 0"); if (!we(t)) throw new Error("size must be an integer"); if (e > 2 ** (t - 1) - 1 || e < -(2 ** (t - 1))) throw new Error("Value must be in range [-2^".concat(t - 1, ", 2^").concat(t - 1, "-1]")); if (!we(e)) throw new Error("Value must be an integer"); e < 0 && (e = e + 2 ** t), u = "i".concat(t); } var o = ""; return e < 0 && (e = -e, o = "-"), "".concat(o).concat(i).concat(e.toString(r)).concat(u); } function Wt(e, r) { if (typeof r == "function") return r(e); if (e === 1 / 0) return "Infinity"; if (e === -1 / 0) return "-Infinity"; if (isNaN(e)) return "NaN"; var { notation: t, precision: n, wordSize: i } = ci(r); switch (t) { case "fixed": return li(e, n); case "exponential": return hi(e, n); case "engineering": return _o(e, n); case "bin": return qt(e, 2, i); case "oct": return qt(e, 8, i); case "hex": return qt(e, 16, i); case "auto": return Bo(e, n, r).replace(/((\.\d*?)(0+))($|e)/, function() { var u = arguments[2], o = arguments[4]; return u !== "." ? u + o : o; }); default: throw new Error('Unknown notation "' + t + '". Choose "auto", "exponential", "fixed", "bin", "oct", or "hex.'); } } function ci(e) { var r = "auto", t, n; if (e !== void 0) if (ne(e)) t = e; else if (Ee(e)) t = e.toNumber(); else if (jt(e)) e.precision !== void 0 && (t = cn(e.precision, () => { throw new Error('Option "precision" must be a number or BigNumber'); })), e.wordSize !== void 0 && (n = cn(e.wordSize, () => { throw new Error('Option "wordSize" must be a number or BigNumber'); })), e.notation && (r = e.notation); else throw new Error("Unsupported type of options, number, BigNumber, or object expected"); return { notation: r, precision: t, wordSize: n }; } function Gr(e) { var r = String(e).toLowerCase().match(/^(-?)(\d+\.?\d*)(e([+-]?\d+))?$/); if (!r) throw new SyntaxError("Invalid number " + e); var t = r[1], n = r[2], i = parseFloat(r[4] || "0"), u = n.indexOf("."); i += u !== -1 ? u - 1 : n.length - 1; var o = n.replace(".", "").replace(/^0*/, function(a) { return i -= a.length, ""; }).replace(/0*$/, "").split("").map(function(a) { return parseInt(a); }); return o.length === 0 && (o.push(0), i++), { sign: t, coefficients: o, exponent: i }; } function _o(e, r) { if (isNaN(e) || !Number.isFinite(e)) return String(e); var t = Gr(e), n = _t(t, r), i = n.exponent, u = n.coefficients, o = i % 3 === 0 ? i : i < 0 ? i - 3 - i % 3 : i - i % 3; if (ne(r)) for (; r > u.length || i - o + 1 > u.length; ) u.push(0); else for (var a = Math.abs(i - o) - (u.length - 1), s = 0; s < a; s++) u.push(0); for (var f = Math.abs(i - o), D = 1; f > 0; ) D++, f--; var l = u.slice(D).join(""), h = ne(r) && l.length || l.match(/[1-9]/) ? "." + l : "", p = u.slice(0, D).join("") + h + "e" + (i >= 0 ? "+" : "") + o.toString(); return n.sign + p; } function li(e, r) { if (isNaN(e) || !Number.isFinite(e)) return String(e); var t = Gr(e), n = typeof r == "number" ? _t(t, t.exponent + 1 + r) : t, i = n.coefficients, u = n.exponent + 1, o = u + (r || 0); return i.length < o && (i = i.concat(xr(o - i.length))), u < 0 && (i = xr(-u + 1).concat(i), u = 1), u < i.length && i.splice(u, 0, u === 0 ? "0." : "."), n.sign + i.join(""); } function hi(e, r) { if (isNaN(e) || !Number.isFinite(Number(e))) return String(e); var t = Gr(e), n = r ? _t(t, r) : t, i = n.coefficients, u = n.exponent; i.length < r && (i = i.concat(xr(r - i.length))); var o = i.shift(); return n.sign + o + (i.length > 0 ? "." + i.join("") : "") + "e" + (u >= 0 ? "+" : "") + u; } function Bo(e, r, t) { if (isNaN(e) || !Number.isFinite(e)) return String(e); var n = ln(t?.lowerExp, -3), i = ln(t?.upperExp, 5), u = Gr(e), o = r ? _t(u, r) : u; if (o.exponent < n || o.exponent >= i) return hi(e, r); var a = o.coefficients, s = o.exponent; a.length < r && (a = a.concat(xr(r - a.length))), a = a.concat(xr(s - a.length + 1 + (a.length < r ? r - a.length : 0))), a = xr(-s).concat(a); var f = s > 0 ? s : 0; return f < a.length - 1 && a.splice(f + 1, 0, "."), o.sign + a.join(""); } function _t(e, r) { for (var t = { sign: e.sign, coefficients: e.coefficients, exponent: e.exponent }, n = t.coefficients; r <= 0; ) n.unshift(0), t.exponent++, r++; if (n.length > r) { var i = n.splice(r, n.length - r); if (i[0] >= 5) { var u = r - 1; for (n[u]++; n[u] === 10; ) n.pop(), u === 0 && (n.unshift(0), t.exponent++, u++), u--, n[u]++; } } return t; } function xr(e) { for (var r = [], t = 0; t < e; t++) r.push(0); return r; } function No(e) { return e.toExponential().replace(/e.*$/, "").replace(/^0\.?0*|\./, "").length; } function tr(e, r) { var t = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 1e-8, n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0; if (t <= 0) throw new Error("Relative tolerance must be greater than 0"); if (n < 0) throw new Error("Absolute tolerance must be at least 0"); return isNaN(e) || isNaN(r) ? !1 : !Number.isFinite(e) || !Number.isFinite(r) ? e === r : e === r ? !0 : Math.abs(e - r) <= Math.max(t * Math.max(Math.abs(e), Math.abs(r)), n); } function cn(e, r) { if (ne(e)) return e; if (Ee(e)) return e.toNumber(); r(); } function ln(e, r) { return ne(e) ? e : Ee(e) ? e.toNumber() : r; } var pi = function() { return pi = ct.create, ct; }, So = ["?BigNumber", "?Complex", "?DenseMatrix", "?Fraction"], Mo = /* @__PURE__ */ G("typed", So, function(r) { var { BigNumber: t, Complex: n, DenseMatrix: i, Fraction: u } = r, o = pi(); return o.clear(), o.addTypes([ { name: "number", test: ne }, { name: "Complex", test: ui }, { name: "BigNumber", test: Ee }, { name: "bigint", test: Lu }, { name: "Fraction", test: oi }, { name: "Unit", test: ai }, // The following type matches a valid variable name, i.e., an alphanumeric // string starting with an alphabetic character. It is used (at least) // in the definition of the derivative() function, as the argument telling // what to differentiate over must (currently) be a variable. // TODO: deprecate the identifier type (it's not used anymore, see https://github.com/josdejong/mathjs/issues/3253) { name: "identifier", test: (a) => Te && /^(?:[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CD\uA7D0\uA7D1\uA7D3\uA7D5-\uA7DC\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF40\uDF42-\uDF49\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDD4A-\uDD65\uDD6F-\uDD85\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC4\uDF00-\uDF1C\uDF27\uDF30-\uDF45\uDF70-\uDF81\uDFB0-\uDFC4\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDEB8\uDF00-\uDF1A\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDFB0]|\uD808[\uDC00-\uDF99]|\uD809[\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE70-\uDEBE\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDE40-\uDE7F\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB]|\uD839[\uDCD0-\uDCEB\uDDD0-\uDDED\uDDF0\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD4B]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52