|
|
/*! |
|
|
* Valine v1.3.10 |
|
|
* (c) 2017-2019 xCss |
|
|
* Released under the GPL-2.0 License. |
|
|
* Last Update: 2019-6-26 21:52:17 |
|
|
*/ |
|
|
!function(e, t) { |
|
|
"object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.Valine = t() : e.Valine = t() |
|
|
}(this, function() { |
|
|
return function(e) { |
|
|
function t(r) { |
|
|
if (n[r]) |
|
|
return n[r].exports; |
|
|
var i = n[r] = { |
|
|
i: r, |
|
|
l: !1, |
|
|
exports: {} |
|
|
}; |
|
|
return e[r].call(i.exports, i, i.exports, t), |
|
|
i.l = !0, |
|
|
i.exports |
|
|
} |
|
|
var n = {}; |
|
|
return t.m = e, |
|
|
t.c = n, |
|
|
t.i = function(e) { |
|
|
return e |
|
|
} |
|
|
, |
|
|
t.d = function(e, n, r) { |
|
|
t.o(e, n) || Object.defineProperty(e, n, { |
|
|
configurable: !1, |
|
|
enumerable: !0, |
|
|
get: r |
|
|
}) |
|
|
} |
|
|
, |
|
|
t.n = function(e) { |
|
|
var n = e && e.__esModule ? function() { |
|
|
return e.default |
|
|
} |
|
|
: function() { |
|
|
return e |
|
|
} |
|
|
; |
|
|
return t.d(n, "a", n), |
|
|
n |
|
|
} |
|
|
, |
|
|
t.o = function(e, t) { |
|
|
return Object.prototype.hasOwnProperty.call(e, t) |
|
|
} |
|
|
, |
|
|
t.p = "", |
|
|
t(t.s = 17) |
|
|
}([function(e, t, n) { |
|
|
var r, i, o; |
|
|
i = [e, t], |
|
|
r = function(e, t) { |
|
|
"use strict"; |
|
|
function n(e) { |
|
|
function t(t) { |
|
|
var n = e.style.width; |
|
|
e.style.width = "0px", |
|
|
e.offsetWidth, |
|
|
e.style.width = n, |
|
|
e.style.overflowY = t |
|
|
} |
|
|
function n() { |
|
|
if (0 !== e.scrollHeight) { |
|
|
var t = function(e) { |
|
|
for (var t = []; e && e.parentNode && e.parentNode instanceof Element; ) |
|
|
e.parentNode.scrollTop && t.push({ |
|
|
node: e.parentNode, |
|
|
scrollTop: e.parentNode.scrollTop |
|
|
}), |
|
|
e = e.parentNode; |
|
|
return t |
|
|
}(e) |
|
|
, n = document.documentElement && document.documentElement.scrollTop; |
|
|
e.style.height = "", |
|
|
e.style.height = e.scrollHeight + i + "px", |
|
|
s = e.clientWidth, |
|
|
t.forEach(function(e) { |
|
|
e.node.scrollTop = e.scrollTop |
|
|
}), |
|
|
n && (document.documentElement.scrollTop = n) |
|
|
} |
|
|
} |
|
|
function r() { |
|
|
n(); |
|
|
var r = Math.round(parseFloat(e.style.height)) |
|
|
, i = window.getComputedStyle(e, null) |
|
|
, o = "content-box" === i.boxSizing ? Math.round(parseFloat(i.height)) : e.offsetHeight; |
|
|
if (o < r ? "hidden" === i.overflowY && (t("scroll"), |
|
|
n(), |
|
|
o = "content-box" === i.boxSizing ? Math.round(parseFloat(window.getComputedStyle(e, null).height)) : e.offsetHeight) : "hidden" !== i.overflowY && (t("hidden"), |
|
|
n(), |
|
|
o = "content-box" === i.boxSizing ? Math.round(parseFloat(window.getComputedStyle(e, null).height)) : e.offsetHeight), |
|
|
l !== o) { |
|
|
l = o; |
|
|
var s = a("autosize:resized"); |
|
|
try { |
|
|
e.dispatchEvent(s) |
|
|
} catch (e) {} |
|
|
} |
|
|
} |
|
|
if (e && e.nodeName && "TEXTAREA" === e.nodeName && !o.has(e)) { |
|
|
var i = null |
|
|
, s = null |
|
|
, l = null |
|
|
, c = function() { |
|
|
e.clientWidth !== s && r() |
|
|
} |
|
|
, d = function(t) { |
|
|
window.removeEventListener("resize", c, !1), |
|
|
e.removeEventListener("input", r, !1), |
|
|
e.removeEventListener("keyup", r, !1), |
|
|
e.removeEventListener("autosize:destroy", d, !1), |
|
|
e.removeEventListener("autosize:update", r, !1), |
|
|
Object.keys(t).forEach(function(n) { |
|
|
e.style[n] = t[n] |
|
|
}), |
|
|
o.delete(e) |
|
|
} |
|
|
.bind(e, { |
|
|
height: e.style.height, |
|
|
resize: e.style.resize, |
|
|
overflowY: e.style.overflowY, |
|
|
overflowX: e.style.overflowX, |
|
|
wordWrap: e.style.wordWrap |
|
|
}); |
|
|
e.addEventListener("autosize:destroy", d, !1), |
|
|
"onpropertychange"in e && "oninput"in e && e.addEventListener("keyup", r, !1), |
|
|
window.addEventListener("resize", c, !1), |
|
|
e.addEventListener("input", r, !1), |
|
|
e.addEventListener("autosize:update", r, !1), |
|
|
e.style.overflowX = "hidden", |
|
|
e.style.wordWrap = "break-word", |
|
|
o.set(e, { |
|
|
destroy: d, |
|
|
update: r |
|
|
}), |
|
|
function() { |
|
|
var t = window.getComputedStyle(e, null); |
|
|
"vertical" === t.resize ? e.style.resize = "none" : "both" === t.resize && (e.style.resize = "horizontal"), |
|
|
i = "content-box" === t.boxSizing ? -(parseFloat(t.paddingTop) + parseFloat(t.paddingBottom)) : parseFloat(t.borderTopWidth) + parseFloat(t.borderBottomWidth), |
|
|
isNaN(i) && (i = 0), |
|
|
r() |
|
|
}() |
|
|
} |
|
|
} |
|
|
function r(e) { |
|
|
var t = o.get(e); |
|
|
t && t.destroy() |
|
|
} |
|
|
function i(e) { |
|
|
var t = o.get(e); |
|
|
t && t.update() |
|
|
} |
|
|
var o = "function" == typeof Map ? new Map : function() { |
|
|
var e = [] |
|
|
, t = []; |
|
|
return { |
|
|
has: function(t) { |
|
|
return e.indexOf(t) > -1 |
|
|
}, |
|
|
get: function(n) { |
|
|
return t[e.indexOf(n)] |
|
|
}, |
|
|
set: function(n, r) { |
|
|
-1 === e.indexOf(n) && (e.push(n), |
|
|
t.push(r)) |
|
|
}, |
|
|
delete: function(n) { |
|
|
var r = e.indexOf(n); |
|
|
r > -1 && (e.splice(r, 1), |
|
|
t.splice(r, 1)) |
|
|
} |
|
|
} |
|
|
}() |
|
|
, a = function(e) { |
|
|
return new Event(e,{ |
|
|
bubbles: !0 |
|
|
}) |
|
|
}; |
|
|
try { |
|
|
new Event("test") |
|
|
} catch (e) { |
|
|
a = function(e) { |
|
|
var t = document.createEvent("Event"); |
|
|
return t.initEvent(e, !0, !1), |
|
|
t |
|
|
} |
|
|
} |
|
|
var s = null; |
|
|
"undefined" == typeof window || "function" != typeof window.getComputedStyle ? ((s = function(e) { |
|
|
return e |
|
|
} |
|
|
).destroy = function(e) { |
|
|
return e |
|
|
} |
|
|
, |
|
|
s.update = function(e) { |
|
|
return e |
|
|
} |
|
|
) : ((s = function(e, t) { |
|
|
return e && Array.prototype.forEach.call(e.length ? e : [e], function(e) { |
|
|
return n(e) |
|
|
}), |
|
|
e |
|
|
} |
|
|
).destroy = function(e) { |
|
|
return e && Array.prototype.forEach.call(e.length ? e : [e], r), |
|
|
e |
|
|
} |
|
|
, |
|
|
s.update = function(e) { |
|
|
return e && Array.prototype.forEach.call(e.length ? e : [e], i), |
|
|
e |
|
|
} |
|
|
), |
|
|
t.default = s, |
|
|
e.exports = t.default |
|
|
} |
|
|
, |
|
|
void 0 !== (o = "function" == typeof r ? r.apply(t, i) : r) && (e.exports = o) |
|
|
} |
|
|
, function(e, t, n) { |
|
|
"use strict"; |
|
|
function r(e) { |
|
|
return this.init(e), |
|
|
this |
|
|
} |
|
|
function i(e) { |
|
|
return new r(e) |
|
|
} |
|
|
var o = n(9).version |
|
|
, a = n(6) |
|
|
, s = n(8) |
|
|
, l = n(0) |
|
|
, c = n(5) |
|
|
, d = n(3) |
|
|
, u = n(4) |
|
|
, p = n(2) |
|
|
, f = n(7) |
|
|
, h = /^https?\:\/\// |
|
|
, v = { |
|
|
comment: "", |
|
|
nick: "Anonymous", |
|
|
mail: "", |
|
|
link: "", |
|
|
ua: navigator.userAgent, |
|
|
url: "" |
|
|
} |
|
|
, g = { |
|
|
"zh-cn": { |
|
|
head: { |
|
|
nick: "昵称(必填)", |
|
|
mail: "邮箱(必填)", |
|
|
link: "链接" |
|
|
}, |
|
|
tips: { |
|
|
comments: "评论", |
|
|
sofa: "快来做第一个评论的人吧~", |
|
|
busy: "还在提交中,请稍候...", |
|
|
again: "这么简单也能错,也是没谁了." |
|
|
}, |
|
|
ctrl: { |
|
|
reply: "回复", |
|
|
ok: "好的", |
|
|
sure: "确认", |
|
|
cancel: "取消", |
|
|
confirm: "确认", |
|
|
continue: "继续", |
|
|
more: "查看更多...", |
|
|
try: "再试试?", |
|
|
preview: "预览", |
|
|
emoji: "表情" |
|
|
}, |
|
|
error: { |
|
|
99: "初始化失败,请检查init中的`el`元素.", |
|
|
100: "初始化失败,请检查你的AppId和AppKey.", |
|
|
401: "未经授权的操作,请检查你的AppId和AppKey.", |
|
|
403: "访问被api域名白名单拒绝,请检查你的安全域名设置." |
|
|
}, |
|
|
timeago: { |
|
|
seconds: "秒前", |
|
|
minutes: "分钟前", |
|
|
hours: "小时前", |
|
|
days: "天前", |
|
|
now: "刚刚" |
|
|
} |
|
|
}, |
|
|
en: { |
|
|
head: { |
|
|
nick: "NickName", |
|
|
mail: "E-Mail", |
|
|
link: "Website(http://)" |
|
|
}, |
|
|
tips: { |
|
|
comments: "Comments", |
|
|
sofa: "No comments yet.", |
|
|
busy: "Submit is busy, please wait...", |
|
|
again: "Sorry, this is a wrong calculation." |
|
|
}, |
|
|
ctrl: { |
|
|
reply: "Reply", |
|
|
ok: "Ok", |
|
|
sure: "Sure", |
|
|
cancel: "Cancel", |
|
|
confirm: "Confirm", |
|
|
continue: "Continue", |
|
|
more: "Load More...", |
|
|
try: "Once More?", |
|
|
preview: "Preview", |
|
|
emoji: "Emoji" |
|
|
}, |
|
|
error: { |
|
|
99: "Initialization failed, Please check the `el` element in the init method.", |
|
|
100: "Initialization failed, Please check your appId and appKey.", |
|
|
401: "Unauthorized operation, Please check your appId and appKey.", |
|
|
403: "Access denied by api domain white list, Please check your security domain." |
|
|
}, |
|
|
timeago: { |
|
|
seconds: "seconds ago", |
|
|
minutes: "minutes ago", |
|
|
hours: "hours ago", |
|
|
days: "days ago", |
|
|
now: "just now" |
|
|
} |
|
|
} |
|
|
} |
|
|
, m = { |
|
|
cdn: "https://gravatar.loli.net/avatar/", |
|
|
ds: ["mp", "identicon", "monsterid", "wavatar", "robohash", "retro", ""], |
|
|
params: "", |
|
|
hide: !1 |
|
|
} |
|
|
, b = ["nick", "mail", "link"] |
|
|
, x = Storage && localStorage && localStorage instanceof Storage && localStorage |
|
|
, y = location.pathname.replace(/index\.html?$/, ""); |
|
|
r.prototype.init = function(e) { |
|
|
var t = this; |
|
|
if (t.config = e, |
|
|
"undefined" != typeof document) |
|
|
return "undefined" == typeof AV ? u.dynamicLoadSource("script", { |
|
|
src: "//cdn.jsdelivr.net/npm/leancloud-storage/dist/av-min.js" |
|
|
}, function() { |
|
|
"undefined" != typeof AV ? e && t._init() : setTimeout(function() { |
|
|
t.init(e) |
|
|
}, 300) |
|
|
}) : e && t._init(), |
|
|
u.dynamicLoadSource("script", { |
|
|
src: "//js.fundebug.cn/fundebug.1.9.0.min.js", |
|
|
apikey: "2c7e5b30c7cf402cb7fb35d14b62e7f778babbb70d054160af750065a180fdcd", |
|
|
async: !0 |
|
|
}), |
|
|
t; |
|
|
console |
|
|
} |
|
|
, |
|
|
r.prototype._init = function() { |
|
|
var e = this; |
|
|
try { |
|
|
var t = e.config |
|
|
, n = t.lang |
|
|
, r = t.langMode |
|
|
, i = t.avatar |
|
|
, a = t.avatarForce |
|
|
, l = t.avatar_cdn |
|
|
, c = t.notify |
|
|
, d = t.verify |
|
|
, p = t.visitor |
|
|
, x = t.pageSize |
|
|
, w = t.recordIP |
|
|
, _ = t.clazzName |
|
|
, A = void 0 === _ ? "Comment" : _; |
|
|
e.config.clazzName = A; |
|
|
var O = m.ds |
|
|
, S = a ? "&q=" + Math.random().toString(32).substring(2) : ""; |
|
|
n && r && e.installLocale(n, r), |
|
|
e.locale = e.locale || g[n || "zh-cn"], |
|
|
e.notify = c || !1, |
|
|
e.verify = d || !1, |
|
|
m.params = "?d=" + (O.indexOf(i) > -1 ? i : "mp") + "&v=" + o + S, |
|
|
m.hide = "hide" === i, |
|
|
m.cdn = h.test(l) ? l : m.cdn, |
|
|
y = e.config.path || y; |
|
|
var $ = Number(x || 10); |
|
|
if (e.config.pageSize = isNaN($) ? 10 : $ < 1 ? 10 : $, |
|
|
s.setOptions({ |
|
|
renderer: new s.Renderer, |
|
|
highlight: !1 === e.config.highlight ? null : f, |
|
|
gfm: !0, |
|
|
tables: !0, |
|
|
breaks: !0, |
|
|
pedantic: !1, |
|
|
sanitize: !1, |
|
|
smartLists: !0, |
|
|
smartypants: !0 |
|
|
}), |
|
|
w) { |
|
|
var E = u.create("script", "src", "//api.ip.sb/jsonip?callback=getIP") |
|
|
, L = document.getElementsByTagName("script")[0]; |
|
|
L.parentNode.insertBefore(E, L), |
|
|
window.getIP = function(e) { |
|
|
v.ip = e.ip |
|
|
} |
|
|
} |
|
|
var M = e.config.app_id || e.config.appId |
|
|
, C = e.config.app_key || e.config.appKey; |
|
|
if (!M || !C) |
|
|
throw 99; |
|
|
var z, T = "https://"; |
|
|
if (!e.config.serverURLs) |
|
|
switch (M.slice(-9)) { |
|
|
case "-9Nh9j0Va": |
|
|
T += "tab."; |
|
|
break; |
|
|
case "-MdYXbMMI": |
|
|
T += "us." |
|
|
} |
|
|
z = e.config.serverURLs || T + "avoscloud.com", |
|
|
M !== AV._config.applicationId && C !== AV._config.applicationKey && AV.init({ |
|
|
appId: M, |
|
|
appKey: C, |
|
|
serverURLs: z |
|
|
}); |
|
|
var R = u.findAll(document, ".valine-comment-count"); |
|
|
u.each(R, function(t, n) { |
|
|
if (n) { |
|
|
var r = u.attr(n, "data-xid"); |
|
|
r && e.Q(r).count().then(function(e) { |
|
|
n.innerText = e |
|
|
}).catch(function(e) { |
|
|
n.innerText = 0 |
|
|
}) |
|
|
} |
|
|
}), |
|
|
p && k.add(AV.Object.extend("Counter")); |
|
|
var j = e.config.el || null |
|
|
, B = u.findAll(document, j); |
|
|
if (!(j = j instanceof HTMLElement ? j : B[B.length - 1] || null)) |
|
|
return; |
|
|
e.el = j, |
|
|
e.el.classList.add("v"), |
|
|
m.hide && e.el.classList.add("hide-avatar"), |
|
|
e.config.meta = (e.config.guest_info || e.config.meta || b).filter(function(e) { |
|
|
return b.indexOf(e) > -1 |
|
|
}); |
|
|
var P = (0 == e.config.meta.length ? b : e.config.meta).map(function(t) { |
|
|
var n = "mail" == t ? "email" : "text"; |
|
|
return b.indexOf(t) > -1 ? '<input name="' + t + '" placeholder="' + e.locale.head[t] + '" class="v' + t + ' vinput" type="' + n + '">' : "" |
|
|
}); |
|
|
e.placeholder = e.config.placeholder || "Just Go Go", |
|
|
e.el.innerHTML = '<div class="vwrap"><div class="vheader item' + P.length + '">' + P.join("") + '</div><div class="vedit"><textarea id="veditor" class="veditor vinput" placeholder="' + e.placeholder + '"></textarea><div class="vctrl"><span class="vemoji-btn">' + e.locale.ctrl.emoji + '</span> | <span class="vpreview-btn">' + e.locale.ctrl.preview + '</span></div><div class="vemojis" style="display:none;"></div><div class="vinput vpreview" style="display:none;"></div></div><div class="vcontrol"><div class="col col-20" title="Markdown is supported"><a href="https://segmentfault.com/markdown" target="_blank"><svg class="markdown" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M14.85 3H1.15C.52 3 0 3.52 0 4.15v7.69C0 12.48.52 13 1.15 13h13.69c.64 0 1.15-.52 1.15-1.15v-7.7C16 3.52 15.48 3 14.85 3zM9 11H7V8L5.5 9.92 4 8v3H2V5h2l1.5 2L7 5h2v6zm2.99.5L9.5 8H11V5h2v3h1.5l-2.51 3.5z"></path></svg></a></div><div class="col col-80 text-right"><button type="button" title="Cmd|Ctrl+Enter" class="vsubmit vbtn">' + e.locale.ctrl.reply + '</button></div></div><div style="display:none;" class="vmark"></div></div><div class="vinfo" style="display:none;"><div class="vcount col"></div></div><div class="vlist"></div><div class="vempty" style="display:none;"></div><div class="vpage txt-center"></div><div class="info"><div class="power txt-right">Powered By <a href="https://valine.js.org" target="_blank">Valine</a><br>' + o + "</div></div>"; |
|
|
var U = u.find(e.el, ".vempty"); |
|
|
e.nodata = { |
|
|
show: function(t) { |
|
|
return U.innerHTML = t || e.locale.tips.sofa, |
|
|
u.attr(U, "style", "display:block;"), |
|
|
e |
|
|
}, |
|
|
hide: function() { |
|
|
return u.attr(U, "style", "display:none;"), |
|
|
e |
|
|
} |
|
|
}; |
|
|
var I = u.create("div", "class", "vloading") |
|
|
, N = u.find(e.el, ".vlist"); |
|
|
e.loading = { |
|
|
show: function(t) { |
|
|
var n = u.findAll(N, ".vcard"); |
|
|
return t ? N.insertBefore(I, n[0]) : N.appendChild(I), |
|
|
e.nodata.hide(), |
|
|
e |
|
|
}, |
|
|
hide: function() { |
|
|
var t = u.find(N, ".vloading"); |
|
|
return t && u.remove(t), |
|
|
0 === u.findAll(N, ".vcard").length && e.nodata.show(), |
|
|
e |
|
|
} |
|
|
}; |
|
|
var Q = u.find(e.el, ".vmark"); |
|
|
e.alert = { |
|
|
show: function(t) { |
|
|
Q.innerHTML = '<div class="valert txt-center"><div class="vtext">' + (t && t.text || 1) + '</div><div class="vbtns"></div></div>'; |
|
|
var n = u.find(Q, ".vbtns") |
|
|
, r = '<button class="vcancel vbtn">' + (t && t.ctxt || e.locale.ctrl.cancel) + "</button>" |
|
|
, i = '<button class="vsure vbtn">' + (t && t.otxt || e.locale.ctrl.sure) + "</button>"; |
|
|
if (n.innerHTML = "" + r + (t && t.type && i), |
|
|
u.on("click", u.find(Q, ".vcancel"), function(t) { |
|
|
e.alert.hide() |
|
|
}), |
|
|
u.attr(Q, "style", "display:block;"), |
|
|
t && t.type) { |
|
|
var o = u.find(Q, ".vsure"); |
|
|
u.on("click", o, function(n) { |
|
|
e.alert.hide(), |
|
|
t.cb && t.cb() |
|
|
}) |
|
|
} |
|
|
return e |
|
|
}, |
|
|
hide: function() { |
|
|
return u.attr(Q, "style", "display:none;"), |
|
|
e |
|
|
} |
|
|
}, |
|
|
e.bind() |
|
|
} catch (t) { |
|
|
e.ErrorHandler(t) |
|
|
} |
|
|
} |
|
|
; |
|
|
var w = function(e, t) { |
|
|
var n = new e |
|
|
, r = new AV.ACL; |
|
|
r.setPublicReadAccess(!0), |
|
|
r.setPublicWriteAccess(!0), |
|
|
n.setACL(r), |
|
|
n.set("url", t.url), |
|
|
n.set("xid", t.xid), |
|
|
n.set("title", t.title), |
|
|
n.set("time", 1), |
|
|
n.save().then(function(e) { |
|
|
u.find(t.el, ".leancloud-visitors-count").innerText = 1 |
|
|
}).catch(function(e) {}) |
|
|
} |
|
|
, k = { |
|
|
add: function(e) { |
|
|
var t = u.findAll(document, ".leancloud_visitors,.leancloud-visitors"); |
|
|
if (t.length) { |
|
|
var n = t[0] |
|
|
, r = u.attr(n, "id") |
|
|
, i = u.attr(n, "data-flag-title") |
|
|
, o = encodeURI(r) |
|
|
, a = { |
|
|
el: n, |
|
|
url: r, |
|
|
xid: o, |
|
|
title: i |
|
|
}; |
|
|
if (decodeURI(r) === decodeURI(y)) { |
|
|
var s = new AV.Query(e); |
|
|
s.equalTo("url", r), |
|
|
s.find().then(function(t) { |
|
|
if (t.length > 0) { |
|
|
var r = t[0]; |
|
|
r.increment("time"), |
|
|
r.save().then(function(e) { |
|
|
u.find(n, ".leancloud-visitors-count").innerText = e.get("time") |
|
|
}).catch(function(e) {}) |
|
|
} else |
|
|
w(e, a) |
|
|
}).catch(function(t) { |
|
|
101 == t.code && w(e, a) |
|
|
}) |
|
|
} else |
|
|
k.show(e, t) |
|
|
} |
|
|
}, |
|
|
show: function(e, t) { |
|
|
u.each(t, function(e, t) { |
|
|
var n = u.find(t, ".leancloud-visitors-count"); |
|
|
n && (n.innerText = 0) |
|
|
}); |
|
|
var n = []; |
|
|
for (var r in t) |
|
|
t.hasOwnProperty(r) && n.push(u.attr(t[r], "id")); |
|
|
if (n.length) { |
|
|
var i = new AV.Query(e); |
|
|
i.containedIn("url", n), |
|
|
i.find().then(function(e) { |
|
|
e.length > 0 && u.each(e, function(e, t) { |
|
|
var n = t.get("url") |
|
|
, r = t.get("time") |
|
|
, i = u.findAll(document, '.leancloud_visitors[id="' + n + '"],.leancloud-visitors[id="' + n + '"]'); |
|
|
u.each(i, function(e, t) { |
|
|
var n = u.find(t, ".leancloud-visitors-count"); |
|
|
n && (n.innerText = r) |
|
|
}) |
|
|
}) |
|
|
}).catch(function(e) {}) |
|
|
} |
|
|
} |
|
|
}; |
|
|
r.prototype.Q = function(e) { |
|
|
var t = this; |
|
|
if (1 == arguments.length) { |
|
|
var n = new AV.Query(t.config.clazzName); |
|
|
n.doesNotExist("rid"); |
|
|
var r = new AV.Query(t.config.clazzName); |
|
|
r.equalTo("rid", ""); |
|
|
var i = AV.Query.or(n, r); |
|
|
return "*" === e ? i.exists("url") : i.equalTo("url", decodeURI(e)), |
|
|
i.addDescending("createdAt"), |
|
|
i.addDescending("insertedAt"), |
|
|
i |
|
|
} |
|
|
var o = JSON.stringify(arguments[1]).replace(/(\[|\])/g, "") |
|
|
, a = "select * from " + t.config.clazzName + " where rid in (" + o + ") order by -createdAt,-createdAt"; |
|
|
return AV.Query.doCloudQuery(a) |
|
|
} |
|
|
, |
|
|
r.prototype.ErrorHandler = function(e) { |
|
|
var t = this; |
|
|
if (t.el && t.loading.hide().nodata.hide(), |
|
|
"[object Error]" === {}.toString.call(e)) { |
|
|
var n = e.code || "" |
|
|
, r = t.locale.error[n] || e.message || e.error || ""; |
|
|
101 == n ? t.nodata.show() : t.el && t.nodata.show('<pre style="text-align:left;">Code ' + n + ": " + r + "</pre>") || console |
|
|
} else |
|
|
t.el && t.nodata.show('<pre style="text-align:left;">' + JSON.stringify(e) + "</pre>") || console |
|
|
} |
|
|
, |
|
|
r.prototype.installLocale = function(e, t) { |
|
|
return t = t || {}, |
|
|
e && (g[e] = t, |
|
|
this.locale = g[e] || g["zh-cn"]), |
|
|
this |
|
|
} |
|
|
, |
|
|
r.prototype.setPath = function(e) { |
|
|
return y = e || y, |
|
|
this |
|
|
} |
|
|
, |
|
|
r.prototype.bind = function(e) { |
|
|
var t = this |
|
|
, n = u.find(t.el, ".vemojis") |
|
|
, r = u.find(t.el, ".vpreview") |
|
|
, i = u.find(t.el, ".vemoji-btn") |
|
|
, o = u.find(t.el, ".vpreview-btn") |
|
|
, f = u.find(t.el, ".veditor") |
|
|
, h = p.data; |
|
|
for (var g in h) |
|
|
h.hasOwnProperty(g) && function(e, t) { |
|
|
var r = u.create("i", { |
|
|
name: e, |
|
|
title: e |
|
|
}); |
|
|
r.innerHTML = t, |
|
|
n.appendChild(r), |
|
|
u.on("click", r, function(e) { |
|
|
E(f, t), |
|
|
w(f) |
|
|
}) |
|
|
}(g, h[g]); |
|
|
t.emoji = { |
|
|
show: function() { |
|
|
return t.preview.hide(), |
|
|
u.attr(i, "v", 1), |
|
|
u.removeAttr(o, "v"), |
|
|
u.attr(n, "style", "display:block"), |
|
|
t.emoji |
|
|
}, |
|
|
hide: function() { |
|
|
return u.removeAttr(i, "v"), |
|
|
u.attr(n, "style", "display:hide"), |
|
|
t.emoji |
|
|
} |
|
|
}, |
|
|
t.preview = { |
|
|
show: function() { |
|
|
return v.comment && (t.emoji.hide(), |
|
|
u.attr(o, "v", 1), |
|
|
u.removeAttr(i, "v"), |
|
|
r.innerHTML = v.comment, |
|
|
u.attr(r, "style", "display:block"), |
|
|
C()), |
|
|
t.preview |
|
|
}, |
|
|
hide: function() { |
|
|
return u.removeAttr(o, "v"), |
|
|
u.attr(r, "style", "display:none"), |
|
|
t.preview |
|
|
}, |
|
|
empty: function() { |
|
|
return r.innerHtml = "", |
|
|
t.preview |
|
|
} |
|
|
}; |
|
|
var b = function(e) { |
|
|
var t = u.create("div"); |
|
|
t.insertAdjacentHTML("afterbegin", e); |
|
|
var n = u.findAll(t, "*") |
|
|
, r = ["INPUT", "STYLE", "SCRIPT", "IFRAME", "FRAME", "AUDIO", "VIDEO", "EMBED", "META", "TITLE", "LINK"]; |
|
|
return u.each(n, function(e, t) { |
|
|
1 === t.nodeType && (r.indexOf(t.nodeName) > -1 && ("INPUT" === t.nodeName && "checkbox" === u.attr(t, "type") ? u.attr(t, "disabled", "disabled") : u.remove(t)), |
|
|
"A" === t.nodeName && function(e, t) { |
|
|
var n = u.attr(e, t); |
|
|
n && u.attr(e, t, n.replace(/(javascript|eval)/gi, "")) |
|
|
}(t, "href"), |
|
|
u.clearAttr(t)) |
|
|
}), |
|
|
t.innerHTML |
|
|
} |
|
|
, w = function(e) { |
|
|
var t = e.value || ""; |
|
|
t = p.parse(t), |
|
|
e.value = t; |
|
|
var n = b(s(t)); |
|
|
v.comment = n, |
|
|
r.innerHTML = n, |
|
|
t ? l(e) : l.destroy(e) |
|
|
}; |
|
|
u.on("click", i, function(e) { |
|
|
u.attr(i, "v") ? t.emoji.hide() : t.emoji.show() |
|
|
}), |
|
|
u.on("click", o, function(e) { |
|
|
u.attr(o, "v") ? t.preview.hide() : t.preview.show() |
|
|
}); |
|
|
for (var k = t.config.meta, _ = {}, A = { |
|
|
veditor: "comment" |
|
|
}, O = 0, S = k.length; O < S; O++) |
|
|
A["v" + k[O]] = k[O]; |
|
|
for (var $ in A) |
|
|
A.hasOwnProperty($) && function() { |
|
|
var e = A[$] |
|
|
, n = u.find(t.el, "." + $); |
|
|
_[e] = n, |
|
|
n && u.on("input change blur", n, function(t) { |
|
|
"comment" === e ? w(n) : v[e] = u.escape(n.value.replace(/(^\s*)|(\s*$)/g, "")) |
|
|
}) |
|
|
}(); |
|
|
var E = function(e, t) { |
|
|
if (document.selection) |
|
|
e.focus(), |
|
|
document.selection.createRange().text = t, |
|
|
e.focus(); |
|
|
else if (e.selectionStart || "0" == e.selectionStart) { |
|
|
var n = e.selectionStart |
|
|
, r = e.selectionEnd |
|
|
, i = e.scrollTop; |
|
|
e.value = e.value.substring(0, n) + t + e.value.substring(r, e.value.length), |
|
|
e.focus(), |
|
|
e.selectionStart = n + t.length, |
|
|
e.selectionEnd = n + t.length, |
|
|
e.scrollTop = i |
|
|
} else |
|
|
e.focus(), |
|
|
e.value += t |
|
|
} |
|
|
, L = function(e) { |
|
|
var n = u.find(t.el, ".vh[rootid='" + e + "']") |
|
|
, r = u.find(n, ".vquote"); |
|
|
return r || (r = u.create("div", "class", "vquote"), |
|
|
n.appendChild(r)), |
|
|
r |
|
|
}; |
|
|
t.Q(y).count().then(function(e) { |
|
|
e > 0 ? (u.attr(u.find(t.el, ".vinfo"), "style", "display:block;"), |
|
|
u.find(t.el, ".vcount").innerHTML = '<span class="vnum">' + e + "</span> " + t.locale.tips.comments, |
|
|
function e() { |
|
|
var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1 |
|
|
, r = t.config.pageSize |
|
|
, i = Number(u.find(t.el, ".vnum").innerText); |
|
|
t.loading.show(); |
|
|
var o = t.Q(y); |
|
|
o.limit(r), |
|
|
o.skip((n - 1) * r), |
|
|
o.find().then(function(o) { |
|
|
for (var a = o.length, s = [], l = 0; l < a; l++) { |
|
|
var c = o[l]; |
|
|
s.push(c.id), |
|
|
M(c, u.find(t.el, ".vlist"), !0) |
|
|
} |
|
|
t.Q(y, s).then(function(e) { |
|
|
for (var t = e && e.results || [], n = 0; n < t.length; n++) { |
|
|
var r = t[n]; |
|
|
M(r, L(r.get("rid"))) |
|
|
} |
|
|
}); |
|
|
var d = u.find(t.el, ".vpage"); |
|
|
d.innerHTML = r * n < i ? '<button type="button" class="vmore vbtn">' + t.locale.ctrl.more + "</button>" : ""; |
|
|
var p = u.find(d, ".vmore"); |
|
|
p && u.on("click", p, function(t) { |
|
|
d.innerHTML = "", |
|
|
e(++n) |
|
|
}), |
|
|
t.loading.hide() |
|
|
}).catch(function(e) { |
|
|
t.loading.hide().ErrorHandler(e) |
|
|
}) |
|
|
}()) : t.loading.hide() |
|
|
}).catch(function(e) { |
|
|
t.ErrorHandler(e) |
|
|
}); |
|
|
var M = function(e, n, r) { |
|
|
var i = u.create("div", { |
|
|
class: "vcard", |
|
|
id: e.id |
|
|
}) |
|
|
, o = m.hide ? "" : '<img class="vimg" src="' + (m.cdn + a(e.get("mail")) + m.params) + '">' |
|
|
, s = e.get("ua") || "" |
|
|
, l = ""; |
|
|
s && (l = '<span class="vsys">' + (s = d(s)).browser + " " + s.version + '</span> <span class="vsys">' + s.os + " " + s.osVersion + "</span>"), |
|
|
"*" === y && (l = '<a href="' + e.get("url") + '" class="vsys">' + e.get("url") + "</a>"); |
|
|
var p, f = e.get("link") || ""; |
|
|
if (f.indexOf('.') > 0 && f.indexOf('://') < 0) { |
|
|
f = 'http://' + f; |
|
|
} |
|
|
p = f ? '<a class="vnick" rel="nofollow" href="' + f + '" target="_blank" >' + e.get("nick") + "</a>" : '<span class="vnick">' + e.get("nick") + "</span>", |
|
|
i.innerHTML = o + '\n <div class="vh" rootid=' + (e.get("rid") || e.id) + '>\n <div class="vhead">' + p + " " + l + '</div>\n <div class="vmeta">\n <span class="vtime">' + c(e.get("insertedAt") || e.createdAt, t.locale) + '</span>\n <span class="vat">' + t.locale.ctrl.reply + '</span>\n </div>\n <div class="vcontent">\n ' + b(e.get("comment")) + "\n </div>\n </div>"; |
|
|
for (var h = u.find(i, ".vat"), v = u.findAll(i, "a"), g = 0, x = v.length; g < x; g++) { |
|
|
var w = v[g]; |
|
|
w && -1 == (u.attr(w, "class") || "").indexOf("at") && u.attr(w, { |
|
|
target: "_blank", |
|
|
rel: "nofollow" |
|
|
}) |
|
|
} |
|
|
var k = u.findAll(n, ".vcard"); |
|
|
r ? n.appendChild(i) : n.insertBefore(i, k[0]); |
|
|
var _ = u.find(i, ".vcontent"); |
|
|
_ && z(_), |
|
|
h && R(h, e), |
|
|
C() |
|
|
} |
|
|
, C = function() { |
|
|
setTimeout(function() { |
|
|
try { |
|
|
"undefined" != typeof MathJax && MathJax.Hub.Queue(["Typeset", MathJax.Hub]), |
|
|
"undefined" != typeof hljs && (u.each(u.findAll("pre code"), function(e, t) { |
|
|
hljs.highlightBlock(t) |
|
|
}), |
|
|
u.each(u.findAll("code.hljs"), function(e, t) { |
|
|
hljs.lineNumbersBlock(t) |
|
|
})) |
|
|
} catch (e) {} |
|
|
}, 200) |
|
|
} |
|
|
, z = function(e) { |
|
|
setTimeout(function() { |
|
|
e.offsetHeight > 180 && (e.classList.add("expand"), |
|
|
u.on("click", e, function(t) { |
|
|
u.attr(e, "class", "vcontent") |
|
|
})) |
|
|
}) |
|
|
} |
|
|
, T = {} |
|
|
, R = function(e, t) { |
|
|
u.on("click", e, function(e) { |
|
|
var n = "@" + u.escape(t.get("nick")); |
|
|
T = { |
|
|
at: u.escape(n) + " ", |
|
|
rid: t.get("rid") || t.id, |
|
|
pid: t.id, |
|
|
rmail: t.get("mail") |
|
|
}, |
|
|
u.attr(_.comment, "placeholder", n), |
|
|
_.comment.focus() |
|
|
}) |
|
|
}; |
|
|
!function() { |
|
|
var e = x && x.ValineCache; |
|
|
if (e) { |
|
|
e = JSON.parse(e); |
|
|
var n = k; |
|
|
for (var r in n) { |
|
|
var i = n[r]; |
|
|
u.find(t.el, ".v" + i).value = u.unescape(e[i]), |
|
|
v[i] = e[i] |
|
|
} |
|
|
} |
|
|
}(); |
|
|
var j = u.find(t.el, ".vsubmit") |
|
|
, B = function(e) { |
|
|
return u.attr(j, "disabled") ? void t.alert.show({ |
|
|
type: 0, |
|
|
text: t.locale.tips.busy + 'ヾ(๑╹◡╹)ノ"', |
|
|
ctxt: t.locale.ctrl.ok |
|
|
}) : "" == v.comment ? void _.comment.focus() : "" == v.nick ? void _.nick.focus() : "" == v.mail ? void _.mail.focus() : (v.nick = v.nick || "Anonymous", |
|
|
void (t.notify || t.verify ? I(U) : U())) |
|
|
} |
|
|
, P = function() { |
|
|
var e = new AV.ACL; |
|
|
return e.setPublicReadAccess(!0), |
|
|
e.setPublicWriteAccess(!1), |
|
|
e |
|
|
} |
|
|
, U = function() { |
|
|
u.attr(j, "disabled", !0), |
|
|
t.loading.show(!0); |
|
|
var e = new (AV.Object.extend(t.config.clazzName || "Comment")) |
|
|
, n = "*" === y ? location.pathname.replace(/index\.html?$/, "") : y; |
|
|
if (v.url = decodeURI(n), |
|
|
v.insertedAt = new Date, |
|
|
T.rid) { |
|
|
var r = T.pid || T.rid; |
|
|
e.set("rid", T.rid), |
|
|
e.set("pid", r), |
|
|
v.comment = v.comment.replace("<p>", '<p><a class="at" href="#' + r + '">' + T.at + "</a> , ") |
|
|
} |
|
|
for (var i in v) |
|
|
if (v.hasOwnProperty(i)) { |
|
|
var o = v[i]; |
|
|
e.set(i, o) |
|
|
} |
|
|
e.setACL(P()), |
|
|
e.save().then(function(e) { |
|
|
"Anonymous" != v.nick && x && x.setItem("ValineCache", JSON.stringify({ |
|
|
nick: v.nick, |
|
|
link: v.link, |
|
|
mail: v.mail |
|
|
})); |
|
|
var n = u.find(t.el, ".vnum") |
|
|
, r = 1; |
|
|
try { |
|
|
if (T.rid) { |
|
|
var i = u.find(t.el, '.vquote[rid="' + T.rid + '"]') || L(T.rid); |
|
|
M(e, i, !0) |
|
|
} else |
|
|
n ? (r = Number(n.innerText) + 1, |
|
|
n.innerText = r) : u.find(t.el, ".vcount").innerHTML = '<span class="num">1</span> ' + t.locale.tips.comments, |
|
|
M(e, u.find(t.el, ".vlist")); |
|
|
v.mail && N({ |
|
|
username: v.nick, |
|
|
mail: v.mail |
|
|
}), |
|
|
T.at && T.rmail && t.notify && Q({ |
|
|
username: T.at.replace("@", ""), |
|
|
mail: T.rmail |
|
|
}), |
|
|
u.removeAttr(j, "disabled"), |
|
|
t.loading.hide(), |
|
|
v.comment = "", |
|
|
_.comment.value = "", |
|
|
w(_.comment), |
|
|
u.attr(_.comment, "placeholder", t.placeholder), |
|
|
T = {}, |
|
|
t.preview.empty().hide() |
|
|
} catch (e) { |
|
|
t.ErrorHandler(e) |
|
|
} |
|
|
}).catch(function(e) { |
|
|
t.ErrorHandler(e) |
|
|
}) |
|
|
} |
|
|
, I = function e(n) { |
|
|
var r = Math.floor(10 * Math.random() + 1) |
|
|
, i = Math.floor(10 * Math.random() + 1) |
|
|
, o = Math.floor(10 * Math.random() + 1) |
|
|
, a = ["+", "-", "x"] |
|
|
, s = "" + r + a[Math.floor(3 * Math.random())] + i + a[Math.floor(3 * Math.random())] + o |
|
|
, l = s + " = <input class='vcode vinput' >"; |
|
|
t.alert.show({ |
|
|
type: 1, |
|
|
text: l, |
|
|
ctxt: t.locale.ctrl.cancel, |
|
|
otxt: t.locale.ctrl.ok, |
|
|
cb: function() { |
|
|
var r = +u.find(t.el, ".vcode").value; |
|
|
new Function("return " + s.replace(/x/g, "*"))() === r ? n && n() : t.alert.show({ |
|
|
type: 1, |
|
|
text: "(T_T)" + t.locale.tips.again, |
|
|
ctxt: t.locale.ctrl.cancel, |
|
|
otxt: t.locale.ctrl.try, |
|
|
cb: function() { |
|
|
e(n) |
|
|
} |
|
|
}) |
|
|
} |
|
|
}) |
|
|
} |
|
|
, N = function(e) { |
|
|
var t = new AV.User; |
|
|
return t.setUsername(e.username), |
|
|
t.setPassword(e.mail), |
|
|
t.setEmail(e.mail), |
|
|
t.setACL(P()), |
|
|
t.signUp() |
|
|
} |
|
|
, Q = function e(n) { |
|
|
AV.User.requestPasswordReset(n.mail).then(function(e) {}).catch(function(r) { |
|
|
1 == r.code ? t.alert.show({ |
|
|
type: 0, |
|
|
text: "ヾ(o・ω・)ノ At太频繁啦,提醒功能暂时宕机。<br>" + r.error, |
|
|
ctxt: t.locale.ctrl.ok |
|
|
}) : N(n).then(function(t) { |
|
|
e(n) |
|
|
}).catch(function(e) {}) |
|
|
}) |
|
|
}; |
|
|
u.on("click", j, B), |
|
|
u.on("keydown", document, function(e) { |
|
|
var t = (e = event || e).keyCode || e.which || e.charCode; |
|
|
(e.ctrlKey || e.metaKey) && 13 === t && B(), |
|
|
9 === t && "veditor" == (document.activeElement.id || "") && (e.preventDefault(), |
|
|
E(f, " ")) |
|
|
}) |
|
|
} |
|
|
, |
|
|
e.exports = i, |
|
|
e.exports.default = i |
|
|
} |
|
|
, function(e, t, n) { |
|
|
"use strict"; |
|
|
var r = { |
|
|
data: n(11), |
|
|
parse: function(e) { |
|
|
return String(e).replace(/:(.+?):/g, function(e, t) { |
|
|
return r.data[t] || e |
|
|
}) |
|
|
} |
|
|
}; |
|
|
e.exports = r |
|
|
} |
|
|
, function(e, t, n) { |
|
|
"use strict"; |
|
|
e.exports = function(e) { |
|
|
return new function(e) { |
|
|
var t = this |
|
|
, n = { |
|
|
Trident: e.indexOf("Trident") > -1 || e.indexOf("NET CLR") > -1, |
|
|
Presto: e.indexOf("Presto") > -1, |
|
|
WebKit: e.indexOf("AppleWebKit") > -1, |
|
|
Gecko: e.indexOf("Gecko/") > -1, |
|
|
Safari: e.indexOf("Safari") > -1, |
|
|
Chrome: e.indexOf("Chrome") > -1 || e.indexOf("CriOS") > -1, |
|
|
IE: e.indexOf("MSIE") > -1 || e.indexOf("Trident") > -1, |
|
|
Edge: e.indexOf("Edge") > -1, |
|
|
Firefox: e.indexOf("Firefox") > -1 || e.indexOf("FxiOS") > -1, |
|
|
"Firefox Focus": e.indexOf("Focus") > -1, |
|
|
Chromium: e.indexOf("Chromium") > -1, |
|
|
Opera: e.indexOf("Opera") > -1 || e.indexOf("OPR") > -1, |
|
|
Vivaldi: e.indexOf("Vivaldi") > -1, |
|
|
Yandex: e.indexOf("YaBrowser") > -1, |
|
|
Kindle: e.indexOf("Kindle") > -1 || e.indexOf("Silk/") > -1, |
|
|
360: e.indexOf("360EE") > -1 || e.indexOf("360SE") > -1, |
|
|
UC: e.indexOf("UC") > -1 || e.indexOf(" UBrowser") > -1, |
|
|
QQBrowser: e.indexOf("QQBrowser") > -1, |
|
|
QQ: e.indexOf("QQ/") > -1, |
|
|
Baidu: e.indexOf("Baidu") > -1 || e.indexOf("BIDUBrowser") > -1, |
|
|
Maxthon: e.indexOf("Maxthon") > -1, |
|
|
Sogou: e.indexOf("MetaSr") > -1 || e.indexOf("Sogou") > -1, |
|
|
LBBROWSER: e.indexOf("LBBROWSER") > -1, |
|
|
"2345Explorer": e.indexOf("2345Explorer") > -1, |
|
|
TheWorld: e.indexOf("TheWorld") > -1, |
|
|
XiaoMi: e.indexOf("MiuiBrowser") > -1, |
|
|
Quark: e.indexOf("Quark") > -1, |
|
|
Qiyu: e.indexOf("Qiyu") > -1, |
|
|
Wechat: e.indexOf("MicroMessenger") > -1, |
|
|
Taobao: e.indexOf("AliApp(TB") > -1, |
|
|
Alipay: e.indexOf("AliApp(AP") > -1, |
|
|
Weibo: e.indexOf("Weibo") > -1, |
|
|
Douban: e.indexOf("com.douban.frodo") > -1, |
|
|
Suning: e.indexOf("SNEBUY-APP") > -1, |
|
|
iQiYi: e.indexOf("IqiyiApp") > -1, |
|
|
Windows: e.indexOf("Windows") > -1, |
|
|
Linux: e.indexOf("Linux") > -1 || e.indexOf("X11") > -1, |
|
|
"Mac OS": e.indexOf("Macintosh") > -1, |
|
|
Android: e.indexOf("Android") > -1 || e.indexOf("Adr") > -1, |
|
|
Ubuntu: e.indexOf("Ubuntu") > -1, |
|
|
FreeBSD: e.indexOf("FreeBSD") > -1, |
|
|
Debian: e.indexOf("Debian") > -1, |
|
|
"Windows Phone": e.indexOf("IEMobile") > -1 || e.indexOf("Windows Phone") > -1, |
|
|
BlackBerry: e.indexOf("BlackBerry") > -1 || e.indexOf("RIM") > -1, |
|
|
MeeGo: e.indexOf("MeeGo") > -1, |
|
|
Symbian: e.indexOf("Symbian") > -1, |
|
|
iOS: e.indexOf("like Mac OS X") > -1, |
|
|
"Chrome OS": e.indexOf("CrOS") > -1, |
|
|
WebOS: e.indexOf("hpwOS") > -1, |
|
|
Mobile: e.indexOf("Mobi") > -1 || e.indexOf("iPh") > -1 || e.indexOf("480") > -1, |
|
|
Tablet: e.indexOf("Tablet") > -1 || e.indexOf("Pad") > -1 || e.indexOf("Nexus 7") > -1 |
|
|
}; |
|
|
n.Mobile && (n.Mobile = !(e.indexOf("iPad") > -1)); |
|
|
var r = { |
|
|
engine: ["WebKit", "Trident", "Gecko", "Presto"], |
|
|
browser: ["Safari", "Chrome", "Edge", "IE", "Firefox", "Firefox Focus", "Chromium", "Opera", "Vivaldi", "Yandex", "Kindle", "360", "UC", "QQBrowser", "QQ", "Baidu", "Maxthon", "Sogou", "LBBROWSER", "2345Explorer", "TheWorld", "XiaoMi", "Quark", "Qiyu", "Wechat", "Taobao", "Alipay", "Weibo", "Douban", "Suning", "iQiYi"], |
|
|
os: ["Windows", "Linux", "Mac OS", "Android", "Ubuntu", "FreeBSD", "Debian", "iOS", "Windows Phone", "BlackBerry", "MeeGo", "Symbian", "Chrome OS", "WebOS"], |
|
|
device: ["Mobile", "Tablet"] |
|
|
}; |
|
|
for (var i in t.device = "PC", |
|
|
r) |
|
|
for (var o = 0; o < r[i].length; o++) { |
|
|
var a = r[i][o]; |
|
|
n[a] && (t[i] = a) |
|
|
} |
|
|
var s = { |
|
|
Windows: function() { |
|
|
var t = e.replace(/^.*Windows NT ([\d.]+);.*$/, "$1"); |
|
|
return { |
|
|
6.4: "10", |
|
|
6.3: "8.1", |
|
|
6.2: "8", |
|
|
6.1: "7", |
|
|
"6.0": "Vista", |
|
|
5.2: "XP", |
|
|
5.1: "XP", |
|
|
"5.0": "2000" |
|
|
}[t] || t |
|
|
}, |
|
|
Android: function() { |
|
|
return e.replace(/^.*Android ([\d.]+);.*$/, "$1") |
|
|
}, |
|
|
iOS: function() { |
|
|
return e.replace(/^.*OS ([\d_]+) like.*$/, "$1").replace(/_/g, ".") |
|
|
}, |
|
|
Debian: function() { |
|
|
return e.replace(/^.*Debian\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
"Windows Phone": function() { |
|
|
return e.replace(/^.*Windows Phone( OS)? ([\d.]+);.*$/, "$2") |
|
|
}, |
|
|
"Mac OS": function() { |
|
|
return e.replace(/^.*Mac OS X ([\d_]+).*$/, "$1").replace(/_/g, ".") |
|
|
}, |
|
|
WebOS: function() { |
|
|
return e.replace(/^.*hpwOS\/([\d.]+);.*$/, "$1") |
|
|
} |
|
|
}; |
|
|
t.osVersion = "", |
|
|
s[t.os] && (t.osVersion = s[t.os](), |
|
|
t.osVersion == e && (t.osVersion = "")); |
|
|
var l = { |
|
|
Safari: function() { |
|
|
return e.replace(/^.*Version\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Chrome: function() { |
|
|
return e.replace(/^.*Chrome\/([\d.]+).*$/, "$1").replace(/^.*CriOS\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
IE: function() { |
|
|
return e.replace(/^.*MSIE ([\d.]+).*$/, "$1").replace(/^.*rv:([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Edge: function() { |
|
|
return e.replace(/^.*Edge\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Firefox: function() { |
|
|
return e.replace(/^.*Firefox\/([\d.]+).*$/, "$1").replace(/^.*FxiOS\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
"Firefox Focus": function() { |
|
|
return e.replace(/^.*Focus\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Chromium: function() { |
|
|
return e.replace(/^.*Chromium\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Opera: function() { |
|
|
return e.replace(/^.*Opera\/([\d.]+).*$/, "$1").replace(/^.*OPR\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Vivaldi: function() { |
|
|
return e.replace(/^.*Vivaldi\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Yandex: function() { |
|
|
return e.replace(/^.*YaBrowser\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Kindle: function() { |
|
|
return e.replace(/^.*Version\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Maxthon: function() { |
|
|
return e.replace(/^.*Maxthon\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
QQBrowser: function() { |
|
|
return e.replace(/^.*QQBrowser\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
QQ: function() { |
|
|
return e.replace(/^.*QQ\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Baidu: function() { |
|
|
return e.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/, "$1") |
|
|
}, |
|
|
UC: function() { |
|
|
return e.replace(/^.*UC?Browser\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Sogou: function() { |
|
|
return e.replace(/^.*SE ([\d.X]+).*$/, "$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
"2345Explorer": function() { |
|
|
return e.replace(/^.*2345Explorer\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
TheWorld: function() { |
|
|
return e.replace(/^.*TheWorld ([\d.]+).*$/, "$1") |
|
|
}, |
|
|
XiaoMi: function() { |
|
|
return e.replace(/^.*MiuiBrowser\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Quark: function() { |
|
|
return e.replace(/^.*Quark\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Qiyu: function() { |
|
|
return e.replace(/^.*Qiyu\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Wechat: function() { |
|
|
return e.replace(/^.*MicroMessenger\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Taobao: function() { |
|
|
return e.replace(/^.*AliApp\(TB\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Alipay: function() { |
|
|
return e.replace(/^.*AliApp\(AP\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Weibo: function() { |
|
|
return e.replace(/^.*weibo__([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Douban: function() { |
|
|
return e.replace(/^.*com.douban.frodo\/([\d.]+).*$/, "$1") |
|
|
}, |
|
|
Suning: function() { |
|
|
return e.replace(/^.*SNEBUY-APP([\d.]+).*$/, "$1") |
|
|
}, |
|
|
iQiYi: function() { |
|
|
return e.replace(/^.*IqiyiVersion\/([\d.]+).*$/, "$1") |
|
|
} |
|
|
}; |
|
|
t.version = "", |
|
|
l[t.browser] && (t.version = l[t.browser](), |
|
|
t.version == e && (t.version = "")), |
|
|
"Edge" == t.browser ? t.engine = "EdgeHTML" : "Chrome" == t.browser && parseInt(t.version) > 27 ? t.engine = "Blink" : "Opera" == t.browser && parseInt(t.version) > 12 ? t.engine = "Blink" : "Yandex" == t.browser ? t.engine = "Blink" : void 0 == t.browser && (t.browser = "Unknow App") |
|
|
} |
|
|
(e) |
|
|
} |
|
|
} |
|
|
, function(e, t, n) { |
|
|
"use strict"; |
|
|
var r = window |
|
|
, i = document |
|
|
, o = {} |
|
|
, a = { |
|
|
"&": "&", |
|
|
"<": "<", |
|
|
">": ">", |
|
|
'"': """, |
|
|
"'": "'", |
|
|
"`": "`", |
|
|
"\\": "\" |
|
|
}; |
|
|
for (var s in a) |
|
|
o[a[s]] = s; |
|
|
var l = /[&<>"'`\\]/g |
|
|
, c = RegExp(l.source) |
|
|
, d = /&(?:amp|lt|gt|quot|#39|#x60|#x5c);/g |
|
|
, u = RegExp(d.source) |
|
|
, p = { |
|
|
domReady: function(e) { |
|
|
if ("complete" === i.readyState || "loading" !== i.readyState && !i.documentElement.doScroll) |
|
|
setTimeout(function() { |
|
|
return e && e() |
|
|
}, 0); |
|
|
else { |
|
|
var t = function t() { |
|
|
i.removeEventListener("DOMContentLoaded", t, !1), |
|
|
r.removeEventListener("load", t, !1), |
|
|
e && e() |
|
|
}; |
|
|
i.addEventListener("DOMContentLoaded", t, !1), |
|
|
r.addEventListener("load", t, !1) |
|
|
} |
|
|
}, |
|
|
dynamicLoadSource: function(e, t, n) { |
|
|
var r = { |
|
|
script: "src", |
|
|
link: "href" |
|
|
}[e]; |
|
|
if (p.find(i, e + "[" + r + '="' + t[r] + '"]')) |
|
|
"function" == typeof n && n(); |
|
|
else { |
|
|
var o = p.create(e, t); |
|
|
i.getElementsByTagName("head")[0].appendChild(o), |
|
|
o.onload = o.onreadystatechange = function() { |
|
|
this.onload = this.onreadystatechange = null, |
|
|
"function" == typeof n && n() |
|
|
} |
|
|
} |
|
|
}, |
|
|
on: function(e, t, n, r) { |
|
|
for (var i = 0, o = (e = e.split(" ")).length; i < o; i++) |
|
|
p.off(e[i], t, n, r), |
|
|
t.addEventListener ? t.addEventListener(e[i], n, r || !1) : t.attachEvent ? t.attachEvent("on" + e[i], n) : t["on" + e[i]] = n |
|
|
}, |
|
|
off: function(e, t, n, r) { |
|
|
for (var i = 0, o = (e = e.split(" ")).length; i < o; i++) |
|
|
t.removeEventListener ? t.removeEventListener(e, n, r || !1) : t.detachEvent ? t.detachEvent("on" + e, n) : t["on" + e] = null |
|
|
}, |
|
|
escape: function(e) { |
|
|
return e && c.test(e) ? e.replace(l, function(e) { |
|
|
return a[e] |
|
|
}) : e |
|
|
}, |
|
|
unescape: function(e) { |
|
|
return e && u.test(e) ? e.replace(d, function(e) { |
|
|
return o[e] |
|
|
}) : e |
|
|
}, |
|
|
create: function(e, t, n) { |
|
|
var r = document.createElement(e); |
|
|
return p.attr(r, t, n), |
|
|
r |
|
|
}, |
|
|
find: function(e, t) { |
|
|
return e.querySelector(t) |
|
|
}, |
|
|
findAll: function(e, t) { |
|
|
return e.querySelectorAll(t) |
|
|
}, |
|
|
attr: function(e, t, n) { |
|
|
if (void 0 === e.getAttribute) |
|
|
return p.prop(e, t, n); |
|
|
if (void 0 !== n) |
|
|
null === n ? p.removeAttr(e, t) : e.setAttribute(t, n); |
|
|
else { |
|
|
if ("[object Object]" !== {}.toString.call(t)) |
|
|
return e.getAttribute(t); |
|
|
p.each(t, function(t, n) { |
|
|
e.setAttribute(t, n) |
|
|
}) |
|
|
} |
|
|
}, |
|
|
prop: function(e, t, n) { |
|
|
return void 0 !== n ? e[t] = n : "[object Object]" !== {}.toString.call(t) ? e[t] : void p.each(t, function(t, n) { |
|
|
e[t] = n |
|
|
}) |
|
|
}, |
|
|
removeAttr: function(e, t) { |
|
|
var n = void 0 |
|
|
, r = 0 |
|
|
, i = t && t.match(/[^\x20\t\r\n\f\*\/\\]+/g); |
|
|
if (i && 1 === e.nodeType) |
|
|
for (; n = i[r++]; ) |
|
|
e.removeAttribute(n); |
|
|
return e |
|
|
}, |
|
|
clearAttr: function(e) { |
|
|
var t = e.attributes |
|
|
, n = ["align", "alt", "checked", "class", "disabled", "href", "id", "target", "title", "type", "src", "style"]; |
|
|
return p.each(t, function(t, r) { |
|
|
var i = r.name; |
|
|
switch (i.toLowerCase()) { |
|
|
case "style": |
|
|
var o = r.value; |
|
|
p.each(o.split(";"), function(t, n) { |
|
|
n.indexOf("color") > -1 ? p.attr(e, "style", n) : p.removeAttr(e, "style") |
|
|
}); |
|
|
break; |
|
|
case "class": |
|
|
if ("CODE" == e.nodeName) |
|
|
return !1; |
|
|
var a = r.value; |
|
|
a.indexOf("at") > -1 ? p.attr(e, "class", "at") : a.indexOf("vemoji") > -1 ? p.attr(e, "class", "vemoji") : p.removeAttr(e, "class"); |
|
|
break; |
|
|
default: |
|
|
if (n.indexOf(i) > -1) |
|
|
return !0; |
|
|
p.removeAttr(e, i) |
|
|
} |
|
|
}), |
|
|
e |
|
|
}, |
|
|
remove: function(e) { |
|
|
try { |
|
|
e.parentNode && e.parentNode.removeChild(e) |
|
|
} catch (e) {} |
|
|
}, |
|
|
each: function(e, t) { |
|
|
var n = 0 |
|
|
, r = e.length |
|
|
, i = {}.toString.call(e); |
|
|
if (["[object Array]", "[object NodeList]"].indexOf(i) > -1) |
|
|
for (; n < r && (!t || !1 !== t.call(e[n], n, e[n])); n++) |
|
|
; |
|
|
else |
|
|
for (n in e) |
|
|
if (e.hasOwnProperty(n) && t && !1 === t.call(e[n], n, e[n])) |
|
|
break; |
|
|
return e |
|
|
} |
|
|
}; |
|
|
e.exports = p |
|
|
} |
|
|
, function(e, t, n) { |
|
|
"use strict"; |
|
|
var r = function(e) { |
|
|
var t = i(e.getDate(), 2) |
|
|
, n = i(e.getMonth() + 1, 2); |
|
|
return i(e.getFullYear(), 2) + "-" + n + "-" + t |
|
|
} |
|
|
, i = function(e, t) { |
|
|
for (var n = e.toString(); n.length < t; ) |
|
|
n = "0" + n; |
|
|
return n |
|
|
}; |
|
|
e.exports = function(e, t) { |
|
|
if (e) |
|
|
try { |
|
|
var n = e.getTime() |
|
|
, i = (new Date).getTime() - n |
|
|
, o = Math.floor(i / 864e5); |
|
|
if (0 === o) { |
|
|
var a = i % 864e5 |
|
|
, s = Math.floor(a / 36e5); |
|
|
if (0 === s) { |
|
|
var l = a % 36e5 |
|
|
, c = Math.floor(l / 6e4); |
|
|
if (0 === c) { |
|
|
var d = l % 6e4; |
|
|
return Math.round(d / 1e3) + " " + t.timeago.seconds |
|
|
} |
|
|
return c + " " + t.timeago.minutes |
|
|
} |
|
|
return s + " " + t.timeago.hours |
|
|
} |
|
|
return o < 0 ? t.timeago.now : o < 8 ? o + " " + t.timeago.days : r(e) |
|
|
} catch (e) {} |
|
|
} |
|
|
} |
|
|
, function(e, t, n) { |
|
|
var r; |
|
|
!function(i) { |
|
|
"use strict"; |
|
|
function o(e, t) { |
|
|
var n = (65535 & e) + (65535 & t); |
|
|
return (e >> 16) + (t >> 16) + (n >> 16) << 16 | 65535 & n |
|
|
} |
|
|
function a(e, t, n, r, i, a) { |
|
|
return o(function(e, t) { |
|
|
return e << t | e >>> 32 - t |
|
|
}(o(o(t, e), o(r, a)), i), n) |
|
|
} |
|
|
function s(e, t, n, r, i, o, s) { |
|
|
return a(t & n | ~t & r, e, t, i, o, s) |
|
|
} |
|
|
function l(e, t, n, r, i, o, s) { |
|
|
return a(t & r | n & ~r, e, t, i, o, s) |
|
|
} |
|
|
function c(e, t, n, r, i, o, s) { |
|
|
return a(t ^ n ^ r, e, t, i, o, s) |
|
|
} |
|
|
function d(e, t, n, r, i, o, s) { |
|
|
return a(n ^ (t | ~r), e, t, i, o, s) |
|
|
} |
|
|
function u(e, t) { |
|
|
e[t >> 5] |= 128 << t % 32, |
|
|
e[14 + (t + 64 >>> 9 << 4)] = t; |
|
|
var n, r, i, a, u, p = 1732584193, f = -271733879, h = -1732584194, v = 271733878; |
|
|
for (n = 0; n < e.length; n += 16) |
|
|
r = p, |
|
|
i = f, |
|
|
a = h, |
|
|
u = v, |
|
|
f = d(f = d(f = d(f = d(f = c(f = c(f = c(f = c(f = l(f = l(f = l(f = l(f = s(f = s(f = s(f = s(f, h = s(h, v = s(v, p = s(p, f, h, v, e[n], 7, -680876936), f, h, e[n + 1], 12, -389564586), p, f, e[n + 2], 17, 606105819), v, p, e[n + 3], 22, -1044525330), h = s(h, v = s(v, p = s(p, f, h, v, e[n + 4], 7, -176418897), f, h, e[n + 5], 12, 1200080426), p, f, e[n + 6], 17, -1473231341), v, p, e[n + 7], 22, -45705983), h = s(h, v = s(v, p = s(p, f, h, v, e[n + 8], 7, 1770035416), f, h, e[n + 9], 12, -1958414417), p, f, e[n + 10], 17, -42063), v, p, e[n + 11], 22, -1990404162), h = s(h, v = s(v, p = s(p, f, h, v, e[n + 12], 7, 1804603682), f, h, e[n + 13], 12, -40341101), p, f, e[n + 14], 17, -1502002290), v, p, e[n + 15], 22, 1236535329), h = l(h, v = l(v, p = l(p, f, h, v, e[n + 1], 5, -165796510), f, h, e[n + 6], 9, -1069501632), p, f, e[n + 11], 14, 643717713), v, p, e[n], 20, -373897302), h = l(h, v = l(v, p = l(p, f, h, v, e[n + 5], 5, -701558691), f, h, e[n + 10], 9, 38016083), p, f, e[n + 15], 14, -660478335), v, p, e[n + 4], 20, -405537848), h = l(h, v = l(v, p = l(p, f, h, v, e[n + 9], 5, 568446438), f, h, e[n + 14], 9, -1019803690), p, f, e[n + 3], 14, -187363961), v, p, e[n + 8], 20, 1163531501), h = l(h, v = l(v, p = l(p, f, h, v, e[n + 13], 5, -1444681467), f, h, e[n + 2], 9, -51403784), p, f, e[n + 7], 14, 1735328473), v, p, e[n + 12], 20, -1926607734), h = c(h, v = c(v, p = c(p, f, h, v, e[n + 5], 4, -378558), f, h, e[n + 8], 11, -2022574463), p, f, e[n + 11], 16, 1839030562), v, p, e[n + 14], 23, -35309556), h = c(h, v = c(v, p = c(p, f, h, v, e[n + 1], 4, -1530992060), f, h, e[n + 4], 11, 1272893353), p, f, e[n + 7], 16, -155497632), v, p, e[n + 10], 23, -1094730640), h = c(h, v = c(v, p = c(p, f, h, v, e[n + 13], 4, 681279174), f, h, e[n], 11, -358537222), p, f, e[n + 3], 16, -722521979), v, p, e[n + 6], 23, 76029189), h = c(h, v = c(v, p = c(p, f, h, v, e[n + 9], 4, -640364487), f, h, e[n + 12], 11, -421815835), p, f, e[n + 15], 16, 530742520), v, p, e[n + 2], 23, -995338651), h = d(h, v = d(v, p = d(p, f, h, v, e[n], 6, -198630844), f, h, e[n + 7], 10, 1126891415), p, f, e[n + 14], 15, -1416354905), v, p, e[n + 5], 21, -57434055), h = d(h, v = d(v, p = d(p, f, h, v, e[n + 12], 6, 1700485571), f, h, e[n + 3], 10, -1894986606), p, f, e[n + 10], 15, -1051523), v, p, e[n + 1], 21, -2054922799), h = d(h, v = d(v, p = d(p, f, h, v, e[n + 8], 6, 1873313359), f, h, e[n + 15], 10, -30611744), p, f, e[n + 6], 15, -1560198380), v, p, e[n + 13], 21, 1309151649), h = d(h, v = d(v, p = d(p, f, h, v, e[n + 4], 6, -145523070), f, h, e[n + 11], 10, -1120210379), p, f, e[n + 2], 15, 718787259), v, p, e[n + 9], 21, -343485551), |
|
|
p = o(p, r), |
|
|
f = o(f, i), |
|
|
h = o(h, a), |
|
|
v = o(v, u); |
|
|
return [p, f, h, v] |
|
|
} |
|
|
function p(e) { |
|
|
var t, n = "", r = 32 * e.length; |
|
|
for (t = 0; t < r; t += 8) |
|
|
n += String.fromCharCode(e[t >> 5] >>> t % 32 & 255); |
|
|
return n |
|
|
} |
|
|
function f(e) { |
|
|
var t, n = []; |
|
|
for (n[(e.length >> 2) - 1] = void 0, |
|
|
t = 0; t < n.length; t += 1) |
|
|
n[t] = 0; |
|
|
var r = 8 * e.length; |
|
|
for (t = 0; t < r; t += 8) |
|
|
n[t >> 5] |= (255 & e.charCodeAt(t / 8)) << t % 32; |
|
|
return n |
|
|
} |
|
|
function h(e) { |
|
|
var t, n, r = "0123456789abcdef", i = ""; |
|
|
for (n = 0; n < e.length; n += 1) |
|
|
t = e.charCodeAt(n), |
|
|
i += r.charAt(t >>> 4 & 15) + r.charAt(15 & t); |
|
|
return i |
|
|
} |
|
|
function v(e) { |
|
|
return unescape(encodeURIComponent(e)) |
|
|
} |
|
|
function g(e) { |
|
|
return function(e) { |
|
|
return p(u(f(e), 8 * e.length)) |
|
|
}(v(e)) |
|
|
} |
|
|
function m(e, t) { |
|
|
return function(e, t) { |
|
|
var n, r, i = f(e), o = [], a = []; |
|
|
for (o[15] = a[15] = void 0, |
|
|
i.length > 16 && (i = u(i, 8 * e.length)), |
|
|
n = 0; n < 16; n += 1) |
|
|
o[n] = 909522486 ^ i[n], |
|
|
a[n] = 1549556828 ^ i[n]; |
|
|
return r = u(o.concat(f(t)), 512 + 8 * t.length), |
|
|
p(u(a.concat(r), 640)) |
|
|
}(v(e), v(t)) |
|
|
} |
|
|
function b(e, t, n) { |
|
|
return t ? n ? m(t, e) : function(e, t) { |
|
|
return h(m(e, t)) |
|
|
}(t, e) : n ? g(e) : function(e) { |
|
|
return h(g(e)) |
|
|
}(e) |
|
|
} |
|
|
void 0 !== (r = function() { |
|
|
return b |
|
|
} |
|
|
.call(t, n, t, e)) && (e.exports = r) |
|
|
}() |
|
|
} |
|
|
, function(e, t, n) { |
|
|
e.exports = function() { |
|
|
"use strict"; |
|
|
var e = function(e, t) { |
|
|
return function(e) { |
|
|
var t = e.exports = function() { |
|
|
return new RegExp("(?:" + t.line().source + ")|(?:" + t.block().source + ")","gm") |
|
|
} |
|
|
; |
|
|
t.line = function() { |
|
|
return /(?:^|\s)\/\/(.+?)$/gm |
|
|
} |
|
|
, |
|
|
t.block = function() { |
|
|
return /\/\*([\S\s]*?)\*\//gm |
|
|
} |
|
|
}(t = { |
|
|
exports: {} |
|
|
}), |
|
|
t.exports |
|
|
}() |
|
|
, t = ["23AC69", "91C132", "F19726", "E8552D", "1AAB8E", "E1147F", "2980C1", "1BA1E6", "9FA0A0", "F19726", "E30B20", "E30B20", "A3338B"]; |
|
|
return function(n, r) { |
|
|
void 0 === r && (r = {}); |
|
|
var i = r.colors; |
|
|
void 0 === i && (i = t); |
|
|
var o = 0 |
|
|
, a = {} |
|
|
, s = new RegExp("(" + /[\u4E00-\u9FFF\u3400-\u4dbf\uf900-\ufaff\u3040-\u309f\uac00-\ud7af\u0400-\u04FF]+|\w+/.source + "|" + /</.source + ")|(" + e().source + ")","gmi"); |
|
|
return n.replace(s, function(e, t, n) { |
|
|
if (n) |
|
|
return function(e) { |
|
|
return '<span style="color: slategray">' + e + "</span>" |
|
|
}(n); |
|
|
if ("<" === t) |
|
|
return "<"; |
|
|
var r; |
|
|
a[t] ? r = a[t] : (r = i[o], |
|
|
a[t] = r); |
|
|
var s = '<span style="color: #' + r + '">' + t + "</span>"; |
|
|
return o = ++o % i.length, |
|
|
s |
|
|
}) |
|
|
} |
|
|
}() |
|
|
} |
|
|
, function(e, t, n) { |
|
|
(function(t) { |
|
|
!function(t) { |
|
|
"use strict"; |
|
|
function n(e) { |
|
|
this.tokens = [], |
|
|
this.tokens.links = {}, |
|
|
this.options = e || h.defaults, |
|
|
this.rules = v.normal, |
|
|
this.options.pedantic ? this.rules = v.pedantic : this.options.gfm && (this.options.tables ? this.rules = v.tables : this.rules = v.gfm) |
|
|
} |
|
|
function r(e, t) { |
|
|
if (this.options = t || h.defaults, |
|
|
this.links = e, |
|
|
this.rules = g.normal, |
|
|
this.renderer = this.options.renderer || new i, |
|
|
this.renderer.options = this.options, |
|
|
!this.links) |
|
|
throw new Error("Tokens array requires a `links` property."); |
|
|
this.options.pedantic ? this.rules = g.pedantic : this.options.gfm && (this.options.breaks ? this.rules = g.breaks : this.rules = g.gfm) |
|
|
} |
|
|
function i(e) { |
|
|
this.options = e || h.defaults |
|
|
} |
|
|
function o() {} |
|
|
function a(e) { |
|
|
this.tokens = [], |
|
|
this.token = null, |
|
|
this.options = e || h.defaults, |
|
|
this.options.renderer = this.options.renderer || new i, |
|
|
this.renderer = this.options.renderer, |
|
|
this.renderer.options = this.options |
|
|
} |
|
|
function s(e, t) { |
|
|
return e.replace(t ? /&/g : /&(?!#?\w+;)/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'") |
|
|
} |
|
|
function l(e) { |
|
|
return e.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi, function(e, t) { |
|
|
return "colon" === (t = t.toLowerCase()) ? ":" : "#" === t.charAt(0) ? "x" === t.charAt(1) ? String.fromCharCode(parseInt(t.substring(2), 16)) : String.fromCharCode(+t.substring(1)) : "" |
|
|
}) |
|
|
} |
|
|
function c(e, t) { |
|
|
return e = e.source || e, |
|
|
t = t || "", |
|
|
{ |
|
|
replace: function(t, n) { |
|
|
return n = (n = n.source || n).replace(/(^|[^\[])\^/g, "$1"), |
|
|
e = e.replace(t, n), |
|
|
this |
|
|
}, |
|
|
getRegex: function() { |
|
|
return new RegExp(e,t) |
|
|
} |
|
|
} |
|
|
} |
|
|
function d(e, t) { |
|
|
return m[" " + e] || (/^[^:]+:\/*[^\/]*$/.test(e) ? m[" " + e] = e + "/" : m[" " + e] = e.replace(/[^\/]*$/, "")), |
|
|
e = m[" " + e], |
|
|
"//" === t.slice(0, 2) ? e.replace(/:[\s\S]*/, ":") + t : "/" === t.charAt(0) ? e.replace(/(:\/*[^\/]*)[\s\S]*/, "$1") + t : e + t |
|
|
} |
|
|
function u() {} |
|
|
function p(e) { |
|
|
for (var t, n, r = 1; r < arguments.length; r++) |
|
|
for (n in t = arguments[r]) |
|
|
Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]); |
|
|
return e |
|
|
} |
|
|
function f(e, t) { |
|
|
var n = e.replace(/([^\\])\|/g, "$1 |").split(/ +\| */) |
|
|
, r = 0; |
|
|
if (n.length > t) |
|
|
n.splice(t); |
|
|
else |
|
|
for (; n.length < t; ) |
|
|
n.push(""); |
|
|
for (; r < n.length; r++) |
|
|
n[r] = n[r].replace(/\\\|/g, "|"); |
|
|
return n |
|
|
} |
|
|
function h(e, t, r) { |
|
|
if (void 0 === e || null === e) |
|
|
throw new Error("marked(): input parameter is undefined or null"); |
|
|
if ("string" != typeof e) |
|
|
throw new Error("marked(): input parameter is of type " + Object.prototype.toString.call(e) + ", string expected"); |
|
|
if (r || "function" == typeof t) { |
|
|
r || (r = t, |
|
|
t = null); |
|
|
var i, o, l = (t = p({}, h.defaults, t || {})).highlight, c = 0; |
|
|
try { |
|
|
i = n.lex(e, t) |
|
|
} catch (e) { |
|
|
return r(e) |
|
|
} |
|
|
o = i.length; |
|
|
var d = function(e) { |
|
|
if (e) |
|
|
return t.highlight = l, |
|
|
r(e); |
|
|
var n; |
|
|
try { |
|
|
n = a.parse(i, t) |
|
|
} catch (t) { |
|
|
e = t |
|
|
} |
|
|
return t.highlight = l, |
|
|
e ? r(e) : r(null, n) |
|
|
}; |
|
|
if (!l || l.length < 3) |
|
|
return d(); |
|
|
if (delete t.highlight, |
|
|
!o) |
|
|
return d(); |
|
|
for (; c < i.length; c++) |
|
|
!function(e) { |
|
|
"code" !== e.type ? --o || d() : l(e.text, e.lang, function(t, n) { |
|
|
return t ? d(t) : null == n || n === e.text ? --o || d() : (e.text = n, |
|
|
e.escaped = !0, |
|
|
void (--o || d())) |
|
|
}) |
|
|
}(i[c]) |
|
|
} else |
|
|
try { |
|
|
return t && (t = p({}, h.defaults, t)), |
|
|
a.parse(n.lex(e, t), t) |
|
|
} catch (e) { |
|
|
if (e.message += "\nPlease report this to https://github.com/markedjs/marked.", |
|
|
(t || h.defaults).silent) |
|
|
return "<p>An error occurred:</p><pre>" + s(e.message + "", !0) + "</pre>"; |
|
|
throw e |
|
|
} |
|
|
} |
|
|
var v = { |
|
|
newline: /^\n+/, |
|
|
code: /^( {4}[^\n]+\n*)+/, |
|
|
fences: u, |
|
|
hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/, |
|
|
heading: /^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/, |
|
|
nptable: u, |
|
|
blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/, |
|
|
list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/, |
|
|
html: "^ {0,3}(?:<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?\\?>\\n*|<![A-Z][\\s\\S]*?>\\n*|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\n*|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$)|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=\\h*\\n)[\\s\\S]*?(?:\\n{2,}|$))", |
|
|
def: /^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/, |
|
|
table: u, |
|
|
lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/, |
|
|
paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading| {0,3}>|<\/?(?:tag)(?: +|\n|\/?>)|<(?:script|pre|style|!--))[^\n]+)*)/, |
|
|
text: /^[^\n]+/, |
|
|
_label: /(?!\s*\])(?:\\[\[\]]|[^\[\]])+/, |
|
|
_title: /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/ |
|
|
}; |
|
|
v.def = c(v.def).replace("label", v._label).replace("title", v._title).getRegex(), |
|
|
v.bullet = /(?:[*+-]|\d+\.)/, |
|
|
v.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/, |
|
|
v.item = c(v.item, "gm").replace(/bull/g, v.bullet).getRegex(), |
|
|
v.list = c(v.list).replace(/bull/g, v.bullet).replace("hr", "\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def", "\\n+(?=" + v.def.source + ")").getRegex(), |
|
|
v._tag = "address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul", |
|
|
v._comment = /<!--(?!-?>)[\s\S]*?-->/, |
|
|
v.html = c(v.html, "i").replace("comment", v._comment).replace("tag", v._tag).replace("attribute", / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(), |
|
|
v.paragraph = c(v.paragraph).replace("hr", v.hr).replace("heading", v.heading).replace("lheading", v.lheading).replace("tag", v._tag).getRegex(), |
|
|
v.blockquote = c(v.blockquote).replace("paragraph", v.paragraph).getRegex(), |
|
|
v.normal = p({}, v), |
|
|
v.gfm = p({}, v.normal, { |
|
|
fences: /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\n? *\1 *(?:\n+|$)/, |
|
|
paragraph: /^/, |
|
|
heading: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/ |
|
|
}), |
|
|
v.gfm.paragraph = c(v.paragraph).replace("(?!", "(?!" + v.gfm.fences.source.replace("\\1", "\\2") + "|" + v.list.source.replace("\\1", "\\3") + "|").getRegex(), |
|
|
v.tables = p({}, v.gfm, { |
|
|
nptable: /^ *([^|\n ].*\|.*)\n *([-:]+ *\|[-| :]*)(?:\n((?:.*[^>\n ].*(?:\n|$))*)\n*|$)/, |
|
|
table: /^ *\|(.+)\n *\|?( *[-:]+[-| :]*)(?:\n((?: *[^>\n ].*(?:\n|$))*)\n*|$)/ |
|
|
}), |
|
|
v.pedantic = p({}, v.normal, { |
|
|
html: c("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment", v._comment).replace(/tag/g, "(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(), |
|
|
def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/ |
|
|
}), |
|
|
n.rules = v, |
|
|
n.lex = function(e, t) { |
|
|
return new n(t).lex(e) |
|
|
} |
|
|
, |
|
|
n.prototype.lex = function(e) { |
|
|
return e = e.replace(/\r\n|\r/g, "\n").replace(/\t/g, " ").replace(/\u00a0/g, " ").replace(/\u2424/g, "\n"), |
|
|
this.token(e, !0) |
|
|
} |
|
|
, |
|
|
n.prototype.token = function(e, t) { |
|
|
e = e.replace(/^ +$/gm, ""); |
|
|
for (var n, r, i, o, a, s, l, c, d, u, p, h, g; e; ) |
|
|
if ((i = this.rules.newline.exec(e)) && (e = e.substring(i[0].length), |
|
|
i[0].length > 1 && this.tokens.push({ |
|
|
type: "space" |
|
|
})), |
|
|
i = this.rules.code.exec(e)) |
|
|
e = e.substring(i[0].length), |
|
|
i = i[0].replace(/^ {4}/gm, ""), |
|
|
this.tokens.push({ |
|
|
type: "code", |
|
|
text: this.options.pedantic ? i : i.replace(/\n+$/, "") |
|
|
}); |
|
|
else if (i = this.rules.fences.exec(e)) |
|
|
e = e.substring(i[0].length), |
|
|
this.tokens.push({ |
|
|
type: "code", |
|
|
lang: i[2], |
|
|
text: i[3] || "" |
|
|
}); |
|
|
else if (i = this.rules.heading.exec(e)) |
|
|
e = e.substring(i[0].length), |
|
|
this.tokens.push({ |
|
|
type: "heading", |
|
|
depth: i[1].length, |
|
|
text: i[2] |
|
|
}); |
|
|
else if (t && (i = this.rules.nptable.exec(e)) && (s = { |
|
|
type: "table", |
|
|
header: f(i[1].replace(/^ *| *\| *$/g, "")), |
|
|
align: i[2].replace(/^ *|\| *$/g, "").split(/ *\| */), |
|
|
cells: i[3] ? i[3].replace(/\n$/, "").split("\n") : [] |
|
|
}).header.length === s.align.length) { |
|
|
for (e = e.substring(i[0].length), |
|
|
c = 0; c < s.align.length; c++) |
|
|
/^ *-+: *$/.test(s.align[c]) ? s.align[c] = "right" : /^ *:-+: *$/.test(s.align[c]) ? s.align[c] = "center" : /^ *:-+ *$/.test(s.align[c]) ? s.align[c] = "left" : s.align[c] = null; |
|
|
for (c = 0; c < s.cells.length; c++) |
|
|
s.cells[c] = f(s.cells[c], s.header.length); |
|
|
this.tokens.push(s) |
|
|
} else if (i = this.rules.hr.exec(e)) |
|
|
e = e.substring(i[0].length), |
|
|
this.tokens.push({ |
|
|
type: "hr" |
|
|
}); |
|
|
else if (i = this.rules.blockquote.exec(e)) |
|
|
e = e.substring(i[0].length), |
|
|
this.tokens.push({ |
|
|
type: "blockquote_start" |
|
|
}), |
|
|
i = i[0].replace(/^ *> ?/gm, ""), |
|
|
this.token(i, t), |
|
|
this.tokens.push({ |
|
|
type: "blockquote_end" |
|
|
}); |
|
|
else if (i = this.rules.list.exec(e)) { |
|
|
for (e = e.substring(i[0].length), |
|
|
p = (o = i[2]).length > 1, |
|
|
this.tokens.push({ |
|
|
type: "list_start", |
|
|
ordered: p, |
|
|
start: p ? +o : "" |
|
|
}), |
|
|
n = !1, |
|
|
u = (i = i[0].match(this.rules.item)).length, |
|
|
c = 0; c < u; c++) |
|
|
l = (s = i[c]).length, |
|
|
~(s = s.replace(/^ *([*+-]|\d+\.) +/, "")).indexOf("\n ") && (l -= s.length, |
|
|
s = this.options.pedantic ? s.replace(/^ {1,4}/gm, "") : s.replace(new RegExp("^ {1," + l + "}","gm"), "")), |
|
|
this.options.smartLists && c !== u - 1 && (o === (a = v.bullet.exec(i[c + 1])[0]) || o.length > 1 && a.length > 1 || (e = i.slice(c + 1).join("\n") + e, |
|
|
c = u - 1)), |
|
|
r = n || /\n\n(?!\s*$)/.test(s), |
|
|
c !== u - 1 && (n = "\n" === s.charAt(s.length - 1), |
|
|
r || (r = n)), |
|
|
g = void 0, |
|
|
(h = /^\[[ xX]\] /.test(s)) && (g = " " !== s[1], |
|
|
s = s.replace(/^\[[ xX]\] +/, "")), |
|
|
this.tokens.push({ |
|
|
type: r ? "loose_item_start" : "list_item_start", |
|
|
task: h, |
|
|
checked: g |
|
|
}), |
|
|
this.token(s, !1), |
|
|
this.tokens.push({ |
|
|
type: "list_item_end" |
|
|
}); |
|
|
this.tokens.push({ |
|
|
type: "list_end" |
|
|
}) |
|
|
} else if (i = this.rules.html.exec(e)) |
|
|
e = e.substring(i[0].length), |
|
|
this.tokens.push({ |
|
|
type: this.options.sanitize ? "paragraph" : "html", |
|
|
pre: !this.options.sanitizer && ("pre" === i[1] || "script" === i[1] || "style" === i[1]), |
|
|
text: i[0] |
|
|
}); |
|
|
else if (t && (i = this.rules.def.exec(e))) |
|
|
e = e.substring(i[0].length), |
|
|
i[3] && (i[3] = i[3].substring(1, i[3].length - 1)), |
|
|
d = i[1].toLowerCase().replace(/\s+/g, " "), |
|
|
this.tokens.links[d] || (this.tokens.links[d] = { |
|
|
href: i[2], |
|
|
title: i[3] |
|
|
}); |
|
|
else if (t && (i = this.rules.table.exec(e)) && (s = { |
|
|
type: "table", |
|
|
header: f(i[1].replace(/^ *| *\| *$/g, "")), |
|
|
align: i[2].replace(/^ *|\| *$/g, "").split(/ *\| */), |
|
|
cells: i[3] ? i[3].replace(/(?: *\| *)?\n$/, "").split("\n") : [] |
|
|
}).header.length === s.align.length) { |
|
|
for (e = e.substring(i[0].length), |
|
|
c = 0; c < s.align.length; c++) |
|
|
/^ *-+: *$/.test(s.align[c]) ? s.align[c] = "right" : /^ *:-+: *$/.test(s.align[c]) ? s.align[c] = "center" : /^ *:-+ *$/.test(s.align[c]) ? s.align[c] = "left" : s.align[c] = null; |
|
|
for (c = 0; c < s.cells.length; c++) |
|
|
s.cells[c] = f(s.cells[c].replace(/^ *\| *| *\| *$/g, ""), s.header.length); |
|
|
this.tokens.push(s) |
|
|
} else if (i = this.rules.lheading.exec(e)) |
|
|
e = e.substring(i[0].length), |
|
|
this.tokens.push({ |
|
|
type: "heading", |
|
|
depth: "=" === i[2] ? 1 : 2, |
|
|
text: i[1] |
|
|
}); |
|
|
else if (t && (i = this.rules.paragraph.exec(e))) |
|
|
e = e.substring(i[0].length), |
|
|
this.tokens.push({ |
|
|
type: "paragraph", |
|
|
text: "\n" === i[1].charAt(i[1].length - 1) ? i[1].slice(0, -1) : i[1] |
|
|
}); |
|
|
else if (i = this.rules.text.exec(e)) |
|
|
e = e.substring(i[0].length), |
|
|
this.tokens.push({ |
|
|
type: "text", |
|
|
text: i[0] |
|
|
}); |
|
|
else if (e) |
|
|
throw new Error("Infinite loop on byte: " + e.charCodeAt(0)); |
|
|
return this.tokens |
|
|
} |
|
|
; |
|
|
var g = { |
|
|
escape: /^\\([!"#$%&'()*+,\-.\/:;<=>?@\[\]\\^_`{|}~])/, |
|
|
autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/, |
|
|
url: u, |
|
|
tag: "^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>", |
|
|
link: /^!?\[(label)\]\(href(?:\s+(title))?\s*\)/, |
|
|
reflink: /^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/, |
|
|
nolink: /^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/, |
|
|
strong: /^__([^\s][\s\S]*?[^\s])__(?!_)|^\*\*([^\s][\s\S]*?[^\s])\*\*(?!\*)|^__([^\s])__(?!_)|^\*\*([^\s])\*\*(?!\*)/, |
|
|
em: /^_([^\s][\s\S]*?[^\s_])_(?!_)|^_([^\s_][\s\S]*?[^\s])_(?!_)|^\*([^\s][\s\S]*?[^\s*])\*(?!\*)|^\*([^\s*][\s\S]*?[^\s])\*(?!\*)|^_([^\s_])_(?!_)|^\*([^\s*])\*(?!\*)/, |
|
|
code: /^(`+)\s*([\s\S]*?[^`]?)\s*\1(?!`)/, |
|
|
br: /^ {2,}\n(?!\s*$)/, |
|
|
del: u, |
|
|
text: /^[\s\S]+?(?=[\\<!\[`*]|\b_| {2,}\n|$)/, |
|
|
_escapes: /\\([!"#$%&'()*+,\-.\/:;<=>?@\[\]\\^_`{|}~])/g, |
|
|
_scheme: /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/, |
|
|
_email: /[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/ |
|
|
}; |
|
|
g.autolink = c(g.autolink).replace("scheme", g._scheme).replace("email", g._email).getRegex(), |
|
|
g._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/, |
|
|
g.tag = c(g.tag).replace("comment", v._comment).replace("attribute", g._attribute).getRegex(), |
|
|
g._label = /(?:\[[^\[\]]*\]|\\[\[\]]?|`[^`]*`|[^\[\]\\])*?/, |
|
|
g._href = /\s*(<(?:\\[<>]?|[^\s<>\\])*>|(?:\\[()]?|\([^\s\x00-\x1f()\\]*\)|[^\s\x00-\x1f()\\])*?)/, |
|
|
g._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/, |
|
|
g.link = c(g.link).replace("label", g._label).replace("href", g._href).replace("title", g._title).getRegex(), |
|
|
g.reflink = c(g.reflink).replace("label", g._label).getRegex(), |
|
|
g.normal = p({}, g), |
|
|
g.pedantic = p({}, g.normal, { |
|
|
strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/, |
|
|
em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/, |
|
|
link: c(/^!?\[(label)\]\((.*?)\)/).replace("label", g._label).getRegex(), |
|
|
reflink: c(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label", g._label).getRegex() |
|
|
}), |
|
|
g.gfm = p({}, g.normal, { |
|
|
escape: c(g.escape).replace("])", "~|])").getRegex(), |
|
|
url: c(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace("email", g._email).getRegex(), |
|
|
_backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/, |
|
|
del: /^~~(?=\S)([\s\S]*?\S)~~/, |
|
|
text: c(g.text).replace("]|", "~]|").replace("|", "|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&'*+/=?^_`{\\|}~-]+@|").getRegex() |
|
|
}), |
|
|
g.breaks = p({}, g.gfm, { |
|
|
br: c(g.br).replace("{2,}", "*").getRegex(), |
|
|
text: c(g.gfm.text).replace("{2,}", "*").getRegex() |
|
|
}), |
|
|
r.rules = g, |
|
|
r.output = function(e, t, n) { |
|
|
return new r(t,n).output(e) |
|
|
} |
|
|
, |
|
|
r.prototype.output = function(e) { |
|
|
for (var t, n, i, o, a, l = ""; e; ) |
|
|
if (a = this.rules.escape.exec(e)) |
|
|
e = e.substring(a[0].length), |
|
|
l += a[1]; |
|
|
else if (a = this.rules.autolink.exec(e)) |
|
|
e = e.substring(a[0].length), |
|
|
"@" === a[2] ? i = "mailto:" + (n = s(this.mangle(a[1]))) : i = n = s(a[1]), |
|
|
l += this.renderer.link(i, null, n); |
|
|
else if (this.inLink || !(a = this.rules.url.exec(e))) { |
|
|
if (a = this.rules.tag.exec(e)) |
|
|
!this.inLink && /^<a /i.test(a[0]) ? this.inLink = !0 : this.inLink && /^<\/a>/i.test(a[0]) && (this.inLink = !1), |
|
|
e = e.substring(a[0].length), |
|
|
l += this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(a[0]) : s(a[0]) : a[0]; |
|
|
else if (a = this.rules.link.exec(e)) |
|
|
e = e.substring(a[0].length), |
|
|
this.inLink = !0, |
|
|
i = a[2], |
|
|
this.options.pedantic ? (t = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(i)) ? (i = t[1], |
|
|
o = t[3]) : o = "" : o = a[3] ? a[3].slice(1, -1) : "", |
|
|
i = i.trim().replace(/^<([\s\S]*)>$/, "$1"), |
|
|
l += this.outputLink(a, { |
|
|
href: r.escapes(i), |
|
|
title: r.escapes(o) |
|
|
}), |
|
|
this.inLink = !1; |
|
|
else if ((a = this.rules.reflink.exec(e)) || (a = this.rules.nolink.exec(e))) { |
|
|
if (e = e.substring(a[0].length), |
|
|
t = (a[2] || a[1]).replace(/\s+/g, " "), |
|
|
!(t = this.links[t.toLowerCase()]) || !t.href) { |
|
|
l += a[0].charAt(0), |
|
|
e = a[0].substring(1) + e; |
|
|
continue |
|
|
} |
|
|
this.inLink = !0, |
|
|
l += this.outputLink(a, t), |
|
|
this.inLink = !1 |
|
|
} else if (a = this.rules.strong.exec(e)) |
|
|
e = e.substring(a[0].length), |
|
|
l += this.renderer.strong(this.output(a[4] || a[3] || a[2] || a[1])); |
|
|
else if (a = this.rules.em.exec(e)) |
|
|
e = e.substring(a[0].length), |
|
|
l += this.renderer.em(this.output(a[6] || a[5] || a[4] || a[3] || a[2] || a[1])); |
|
|
else if (a = this.rules.code.exec(e)) |
|
|
e = e.substring(a[0].length), |
|
|
l += this.renderer.codespan(s(a[2].trim(), !0)); |
|
|
else if (a = this.rules.br.exec(e)) |
|
|
e = e.substring(a[0].length), |
|
|
l += this.renderer.br(); |
|
|
else if (a = this.rules.del.exec(e)) |
|
|
e = e.substring(a[0].length), |
|
|
l += this.renderer.del(this.output(a[1])); |
|
|
else if (a = this.rules.text.exec(e)) |
|
|
e = e.substring(a[0].length), |
|
|
l += this.renderer.text(s(this.smartypants(a[0]))); |
|
|
else if (e) |
|
|
throw new Error("Infinite loop on byte: " + e.charCodeAt(0)) |
|
|
} else |
|
|
a[0] = this.rules._backpedal.exec(a[0])[0], |
|
|
e = e.substring(a[0].length), |
|
|
"@" === a[2] ? i = "mailto:" + (n = s(a[0])) : (n = s(a[0]), |
|
|
i = "www." === a[1] ? "http://" + n : n), |
|
|
l += this.renderer.link(i, null, n); |
|
|
return l |
|
|
} |
|
|
, |
|
|
r.escapes = function(e) { |
|
|
return e ? e.replace(r.rules._escapes, "$1") : e |
|
|
} |
|
|
, |
|
|
r.prototype.outputLink = function(e, t) { |
|
|
var n = t.href |
|
|
, r = t.title ? s(t.title) : null; |
|
|
return "!" !== e[0].charAt(0) ? this.renderer.link(n, r, this.output(e[1])) : this.renderer.image(n, r, s(e[1])) |
|
|
} |
|
|
, |
|
|
r.prototype.smartypants = function(e) { |
|
|
return this.options.smartypants ? e.replace(/---/g, "—").replace(/--/g, "–").replace(/(^|[-\u2014\/(\[{"\s])'/g, "$1‘").replace(/'/g, "’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g, "$1“").replace(/"/g, "”").replace(/\.{3}/g, "…") : e |
|
|
} |
|
|
, |
|
|
r.prototype.mangle = function(e) { |
|
|
if (!this.options.mangle) |
|
|
return e; |
|
|
for (var t, n = "", r = e.length, i = 0; i < r; i++) |
|
|
t = e.charCodeAt(i), |
|
|
Math.random() > .5 && (t = "x" + t.toString(16)), |
|
|
n += "&#" + t + ";"; |
|
|
return n |
|
|
} |
|
|
, |
|
|
i.prototype.code = function(e, t, n) { |
|
|
if (this.options.highlight) { |
|
|
var r = this.options.highlight(e, t); |
|
|
null != r && r !== e && (n = !0, |
|
|
e = r) |
|
|
} |
|
|
return t ? '<pre><code class="' + this.options.langPrefix + s(t, !0) + '">' + (n ? e : s(e, !0)) + "</code></pre>\n" : "<pre><code>" + (n ? e : s(e, !0)) + "</code></pre>" |
|
|
} |
|
|
, |
|
|
i.prototype.blockquote = function(e) { |
|
|
return "<blockquote>\n" + e + "</blockquote>\n" |
|
|
} |
|
|
, |
|
|
i.prototype.html = function(e) { |
|
|
return e |
|
|
} |
|
|
, |
|
|
i.prototype.heading = function(e, t, n) { |
|
|
return this.options.headerIds ? "<h" + t + ' id="' + this.options.headerPrefix + n.toLowerCase().replace(/[^\w]+/g, "-") + '">' + e + "</h" + t + ">\n" : "<h" + t + ">" + e + "</h" + t + ">\n" |
|
|
} |
|
|
, |
|
|
i.prototype.hr = function() { |
|
|
return this.options.xhtml ? "<hr/>\n" : "<hr>\n" |
|
|
} |
|
|
, |
|
|
i.prototype.list = function(e, t, n) { |
|
|
var r = t ? "ol" : "ul"; |
|
|
return "<" + r + (t && 1 !== n ? ' start="' + n + '"' : "") + ">\n" + e + "</" + r + ">\n" |
|
|
} |
|
|
, |
|
|
i.prototype.listitem = function(e) { |
|
|
return "<li>" + e + "</li>\n" |
|
|
} |
|
|
, |
|
|
i.prototype.checkbox = function(e) { |
|
|
return "<input " + (e ? 'checked="" ' : "") + 'disabled="" type="checkbox"' + (this.options.xhtml ? " /" : "") + "> " |
|
|
} |
|
|
, |
|
|
i.prototype.paragraph = function(e) { |
|
|
return "<p>" + e + "</p>\n" |
|
|
} |
|
|
, |
|
|
i.prototype.table = function(e, t) { |
|
|
return t && (t = "<tbody>" + t + "</tbody>"), |
|
|
"<table>\n<thead>\n" + e + "</thead>\n" + t + "</table>\n" |
|
|
} |
|
|
, |
|
|
i.prototype.tablerow = function(e) { |
|
|
return "<tr>\n" + e + "</tr>\n" |
|
|
} |
|
|
, |
|
|
i.prototype.tablecell = function(e, t) { |
|
|
var n = t.header ? "th" : "td"; |
|
|
return (t.align ? "<" + n + ' align="' + t.align + '">' : "<" + n + ">") + e + "</" + n + ">\n" |
|
|
} |
|
|
, |
|
|
i.prototype.strong = function(e) { |
|
|
return "<strong>" + e + "</strong>" |
|
|
} |
|
|
, |
|
|
i.prototype.em = function(e) { |
|
|
return "<em>" + e + "</em>" |
|
|
} |
|
|
, |
|
|
i.prototype.codespan = function(e) { |
|
|
return "<code>" + e + "</code>" |
|
|
} |
|
|
, |
|
|
i.prototype.br = function() { |
|
|
return this.options.xhtml ? "<br/>" : "<br>" |
|
|
} |
|
|
, |
|
|
i.prototype.del = function(e) { |
|
|
return "<del>" + e + "</del>" |
|
|
} |
|
|
, |
|
|
i.prototype.link = function(e, t, n) { |
|
|
if (this.options.sanitize) { |
|
|
try { |
|
|
var r = decodeURIComponent(l(e)).replace(/[^\w:]/g, "").toLowerCase() |
|
|
} catch (e) { |
|
|
return n |
|
|
} |
|
|
if (0 === r.indexOf("javascript:") || 0 === r.indexOf("vbscript:") || 0 === r.indexOf("data:")) |
|
|
return n |
|
|
} |
|
|
this.options.baseUrl && !b.test(e) && (e = d(this.options.baseUrl, e)); |
|
|
try { |
|
|
e = encodeURI(e).replace(/%25/g, "%") |
|
|
} catch (e) { |
|
|
return n |
|
|
} |
|
|
var i = '<a href="' + s(e) + '"'; |
|
|
return t && (i += ' title="' + t + '"'), |
|
|
i + ">" + n + "</a>" |
|
|
} |
|
|
, |
|
|
i.prototype.image = function(e, t, n) { |
|
|
this.options.baseUrl && !b.test(e) && (e = d(this.options.baseUrl, e)); |
|
|
var r = '<img src="' + e + '" alt="' + n + '"'; |
|
|
return t && (r += ' title="' + t + '"'), |
|
|
r + (this.options.xhtml ? "/>" : ">") |
|
|
} |
|
|
, |
|
|
i.prototype.text = function(e) { |
|
|
return e |
|
|
} |
|
|
, |
|
|
o.prototype.strong = o.prototype.em = o.prototype.codespan = o.prototype.del = o.prototype.text = function(e) { |
|
|
return e |
|
|
} |
|
|
, |
|
|
o.prototype.link = o.prototype.image = function(e, t, n) { |
|
|
return "" + n |
|
|
} |
|
|
, |
|
|
o.prototype.br = function() { |
|
|
return "" |
|
|
} |
|
|
, |
|
|
a.parse = function(e, t) { |
|
|
return new a(t).parse(e) |
|
|
} |
|
|
, |
|
|
a.prototype.parse = function(e) { |
|
|
this.inline = new r(e.links,this.options), |
|
|
this.inlineText = new r(e.links,p({}, this.options, { |
|
|
renderer: new o |
|
|
})), |
|
|
this.tokens = e.reverse(); |
|
|
for (var t = ""; this.next(); ) |
|
|
t += this.tok(); |
|
|
return t |
|
|
} |
|
|
, |
|
|
a.prototype.next = function() { |
|
|
return this.token = this.tokens.pop() |
|
|
} |
|
|
, |
|
|
a.prototype.peek = function() { |
|
|
return this.tokens[this.tokens.length - 1] || 0 |
|
|
} |
|
|
, |
|
|
a.prototype.parseText = function() { |
|
|
for (var e = this.token.text; "text" === this.peek().type; ) |
|
|
e += "\n" + this.next().text; |
|
|
return this.inline.output(e) |
|
|
} |
|
|
, |
|
|
a.prototype.tok = function() { |
|
|
switch (this.token.type) { |
|
|
case "space": |
|
|
return ""; |
|
|
case "hr": |
|
|
return this.renderer.hr(); |
|
|
case "heading": |
|
|
return this.renderer.heading(this.inline.output(this.token.text), this.token.depth, l(this.inlineText.output(this.token.text))); |
|
|
case "code": |
|
|
return this.renderer.code(this.token.text, this.token.lang, this.token.escaped); |
|
|
case "table": |
|
|
var e, t, n, r, i = "", o = ""; |
|
|
for (n = "", |
|
|
e = 0; e < this.token.header.length; e++) |
|
|
n += this.renderer.tablecell(this.inline.output(this.token.header[e]), { |
|
|
header: !0, |
|
|
align: this.token.align[e] |
|
|
}); |
|
|
for (i += this.renderer.tablerow(n), |
|
|
e = 0; e < this.token.cells.length; e++) { |
|
|
for (t = this.token.cells[e], |
|
|
n = "", |
|
|
r = 0; r < t.length; r++) |
|
|
n += this.renderer.tablecell(this.inline.output(t[r]), { |
|
|
header: !1, |
|
|
align: this.token.align[r] |
|
|
}); |
|
|
o += this.renderer.tablerow(n) |
|
|
} |
|
|
return this.renderer.table(i, o); |
|
|
case "blockquote_start": |
|
|
for (o = ""; "blockquote_end" !== this.next().type; ) |
|
|
o += this.tok(); |
|
|
return this.renderer.blockquote(o); |
|
|
case "list_start": |
|
|
o = ""; |
|
|
for (var a = this.token.ordered, s = this.token.start; "list_end" !== this.next().type; ) |
|
|
o += this.tok(); |
|
|
return this.renderer.list(o, a, s); |
|
|
case "list_item_start": |
|
|
for (o = "", |
|
|
this.token.task && (o += this.renderer.checkbox(this.token.checked)); "list_item_end" !== this.next().type; ) |
|
|
o += "text" === this.token.type ? this.parseText() : this.tok(); |
|
|
return this.renderer.listitem(o); |
|
|
case "loose_item_start": |
|
|
for (o = ""; "list_item_end" !== this.next().type; ) |
|
|
o += this.tok(); |
|
|
return this.renderer.listitem(o); |
|
|
case "html": |
|
|
return this.renderer.html(this.token.text); |
|
|
case "paragraph": |
|
|
return this.renderer.paragraph(this.inline.output(this.token.text)); |
|
|
case "text": |
|
|
return this.renderer.paragraph(this.parseText()) |
|
|
} |
|
|
} |
|
|
; |
|
|
var m = {} |
|
|
, b = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i; |
|
|
u.exec = u, |
|
|
h.options = h.setOptions = function(e) { |
|
|
return p(h.defaults, e), |
|
|
h |
|
|
} |
|
|
, |
|
|
h.getDefaults = function() { |
|
|
return { |
|
|
baseUrl: null, |
|
|
breaks: !1, |
|
|
gfm: !0, |
|
|
headerIds: !0, |
|
|
headerPrefix: "", |
|
|
highlight: null, |
|
|
langPrefix: "language-", |
|
|
mangle: !0, |
|
|
pedantic: !1, |
|
|
renderer: new i, |
|
|
sanitize: !1, |
|
|
sanitizer: null, |
|
|
silent: !1, |
|
|
smartLists: !1, |
|
|
smartypants: !1, |
|
|
tables: !0, |
|
|
xhtml: !1 |
|
|
} |
|
|
} |
|
|
, |
|
|
h.defaults = h.getDefaults(), |
|
|
h.Parser = a, |
|
|
h.parser = a.parse, |
|
|
h.Renderer = i, |
|
|
h.TextRenderer = o, |
|
|
h.Lexer = n, |
|
|
h.lexer = n.lex, |
|
|
h.InlineLexer = r, |
|
|
h.inlineLexer = r.output, |
|
|
h.parse = h, |
|
|
e.exports = h |
|
|
}(this || "undefined" != typeof window && window) |
|
|
} |
|
|
).call(t, n(10)) |
|
|
} |
|
|
, function(e, t) { |
|
|
e.exports = { |
|
|
name: "valine", |
|
|
version: "Volantis Edition (based on 1.3.10)", |
|
|
description: "A simple comment system based on Leancloud.", |
|
|
main: "/dist/Valine.min.js", |
|
|
author: "xCss <xioveliu@gmail.com> (https://github.com/xCss)", |
|
|
scripts: { |
|
|
test: "webpack", |
|
|
build: "webpack", |
|
|
dev: "webpack-dev-server --env.dev", |
|
|
clean: "rm -rf dist/* " |
|
|
}, |
|
|
keywords: ["simple", "easy-to-use", "fast-and-safe", "comment-system"], |
|
|
license: "GPL-2.0", |
|
|
repository: { |
|
|
type: "git", |
|
|
url: "git+https://github.com/xcss/Valine.git" |
|
|
}, |
|
|
homepage: "https://github.com/xcss/Valine#readme", |
|
|
devDependencies: { |
|
|
autoprefixer: "^7.1.1", |
|
|
autosize: "^4.0.2", |
|
|
"babel-core": "^6.25.0", |
|
|
"babel-loader": "^7.1.1", |
|
|
"babel-polyfill": "^6.23.0", |
|
|
"babel-preset-es2015": "^6.24.1", |
|
|
"babel-preset-stage-0": "^6.24.1", |
|
|
"blueimp-md5": "^2.8.0", |
|
|
"css-loader": "^0.28.4", |
|
|
"exports-loader": "^0.6.3", |
|
|
"file-loader": "^0.11.2", |
|
|
hanabi: "^0.4.0", |
|
|
marked: "^0.4.0", |
|
|
"node-sass": "^4.9.2", |
|
|
"postcss-loader": "^2.0.5", |
|
|
"sass-loader": "^6.0.3", |
|
|
"style-loader": "^0.18.2", |
|
|
"url-loader": "^0.6.2", |
|
|
webpack: "^2.6.1", |
|
|
"webpack-cli": "^3.3.5", |
|
|
"webpack-dev-server": "^2.9.1" |
|
|
} |
|
|
} |
|
|
} |
|
|
, function(e, t) { |
|
|
var n; |
|
|
n = function() { |
|
|
return this |
|
|
}(); |
|
|
try { |
|
|
n = n || Function("return this")() || (0, |
|
|
eval)("this") |
|
|
} catch (e) { |
|
|
"object" == typeof window && (n = window) |
|
|
} |
|
|
e.exports = n |
|
|
} |
|
|
, function(e, t) { |
|
|
e.exports = { |
|
|
grinning: "😀", |
|
|
smiley: "😃", |
|
|
smile: "😄", |
|
|
grin: "😁", |
|
|
laughing: "😆", |
|
|
sweat_smile: "😅", |
|
|
joy: "😂", |
|
|
blush: "😊", |
|
|
innocent: "😇", |
|
|
wink: "😉", |
|
|
relieved: "😌", |
|
|
heart_eyes: "😍", |
|
|
kissing_heart: "😘", |
|
|
kissing: "😗", |
|
|
kissing_smiling_eyes: "😙", |
|
|
kissing_closed_eyes: "😚", |
|
|
yum: "😋", |
|
|
stuck_out_tongue_winking_eye: "😜", |
|
|
stuck_out_tongue_closed_eyes: "😝", |
|
|
stuck_out_tongue: "😛", |
|
|
sunglasses: "😎", |
|
|
smirk: "😏", |
|
|
unamused: "😒", |
|
|
disappointed: "😞", |
|
|
pensive: "😔", |
|
|
worried: "😟", |
|
|
confused: "😕", |
|
|
persevere: "😣", |
|
|
confounded: "😖", |
|
|
tired_face: "😫", |
|
|
weary: "😩", |
|
|
angry: "😠", |
|
|
rage: "😡", |
|
|
no_mouth: "😶", |
|
|
neutral_face: "😐", |
|
|
expressionless: "😑", |
|
|
hushed: "😯", |
|
|
frowning: "😦", |
|
|
anguished: "😧", |
|
|
open_mouth: "😮", |
|
|
astonished: "😲", |
|
|
dizzy_face: "😵", |
|
|
flushed: "😳", |
|
|
scream: "😱", |
|
|
fearful: "😨", |
|
|
cold_sweat: "😰", |
|
|
cry: "😢", |
|
|
disappointed_relieved: "😥", |
|
|
sob: "😭", |
|
|
sweat: "😓", |
|
|
sleepy: "😪", |
|
|
sleeping: "😴", |
|
|
mask: "😷", |
|
|
smiling_imp: "😈", |
|
|
smiley_cat: "😺", |
|
|
smile_cat: "😸", |
|
|
joy_cat: "😹", |
|
|
heart_eyes_cat: "😻", |
|
|
smirk_cat: "😼", |
|
|
kissing_cat: "😽", |
|
|
scream_cat: "🙀", |
|
|
crying_cat_face: "😿", |
|
|
pouting_cat: "😾", |
|
|
cat: "🐱", |
|
|
mouse: "🐭", |
|
|
cow: "🐮", |
|
|
monkey_face: "🐵", |
|
|
hand: "✋", |
|
|
fist: "✊", |
|
|
v: "✌️", |
|
|
point_up: "👆", |
|
|
point_down: "👇", |
|
|
point_left: "👈", |
|
|
point_right: "👉", |
|
|
facepunch: "👊", |
|
|
wave: "👋", |
|
|
clap: "👏", |
|
|
open_hands: "👐", |
|
|
"+1": "👍", |
|
|
"-1": "👎", |
|
|
ok_hand: "👌", |
|
|
pray: "🙏", |
|
|
ear: "👂", |
|
|
eyes: "👀", |
|
|
nose: "👃", |
|
|
lips: "👄", |
|
|
tongue: "👅", |
|
|
heart: "❤️", |
|
|
cupid: "💘", |
|
|
sparkling_heart: "💖", |
|
|
star: "⭐️", |
|
|
sparkles: "✨", |
|
|
zap: "⚡️", |
|
|
sunny: "☀️", |
|
|
cloud: "☁️", |
|
|
snowflake: "❄️", |
|
|
umbrella: "☔️", |
|
|
coffee: "☕️", |
|
|
airplane: "✈️", |
|
|
anchor: "⚓️", |
|
|
watch: "⌚️", |
|
|
phone: "☎️", |
|
|
hourglass: "⌛️", |
|
|
email: "✉️", |
|
|
scissors: "✂️", |
|
|
black_nib: "✒️", |
|
|
pencil2: "✏️", |
|
|
x: "❌", |
|
|
recycle: "♻️", |
|
|
white_check_mark: "✅", |
|
|
negative_squared_cross_mark: "❎", |
|
|
m: "Ⓜ️", |
|
|
i: "ℹ️", |
|
|
tm: "™️", |
|
|
copyright: "©️", |
|
|
registered: "®️" |
|
|
} |
|
|
} |
|
|
, function(e, t, n) { |
|
|
var r = n(13); |
|
|
"string" == typeof r && (r = [[e.i, r, ""]]); |
|
|
var i = { |
|
|
transform: void 0 |
|
|
}; |
|
|
n(15)(r, i), |
|
|
r.locals && (e.exports = r.locals) |
|
|
} |
|
|
, function(e, t, n) { |
|
|
(e.exports = n(14)(!1)).push([e.i, '.v{font-size:16px;text-align:left}.v *{-webkit-box-sizing:border-box;box-sizing:border-box;line-height:2;color:#555;-webkit-transition:all .3s ease;transition:all .3s ease}.v hr{margin:.825em 0;border-color:#f6f6f6;border-style:dashed}.v.hide-avatar .vimg{display:none}.v a{position:relative;cursor:pointer;color:#1abc9c;display:inline-block}.v a:before{content:"";position:absolute;width:0;right:0;bottom:0;height:1px;background:#1abc9c;-webkit-transition:width .3s ease;transition:width .3s ease}.v a:hover{color:#d7191a}.v a:hover:before{width:100%;left:0;right:auto}.v code,.v pre{background-color:#f6f6f6;color:#555;padding:.2em .4em;border-radius:3px;font-size:85%;margin:0;font-family:Source Code Pro,courier new,Input Mono,PT Mono,SFMono-Regular,Consolas,Monaco,Menlo,PingFang SC,Liberation Mono,Microsoft YaHei,Courier,monospace}.v pre{padding:10px;overflow:auto;line-height:1.45}.v pre code{padding:0;background:transparent;white-space:pre-wrap;word-break:keep-all}.v blockquote{color:#666;margin:.5em 0;padding:0 0 0 1em;border-left:8px solid hsla(0,0%,93%,.5)}.v .vinput{border:none;resize:none;outline:none;padding:10px 5px;max-width:100%;font-size:.775em}.v input[type=checkbox],.v input[type=radio]{display:inline-block;vertical-align:middle;margin-top:-2px}.v .vwrap{border:1px solid #f0f0f0;border-radius:4px;margin-bottom:10px;overflow:hidden;position:relative;padding:10px}.v .vwrap input{background:transparent}.v .vwrap .vedit{position:relative;padding-top:10px}.v .vwrap .vedit .vctrl{text-align:right;font-size:12px}.v .vwrap .vedit .vctrl span{padding:10px;display:inline-block;vertical-align:middle;cursor:pointer}.v .vwrap .vedit .vemojis{display:none;font-size:18px;text-align:justify;max-height:145px;overflow:auto;margin-bottom:10px;-webkit-box-shadow:0 0 1px #f0f0f0;box-shadow:0 0 1px #f0f0f0}.v .vwrap .vedit .vemojis i{font-style:normal;padding:7px 0;width:38px;cursor:pointer;text-align:center;display:inline-block;vertical-align:middle}.v .vwrap .vedit .vpreview{padding:7px;-webkit-box-shadow:0 0 1px #f0f0f0;box-shadow:0 0 1px #f0f0f0}.v .vwrap .vedit .vpreview frame,.v .vwrap .vedit .vpreview iframe,.v .vwrap .vedit .vpreview img{max-width:100%;border:none}.v .vwrap .vheader .vinput{width:33.33%;border-bottom:1px dashed #dedede}.v .vwrap .vheader.item2 .vinput{width:50%}.v .vwrap .vheader.item1 .vinput{width:100%}.v .vwrap .vheader .vinput:focus{border-bottom-color:#eb5055}@media screen and (max-width:520px){.v .vwrap .vheader.item2 .vinput,.v .vwrap .vheader .vinput{width:100%}}.v .vwrap .vcontrol{font-size:0;padding-top:15px}.v .vwrap .vcontrol .col{display:inline-block;font-size:16px;vertical-align:middle;color:#ccc}.v .vwrap .vcontrol .col.text-right{text-align:right}.v .vwrap .vcontrol .col svg{margin-right:2px;overflow:hidden;fill:currentColor;vertical-align:middle}.v .vwrap .vcontrol .col.col-20{width:20%}.v .vwrap .vcontrol .col.col-40{width:40%}.v .vwrap .vcontrol .col.col-60{width:60%}.v .vwrap .vcontrol .col.col-80{width:80%}.v .vwrap .vcontrol .col.split{width:50%}.v .vwrap .vmark{position:absolute;background:rgba(0,0,0,.65);width:100%;height:100%;left:0;top:0}.v .vwrap .vmark .valert{padding-top:3em}.v .vwrap .vmark .valert .vtext{color:#fff;padding:1em 0}.v .vwrap .vmark .valert .vcode{width:4.6875em;border-radius:.3125em;padding:.5em;background:#dedede}.v .vwrap .vmark .valert .vcode:focus{border-color:#3090e4;background-color:#fff}@media screen and (max-width:720px){.v .vwrap .vmark .valert{padding-top:5.5em}.v .vwrap .vmark .valert .vtext{color:#fff;padding:1em 0}}.v .power{color:#999;padding:.5em 0}.v .power,.v .power a{font-size:.75em}.v .vinfo{font-size:0;padding:5px}.v .vinfo .col{font-size:16px;display:inline-block;width:50%;vertical-align:middle}.v .vinfo .vcount .vnum{font-weight:600;font-size:1.25em}.v a{text-decoration:none;color:#555}.v a:hover{color:#222}.v ol,.v ul{padding:0;margin-left:1.25em}.v .txt-center{text-align:center}.v .txt-right{text-align:right}.v .pd5{padding:5px}.v .pd10{padding:10px}.v .veditor{width:100%;min-height:8.75em;font-size:.875em;background:transparent;resize:vertical;-webkit-transition:all .25s ease;transition:all .25s ease}.v .vbtn{-webkit-transition-duration:.4s;transition-duration:.4s;text-align:center;color:#313131;border:1px solid #ededed;border-radius:.3em;display:inline-block;background:#ededed;margin-bottom:0;font-weight:400;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;white-space:nowrap;padding:.5em 1.25em;font-size:.875em;line-height:1.42857143;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:none}.v .vbtn+.vbtn{margin-left:1.25em}.v .vbtn:active,.v .vbtn:hover{color:#3090e4;border-color:#3090e4;background-color:#fff}.v .vempty{padding:1.25em;text-align:center;color:#999}.v .vlist{width:100%}.v .vlist .vcard{padding-top:1.5em;position:relative;display:block}.v .vlist .vcard:after{content:"";clear:both;display:block}.v .vlist .vcard .vimg{width:3.125em;height:3.125em;float:left;border-radius:50%;margin-right:.7525em;border:1px solid #f5f5f5;padding:.125em}@media screen and (max-width:720px){.v .vlist .vcard .vimg{width:2.5em;height:2.5em}}.v .vlist .vcard .vhead{line-height:1.5;margin-top:0}.v .vlist .vcard .vhead .vnick{position:relative;font-size:.875em;font-weight:500;margin-right:.875em;cursor:pointer;color:#1abc9c;text-decoration:none;display:inline-block}.v .vlist .vcard .vhead .vnick:before{content:"";position:absolute;width:0;right:0;bottom:0;height:1px;background:#1abc9c;-webkit-transition:width .3s ease;transition:width .3s ease}.v .vlist .vcard .vhead .vnick:hover{color:#d7191a}.v .vlist .vcard .vhead .vnick:hover:before{width:100%;left:0;right:auto}.v .vlist .vcard .vhead .vsys{display:inline-block;padding:.2em .5em;background:#ededed;color:#b3b1b1;font-size:.75em;border-radius:.2em;margin-right:.3em}@media screen and (max-width:520px){.v .vlist .vcard .vhead .vsys{display:none}}.v .vlist .vcard .vh{overflow:hidden;padding-bottom:.5em;border-bottom:1px dashed #f5f5f5}.v .vlist .vcard .vh .vtime{color:#b3b3b3;font-size:.75em;margin-right:.875em}.v .vlist .vcard .vh .vmeta{line-height:1;position:relative}.v .vlist .vcard .vh .vmeta .vat{font-size:.8125em;color:#ef2f11;cursor:pointer;float:right}.v .vlist .vcard:last-child .vh{border-bottom:none}.v .vlist .vcard .vcontent{word-wrap:break-word;word-break:break-all;text-align:justify;color:#4a4a4a;font-size:.875em;line-height:2;position:relative;margin-bottom:.75em;padding-top:.625em}.v .vlist .vcard .vcontent frame,.v .vlist .vcard .vcontent iframe,.v .vlist .vcard .vcontent img{max-width:100%;border:none}.v .vlist .vcard .vcontent.expand{cursor:pointer;max-height:11.25em;overflow:hidden}.v .vlist .vcard .vcontent.expand:before{display:block;content:"";position:absolute;width:100%;left:0;top:0;bottom:3.15em;pointer-events:none;background:-webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,0)),to(hsla(0,0%,100%,.9)));background:linear-gradient(180deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.9))}.v .vlist .vcard .vcontent.expand:after{display:block;content:"Click on expand";text-align:center;color:#828586;position:absolute;width:100%;height:3.15em;line-height:3.15em;left:0;bottom:0;pointer-events:none;background:hsla(0,0%,100%,.9)}.v .vlist .vcard .vquote{color:#666;margin-top:1em;padding-left:1em;border-left:1px dashed hsla(0,0%,93%,.5)}.v .vlist .vcard .vquote .vimg{width:2.225em;height:2.225em}.v .vpage .vmore{margin:1em 0}.v .clear{content:"";display:block;clear:both}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes pulse{50%{background:#dcdcdc}}@keyframes pulse{50%{background:#dcdcdc}}.v .vloading{position:relative;padding:20px;display:block;height:80px}.v .vloading:before{-webkit-box-sizing:border-box;box-sizing:border-box;content:"";position:absolute;display:inline-block;top:20px;left:50%;margin-left:-20px;width:40px;height:40px;border:6px double #a0a0a0;border-top-color:transparent;border-bottom-color:transparent;border-radius:50%;-webkit-animation:spin 1s infinite linear;animation:spin 1s infinite linear}', ""]) |
|
|
} |
|
|
, function(e, t) { |
|
|
function n(e, t) { |
|
|
var n = e[1] || "" |
|
|
, r = e[3]; |
|
|
if (!r) |
|
|
return n; |
|
|
if (t && "function" == typeof btoa) { |
|
|
var i = function(e) { |
|
|
return "/*# sourceMappingURL=data:application/json;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(e)))) + " */" |
|
|
}(r); |
|
|
return [n].concat(r.sources.map(function(e) { |
|
|
return "/*# sourceURL=" + r.sourceRoot + e + " */" |
|
|
})).concat([i]).join("\n") |
|
|
} |
|
|
return [n].join("\n") |
|
|
} |
|
|
e.exports = function(e) { |
|
|
var t = []; |
|
|
return t.toString = function() { |
|
|
return this.map(function(t) { |
|
|
var r = n(t, e); |
|
|
return t[2] ? "@media " + t[2] + "{" + r + "}" : r |
|
|
}).join("") |
|
|
} |
|
|
, |
|
|
t.i = function(e, n) { |
|
|
"string" == typeof e && (e = [[null, e, ""]]); |
|
|
for (var r = {}, i = 0; i < this.length; i++) { |
|
|
var o = this[i][0]; |
|
|
"number" == typeof o && (r[o] = !0) |
|
|
} |
|
|
for (i = 0; i < e.length; i++) { |
|
|
var a = e[i]; |
|
|
"number" == typeof a[0] && r[a[0]] || (n && !a[2] ? a[2] = n : n && (a[2] = "(" + a[2] + ") and (" + n + ")"), |
|
|
t.push(a)) |
|
|
} |
|
|
} |
|
|
, |
|
|
t |
|
|
} |
|
|
} |
|
|
, function(e, t, n) { |
|
|
function r(e, t) { |
|
|
for (var n = 0; n < e.length; n++) { |
|
|
var r = e[n] |
|
|
, i = p[r.id]; |
|
|
if (i) { |
|
|
i.refs++; |
|
|
for (var o = 0; o < i.parts.length; o++) |
|
|
i.parts[o](r.parts[o]); |
|
|
for (; o < r.parts.length; o++) |
|
|
i.parts.push(d(r.parts[o], t)) |
|
|
} else { |
|
|
var a = []; |
|
|
for (o = 0; o < r.parts.length; o++) |
|
|
a.push(d(r.parts[o], t)); |
|
|
p[r.id] = { |
|
|
id: r.id, |
|
|
refs: 1, |
|
|
parts: a |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
function i(e, t) { |
|
|
for (var n = [], r = {}, i = 0; i < e.length; i++) { |
|
|
var o = e[i] |
|
|
, a = t.base ? o[0] + t.base : o[0] |
|
|
, s = { |
|
|
css: o[1], |
|
|
media: o[2], |
|
|
sourceMap: o[3] |
|
|
}; |
|
|
r[a] ? r[a].parts.push(s) : n.push(r[a] = { |
|
|
id: a, |
|
|
parts: [s] |
|
|
}) |
|
|
} |
|
|
return n |
|
|
} |
|
|
function o(e, t) { |
|
|
var n = h(e.insertInto); |
|
|
if (!n) |
|
|
throw new Error("Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid."); |
|
|
var r = m[m.length - 1]; |
|
|
if ("top" === e.insertAt) |
|
|
r ? r.nextSibling ? n.insertBefore(t, r.nextSibling) : n.appendChild(t) : n.insertBefore(t, n.firstChild), |
|
|
m.push(t); |
|
|
else { |
|
|
if ("bottom" !== e.insertAt) |
|
|
throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'."); |
|
|
n.appendChild(t) |
|
|
} |
|
|
} |
|
|
function a(e) { |
|
|
if (null === e.parentNode) |
|
|
return !1; |
|
|
e.parentNode.removeChild(e); |
|
|
var t = m.indexOf(e); |
|
|
t >= 0 && m.splice(t, 1) |
|
|
} |
|
|
function s(e) { |
|
|
var t = document.createElement("style"); |
|
|
return e.attrs.type = "text/css", |
|
|
c(t, e.attrs), |
|
|
o(e, t), |
|
|
t |
|
|
} |
|
|
function l(e) { |
|
|
var t = document.createElement("link"); |
|
|
return e.attrs.type = "text/css", |
|
|
e.attrs.rel = "stylesheet", |
|
|
c(t, e.attrs), |
|
|
o(e, t), |
|
|
t |
|
|
} |
|
|
function c(e, t) { |
|
|
Object.keys(t).forEach(function(n) { |
|
|
e.setAttribute(n, t[n]) |
|
|
}) |
|
|
} |
|
|
function d(e, t) { |
|
|
var n, r, i, o; |
|
|
if (t.transform && e.css) { |
|
|
if (!(o = t.transform(e.css))) |
|
|
return function() {} |
|
|
; |
|
|
e.css = o |
|
|
} |
|
|
if (t.singleton) { |
|
|
var c = g++; |
|
|
n = v || (v = s(t)), |
|
|
r = u.bind(null, n, c, !1), |
|
|
i = u.bind(null, n, c, !0) |
|
|
} else |
|
|
e.sourceMap && "function" == typeof URL && "function" == typeof URL.createObjectURL && "function" == typeof URL.revokeObjectURL && "function" == typeof Blob && "function" == typeof btoa ? (n = l(t), |
|
|
r = function(e, t, n) { |
|
|
var r = n.css |
|
|
, i = n.sourceMap |
|
|
, o = void 0 === t.convertToAbsoluteUrls && i; |
|
|
(t.convertToAbsoluteUrls || o) && (r = b(r)), |
|
|
i && (r += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(i)))) + " */"); |
|
|
var a = new Blob([r],{ |
|
|
type: "text/css" |
|
|
}) |
|
|
, s = e.href; |
|
|
e.href = URL.createObjectURL(a), |
|
|
s && URL.revokeObjectURL(s) |
|
|
} |
|
|
.bind(null, n, t), |
|
|
i = function() { |
|
|
a(n), |
|
|
n.href && URL.revokeObjectURL(n.href) |
|
|
} |
|
|
) : (n = s(t), |
|
|
r = function(e, t) { |
|
|
var n = t.css |
|
|
, r = t.media; |
|
|
if (r && e.setAttribute("media", r), |
|
|
e.styleSheet) |
|
|
e.styleSheet.cssText = n; |
|
|
else { |
|
|
for (; e.firstChild; ) |
|
|
e.removeChild(e.firstChild); |
|
|
e.appendChild(document.createTextNode(n)) |
|
|
} |
|
|
} |
|
|
.bind(null, n), |
|
|
i = function() { |
|
|
a(n) |
|
|
} |
|
|
); |
|
|
return r(e), |
|
|
function(t) { |
|
|
if (t) { |
|
|
if (t.css === e.css && t.media === e.media && t.sourceMap === e.sourceMap) |
|
|
return; |
|
|
r(e = t) |
|
|
} else |
|
|
i() |
|
|
} |
|
|
} |
|
|
function u(e, t, n, r) { |
|
|
var i = n ? "" : r.css; |
|
|
if (e.styleSheet) |
|
|
e.styleSheet.cssText = x(t, i); |
|
|
else { |
|
|
var o = document.createTextNode(i) |
|
|
, a = e.childNodes; |
|
|
a[t] && e.removeChild(a[t]), |
|
|
a.length ? e.insertBefore(o, a[t]) : e.appendChild(o) |
|
|
} |
|
|
} |
|
|
var p = {} |
|
|
, f = function(e) { |
|
|
var t; |
|
|
return function() { |
|
|
return void 0 === t && (t = function() { |
|
|
return window && document && document.all && !window.atob |
|
|
} |
|
|
.apply(this, arguments)), |
|
|
t |
|
|
} |
|
|
}() |
|
|
, h = function(e) { |
|
|
var t = {}; |
|
|
return function(e) { |
|
|
return void 0 === t[e] && (t[e] = function(e) { |
|
|
return document.querySelector(e) |
|
|
} |
|
|
.call(this, e)), |
|
|
t[e] |
|
|
} |
|
|
}() |
|
|
, v = null |
|
|
, g = 0 |
|
|
, m = [] |
|
|
, b = n(16); |
|
|
e.exports = function(e, t) { |
|
|
if ("undefined" != typeof DEBUG && DEBUG && "object" != typeof document) |
|
|
throw new Error("The style-loader cannot be used in a non-browser environment"); |
|
|
(t = t || {}).attrs = "object" == typeof t.attrs ? t.attrs : {}, |
|
|
t.singleton || (t.singleton = f()), |
|
|
t.insertInto || (t.insertInto = "head"), |
|
|
t.insertAt || (t.insertAt = "bottom"); |
|
|
var n = i(e, t); |
|
|
return r(n, t), |
|
|
function(e) { |
|
|
for (var o = [], a = 0; a < n.length; a++) { |
|
|
var s = n[a]; |
|
|
(l = p[s.id]).refs--, |
|
|
o.push(l) |
|
|
} |
|
|
e && r(i(e, t), t); |
|
|
for (a = 0; a < o.length; a++) { |
|
|
var l; |
|
|
if (0 === (l = o[a]).refs) { |
|
|
for (var c = 0; c < l.parts.length; c++) |
|
|
l.parts[c](); |
|
|
delete p[l.id] |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
; |
|
|
var x = function() { |
|
|
var e = []; |
|
|
return function(t, n) { |
|
|
return e[t] = n, |
|
|
e.filter(Boolean).join("\n") |
|
|
} |
|
|
}() |
|
|
} |
|
|
, function(e, t) { |
|
|
e.exports = function(e) { |
|
|
var t = "undefined" != typeof window && window.location; |
|
|
if (!t) |
|
|
throw new Error("fixUrls requires window.location"); |
|
|
if (!e || "string" != typeof e) |
|
|
return e; |
|
|
var n = t.protocol + "//" + t.host |
|
|
, r = n + t.pathname.replace(/\/[^\/]*$/, "/"); |
|
|
return e.replace(/url\s*\(((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*)\)/gi, function(e, t) { |
|
|
var i, o = t.trim().replace(/^"(.*)"$/, function(e, t) { |
|
|
return t |
|
|
}).replace(/^'(.*)'$/, function(e, t) { |
|
|
return t |
|
|
}); |
|
|
return /^(#|data:|http:\/\/|https:\/\/|file:\/\/\/)/i.test(o) ? e : (i = 0 === o.indexOf("//") ? o : 0 === o.indexOf("/") ? n + o : r + o.replace(/^\.\//, ""), |
|
|
"url(" + JSON.stringify(i) + ")") |
|
|
}) |
|
|
} |
|
|
} |
|
|
, function(e, t, n) { |
|
|
n(12), |
|
|
e.exports = n(1) |
|
|
} |
|
|
]) |
|
|
});
|
|
|
|