From a1106b80478c14e2240efebe20d92483034b8f8d Mon Sep 17 00:00:00 2001
From: "zhouzhongping@7wate.com" \n
\n"));
- }),
- (t.random = function (e) {
- return e[Math.floor(Math.random() * e.length)];
- }),
- (t.reject = c(!1)),
- (t.rejectattr = function (e, t) {
- return e.filter(function (e) {
- return !e[t];
- });
- }),
- (t.select = c(!0)),
- (t.selectattr = function (e, t) {
- return e.filter(function (e) {
- return !!e[t];
- });
- }),
- (t.replace = function (e, t, r, n) {
- var o = e;
- if (t instanceof RegExp) return e.replace(t, r);
- void 0 === n && (n = -1);
- var a = "";
- if ("number" == typeof t) t = "" + t;
- else if ("string" != typeof t) return e;
- if (
- ("number" == typeof e && (e = "" + e),
- "string" != typeof e && !(e instanceof i.SafeString))
- )
- return e;
- if ("" === t)
- return (
- (a = r + e.split("").join(r) + r), i.copySafeness(e, a)
- );
- var s = e.indexOf(t);
- if (0 === n || -1 === s) return e;
- for (var l = 0, c = 0; s > -1 && (-1 === n || c < n); )
- (a += e.substring(l, s) + r),
- (l = s + t.length),
- c++,
- (s = e.indexOf(t, l));
- return (
- l < e.length && (a += e.substring(l)),
- i.copySafeness(o, a)
- );
- }),
- (t.reverse = function (e) {
- var t;
- return (
- (t = n.isString(e)
- ? l(e)
- : n.map(e, function (e) {
- return e;
- })).reverse(),
- n.isString(e) ? i.copySafeness(e, t.join("")) : t
- );
- }),
- (t.round = function (e, t, r) {
- t = t || 0;
- var n = Math.pow(10, t);
- return (
- ("ceil" === r
- ? Math.ceil
- : "floor" === r
- ? Math.floor
- : Math.round)(e * n) / n
- );
- }),
- (t.slice = function (e, t, r) {
- for (
- var n = Math.floor(e.length / t),
- i = e.length % t,
- o = [],
- a = 0,
- s = 0;
- s < t;
- s++
- ) {
- var l = a + s * n;
- s < i && a++;
- var c = a + (s + 1) * n,
- u = e.slice(l, c);
- r && s >= i && u.push(r), o.push(u);
- }
- return o;
- }),
- (t.sum = function (e, t, r) {
- return (
- void 0 === r && (r = 0),
- t &&
- (e = n.map(e, function (e) {
- return e[t];
- })),
- r +
- e.reduce(function (e, t) {
- return e + t;
- }, 0)
- );
- }),
- (t.sort = i.makeMacro(
- ["value", "reverse", "case_sensitive", "attribute"],
- [],
- function (e, t, r, i) {
- var o = this,
- a = n.map(e, function (e) {
- return e;
- }),
- s = n.getAttrGetter(i);
- return (
- a.sort(function (e, a) {
- var l = i ? s(e) : e,
- c = i ? s(a) : a;
- if (
- o.env.opts.throwOnUndefined &&
- i &&
- (void 0 === l || void 0 === c)
- )
- throw new TypeError(
- 'sort: attribute "' +
- i +
- '" resolved to undefined'
- );
- return (
- !r &&
- n.isString(l) &&
- n.isString(c) &&
- ((l = l.toLowerCase()), (c = c.toLowerCase())),
- l < c ? (t ? 1 : -1) : l > c ? (t ? -1 : 1) : 0
- );
- }),
- a
- );
- }
- )),
- (t.string = function (e) {
- return i.copySafeness(e, e);
- }),
- (t.striptags = function (e, t) {
- var r,
- n = u(
- (e = o(e, "")).replace(
- /<\/?([a-z][a-z0-9]*)\b[^>]*>|/gi,
- ""
- )
- );
- return (
- (r = t
- ? n
- .replace(/^ +| +$/gm, "")
- .replace(/ +/g, " ")
- .replace(/(\r\n)/g, "\n")
- .replace(/\n\n\n+/g, "\n\n")
- : n.replace(/\s+/gi, " ")),
- i.copySafeness(e, r)
- );
- }),
- (t.title = function (e) {
- var t = (e = o(e, "")).split(" ").map(function (e) {
- return s(e);
- });
- return i.copySafeness(e, t.join(" "));
- }),
- (t.trim = u),
- (t.truncate = function (e, t, r, n) {
- var a = e;
- if (((t = t || 255), (e = o(e, "")).length <= t)) return e;
- if (r) e = e.substring(0, t);
- else {
- var s = e.lastIndexOf(" ", t);
- -1 === s && (s = t), (e = e.substring(0, s));
- }
- return (e += null != n ? n : "..."), i.copySafeness(a, e);
- }),
- (t.upper = function (e) {
- return (e = o(e, "")).toUpperCase();
- }),
- (t.urlencode = function (e) {
- var t = encodeURIComponent;
- return n.isString(e)
- ? t(e)
- : (n.isArray(e) ? e : n._entries(e))
- .map(function (e) {
- var r = e[0],
- n = e[1];
- return t(r) + "=" + t(n);
- })
- .join("&");
- });
- var p = /^(?:\(|<|<)?(.*?)(?:\.|,|\)|\n|>)?$/,
- d =
- /^[\w.!#$%&'*+\-\/=?\^`{|}~]+@[a-z\d\-]+(\.[a-z\d\-]+)+$/i,
- f = /^https?:\/\/.*$/,
- h = /^www\./,
- m = /\.(?:org|net|com)(?:\:|\/|$)/;
- (t.urlize = function (e, t, r) {
- a(t) && (t = 1 / 0);
- var n = !0 === r ? ' rel="nofollow"' : "";
- return e
- .split(/(\s+)/)
- .filter(function (e) {
- return e && e.length;
- })
- .map(function (e) {
- var r = e.match(p),
- i = r ? r[1] : e,
- o = i.substr(0, t);
- return f.test(i)
- ? '" + o + ""
- : h.test(i)
- ? '" + o + ""
- : d.test(i)
- ? '' + i + ""
- : m.test(i)
- ? '" + o + ""
- : e;
- })
- .join("");
- }),
- (t.wordcount = function (e) {
- var t = (e = o(e, "")) ? e.match(/\w+/g) : null;
- return t ? t.length : null;
- }),
- (t.float = function (e, t) {
- var r = parseFloat(e);
- return a(r) ? t : r;
- });
- var g = i.makeMacro(
- ["value", "default", "base"],
- [],
- function (e, t, r) {
- void 0 === r && (r = 10);
- var n = parseInt(e, r);
- return a(n) ? t : n;
- }
- );
- (t.int = g), (t.d = t.default), (t.e = t.escape);
- },
- function (e, t, r) {
- "use strict";
- function n(e, t) {
- return (
- (n =
- Object.setPrototypeOf ||
- function (e, t) {
- return (e.__proto__ = t), e;
- }),
- n(e, t)
- );
- }
- var i = (function (e) {
- var t, r;
- function i(t) {
- var r;
- return (
- ((r = e.call(this) || this).precompiled = t || {}), r
- );
- }
- return (
- (r = e),
- ((t = i).prototype = Object.create(r.prototype)),
- (t.prototype.constructor = t),
- n(t, r),
- (i.prototype.getSource = function (e) {
- return this.precompiled[e]
- ? {
- src: { type: "code", obj: this.precompiled[e] },
- path: e,
- }
- : null;
- }),
- i
- );
- })(r(6));
- e.exports = { PrecompiledLoader: i };
- },
- function (e, t, r) {
- "use strict";
- var n = r(2).SafeString;
- (t.callable = function (e) {
- return "function" == typeof e;
- }),
- (t.defined = function (e) {
- return void 0 !== e;
- }),
- (t.divisibleby = function (e, t) {
- return e % t == 0;
- }),
- (t.escaped = function (e) {
- return e instanceof n;
- }),
- (t.equalto = function (e, t) {
- return e === t;
- }),
- (t.eq = t.equalto),
- (t.sameas = t.equalto),
- (t.even = function (e) {
- return e % 2 == 0;
- }),
- (t.falsy = function (e) {
- return !e;
- }),
- (t.ge = function (e, t) {
- return e >= t;
- }),
- (t.greaterthan = function (e, t) {
- return e > t;
- }),
- (t.gt = t.greaterthan),
- (t.le = function (e, t) {
- return e <= t;
- }),
- (t.lessthan = function (e, t) {
- return e < t;
- }),
- (t.lt = t.lessthan),
- (t.lower = function (e) {
- return e.toLowerCase() === e;
- }),
- (t.ne = function (e, t) {
- return e !== t;
- }),
- (t.null = function (e) {
- return null === e;
- }),
- (t.number = function (e) {
- return "number" == typeof e;
- }),
- (t.odd = function (e) {
- return e % 2 == 1;
- }),
- (t.string = function (e) {
- return "string" == typeof e;
- }),
- (t.truthy = function (e) {
- return !!e;
- }),
- (t.undefined = function (e) {
- return void 0 === e;
- }),
- (t.upper = function (e) {
- return e.toUpperCase() === e;
- }),
- (t.iterable = function (e) {
- return "undefined" != typeof Symbol
- ? !!e[Symbol.iterator]
- : Array.isArray(e) || "string" == typeof e;
- }),
- (t.mapping = function (e) {
- var t =
- null != e && "object" == typeof e && !Array.isArray(e);
- return Set ? t && !(e instanceof Set) : t;
- });
- },
- function (e, t, r) {
- "use strict";
- e.exports = function () {
- return {
- range: function (e, t, r) {
- void 0 === t ? ((t = e), (e = 0), (r = 1)) : r || (r = 1);
- var n = [];
- if (r > 0) for (var i = e; i < t; i += r) n.push(i);
- else for (var o = e; o > t; o += r) n.push(o);
- return n;
- },
- cycler: function () {
- return (
- (e = Array.prototype.slice.call(arguments)),
- (t = -1),
- {
- current: null,
- reset: function () {
- (t = -1), (this.current = null);
- },
- next: function () {
- return (
- ++t >= e.length && (t = 0),
- (this.current = e[t]),
- this.current
- );
- },
- }
- );
- var e, t;
- },
- joiner: function (e) {
- return (function (e) {
- e = e || ",";
- var t = !0;
- return function () {
- var r = t ? "" : e;
- return (t = !1), r;
- };
- })(e);
- },
- };
- };
- },
- function (e, t, r) {
- var n = r(4);
- e.exports = function (e, t) {
- function r(e, t) {
- if (
- ((this.name = e),
- (this.path = e),
- (this.defaultEngine = t.defaultEngine),
- (this.ext = n.extname(e)),
- !this.ext && !this.defaultEngine)
- )
- throw new Error(
- "No default engine was specified and no extension was provided."
- );
- this.ext ||
- (this.name += this.ext =
- ("." !== this.defaultEngine[0] ? "." : "") +
- this.defaultEngine);
- }
- return (
- (r.prototype.render = function (t, r) {
- e.render(this.name, t, r);
- }),
- t.set("view", r),
- t.set("nunjucksEnv", e),
- e
- );
- };
- },
- function (e, t, r) {
- "use strict";
- var n = r(4),
- i = r(4),
- o = r(0)._prettifyError,
- a = r(5),
- s = r(7).Environment,
- l = r(24);
- function c(e, t) {
- return (
- !!Array.isArray(t) &&
- t.some(function (t) {
- return e.match(t);
- })
- );
- }
- function u(e, t) {
- (t = t || {}).isString = !0;
- var r = t.env || new s([]),
- n = t.wrapper || l;
- if (!t.name)
- throw new Error(
- 'the "name" option is required when compiling a string'
- );
- return n([p(e, t.name, r)], t);
- }
- function p(e, t, r) {
- var n,
- i = (r = r || new s([])).asyncFilters,
- l = r.extensionsList;
- t = t.replace(/\\/g, "/");
- try {
- n = a.compile(e, i, l, t, r.opts);
- } catch (e) {
- throw o(t, !1, e);
- }
- return { name: t, template: n };
- }
- e.exports = {
- precompile: function (e, t) {
- var r = (t = t || {}).env || new s([]),
- o = t.wrapper || l;
- if (t.isString) return u(e, t);
- var a = n.existsSync(e) && n.statSync(e),
- d = [],
- f = [];
- if (a.isFile())
- d.push(p(n.readFileSync(e, "utf-8"), t.name || e, r));
- else if (a.isDirectory()) {
- !(function r(o) {
- n.readdirSync(o).forEach(function (a) {
- var s = i.join(o, a),
- l = s.substr(i.join(e, "/").length),
- u = n.statSync(s);
- u && u.isDirectory()
- ? c((l += "/"), t.exclude) || r(s)
- : c(l, t.include) && f.push(s);
- });
- })(e);
- for (var h = 0; h < f.length; h++) {
- var m = f[h].replace(i.join(e, "/"), "");
- try {
- d.push(p(n.readFileSync(f[h], "utf-8"), m, r));
- } catch (e) {
- if (!t.force) throw e;
- console.error(e);
- }
- }
- }
- return o(d, t);
- },
- precompileString: u,
- };
- },
- function (e, t, r) {
- "use strict";
- e.exports = function (e, t) {
- var r = "";
- t = t || {};
- for (var n = 0; n < e.length; n++) {
- var i = JSON.stringify(e[n].name);
- (r +=
- "(function() {(window.nunjucksPrecompiled = window.nunjucksPrecompiled || {})[" +
- i +
- "] = (function() {\n" +
- e[n].template +
- "\n})();\n"),
- t.asFunction &&
- (r +=
- "return function(ctx, cb) { return nunjucks.render(" +
- i +
- ", ctx, cb); }\n"),
- (r += "})();\n");
- }
- return r;
- };
- },
- function (e, t, r) {
- e.exports = function () {
- "use strict";
- var e,
- t,
- r = this.runtime,
- n = this.lib,
- i = this.compiler.Compiler,
- o = this.parser.Parser,
- a = this.nodes,
- s = this.lexer,
- l = r.contextOrFrameLookup,
- c = r.memberLookup;
- function u(e) {
- return { index: e.index, lineno: e.lineno, colno: e.colno };
- }
- if (
- (i && (e = i.prototype.assertType),
- o && (t = o.prototype.parseAggregate),
- (r.contextOrFrameLookup = function (e, t, r) {
- var n = l.apply(this, arguments);
- if (void 0 !== n) return n;
- switch (r) {
- case "True":
- return !0;
- case "False":
- return !1;
- case "None":
- return null;
- default:
- return;
- }
- }),
- a && i && o)
- ) {
- var p = a.Node.extend("Slice", {
- fields: ["start", "stop", "step"],
- init: function (e, t, r, n, i) {
- (r = r || new a.Literal(e, t, null)),
- (n = n || new a.Literal(e, t, null)),
- (i = i || new a.Literal(e, t, 1)),
- this.parent(e, t, r, n, i);
- },
- });
- (i.prototype.assertType = function (t) {
- t instanceof p || e.apply(this, arguments);
- }),
- (i.prototype.compileSlice = function (e, t) {
- this._emit("("),
- this._compileExpression(e.start, t),
- this._emit("),("),
- this._compileExpression(e.stop, t),
- this._emit("),("),
- this._compileExpression(e.step, t),
- this._emit(")");
- }),
- (o.prototype.parseAggregate = function () {
- var e = this,
- r = u(this.tokens);
- r.colno--, r.index--;
- try {
- return t.apply(this);
- } catch (t) {
- var i = u(this.tokens),
- o = function () {
- return n._assign(e.tokens, i), t;
- };
- n._assign(this.tokens, r), (this.peeked = !1);
- var l = this.peekToken();
- if (l.type !== s.TOKEN_LEFT_BRACKET) throw o();
- this.nextToken();
- for (
- var c = new p(l.lineno, l.colno), d = !1, f = 0;
- f <= c.fields.length &&
- !this.skip(s.TOKEN_RIGHT_BRACKET);
- f++
- ) {
- if (f === c.fields.length) {
- if (!d) break;
- this.fail(
- "parseSlice: too many slice components",
- l.lineno,
- l.colno
- );
- }
- this.skip(s.TOKEN_COLON)
- ? (d = !0)
- : ((c[c.fields[f]] = this.parseExpression()),
- (d = this.skip(s.TOKEN_COLON) || d));
- }
- if (!d) throw o();
- return new a.Array(l.lineno, l.colno, [c]);
- }
- });
- }
- function d(e, t, n, i) {
- (e = e || []),
- null === t && (t = i < 0 ? e.length - 1 : 0),
- null === n
- ? (n = i < 0 ? -1 : e.length)
- : n < 0 && (n += e.length),
- t < 0 && (t += e.length);
- for (
- var o = [], a = t;
- !(
- a < 0 ||
- a > e.length ||
- (i > 0 && a >= n) ||
- (i < 0 && a <= n)
- );
- a += i
- )
- o.push(r.memberLookup(e, a));
- return o;
- }
- function f(e, t) {
- return Object.prototype.hasOwnProperty.call(e, t);
- }
- var h = {
- pop: function (e) {
- if (void 0 === e) return this.pop();
- if (e >= this.length || e < 0)
- throw new Error("KeyError");
- return this.splice(e, 1);
- },
- append: function (e) {
- return this.push(e);
- },
- remove: function (e) {
- for (var t = 0; t < this.length; t++)
- if (this[t] === e) return this.splice(t, 1);
- throw new Error("ValueError");
- },
- count: function (e) {
- for (var t = 0, r = 0; r < this.length; r++)
- this[r] === e && t++;
- return t;
- },
- index: function (e) {
- var t;
- if (-1 === (t = this.indexOf(e)))
- throw new Error("ValueError");
- return t;
- },
- find: function (e) {
- return this.indexOf(e);
- },
- insert: function (e, t) {
- return this.splice(e, 0, t);
- },
- },
- m = {
- items: function () {
- return n._entries(this);
- },
- values: function () {
- return n._values(this);
- },
- keys: function () {
- return n.keys(this);
- },
- get: function (e, t) {
- var r = this[e];
- return void 0 === r && (r = t), r;
- },
- has_key: function (e) {
- return f(this, e);
- },
- pop: function (e, t) {
- var r = this[e];
- if (void 0 === r && void 0 !== t) r = t;
- else {
- if (void 0 === r) throw new Error("KeyError");
- delete this[e];
- }
- return r;
- },
- popitem: function () {
- var e = n.keys(this);
- if (!e.length) throw new Error("KeyError");
- var t = e[0],
- r = this[t];
- return delete this[t], [t, r];
- },
- setdefault: function (e, t) {
- return (
- void 0 === t && (t = null),
- e in this || (this[e] = t),
- this[e]
- );
- },
- update: function (e) {
- return n._assign(this, e), null;
- },
- };
- return (
- (m.iteritems = m.items),
- (m.itervalues = m.values),
- (m.iterkeys = m.keys),
- (r.memberLookup = function (e, t, r) {
- return 4 === arguments.length
- ? d.apply(this, arguments)
- : ((e = e || {}),
- n.isArray(e) && f(h, t)
- ? h[t].bind(e)
- : n.isObject(e) && f(m, t)
- ? m[t].bind(e)
- : c.apply(this, arguments));
- }),
- function () {
- (r.contextOrFrameLookup = l),
- (r.memberLookup = c),
- i && (i.prototype.assertType = e),
- o && (o.prototype.parseAggregate = t);
- }
- );
- };
- },
- ]);
- }),
- (e.exports = t());
- },
- 202: (e, t, r) => {
- "use strict";
- var n = r(3700),
- i = /[\/\?<>\\:\*\|"]/g,
- o = /[\x00-\x1f\x80-\x9f]/g,
- a = /^\.+$/,
- s = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i,
- l = /[\. ]+$/;
- function c(e, t) {
- if ("string" != typeof e) throw new Error("Input must be string");
- var r = e
- .replace(i, t)
- .replace(o, t)
- .replace(a, t)
- .replace(s, t)
- .replace(l, t);
- return n(r, 255);
- }
- e.exports = function (e, t) {
- var r = (t && t.replacement) || "",
- n = c(e, r);
- return "" === r ? n : c(n, "");
- };
- },
- 9328: (e) => {
- "use strict";
- var t = { decodeValues: !0, map: !1, silent: !1 };
- function r(e) {
- return "string" == typeof e && !!e.trim();
- }
- function n(e, n) {
- var i = e.split(";").filter(r),
- o = i.shift().split("="),
- a = o.shift(),
- s = o.join("=");
- n = n ? Object.assign({}, t, n) : t;
- try {
- s = n.decodeValues ? decodeURIComponent(s) : s;
- } catch (e) {
- console.error(
- "set-cookie-parser encountered an error while decoding a cookie with value '" +
- s +
- "'. Set options.decodeValues to false to disable this feature.",
- e
- );
- }
- var l = { name: a, value: s };
- return (
- i.forEach(function (e) {
- var t = e.split("="),
- r = t.shift().trimLeft().toLowerCase(),
- n = t.join("=");
- "expires" === r
- ? (l.expires = new Date(n))
- : "max-age" === r
- ? (l.maxAge = parseInt(n, 10))
- : "secure" === r
- ? (l.secure = !0)
- : "httponly" === r
- ? (l.httpOnly = !0)
- : "samesite" === r
- ? (l.sameSite = n)
- : (l[r] = n);
- }),
- l
- );
- }
- function i(e, i) {
- if (((i = i ? Object.assign({}, t, i) : t), !e))
- return i.map ? {} : [];
- if (e.headers && e.headers["set-cookie"]) e = e.headers["set-cookie"];
- else if (e.headers) {
- var o =
- e.headers[
- Object.keys(e.headers).find(function (e) {
- return "set-cookie" === e.toLowerCase();
- })
- ];
- o ||
- !e.headers.cookie ||
- i.silent ||
- console.warn(
- "Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning."
- ),
- (e = o);
- }
- return (
- Array.isArray(e) || (e = [e]),
- (i = i ? Object.assign({}, t, i) : t).map
- ? e.filter(r).reduce(function (e, t) {
- var r = n(t, i);
- return (e[r.name] = r), e;
- }, {})
- : e.filter(r).map(function (e) {
- return n(e, i);
- })
- );
- }
- (e.exports = i),
- (e.exports.parse = i),
- (e.exports.parseString = n),
- (e.exports.splitCookiesString = function (e) {
- if (Array.isArray(e)) return e;
- if ("string" != typeof e) return [];
- var t,
- r,
- n,
- i,
- o,
- a = [],
- s = 0;
- function l() {
- for (; s < e.length && /\s/.test(e.charAt(s)); ) s += 1;
- return s < e.length;
- }
- for (; s < e.length; ) {
- for (t = s, o = !1; l(); )
- if ("," === (r = e.charAt(s))) {
- for (
- n = s, s += 1, l(), i = s;
- s < e.length &&
- "=" !== (r = e.charAt(s)) &&
- ";" !== r &&
- "," !== r;
-
- )
- s += 1;
- s < e.length && "=" === e.charAt(s)
- ? ((o = !0), (s = i), a.push(e.substring(t, n)), (t = s))
- : (s = n + 1);
- } else s += 1;
- (!o || s >= e.length) && a.push(e.substring(t, e.length));
- }
- return a;
- });
- },
- 3700: (e, t, r) => {
- "use strict";
- var n = r(1156),
- i = r(793);
- e.exports = n.bind(null, i);
- },
- 1156: (e) => {
- "use strict";
- function t(e) {
- return e >= 55296 && e <= 56319;
- }
- function r(e) {
- return e >= 56320 && e <= 57343;
- }
- e.exports = function (e, n, i) {
- if ("string" != typeof n) throw new Error("Input must be string");
- for (var o, a, s = n.length, l = 0, c = 0; c < s; c += 1) {
- if (
- ((o = n.charCodeAt(c)),
- (a = n[c]),
- t(o) && r(n.charCodeAt(c + 1)) && (a += n[(c += 1)]),
- (l += e(a)) === i)
- )
- return n.slice(0, c + 1);
- if (l > i) return n.slice(0, c - a.length + 1);
- }
- return n;
- };
- },
- 793: (e) => {
- "use strict";
- function t(e) {
- return e >= 55296 && e <= 56319;
- }
- function r(e) {
- return e >= 56320 && e <= 57343;
- }
- e.exports = function (e) {
- if ("string" != typeof e) throw new Error("Input must be string");
- for (var n = e.length, i = 0, o = null, a = null, s = 0; s < n; s++)
- r((o = e.charCodeAt(s)))
- ? null != a && t(a)
- ? (i += 1)
- : (i += 3)
- : o <= 127
- ? (i += 1)
- : o >= 128 && o <= 2047
- ? (i += 2)
- : o >= 2048 && o <= 65535 && (i += 3),
- (a = o);
- return i;
- };
- },
- 5840: (e) => {
- "use strict";
- e.exports = require("electron");
- },
- 3600: (e) => {
- "use strict";
- e.exports = JSON.parse(
- '{"0":65533,"128":8364,"130":8218,"131":402,"132":8222,"133":8230,"134":8224,"135":8225,"136":710,"137":8240,"138":352,"139":8249,"140":338,"142":381,"145":8216,"146":8217,"147":8220,"148":8221,"149":8226,"150":8211,"151":8212,"152":732,"153":8482,"154":353,"155":8250,"156":339,"158":382,"159":376}'
- );
- },
- 9323: (e) => {
- "use strict";
- e.exports = JSON.parse(
- '{"Aacute":"Á","aacute":"á","Abreve":"Ă","abreve":"ă","ac":"∾","acd":"∿","acE":"∾̳","Acirc":"Â","acirc":"â","acute":"´","Acy":"А","acy":"а","AElig":"Æ","aelig":"æ","af":"","Afr":"𝔄","afr":"𝔞","Agrave":"À","agrave":"à","alefsym":"ℵ","aleph":"ℵ","Alpha":"Α","alpha":"α","Amacr":"Ā","amacr":"ā","amalg":"⨿","amp":"&","AMP":"&","andand":"⩕","And":"⩓","and":"∧","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angmsd":"∡","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","Aogon":"Ą","aogon":"ą","Aopf":"𝔸","aopf":"𝕒","apacir":"⩯","ap":"≈","apE":"⩰","ape":"≊","apid":"≋","apos":"\'","ApplyFunction":"","approx":"≈","approxeq":"≊","Aring":"Å","aring":"å","Ascr":"𝒜","ascr":"𝒶","Assign":"≔","ast":"*","asymp":"≈","asympeq":"≍","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","awconint":"∳","awint":"⨑","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","Backslash":"∖","Barv":"⫧","barvee":"⊽","barwed":"⌅","Barwed":"⌆","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","Bcy":"Б","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","Because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","Bernoullis":"ℬ","Beta":"Β","beta":"β","beth":"ℶ","between":"≬","Bfr":"𝔅","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bNot":"⫭","bnot":"⌐","Bopf":"𝔹","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxbox":"⧉","boxdl":"┐","boxdL":"╕","boxDl":"╖","boxDL":"╗","boxdr":"┌","boxdR":"╒","boxDr":"╓","boxDR":"╔","boxh":"─","boxH":"═","boxhd":"┬","boxHd":"╤","boxhD":"╥","boxHD":"╦","boxhu":"┴","boxHu":"╧","boxhU":"╨","boxHU":"╩","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxul":"┘","boxuL":"╛","boxUl":"╜","boxUL":"╝","boxur":"└","boxuR":"╘","boxUr":"╙","boxUR":"╚","boxv":"│","boxV":"║","boxvh":"┼","boxvH":"╪","boxVh":"╫","boxVH":"╬","boxvl":"┤","boxvL":"╡","boxVl":"╢","boxVL":"╣","boxvr":"├","boxvR":"╞","boxVr":"╟","boxVR":"╠","bprime":"‵","breve":"˘","Breve":"˘","brvbar":"¦","bscr":"𝒷","Bscr":"ℬ","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsolb":"⧅","bsol":"\\\\","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","Bumpeq":"≎","bumpeq":"≏","Cacute":"Ć","cacute":"ć","capand":"⩄","capbrcup":"⩉","capcap":"⩋","cap":"∩","Cap":"⋒","capcup":"⩇","capdot":"⩀","CapitalDifferentialD":"ⅅ","caps":"∩︀","caret":"⁁","caron":"ˇ","Cayleys":"ℭ","ccaps":"⩍","Ccaron":"Č","ccaron":"č","Ccedil":"Ç","ccedil":"ç","Ccirc":"Ĉ","ccirc":"ĉ","Cconint":"∰","ccups":"⩌","ccupssm":"⩐","Cdot":"Ċ","cdot":"ċ","cedil":"¸","Cedilla":"¸","cemptyv":"⦲","cent":"¢","centerdot":"·","CenterDot":"·","cfr":"𝔠","Cfr":"ℭ","CHcy":"Ч","chcy":"ч","check":"✓","checkmark":"✓","Chi":"Χ","chi":"χ","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","CircleDot":"⊙","circledR":"®","circledS":"Ⓢ","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","cir":"○","cirE":"⧃","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","clubs":"♣","clubsuit":"♣","colon":":","Colon":"∷","Colone":"⩴","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","Congruent":"≡","conint":"∮","Conint":"∯","ContourIntegral":"∮","copf":"𝕔","Copf":"ℂ","coprod":"∐","Coproduct":"∐","copy":"©","COPY":"©","copysr":"℗","CounterClockwiseContourIntegral":"∳","crarr":"↵","cross":"✗","Cross":"⨯","Cscr":"𝒞","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cupbrcap":"⩈","cupcap":"⩆","CupCap":"≍","cup":"∪","Cup":"⋓","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dagger":"†","Dagger":"‡","daleth":"ℸ","darr":"↓","Darr":"↡","dArr":"⇓","dash":"‐","Dashv":"⫤","dashv":"⊣","dbkarow":"⤏","dblac":"˝","Dcaron":"Ď","dcaron":"ď","Dcy":"Д","dcy":"д","ddagger":"‡","ddarr":"⇊","DD":"ⅅ","dd":"ⅆ","DDotrahd":"⤑","ddotseq":"⩷","deg":"°","Del":"∇","Delta":"Δ","delta":"δ","demptyv":"⦱","dfisht":"⥿","Dfr":"𝔇","dfr":"𝔡","dHar":"⥥","dharl":"⇃","dharr":"⇂","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","diam":"⋄","diamond":"⋄","Diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","DifferentialD":"ⅆ","digamma":"ϝ","disin":"⋲","div":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","DJcy":"Ђ","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","Dopf":"𝔻","dopf":"𝕕","Dot":"¨","dot":"˙","DotDot":"⃜","doteq":"≐","doteqdot":"≑","DotEqual":"≐","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrowBar":"⤓","downarrow":"↓","DownArrow":"↓","Downarrow":"⇓","DownArrowUpArrow":"⇵","DownBreve":"̑","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVectorBar":"⥖","DownLeftVector":"↽","DownRightTeeVector":"⥟","DownRightVectorBar":"⥗","DownRightVector":"⇁","DownTeeArrow":"↧","DownTee":"⊤","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","Dscr":"𝒟","dscr":"𝒹","DScy":"Ѕ","dscy":"ѕ","dsol":"⧶","Dstrok":"Đ","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","DZcy":"Џ","dzcy":"џ","dzigrarr":"⟿","Eacute":"É","eacute":"é","easter":"⩮","Ecaron":"Ě","ecaron":"ě","Ecirc":"Ê","ecirc":"ê","ecir":"≖","ecolon":"≕","Ecy":"Э","ecy":"э","eDDot":"⩷","Edot":"Ė","edot":"ė","eDot":"≑","ee":"ⅇ","efDot":"≒","Efr":"𝔈","efr":"𝔢","eg":"⪚","Egrave":"È","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","Element":"∈","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","Emacr":"Ē","emacr":"ē","empty":"∅","emptyset":"∅","EmptySmallSquare":"◻","emptyv":"∅","EmptyVerySmallSquare":"▫","emsp13":" ","emsp14":" ","emsp":" ","ENG":"Ŋ","eng":"ŋ","ensp":" ","Eogon":"Ę","eogon":"ę","Eopf":"𝔼","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","Epsilon":"Ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","Equal":"⩵","equals":"=","EqualTilde":"≂","equest":"≟","Equilibrium":"⇌","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erarr":"⥱","erDot":"≓","escr":"ℯ","Escr":"ℰ","esdot":"≐","Esim":"⩳","esim":"≂","Eta":"Η","eta":"η","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","euro":"€","excl":"!","exist":"∃","Exists":"∃","expectation":"ℰ","exponentiale":"ⅇ","ExponentialE":"ⅇ","fallingdotseq":"≒","Fcy":"Ф","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","Ffr":"𝔉","ffr":"𝔣","filig":"fi","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","Fopf":"𝔽","fopf":"𝕗","forall":"∀","ForAll":"∀","fork":"⋔","forkv":"⫙","Fouriertrf":"ℱ","fpartint":"⨍","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","Fscr":"ℱ","gacute":"ǵ","Gamma":"Γ","gamma":"γ","Gammad":"Ϝ","gammad":"ϝ","gap":"⪆","Gbreve":"Ğ","gbreve":"ğ","Gcedil":"Ģ","Gcirc":"Ĝ","gcirc":"ĝ","Gcy":"Г","gcy":"г","Gdot":"Ġ","gdot":"ġ","ge":"≥","gE":"≧","gEl":"⪌","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","gescc":"⪩","ges":"⩾","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","Gfr":"𝔊","gfr":"𝔤","gg":"≫","Gg":"⋙","ggg":"⋙","gimel":"ℷ","GJcy":"Ѓ","gjcy":"ѓ","gla":"⪥","gl":"≷","glE":"⪒","glj":"⪤","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gnE":"≩","gneq":"⪈","gneqq":"≩","gnsim":"⋧","Gopf":"𝔾","gopf":"𝕘","grave":"`","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","gtcc":"⪧","gtcir":"⩺","gt":">","GT":">","Gt":"≫","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","Hacek":"ˇ","hairsp":" ","half":"½","hamilt":"ℋ","HARDcy":"Ъ","hardcy":"ъ","harrcir":"⥈","harr":"↔","hArr":"⇔","harrw":"↭","Hat":"^","hbar":"ℏ","Hcirc":"Ĥ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","Hfr":"ℌ","HilbertSpace":"ℋ","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","Hopf":"ℍ","horbar":"―","HorizontalLine":"─","hscr":"𝒽","Hscr":"ℋ","hslash":"ℏ","Hstrok":"Ħ","hstrok":"ħ","HumpDownHump":"≎","HumpEqual":"≏","hybull":"⁃","hyphen":"‐","Iacute":"Í","iacute":"í","ic":"","Icirc":"Î","icirc":"î","Icy":"И","icy":"и","Idot":"İ","IEcy":"Е","iecy":"е","iexcl":"¡","iff":"⇔","ifr":"𝔦","Ifr":"ℑ","Igrave":"Ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","IJlig":"IJ","ijlig":"ij","Imacr":"Ī","imacr":"ī","image":"ℑ","ImaginaryI":"ⅈ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","Im":"ℑ","imof":"⊷","imped":"Ƶ","Implies":"⇒","incare":"℅","in":"∈","infin":"∞","infintie":"⧝","inodot":"ı","intcal":"⊺","int":"∫","Int":"∬","integers":"ℤ","Integral":"∫","intercal":"⊺","Intersection":"⋂","intlarhk":"⨗","intprod":"⨼","InvisibleComma":"","InvisibleTimes":"","IOcy":"Ё","iocy":"ё","Iogon":"Į","iogon":"į","Iopf":"𝕀","iopf":"𝕚","Iota":"Ι","iota":"ι","iprod":"⨼","iquest":"¿","iscr":"𝒾","Iscr":"ℐ","isin":"∈","isindot":"⋵","isinE":"⋹","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"","Itilde":"Ĩ","itilde":"ĩ","Iukcy":"І","iukcy":"і","Iuml":"Ï","iuml":"ï","Jcirc":"Ĵ","jcirc":"ĵ","Jcy":"Й","jcy":"й","Jfr":"𝔍","jfr":"𝔧","jmath":"ȷ","Jopf":"𝕁","jopf":"𝕛","Jscr":"𝒥","jscr":"𝒿","Jsercy":"Ј","jsercy":"ј","Jukcy":"Є","jukcy":"є","Kappa":"Κ","kappa":"κ","kappav":"ϰ","Kcedil":"Ķ","kcedil":"ķ","Kcy":"К","kcy":"к","Kfr":"𝔎","kfr":"𝔨","kgreen":"ĸ","KHcy":"Х","khcy":"х","KJcy":"Ќ","kjcy":"ќ","Kopf":"𝕂","kopf":"𝕜","Kscr":"𝒦","kscr":"𝓀","lAarr":"⇚","Lacute":"Ĺ","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","Lambda":"Λ","lambda":"λ","lang":"⟨","Lang":"⟪","langd":"⦑","langle":"⟨","lap":"⪅","Laplacetrf":"ℒ","laquo":"«","larrb":"⇤","larrbfs":"⤟","larr":"←","Larr":"↞","lArr":"⇐","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","latail":"⤙","lAtail":"⤛","lat":"⪫","late":"⪭","lates":"⪭︀","lbarr":"⤌","lBarr":"⤎","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","Lcaron":"Ľ","lcaron":"ľ","Lcedil":"Ļ","lcedil":"ļ","lceil":"⌈","lcub":"{","Lcy":"Л","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","lE":"≦","LeftAngleBracket":"⟨","LeftArrowBar":"⇤","leftarrow":"←","LeftArrow":"←","Leftarrow":"⇐","LeftArrowRightArrow":"⇆","leftarrowtail":"↢","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVectorBar":"⥙","LeftDownVector":"⇃","LeftFloor":"⌊","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","LeftRightArrow":"↔","Leftrightarrow":"⇔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","LeftRightVector":"⥎","LeftTeeArrow":"↤","LeftTee":"⊣","LeftTeeVector":"⥚","leftthreetimes":"⋋","LeftTriangleBar":"⧏","LeftTriangle":"⊲","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVectorBar":"⥘","LeftUpVector":"↿","LeftVectorBar":"⥒","LeftVector":"↼","lEg":"⪋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","lescc":"⪨","les":"⩽","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","lessgtr":"≶","LessLess":"⪡","lesssim":"≲","LessSlantEqual":"⩽","LessTilde":"≲","lfisht":"⥼","lfloor":"⌊","Lfr":"𝔏","lfr":"𝔩","lg":"≶","lgE":"⪑","lHar":"⥢","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","LJcy":"Љ","ljcy":"љ","llarr":"⇇","ll":"≪","Ll":"⋘","llcorner":"⌞","Lleftarrow":"⇚","llhard":"⥫","lltri":"◺","Lmidot":"Ŀ","lmidot":"ŀ","lmoustache":"⎰","lmoust":"⎰","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lnE":"≨","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","LongLeftArrow":"⟵","Longleftarrow":"⟸","longleftrightarrow":"⟷","LongLeftRightArrow":"⟷","Longleftrightarrow":"⟺","longmapsto":"⟼","longrightarrow":"⟶","LongRightArrow":"⟶","Longrightarrow":"⟹","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","Lopf":"𝕃","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","LowerLeftArrow":"↙","LowerRightArrow":"↘","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","Lscr":"ℒ","lsh":"↰","Lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","Lstrok":"Ł","lstrok":"ł","ltcc":"⪦","ltcir":"⩹","lt":"<","LT":"<","Lt":"≪","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltri":"◃","ltrie":"⊴","ltrif":"◂","ltrPar":"⦖","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","macr":"¯","male":"♂","malt":"✠","maltese":"✠","Map":"⤅","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","Mcy":"М","mcy":"м","mdash":"—","mDDot":"∺","measuredangle":"∡","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","mfr":"𝔪","mho":"℧","micro":"µ","midast":"*","midcir":"⫰","mid":"∣","middot":"·","minusb":"⊟","minus":"−","minusd":"∸","minusdu":"⨪","MinusPlus":"∓","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","Mopf":"𝕄","mopf":"𝕞","mp":"∓","mscr":"𝓂","Mscr":"ℳ","mstpos":"∾","Mu":"Μ","mu":"μ","multimap":"⊸","mumap":"⊸","nabla":"∇","Nacute":"Ń","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natural":"♮","naturals":"ℕ","natur":"♮","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","Ncaron":"Ň","ncaron":"ň","Ncedil":"Ņ","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","Ncy":"Н","ncy":"н","ndash":"–","nearhk":"⤤","nearr":"↗","neArr":"⇗","nearrow":"↗","ne":"≠","nedot":"≐̸","NegativeMediumSpace":"","NegativeThickSpace":"","NegativeThinSpace":"","NegativeVeryThinSpace":"","nequiv":"≢","nesear":"⤨","nesim":"≂̸","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","nexist":"∄","nexists":"∄","Nfr":"𝔑","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","nGg":"⋙̸","ngsim":"≵","nGt":"≫⃒","ngt":"≯","ngtr":"≯","nGtv":"≫̸","nharr":"↮","nhArr":"⇎","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","NJcy":"Њ","njcy":"њ","nlarr":"↚","nlArr":"⇍","nldr":"‥","nlE":"≦̸","nle":"≰","nleftarrow":"↚","nLeftarrow":"⇍","nleftrightarrow":"↮","nLeftrightarrow":"⇎","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nLl":"⋘̸","nlsim":"≴","nLt":"≪⃒","nlt":"≮","nltri":"⋪","nltrie":"⋬","nLtv":"≪̸","nmid":"∤","NoBreak":"","NonBreakingSpace":" ","nopf":"𝕟","Nopf":"ℕ","Not":"⫬","not":"¬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","notin":"∉","notindot":"⋵̸","notinE":"⋹̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","NotLeftTriangleBar":"⧏̸","NotLeftTriangle":"⋪","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangleBar":"⧐̸","NotRightTriangle":"⋫","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","nparallel":"∦","npar":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","nprec":"⊀","npreceq":"⪯̸","npre":"⪯̸","nrarrc":"⤳̸","nrarr":"↛","nrArr":"⇏","nrarrw":"↝̸","nrightarrow":"↛","nRightarrow":"⇏","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","Nscr":"𝒩","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","Ntilde":"Ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","Nu":"Ν","nu":"ν","num":"#","numero":"№","numsp":" ","nvap":"≍⃒","nvdash":"⊬","nvDash":"⊭","nVdash":"⊮","nVDash":"⊯","nvge":"≥⃒","nvgt":">⃒","nvHarr":"⤄","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwarhk":"⤣","nwarr":"↖","nwArr":"⇖","nwarrow":"↖","nwnear":"⤧","Oacute":"Ó","oacute":"ó","oast":"⊛","Ocirc":"Ô","ocirc":"ô","ocir":"⊚","Ocy":"О","ocy":"о","odash":"⊝","Odblac":"Ő","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","OElig":"Œ","oelig":"œ","ofcir":"⦿","Ofr":"𝔒","ofr":"𝔬","ogon":"˛","Ograve":"Ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","Omacr":"Ō","omacr":"ō","Omega":"Ω","omega":"ω","Omicron":"Ο","omicron":"ο","omid":"⦶","ominus":"⊖","Oopf":"𝕆","oopf":"𝕠","opar":"⦷","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","operp":"⦹","oplus":"⊕","orarr":"↻","Or":"⩔","or":"∨","ord":"⩝","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oS":"Ⓢ","Oscr":"𝒪","oscr":"ℴ","Oslash":"Ø","oslash":"ø","osol":"⊘","Otilde":"Õ","otilde":"õ","otimesas":"⨶","Otimes":"⨷","otimes":"⊗","Ouml":"Ö","ouml":"ö","ovbar":"⌽","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","para":"¶","parallel":"∥","par":"∥","parsim":"⫳","parsl":"⫽","part":"∂","PartialD":"∂","Pcy":"П","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","Pfr":"𝔓","pfr":"𝔭","Phi":"Φ","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","Pi":"Π","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plus":"+","plusdo":"∔","plusdu":"⨥","pluse":"⩲","PlusMinus":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","Poincareplane":"ℌ","pointint":"⨕","popf":"𝕡","Popf":"ℙ","pound":"£","prap":"⪷","Pr":"⪻","pr":"≺","prcue":"≼","precapprox":"⪷","prec":"≺","preccurlyeq":"≼","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","pre":"⪯","prE":"⪳","precsim":"≾","prime":"′","Prime":"″","primes":"ℙ","prnap":"⪹","prnE":"⪵","prnsim":"⋨","prod":"∏","Product":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","Proportional":"∝","Proportion":"∷","propto":"∝","prsim":"≾","prurel":"⊰","Pscr":"𝒫","pscr":"𝓅","Psi":"Ψ","psi":"ψ","puncsp":" ","Qfr":"𝔔","qfr":"𝔮","qint":"⨌","qopf":"𝕢","Qopf":"ℚ","qprime":"⁗","Qscr":"𝒬","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quot":"\\"","QUOT":"\\"","rAarr":"⇛","race":"∽̱","Racute":"Ŕ","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","Rang":"⟫","rangd":"⦒","range":"⦥","rangle":"⟩","raquo":"»","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarr":"→","Rarr":"↠","rArr":"⇒","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","Rarrtl":"⤖","rarrtl":"↣","rarrw":"↝","ratail":"⤚","rAtail":"⤜","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rBarr":"⤏","RBarr":"⤐","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","Rcaron":"Ř","rcaron":"ř","Rcedil":"Ŗ","rcedil":"ŗ","rceil":"⌉","rcub":"}","Rcy":"Р","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","Re":"ℜ","rect":"▭","reg":"®","REG":"®","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","Rfr":"ℜ","rHar":"⥤","rhard":"⇁","rharu":"⇀","rharul":"⥬","Rho":"Ρ","rho":"ρ","rhov":"ϱ","RightAngleBracket":"⟩","RightArrowBar":"⇥","rightarrow":"→","RightArrow":"→","Rightarrow":"⇒","RightArrowLeftArrow":"⇄","rightarrowtail":"↣","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVectorBar":"⥕","RightDownVector":"⇂","RightFloor":"⌋","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","RightTeeArrow":"↦","RightTee":"⊢","RightTeeVector":"⥛","rightthreetimes":"⋌","RightTriangleBar":"⧐","RightTriangle":"⊳","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVectorBar":"⥔","RightUpVector":"↾","RightVectorBar":"⥓","RightVector":"⇀","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"","rmoustache":"⎱","rmoust":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","Ropf":"ℝ","roplus":"⨮","rotimes":"⨵","RoundImplies":"⥰","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","Rrightarrow":"⇛","rsaquo":"›","rscr":"𝓇","Rscr":"ℛ","rsh":"↱","Rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","RuleDelayed":"⧴","ruluhar":"⥨","rx":"℞","Sacute":"Ś","sacute":"ś","sbquo":"‚","scap":"⪸","Scaron":"Š","scaron":"š","Sc":"⪼","sc":"≻","sccue":"≽","sce":"⪰","scE":"⪴","Scedil":"Ş","scedil":"ş","Scirc":"Ŝ","scirc":"ŝ","scnap":"⪺","scnE":"⪶","scnsim":"⋩","scpolint":"⨓","scsim":"≿","Scy":"С","scy":"с","sdotb":"⊡","sdot":"⋅","sdote":"⩦","searhk":"⤥","searr":"↘","seArr":"⇘","searrow":"↘","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","Sfr":"𝔖","sfr":"𝔰","sfrown":"⌢","sharp":"♯","SHCHcy":"Щ","shchcy":"щ","SHcy":"Ш","shcy":"ш","ShortDownArrow":"↓","ShortLeftArrow":"←","shortmid":"∣","shortparallel":"∥","ShortRightArrow":"→","ShortUpArrow":"↑","shy":"","Sigma":"Σ","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","SmallCircle":"∘","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","SOFTcy":"Ь","softcy":"ь","solbar":"⌿","solb":"⧄","sol":"/","Sopf":"𝕊","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","Sqrt":"√","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","square":"□","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","squarf":"▪","squ":"□","squf":"▪","srarr":"→","Sscr":"𝒮","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","Star":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","Sub":"⋐","subdot":"⪽","subE":"⫅","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","Subset":"⋐","subseteq":"⊆","subseteqq":"⫅","SubsetEqual":"⊆","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succapprox":"⪸","succ":"≻","succcurlyeq":"≽","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","SuchThat":"∋","sum":"∑","Sum":"∑","sung":"♪","sup1":"¹","sup2":"²","sup3":"³","sup":"⊃","Sup":"⋑","supdot":"⪾","supdsub":"⫘","supE":"⫆","supe":"⊇","supedot":"⫄","Superset":"⊃","SupersetEqual":"⊇","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","Supset":"⋑","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swarhk":"⤦","swarr":"↙","swArr":"⇙","swarrow":"↙","swnwar":"⤪","szlig":"ß","Tab":"\\t","target":"⌖","Tau":"Τ","tau":"τ","tbrk":"⎴","Tcaron":"Ť","tcaron":"ť","Tcedil":"Ţ","tcedil":"ţ","Tcy":"Т","tcy":"т","tdot":"⃛","telrec":"⌕","Tfr":"𝔗","tfr":"𝔱","there4":"∴","therefore":"∴","Therefore":"∴","Theta":"Θ","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","ThickSpace":" ","ThinSpace":" ","thinsp":" ","thkap":"≈","thksim":"∼","THORN":"Þ","thorn":"þ","tilde":"˜","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","timesbar":"⨱","timesb":"⊠","times":"×","timesd":"⨰","tint":"∭","toea":"⤨","topbot":"⌶","topcir":"⫱","top":"⊤","Topf":"𝕋","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","TRADE":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","TripleDot":"⃛","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","Tscr":"𝒯","tscr":"𝓉","TScy":"Ц","tscy":"ц","TSHcy":"Ћ","tshcy":"ћ","Tstrok":"Ŧ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","Uacute":"Ú","uacute":"ú","uarr":"↑","Uarr":"↟","uArr":"⇑","Uarrocir":"⥉","Ubrcy":"Ў","ubrcy":"ў","Ubreve":"Ŭ","ubreve":"ŭ","Ucirc":"Û","ucirc":"û","Ucy":"У","ucy":"у","udarr":"⇅","Udblac":"Ű","udblac":"ű","udhar":"⥮","ufisht":"⥾","Ufr":"𝔘","ufr":"𝔲","Ugrave":"Ù","ugrave":"ù","uHar":"⥣","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","Umacr":"Ū","umacr":"ū","uml":"¨","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","uogon":"ų","Uopf":"𝕌","uopf":"𝕦","UpArrowBar":"⤒","uparrow":"↑","UpArrow":"↑","Uparrow":"⇑","UpArrowDownArrow":"⇅","updownarrow":"↕","UpDownArrow":"↕","Updownarrow":"⇕","UpEquilibrium":"⥮","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","UpperLeftArrow":"↖","UpperRightArrow":"↗","upsi":"υ","Upsi":"ϒ","upsih":"ϒ","Upsilon":"Υ","upsilon":"υ","UpTeeArrow":"↥","UpTee":"⊥","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","Uring":"Ů","uring":"ů","urtri":"◹","Uscr":"𝒰","uscr":"𝓊","utdot":"⋰","Utilde":"Ũ","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","Uuml":"Ü","uuml":"ü","uwangle":"⦧","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","vArr":"⇕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vBar":"⫨","Vbar":"⫫","vBarv":"⫩","Vcy":"В","vcy":"в","vdash":"⊢","vDash":"⊨","Vdash":"⊩","VDash":"⊫","Vdashl":"⫦","veebar":"⊻","vee":"∨","Vee":"⋁","veeeq":"≚","vellip":"⋮","verbar":"|","Verbar":"‖","vert":"|","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","Vopf":"𝕍","vopf":"𝕧","vprop":"∝","vrtri":"⊳","Vscr":"𝒱","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","Vvdash":"⊪","vzigzag":"⦚","Wcirc":"Ŵ","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","Wedge":"⋀","wedgeq":"≙","weierp":"℘","Wfr":"𝔚","wfr":"𝔴","Wopf":"𝕎","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","Wscr":"𝒲","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","Xfr":"𝔛","xfr":"𝔵","xharr":"⟷","xhArr":"⟺","Xi":"Ξ","xi":"ξ","xlarr":"⟵","xlArr":"⟸","xmap":"⟼","xnis":"⋻","xodot":"⨀","Xopf":"𝕏","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrarr":"⟶","xrArr":"⟹","Xscr":"𝒳","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","Yacute":"Ý","yacute":"ý","YAcy":"Я","yacy":"я","Ycirc":"Ŷ","ycirc":"ŷ","Ycy":"Ы","ycy":"ы","yen":"¥","Yfr":"𝔜","yfr":"𝔶","YIcy":"Ї","yicy":"ї","Yopf":"𝕐","yopf":"𝕪","Yscr":"𝒴","yscr":"𝓎","YUcy":"Ю","yucy":"ю","yuml":"ÿ","Yuml":"Ÿ","Zacute":"Ź","zacute":"ź","Zcaron":"Ž","zcaron":"ž","Zcy":"З","zcy":"з","Zdot":"Ż","zdot":"ż","zeetrf":"ℨ","ZeroWidthSpace":"","Zeta":"Ζ","zeta":"ζ","zfr":"𝔷","Zfr":"ℨ","ZHcy":"Ж","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","Zopf":"ℤ","Zscr":"𝒵","zscr":"𝓏","zwj":"","zwnj":""}'
- );
- },
- 9591: (e) => {
- "use strict";
- e.exports = JSON.parse(
- '{"Aacute":"Á","aacute":"á","Acirc":"Â","acirc":"â","acute":"´","AElig":"Æ","aelig":"æ","Agrave":"À","agrave":"à","amp":"&","AMP":"&","Aring":"Å","aring":"å","Atilde":"Ã","atilde":"ã","Auml":"Ä","auml":"ä","brvbar":"¦","Ccedil":"Ç","ccedil":"ç","cedil":"¸","cent":"¢","copy":"©","COPY":"©","curren":"¤","deg":"°","divide":"÷","Eacute":"É","eacute":"é","Ecirc":"Ê","ecirc":"ê","Egrave":"È","egrave":"è","ETH":"Ð","eth":"ð","Euml":"Ë","euml":"ë","frac12":"½","frac14":"¼","frac34":"¾","gt":">","GT":">","Iacute":"Í","iacute":"í","Icirc":"Î","icirc":"î","iexcl":"¡","Igrave":"Ì","igrave":"ì","iquest":"¿","Iuml":"Ï","iuml":"ï","laquo":"«","lt":"<","LT":"<","macr":"¯","micro":"µ","middot":"·","nbsp":" ","not":"¬","Ntilde":"Ñ","ntilde":"ñ","Oacute":"Ó","oacute":"ó","Ocirc":"Ô","ocirc":"ô","Ograve":"Ò","ograve":"ò","ordf":"ª","ordm":"º","Oslash":"Ø","oslash":"ø","Otilde":"Õ","otilde":"õ","Ouml":"Ö","ouml":"ö","para":"¶","plusmn":"±","pound":"£","quot":"\\"","QUOT":"\\"","raquo":"»","reg":"®","REG":"®","sect":"§","shy":"","sup1":"¹","sup2":"²","sup3":"³","szlig":"ß","THORN":"Þ","thorn":"þ","times":"×","Uacute":"Ú","uacute":"ú","Ucirc":"Û","ucirc":"û","Ugrave":"Ù","ugrave":"ù","uml":"¨","Uuml":"Ü","uuml":"ü","Yacute":"Ý","yacute":"ý","yen":"¥","yuml":"ÿ"}'
- );
- },
- 2586: (e) => {
- "use strict";
- e.exports = JSON.parse(
- '{"amp":"&","apos":"\'","gt":">","lt":"<","quot":"\\""}'
- );
- },
- },
- t = {};
- function r(n) {
- var i = t[n];
- if (void 0 !== i) return i.exports;
- var o = (t[n] = { id: n, loaded: !1, exports: {} });
- return e[n].call(o.exports, o, o.exports, r), (o.loaded = !0), o.exports;
- }
- (r.n = (e) => {
- var t = e && e.__esModule ? () => e.default : () => e;
- return r.d(t, { a: t }), t;
- }),
- (r.d = (e, t) => {
- for (var n in t)
- r.o(t, n) &&
- !r.o(e, n) &&
- Object.defineProperty(e, n, { enumerable: !0, get: t[n] });
- }),
- (r.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t)),
- (r.r = (e) => {
- "undefined" != typeof Symbol &&
- Symbol.toStringTag &&
- Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }),
- Object.defineProperty(e, "__esModule", { value: !0 });
- }),
- (r.nmd = (e) => ((e.paths = []), e.children || (e.children = []), e));
- var n = {};
- (() => {
- "use strict";
- function e(e, t, r, n) {
- return new (r || (r = Promise))(function (i, o) {
- function a(e) {
- try {
- l(n.next(e));
- } catch (e) {
- o(e);
- }
- }
- function s(e) {
- try {
- l(n.throw(e));
- } catch (e) {
- o(e);
- }
- }
- function l(e) {
- var t;
- e.done
- ? i(e.value)
- : ((t = e.value),
- t instanceof r
- ? t
- : new r(function (e) {
- e(t);
- })).then(a, s);
- }
- l((n = n.apply(e, t || [])).next());
- });
- }
- r.r(n), r.d(n, { default: () => D }), Object.create, Object.create;
- const t = require("obsidian");
- var i = r(2985);
- function o() {}
- function a(e) {
- return e();
- }
- function s(e) {
- e.forEach(a);
- }
- function l(e) {
- return "function" == typeof e;
- }
- function c(e) {
- let t;
- return (
- (function (e, ...t) {
- if (null == e) return o;
- const r = e.subscribe(...t);
- return r.unsubscribe ? () => r.unsubscribe() : r;
- })(e, (e) => (t = e))(),
- t
- );
- }
- new Set(), new Map();
- let u,
- p = [];
- new Set(),
- new Set(),
- "undefined" != typeof window
- ? window
- : "undefined" != typeof globalThis
- ? globalThis
- : global,
- new Set([
- "allowfullscreen",
- "allowpaymentrequest",
- "async",
- "autofocus",
- "autoplay",
- "checked",
- "controls",
- "default",
- "defer",
- "disabled",
- "formnovalidate",
- "hidden",
- "inert",
- "ismap",
- "loop",
- "multiple",
- "muted",
- "nomodule",
- "novalidate",
- "open",
- "playsinline",
- "readonly",
- "required",
- "reversed",
- "selected",
- ]),
- "function" == typeof HTMLElement &&
- (u = class extends HTMLElement {
- constructor() {
- super(), this.attachShadow({ mode: "open" });
- }
- connectedCallback() {
- const { on_mount: e } = this.$$;
- this.$$.on_disconnect = e.map(a).filter(l);
- for (const e in this.$$.slotted)
- this.appendChild(this.$$.slotted[e]);
- }
- attributeChangedCallback(e, t, r) {
- this[e] = r;
- }
- disconnectedCallback() {
- s(this.$$.on_disconnect);
- }
- $destroy() {
- (function (e, t) {
- const r = e.$$;
- null !== r.fragment &&
- ((function (e) {
- const t = [],
- r = [];
- p.forEach((n) =>
- -1 === e.indexOf(n) ? t.push(n) : r.push(n)
- ),
- r.forEach((e) => e()),
- (p = t);
- })(r.after_update),
- s(r.on_destroy),
- r.fragment && r.fragment.d(t),
- (r.on_destroy = r.fragment = null),
- (r.ctx = []));
- })(this, 1),
- (this.$destroy = o);
- }
- $on(e, t) {
- if (!l(t)) return o;
- const r = this.$$.callbacks[e] || (this.$$.callbacks[e] = []);
- return (
- r.push(t),
- () => {
- const e = r.indexOf(t);
- -1 !== e && r.splice(e, 1);
- }
- );
- }
- $set(e) {
- var t;
- this.$$set &&
- ((t = e), 0 !== Object.keys(t).length) &&
- ((this.$$.skip_bound = !0),
- this.$$set(e),
- (this.$$.skip_bound = !1));
- }
- });
- const d = [];
- const f = {
- cookies: [],
- noteLocation: "/",
- dailyNotesLocation: "/",
- insertAfter: "\x3c!-- start of weread --\x3e",
- insertBefore: "\x3c!-- end of weread --\x3e",
- dailyNotesFormat: "YYYY-MM-DD",
- lastCookieTime: -1,
- isCookieValid: !1,
- user: "",
- userVid: "",
- template:
- "---\nisbn: {{metaData.isbn}}\ncategory: {{metaData.category}}\nlastReadDate: {{metaData.lastReadDate}}\n---\n# 元数据\n> [!abstract] {{metaData.title}}\n> - ![ {{metaData.title}}|200]({{metaData.cover}})\n> - 书名: {{metaData.title}}\n> - 作者: {{metaData.author}}\n> - 简介: {{metaData.intro}}\n> - 出版时间 {{metaData.publishTime}}\n> - ISBN: {{metaData.isbn}}\n> - 分类: {{metaData.category}}\n> - 出版社: {{metaData.publisher}}\n\n# 高亮划线\n{% for chapter in chapterHighlights %}\n## {{chapter.chapterTitle}}\n{% for highlight in chapter.highlights %}\n{% if highlight.reviewContent %}{% else %}\n- 📌 {{ highlight.markText |trim }} ^{{highlight.bookmarkId}}\n - ⏱ {{highlight.createTime}}{% endif %} {% endfor %}{% endfor %}\n# 读书笔记\n{% for chapter in bookReview.chapterReviews %}{% if chapter.reviews or chapter.chapterReview %}\n## {{chapter.chapterTitle}}\n{% if chapter.chapterReviews %}{% for chapterReview in chapter.chapterReviews %}\n### 章节评论 No.{{loop.index}}\n- {{chapterReview.content}} ^{{chapterReview.reviewId}}\n - ⏱ {{chapterReview.createTime}} {% endfor%}{%endif %}{% if chapter.reviews %}{%for review in chapter.reviews %}\n### 划线评论\n- 📌 {{review.abstract |trim }} ^{{review.reviewId}}\n - 💭 {{review.content}}\n - ⏱ {{review.createTime}}\n{% endfor %} {%endif %} {% endif %} {% endfor %}\n# 本书评论\n{% if bookReview.bookReviews %}{% for bookReview in bookReview.bookReviews %}\n## 书评 No.{{loop.index}} \n{{bookReview.mdContent}} ^{{bookReview.reviewId}}\n⏱ {{bookReview.createTime}}\n{% endfor%}{% endif %}",
- noteCountLimit: -1,
- subFolderType: "-1",
- fileNameType: "BOOK_NAME",
- dailyNotesToggle: !1,
- notesBlacklist: "",
- },
- h = (() => {
- const t = (function (e, t = o) {
- let r;
- const n = new Set();
- function i(t) {
- if (
- ((o = t),
- ((i = e) != i
- ? o == o
- : i !== o ||
- (i && "object" == typeof i) ||
- "function" == typeof i) && ((e = t), r))
- ) {
- const t = !d.length;
- for (const t of n) t[1](), d.push(t, e);
- if (t) {
- for (let e = 0; e < d.length; e += 2) d[e][0](d[e + 1]);
- d.length = 0;
- }
- }
- var i, o;
- }
- return {
- set: i,
- update: function (t) {
- i(t(e));
- },
- subscribe: function (a, s = o) {
- const l = [a, s];
- return (
- n.add(l),
- 1 === n.size && (r = t(i) || o),
- a(e),
- () => {
- n.delete(l), 0 === n.size && r && (r(), (r = null));
- }
- );
- },
- };
- })(f);
- let r;
- t.subscribe((t) =>
- e(void 0, void 0, void 0, function* () {
- if (r) {
- const e = Object.assign({}, t);
- yield r.saveData(e);
- }
- })
- );
- const n = (e) => {
- for (const r of e)
- "wr_name" == r.name &&
- "" !== r.value &&
- (console.log("[weread plugin] setting user name=>", r.value),
- t.update((e) => ((e.user = r.value), e))),
- "wr_vid" == r.name &&
- "" !== r.value &&
- (console.log("[weread plugin] setting user vid=>", r.value),
- t.update((e) => ((e.userVid = r.value), e)));
- };
- return {
- subscribe: t.subscribe,
- initialise: (i) =>
- e(void 0, void 0, void 0, function* () {
- const e = Object.assign({}, f, yield i.loadData()),
- o = Object.assign({}, e);
- console.log("--------init cookie------", o.cookies),
- o.cookies.length > 1 && n(o.cookies);
- const a = o.cookies.find((e) => "wr_vid" === e.name);
- (void 0 !== a && "" !== a.value) ||
- ((o.userVid = ""), (o.isCookieValid = !1)),
- t.set(o),
- (r = i);
- }),
- actions: {
- setNoteLocationFolder: (e) => {
- t.update((t) => ((t.noteLocation = e), t));
- },
- setCookies: (e) => {
- t.update(
- (t) => (
- (t.cookies = e),
- (t.lastCookieTime = new Date().getTime()),
- (t.isCookieValid = !0),
- n(e),
- t
- )
- );
- },
- clearCookies: () => {
- console.log("[weread plugin] cookie已失效,清理cookie..."),
- t.update(
- (e) => (
- (e.cookies = []),
- (e.lastCookieTime = new Date().getTime()),
- (e.user = ""),
- (e.userVid = ""),
- (e.isCookieValid = !1),
- e
- )
- );
- },
- setTemplate: (e) => {
- t.update((t) => ((t.template = e), t));
- },
- setNoteCountLimit: (e) => {
- t.update((t) => ((t.noteCountLimit = e), t));
- },
- setSubFolderType: (e) => {
- t.update((t) => ((t.subFolderType = e), t));
- },
- setFileNameType: (e) => {
- t.update((t) => ((t.fileNameType = e), t));
- },
- setDailyNotesToggle: (e) => {
- t.update((t) => ((t.dailyNotesToggle = e), t));
- },
- setDailyNotesFolder: (e) => {
- t.update((t) => ((t.dailyNotesLocation = e), t));
- },
- setDailyNotesFormat: (e) => {
- t.update((t) => ((t.dailyNotesFormat = e), t));
- },
- setInsertAfter: (e) => {
- t.update((t) => ((t.insertAfter = e), t));
- },
- setInsertBefore: (e) => {
- t.update((t) => ((t.insertBefore = e), t));
- },
- setNoteBlacklist: (e) => {
- t.update((t) => ((t.notesBlacklist = e), t));
- },
- },
- };
- })();
- class m {
- constructor() {
- i.configure({ autoescape: !1 });
- }
- validate(e) {
- try {
- return i.renderString(e, {}), !0;
- } catch (e) {
- return !1;
- }
- }
- render(e) {
- const { metaData: t, chapterHighlights: r, bookReview: n } = e,
- o = { metaData: t, chapterHighlights: r, bookReview: n },
- a = c(h).template;
- return i.renderString(a, o);
- }
- }
- var g = r(202),
- v = r.n(g);
- const b = "weread-highlights-reviews",
- y = (e, r, n) => {
- const date = new Date().toISOString().substring(0, 10);
- const description = r.metaData.intro.length > 128 ? r.metaData.intro.substring(0, 128) : r.metaData.intro;
- const category = r.metaData.category.split(/[-~,:;. ]/)[0];
- const i = {
- title: r.metaData.title,
- description: description,
- keywords: [r.metaData.title, category],
- tags: ['阅读'],
- author: '7Wate',
- date: date
- };
- let o = Object();
- if (n) {
- if (
- ((o = app.metadataCache.getFileCache(n).frontmatter), void 0 === o)
- )
- throw (
- (new t.Notice("weread front matter invalid"),
- Error("weread front matter invalid"))
- );
- delete o.position;
- }
- const a = e.indexOf("---");
- let s = Object();
- if (-1 !== a) {
- const r = e.indexOf("---") + 4,
- n = e.substring(r).indexOf("---") - 1,
- i = e.substring(r, r + n);
- s = (0, t.parseYaml)(i);
- }
- const l = e.substring(e.lastIndexOf("---") + 4),
- c = Object.assign(Object.assign(Object.assign({}, o), i), s);
- return "---\n" + (0, t.stringifyYaml)(c) + "---\n" + l;
- };
- class w {
- constructor(e, t) {
- (this.vault = e), (this.metadataCache = t), (this.renderer = new m());
- }
- saveDailyNotes(r, n) {
- return e(this, void 0, void 0, function* () {
- const e = yield this.fileExists(r),
- i = this.buildAppendContent(n);
- if (e) {
- const e = yield this.getFileByPath(r),
- t = yield this.vault.cachedRead(e),
- n = yield this.insertAfter(t, i);
- this.vault.modify(e, n);
- } else new t.Notice("没有找到Daily Note,请先创建" + r);
- });
- }
- buildAppendContent(e) {
- return e
- .map(
- (e) =>
- "\n### ".concat(e.metaData.title).concat("\n") +
- e.refBlocks
- .map(
- (t) => `![[${this.getFileName(e.metaData)}#^${t.refBlockId}]]`
- )
- .join("\n")
- )
- .join("\n");
- }
- getDailyNotePath(e) {
- let r;
- const n = c(h).dailyNotesFormat;
- try {
- r = e.format(n);
- } catch (e) {
- throw (new t.Notice("Daily Notes 日期格式不正确" + n), e);
- }
- return c(h).dailyNotesLocation + "/" + r + ".md";
- }
- fileExists(t) {
- return e(this, void 0, void 0, function* () {
- return yield this.vault.adapter.exists(t);
- });
- }
- getFileByPath(r) {
- return e(this, void 0, void 0, function* () {
- const e = yield this.vault.getAbstractFileByPath(r);
- return e
- ? e instanceof t.TFolder
- ? (console.error(`${r} found but it's a folder`), null)
- : e instanceof t.TFile
- ? e
- : void 0
- : (console.error(`${r} not found`), null);
- });
- }
- insertAfter(r, n) {
- return e(this, void 0, void 0, function* () {
- const e = c(h).insertAfter,
- i = new RegExp(`s*${e}s*`),
- o = ((e) => {
- const t = [];
- let r = e;
- for (; r.contains("\n"); ) {
- const e = r.indexOf("\n");
- t.push(r.slice(0, e)), (r = r.slice(e + 1));
- }
- return t.push(r), t;
- })(r).findIndex((e) => i.test(e));
- if (-1 === o)
- throw (
- (new t.Notice(
- `没有在Daily Note中找到区间开始:${e}!请检查Daily Notes设置`
- ),
- new Error("cannot find " + e))
- );
- return this.insertTextAfterPosition(n, r, o);
- });
- }
- insertTextAfterPosition(e, r, n) {
- const i = r.split("\n"),
- o = i.slice(0, n + 1).join("\n"),
- a = i.slice(n + 1),
- s = c(h).insertBefore,
- l = a.findIndex((e) => new RegExp(`s*${s}s*`).test(e));
- if (-1 === l)
- throw (
- (new t.Notice(
- `没有在Daily Note中找到区间结束:${s}!请检查Daily Notes设置`
- ),
- new Error("cannot find " + s))
- );
- return `${o}\n${e}\n${a.slice(l - 1).join("\n")}`;
- }
- saveNotebook(t) {
- return e(this, void 0, void 0, function* () {
- const e = t.metaData.file;
- if (e) {
- if (e.new) {
- const r = e.file;
- console.log(`Updating ${r.path}`);
- const n = this.renderer.render(t),
- i = y(n, t, r);
- yield this.vault.modify(r, i);
- }
- } else {
- const e = yield this.getNewNotebookFilePath(t);
- console.log(`Creating ${e}`);
- const r = this.renderer.render(t),
- n = y(r, t);
- yield this.vault.create(e, n);
- }
- });
- }
- getNotebookFiles() {
- return e(this, void 0, void 0, function* () {
- return this.vault
- .getMarkdownFiles()
- .map((e) => {
- const t = this.metadataCache.getFileCache(e);
- return {
- file: e,
- frontmatter: null == t ? void 0 : t.frontmatter,
- };
- })
- .filter(
- ({ frontmatter: e }) => (null == e ? void 0 : e.doc_type) === b
- )
- .map(({ file: e, frontmatter: t }) => ({
- file: e,
- bookId: t.bookId,
- reviewCount: t.reviewCount,
- noteCount: t.noteCount,
- new: !1,
- }));
- });
- }
- getNewNotebookFilePath(t) {
- return e(this, void 0, void 0, function* () {
- const e = `${c(h).noteLocation}/${this.getSubFolderPath(t.metaData)}`;
- return (
- (yield this.vault.adapter.exists(e)) ||
- (console.info(`Folder ${e} not found. Will be created`),
- yield this.vault.createFolder(e)),
- `${e}/${this.getFileName(t.metaData)}.md`
- );
- });
- }
- getFileName(e) {
- const t = c(h).fileNameType,
- r = ((e) => {
- const t = e.replace(/[':#|]/g, "").trim();
- return v()(t);
- })(e.title);
- return "BOOK_NAME-AUTHOR" == t
- ? e.duplicate
- ? `${r}-${e.author}-${e.bookId}`
- : `${r}-${e.author}`
- : e.duplicate || "BOOK_NAME-BOOKID" == t
- ? `${r}-${e.bookId}`
- : r;
- }
- getSubFolderPath(e) {
- const t = c(h).subFolderType;
- return "title" == t
- ? e.title
- : "category" == t
- ? e.category
- ? e.category.split("-")[0]
- : "公众号" === e.author
- ? "公众号"
- : "未分类"
- : "";
- }
- }
- var E = r(2245);
- class x {
- constructor(e, t) {
- (this.fileManager = e), (this.apiManager = t);
- }
- syncNotebooks(r = !1, n) {
- return e(this, void 0, void 0, function* () {
- const e = yield this.getALlMetadata(),
- i = yield this.filterNoteMetas(r, e),
- o = [];
- for (const e of i) {
- const t = yield this.convertToNotebook(e);
- o.push(t);
- }
- for (const e of o) yield this.syncNotebook(e);
- this.saveToJounal(n, e),
- new t.Notice(`微信读书笔记同步完成!, 本次更新 ${o.length} 本书`);
- });
- }
- syncNotesToJounal(t) {
- return e(this, void 0, void 0, function* () {
- const e = yield this.getALlMetadata();
- this.saveToJounal(t, e);
- });
- }
- convertToNotebook(t) {
- return e(this, void 0, void 0, function* () {
- const e = yield this.apiManager.getBook(t.bookId);
- e &&
- ((t.category = e.category),
- (t.publisher = e.publisher),
- (t.isbn = e.isbn),
- (t.intro = e.intro));
- const r = yield this.apiManager.getNotebookHighlights(t.bookId),
- n = yield this.apiManager.getNotebookReviews(t.bookId),
- i = ((e) => {
- const t = [];
- for (const r of e) {
- const e = r.chapterUid,
- n = r.chapterTitle,
- i = t.find((e) => e.chapterUid == r.chapterUid),
- o = r.reviewContent ? 1 : 0;
- if (null == i) {
- const i = {
- chapterUid: e,
- chapterTitle: n,
- chapterReviewCount: o,
- highlights: [r],
- };
- t.push(i);
- } else (i.chapterReviewCount += o), i.highlights.push(r);
- }
- return (
- t.forEach((e) =>
- e.highlights.sort(
- (e, t) =>
- parseInt(e.range.split("-")[0]) -
- parseInt(t.range.split("-")[0])
- )
- ),
- t.sort((e, t) => e.chapterUid - t.chapterUid)
- );
- })(
- ((e, t) => {
- const r =
- 0 === e.chapters.length ? e.refMpInfos || [] : e.chapters,
- n = new Map(
- r.map((e) => [e.chapterUid || e.reviewId, e.title])
- ),
- i = e.updated,
- o = t.reviews;
- return i.map((e) => {
- const t = e.chapterUid || e.refMpReviewId,
- r = e.createTime,
- i = window.moment(1e3 * r).format("YYYY-MM-DD HH:mm:ss"),
- a = e.range;
- let s;
- if (o) {
- const e = o
- .map((e) => e.review)
- .filter((e) => e.range === a)
- .first();
- e && (s = e.content);
- }
- let l = e.bookmarkId;
- l.startsWith("MP_WXS") && (l = e.range);
- const c = e.markText;
- return {
- bookmarkId: l.replace(/_/gi, "-"),
- created: r,
- createTime: i,
- chapterUid: t,
- range: e.range,
- style: e.style,
- chapterTitle: n.get(t),
- markText: c.replace(/\n/gi, ""),
- reviewContent: s,
- };
- });
- })(r, n)
- ),
- o = ((e) => {
- const t = e.reviews.map((e) => {
- var t, r;
- const n = e.review,
- i = n.createTime,
- o = window.moment(1e3 * i).format("YYYY-MM-DD HH:mm:ss"),
- a = n.htmlContent,
- s = a ? E.dx.translate(a) : null,
- l = n.reviewId;
- return {
- bookId: n.bookId,
- created: i,
- createTime: o,
- chapterUid:
- n.chapterUid ||
- (null === (t = n.refMpInfo) || void 0 === t
- ? void 0
- : t.reviewId),
- chapterTitle:
- n.chapterTitle ||
- (null === (r = n.refMpInfo) || void 0 === r
- ? void 0
- : r.title),
- content: n.content,
- reviewId: l.replace(/_/gi, "-"),
- mdContent: s || n.content,
- range: n.range,
- abstract: n.abstract,
- type: n.type,
- };
- }),
- r = t
- .filter((e) => 1 == e.type)
- .sort((e, t) => t.created - e.created),
- n = t.filter((e) => 4 == e.type),
- i = new Map();
- for (const e of r) {
- const t = e.chapterUid,
- r = e.chapterTitle;
- if (null == i.get(e.chapterUid)) {
- const n = {
- chapterUid: t,
- chapterTitle: r,
- reviews: [],
- chapterReviews: [],
- };
- e.range ? n.reviews.push(e) : n.chapterReviews.push(e),
- i.set(e.chapterUid, n);
- } else {
- const t = i.get(e.chapterUid);
- e.range ? t.reviews.push(e) : t.chapterReviews.push(e);
- }
- }
- return {
- bookReviews: n,
- chapterReviews: Array.from(i.values()).sort(
- (e, t) => e.chapterUid - t.chapterUid
- ),
- };
- })(n);
- return { metaData: t, bookReview: o, chapterHighlights: i };
- });
- }
- filterNoteMetas(r = !1, n) {
- return e(this, void 0, void 0, function* () {
- const e = yield this.fileManager.getNotebookFiles();
- let i = 0;
- const o = this.getDuplicateBooks(n),
- a = [];
- for (const t of n) {
- if (t.noteCount < +c(h).noteCountLimit) {
- console.debug(
- `[weread plugin] skip book ${t.title} note count: ${t.noteCount}`
- ),
- i++;
- continue;
- }
- const n = yield this.getLocalNotebookFile(t, e);
- !n || n.new || r
- ? c(h).notesBlacklist.includes(t.bookId)
- ? (console.info(
- `[weread plugin] skip book ${t.title},id:${t.bookId}for blacklist`
- ),
- i++)
- : ((t.file = n),
- o.has(t.title) && (t.duplicate = !0),
- a.push(t))
- : i++;
- }
- return new t.Notice("跳过更新" + i + "本没有更新的书"), a;
- });
- }
- getALlMetadata() {
- return e(this, void 0, void 0, function* () {
- return (yield this.apiManager.getNotebooksWithRetry()).map((e) =>
- ((e) => {
- const t = e.book,
- r = t.cover.replace("/s_", "/t7_"),
- n = window.moment(1e3 * e.sort).format("YYYY-MM-DD");
- return {
- bookId: t.bookId,
- author: t.author,
- title: t.title,
- url: t.url,
- cover: r,
- publishTime: t.publishTime,
- noteCount: e.noteCount,
- reviewCount: e.reviewCount,
- bookType: t.type,
- lastReadDate: n,
- };
- })(e)
- );
- });
- }
- saveToJounal(t, r) {
- return e(this, void 0, void 0, function* () {
- const e = yield this.getBookReadInDate(t),
- n = r.filter((t) => e.contains(t.bookId)),
- i = [];
- for (const e of n) {
- const t = yield this.convertToNotebook(e);
- i.push(t);
- }
- if (c(h).dailyNotesToggle) {
- const e = ((e) => {
- const t = window.moment().format("YYYYMMDD"),
- r = [];
- for (const n of e) {
- const e = n.chapterHighlights
- .flatMap((e) => e.highlights)
- .filter((e) => {
- const r = window
- .moment(1e3 * e.created)
- .format("YYYYMMDD");
- return t === r;
- }),
- i = [];
- if (e)
- for (const t of e)
- i.push({
- refBlockId: t.bookmarkId,
- createTime: t.created,
- });
- i.length > 0 &&
- r.push({ metaData: n.metaData, refBlocks: i });
- }
- return r;
- })(i),
- t = this.fileManager.getDailyNotePath(window.moment());
- console.log("get daily note path", t, " size:", e.length),
- this.fileManager.saveDailyNotes(t, e);
- }
- });
- }
- getBookReadInDate(t) {
- return e(this, void 0, void 0, function* () {
- return (yield this.apiManager.getRecentBooks())
- .map((e) => ({
- bookId: e.bookId,
- title: e.title,
- recentTime: e.readUpdateTime,
- }))
- .filter(
- (e) =>
- window.moment(1e3 * e.recentTime).format("YYYY-MM-DD") === t
- )
- .map((e) => e.bookId);
- });
- }
- getDuplicateBooks(e) {
- const t = e.map((e) => e.title),
- r = new Set(t),
- n = t.filter((e) => {
- if (!r.has(e)) return e;
- r.delete(e);
- });
- return new Set(n);
- }
- getLocalNotebookFile(t, r) {
- return e(this, void 0, void 0, function* () {
- const e = r.find((e) => e.bookId === t.bookId) || null;
- return e
- ? (e.noteCount == t.noteCount && e.reviewCount == t.reviewCount
- ? (e.new = !1)
- : (e.new = !0),
- e)
- : null;
- });
- }
- syncNotebook(t) {
- return e(this, void 0, void 0, function* () {
- try {
- yield this.fileManager.saveNotebook(t);
- } catch (e) {
- console.log(
- "[weread plugin] sync note book error",
- t.metaData.title,
- e
- );
- }
- });
- }
- }
- const T = (e) =>
- e
- .map((e) => {
- const t = e.name,
- r = e.value;
- return t + "=" + (-1 !== r.indexOf("%") ? decodeURIComponent(r) : r);
- })
- .join(";");
- var k = r(9328);
- class _ {
- constructor() {
- this.baseUrl = "https://i.weread.qq.com";
- }
- getHeaders() {
- return {
- "User-Agent":
- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",
- "Accept-Encoding": "gzip, deflate, br",
- "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
- Cookie: T(c(h).cookies),
- };
- }
- refreshCookie() {
- return e(this, void 0, void 0, function* () {
- const e = {
- url: "https://weread.qq.com",
- method: "HEAD",
- headers: this.getHeaders(),
- },
- r = yield (0, t.requestUrl)(e),
- n = r.headers["set-cookie"] || r.headers["Set-Cookie"];
- void 0 === n
- ? new t.Notice("尝试刷新Cookie失败")
- : (new t.Notice("cookie已过期,尝试刷新Cookie成功"),
- this.updateCookies(n));
- });
- }
- getNotebooksWithRetry() {
- return e(this, void 0, void 0, function* () {
- let e = yield this.getNotebooks();
- if (
- ((void 0 !== e && 0 !== e.length) ||
- (e = yield this.getNotebooks()),
- void 0 === e || 0 === e.length)
- )
- throw (
- (new t.Notice("长时间未登录,Cookie已失效,请重新扫码登录!"),
- h.actions.clearCookies(),
- Error("get weread note book error after retry"))
- );
- return e;
- });
- }
- getRecentBooks() {
- return e(this, void 0, void 0, function* () {
- const e = c(h).userVid;
- console.debug("get userVid settings", e);
- const r = {
- url: this.baseUrl + "/shelf/friendCommon?userVid=" + e,
- method: "GET",
- headers: this.getHeaders(),
- };
- try {
- return (yield (0, t.requestUrl)(r)).json.recentBooks;
- } catch (t) {
- console.error("get recent books error: vid" + e, t);
- }
- });
- }
- getNotebooks() {
- return e(this, void 0, void 0, function* () {
- let e = [];
- const r = {
- url: this.baseUrl + "/user/notebooks",
- method: "GET",
- headers: this.getHeaders(),
- };
- try {
- const n = yield (0, t.requestUrl)(r);
- 401 === n.status &&
- (-2012 == n.json.errcode
- ? (console.log("weread cookie expire retry refresh cookie... "),
- yield this.refreshCookie())
- : (t.Platform.isDesktopApp
- ? new t.Notice(
- "微信读书未登录或者用户异常,请在设置中重新登录!"
- )
- : new t.Notice(
- "微信读书未登录或者用户异常,请在电脑端重新登录!"
- ),
- console.log(
- "微信读书未登录或者用户异常,请重新登录, http status code:",
- n.json.errcode
- ),
- h.actions.clearCookies())),
- (e = n.json.books);
- } catch (e) {
- 401 == e.status &&
- (console.log(
- `parse request to cURL for debug: ${this.parseToCurl(r)}`
- ),
- yield this.refreshCookie());
- }
- return e;
- });
- }
- parseToCurl(e) {
- const t = ["curl"];
- t.push(e.url);
- const r = e.headers;
- return (
- Object.keys(r).forEach((e) => {
- t.push("-H"),
- t.push(this.escapeStringPosix(e.replace(/^:/, "") + ": " + r[e]));
- }),
- t.push(" --compressed"),
- t.join(" ")
- );
- }
- escapeStringPosix(e) {
- return /[^\x20-\x7E]|'/.test(e)
- ? "$'" +
- e
- .replace(/\\/g, "\\\\")
- .replace(/'/g, "\\'")
- .replace(/\n/g, "\\n")
- .replace(/\r/g, "\\r")
- .replace(/[^\x20-\x7E]/g, function (e) {
- let t = e.charCodeAt(0);
- return t < 256
- ? t < 16
- ? "\\x0" + t.toString(16)
- : "\\x" + t.toString(16)
- : ((t = t.toString(16)),
- "\\u" + ("0000" + t).substr(t.length, 4));
- }) +
- "'"
- : "'" + e + "'";
- }
- getBook(r) {
- return e(this, void 0, void 0, function* () {
- try {
- const e = {
- url: `${this.baseUrl}/book/info?bookId=${r}`,
- method: "GET",
- headers: this.getHeaders(),
- };
- return (yield (0, t.requestUrl)(e)).json;
- } catch (e) {
- console.error("get book detail error", e);
- }
- });
- }
- getNotebookHighlights(r) {
- return e(this, void 0, void 0, function* () {
- try {
- const e = {
- url: `${this.baseUrl}/book/bookmarklist?bookId=${r}`,
- method: "GET",
- headers: this.getHeaders(),
- };
- return (yield (0, t.requestUrl)(e)).json;
- } catch (e) {
- console.error("get book highlight error" + r, e);
- }
- });
- }
- getNotebookReviews(r) {
- return e(this, void 0, void 0, function* () {
- try {
- const e = {
- url: `${this.baseUrl}/review/list?bookId=${r}&listType=11&mine=1&synckey=0`,
- method: "GET",
- headers: this.getHeaders(),
- };
- return (yield (0, t.requestUrl)(e)).json;
- } catch (e) {
- new t.Notice(
- "Failed to fetch weread notebook reviews . Please check your Cookies and try again."
- ),
- console.error("get book review error" + r, e);
- }
- });
- }
- updateCookies(e) {
- let t;
- if (Array.isArray(e)) t = (0, k.parse)(e);
- else {
- const r = (0, k.splitCookiesString)(e);
- t = (0, k.parse)(r);
- }
- const r = c(h).cookies;
- r.forEach((e) => {
- const r = t.find((t) => t.name == e.name);
- r && (e.value = r.value);
- }),
- h.actions.setCookies(r);
- }
- }
- class A {
- constructor(e) {
- this.settingTab = e;
- const { remote: t } = r(5840),
- { BrowserWindow: n } = t;
- (this.modal = new n({
- parent: t.getCurrentWindow(),
- width: 960,
- height: 540,
- show: !1,
- })),
- this.modal.once("ready-to-show", () => {
- this.modal.setTitle("登录微信读书~"), this.modal.show();
- }),
- this.modal.webContents.session.webRequest.onSendHeaders(
- { urls: ["https://weread.qq.com/web/user?userVid=*"] },
- (t) => {
- const r =
- "" === (n = t.requestHeaders.Cookie)
- ? []
- : n
- .split(";")
- .map((e) => e.split("="))
- .map((e) => ({
- name: decodeURIComponent(e[0].trim()),
- value: decodeURIComponent(e[1].trim()),
- }));
- var n;
- "" !== r.find((e) => "wr_name" == e.name).value
- ? (h.actions.setCookies(r), e.display(), this.modal.close())
- : this.modal.reload();
- }
- );
- }
- doLogin() {
- return e(this, void 0, void 0, function* () {
- try {
- yield this.modal.loadURL("https://weread.qq.com/#login");
- } catch (e) {
- console.log(e), new t.Notice("加载微信读书登录页面失败");
- }
- });
- }
- onClose() {
- this.modal.close();
- }
- }
- class N {
- constructor(e) {
- this.settingTab = e;
- const { remote: t } = r(5840),
- { BrowserWindow: n } = t;
- (this.modal = new n({
- parent: t.getCurrentWindow(),
- width: 960,
- height: 540,
- show: !1,
- })),
- this.modal.once("ready-to-show", () => {
- this.modal.setTitle("注销微信读书,右上角头像点击退出登录~"),
- this.modal.show();
- }),
- this.modal.webContents.session.webRequest.onCompleted(
- { urls: ["https://weread.qq.com/web/logout"] },
- (e) => {
- 200 == e.statusCode &&
- (console.log("weread logout success, clear cookies..."),
- h.actions.clearCookies(),
- this.settingTab.display(),
- this.modal.close());
- }
- );
- }
- doLogout() {
- return e(this, void 0, void 0, function* () {
- yield this.modal.loadURL("https://weread.qq.com/web/shelf/#logout");
- });
- }
- onClose() {
- this.modal.close();
- }
- }
- var L = r(6040),
- O = r.n(L);
- class S extends t.Modal {
- constructor(e) {
- super(e);
- }
- onOpen() {
- const { contentEl: e } = this,
- t = c(h).cookies,
- r = T(t);
- e
- .createDiv()
- .createEl("h1", {
- text: "🚨Cookie 是敏感信息,仅用于Debug,请不要泄露",
- }),
- e.createDiv().createEl("kbd", { text: r });
- }
- onClose() {
- const { contentEl: e } = this;
- e.empty();
- }
- }
- class C extends t.PluginSettingTab {
- constructor(e, t) {
- super(e, t), (this.plugin = t), (this.renderer = new m());
- }
- display() {
- const { containerEl: e } = this;
- e.empty(), e.createEl("h2", { text: "设置微信读书插件" });
- const r = c(h).isCookieValid;
- t.Platform.isDesktopApp
- ? r
- ? this.showLogout()
- : this.showLogin()
- : r
- ? this.showMobileLogout()
- : this.showMobileLogin(),
- this.notebookFolder(),
- this.notebookBlacklist(),
- this.noteCountLimit(),
- this.fileNameType(),
- this.subFolderType(),
- this.dailyNotes(),
- c(h).dailyNotesToggle &&
- (this.dailyNotesFolder(),
- this.dailyNoteFormat(),
- this.insertAfter()),
- this.template(),
- t.Platform.isDesktopApp && this.showDebugHelp();
- }
- showMobileLogin() {
- this.containerEl
- .createDiv()
- .setText("微信读书未登录,请先在电脑端登录!");
- }
- showMobileLogout() {
- this.containerEl
- .createDiv()
- .setText(`微信读书已登录,用户名:${c(h).user}`);
- }
- notebookFolder() {
- new t.Setting(this.containerEl)
- .setName("笔记保存位置")
- .setDesc("请选择Obsidian Vault中微信读书笔记存放的位置")
- .addDropdown((t) => {
- const r = this.app.vault.adapter.files,
- n = O()(r, (e) => "folder" === e.type);
- return (
- Object.keys(n).forEach((e) => {
- t.addOption(e, e);
- }),
- t.setValue(c(h).noteLocation).onChange((t) =>
- e(this, void 0, void 0, function* () {
- h.actions.setNoteLocationFolder(t);
- })
- )
- );
- });
- }
- notebookBlacklist() {
- new t.Setting(this.containerEl)
- .setName("书籍黑名单")
- .setDesc(
- "请填写不同步的bookId,bookId可在meta信息中找到,多本书使用逗号「,」隔开"
- )
- .addText((e) => {
- e.setValue(c(h).notesBlacklist).onChange((e) => {
- h.actions.setNoteBlacklist(e);
- });
- });
- }
- showLogin() {
- new t.Setting(this.containerEl).setName("登录微信读书").addButton((t) =>
- t
- .setButtonText("登录")
- .setCta()
- .onClick(() =>
- e(this, void 0, void 0, function* () {
- t.setDisabled(!0);
- const e = new A(this);
- yield e.doLogin(), this.display();
- })
- )
- );
- }
- dailyNotes() {
- new t.Setting(this.containerEl)
- .setName("是否保存笔记到 DailyNotes?")
- .setHeading()
- .addToggle((e) =>
- e.setValue(c(h).dailyNotesToggle).onChange((e) => {
- console.debug("set daily notes toggle to", e),
- h.actions.setDailyNotesToggle(e),
- this.display();
- })
- );
- }
- dailyNotesFolder() {
- new t.Setting(this.containerEl)
- .setName("Daily Notes文件夹")
- .setDesc("请选择Daily Notes文件夹")
- .addDropdown((t) => {
- const r = this.app.vault.adapter.files,
- n = O()(r, (e) => "folder" === e.type);
- return (
- Object.keys(n).forEach((e) => {
- t.addOption(e, e);
- }),
- t.setValue(c(h).dailyNotesLocation).onChange((t) =>
- e(this, void 0, void 0, function* () {
- h.actions.setDailyNotesFolder(t);
- })
- )
- );
- });
- }
- dailyNoteFormat() {
- new t.Setting(this.containerEl)
- .setName("Daily Notes Format")
- .setDesc(
- "请填写Daily Notes文件名格式,支持官方Daily Notes插件的格式,比如:YYYY-MM-DD \t\t\t\t 和 Periodic Notes的嵌套格式,比如 YYYY/[W]ww/YYYY-MM-DD"
- )
- .addText((e) => {
- e.setValue(c(h).dailyNotesFormat).onChange((e) => {
- h.actions.setDailyNotesFormat(e);
- });
- });
- }
- insertAfter() {
- new t.Setting(this.containerEl)
- .setName("在特定区间之内插入")
- .setDesc(
- "请填写Daily Notes中希望读书笔记插入的区间,使用前记得修改Daily Notes模板🫡, 💥注意: 区间之内的内容会被覆盖,请不要在区间内修改内容,"
- )
- .addText((e) => {
- e.setValue(c(h).insertAfter).onChange((e) => {
- h.actions.setInsertAfter(e);
- });
- })
- .addButton(
- (e) => (e.setButtonText("至").buttonEl.style.borderStyle = "none")
- )
- .addText((e) => {
- e.setValue(c(h).insertBefore).onChange((e) => {
- h.actions.setInsertBefore(e);
- });
- });
- }
- subFolderType() {
- new t.Setting(this.containerEl)
- .setName("文件夹分类")
- .setDesc("请选择按照哪个维度对笔记文件进行分类")
- .addDropdown(
- (t) => (
- t.addOptions({
- "-1": "无分类",
- title: "书名",
- category: "图书分类",
- }),
- t.setValue(c(h).subFolderType).onChange((t) =>
- e(this, void 0, void 0, function* () {
- h.actions.setSubFolderType(t);
- })
- )
- )
- );
- }
- fileNameType() {
- new t.Setting(this.containerEl)
- .setName("文件名模板")
- .setDesc("你选择你喜欢的文件名模板,重复的书会在文件名后加上ID")
- .addDropdown(
- (t) => (
- t.addOptions({
- BOOK_NAME: "书名",
- "BOOK_NAME-AUTHOR": "书名-作者名",
- "BOOK_NAME-ID": "书名-bookId",
- }),
- t.setValue(c(h).fileNameType).onChange((t) =>
- e(this, void 0, void 0, function* () {
- h.actions.setFileNameType(t);
- })
- )
- )
- );
- }
- showLogout() {
- document.createRange().createContextualFragment;
- const r = document
- .createRange()
- .createContextualFragment(
- "1. 登录:点击登录按钮,在弹出页面【扫码登录】。\n 2. 注销:点击注销,在弹出书架页面右上角点击头像,下拉菜单选择【退出登录】"
- );
- new t.Setting(this.containerEl)
- .setName(`微信读书已登录,用户名: ${c(h).user}`)
- .setDesc(r)
- .addButton((t) =>
- t
- .setButtonText("注销")
- .setCta()
- .onClick(() =>
- e(this, void 0, void 0, function* () {
- t.setDisabled(!0);
- const e = new N(this);
- yield e.doLogout(), this.display();
- })
- )
- )
- .addButton((t) =>
- t
- .setButtonText("Show Cookie")
- .setCta()
- .onClick(() =>
- e(this, void 0, void 0, function* () {
- new S(this.app).open();
- })
- )
- );
- }
- template() {
- const r = document
- .createRange()
- .createContextualFragment(
- '模板使用说明\n可用变量
\n
\n