// 4.8.2 (2018-08-09) ! function() { //"use strict"; var e, t, n, r, o, i, a, u, s, c, l, f, d, m, g, p, h, v = function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t] }, q = function(n, r) { return function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; return n(r.apply(null, arguments)) } }, H = function(e) { return function() { return e } }, j = function(e) { return e }, b = function(i) { for (var e = [], t = 1; t < arguments.length; t++) e[t - 1] = arguments[t]; for (var a = new Array(arguments.length - 1), n = 1; n < arguments.length; n++) a[n - 1] = arguments[n]; return function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; for (var n = new Array(arguments.length), r = 0; r < n.length; r++) n[r] = arguments[r]; var o = a.concat(n); return i.apply(null, o) } }, y = H(!1), C = H(!0), x = y, w = C, N = function() { return E }, E = (r = { fold: function(e, t) { return e() }, is: x, isSome: x, isNone: w, getOr: n = function(e) { return e }, getOrThunk: t = function(e) { return e() }, getOrDie: function(e) { throw new Error(e || "error: getOrDie called on none.") }, getOrNull: function() { return null }, getOrUndefined: function() { return undefined }, or: n, orThunk: t, map: N, ap: N, each: function() {}, bind: N, flatten: N, exists: x, forall: w, filter: N, equals: e = function(e) { return e.isNone() }, equals_: e, toArray: function() { return [] }, toString: H("none()") }, Object.freeze && Object.freeze(r), r), S = function(n) { var e = function() { return n }, t = function() { return o }, r = function(e) { return e(n) }, o = { fold: function(e, t) { return t(n) }, is: function(e) { return n === e }, isSome: w, isNone: x, getOr: e, getOrThunk: e, getOrDie: e, getOrNull: e, getOrUndefined: e, or: t, orThunk: t, map: function(e) { return S(e(n)) }, ap: function(e) { return e.fold(N, function(e) { return S(e(n)) }) }, each: function(e) { e(n) }, bind: r, flatten: e, exists: r, forall: r, filter: function(e) { return e(n) ? o : E }, equals: function(e) { return e.is(n) }, equals_: function(e, t) { return e.fold(x, function(e) { return t(n, e) }) }, toArray: function() { return [n] }, toString: function() { return "some(" + n + ")" } }; return o }, A = { some: S, none: N, from: function(e) { return null === e || e === undefined ? E : S(e) } }, T = function(t) { return function(e) { return function(e) { if (null === e) return "null"; var t = typeof e; return "object" === t && Array.prototype.isPrototypeOf(e) ? "array" : "object" === t && String.prototype.isPrototypeOf(e) ? "string" : t }(e) === t } }, k = T("string"), _ = T("object"), R = T("array"), D = T("null"), B = T("boolean"), O = T("function"), P = T("number"), L = (o = Array.prototype.indexOf) === undefined ? function(e, t) { return X(e, t) } : function(e, t) { return o.call(e, t) }, I = function(e, t) { return -1 < L(e, t) }, M = function(e, t) { return K(e, t).isSome() }, $ = function(e, t) { for (var n = e.length, r = new Array(n), o = 0; o < n; o++) { var i = e[o]; r[o] = t(i, o, e) } return r }, F = function(e, t) { for (var n = 0, r = e.length; n < r; n++) t(e[n], n, e) }, W = function(e, t) { for (var n = [], r = [], o = 0, i = e.length; o < i; o++) { var a = e[o]; (t(a, o, e) ? n : r).push(a) } return { pass: n, fail: r } }, U = function(e, t) { for (var n = [], r = 0, o = e.length; r < o; r++) { var i = e[r]; t(i, r, e) && n.push(i) } return n }, z = function(e, t, n) { return F(e, function(e) { n = t(n, e) }), n }, V = function(e, t) { for (var n = 0, r = e.length; n < r; n++) { var o = e[n]; if (t(o, n, e)) return A.some(o) } return A.none() }, K = function(e, t) { for (var n = 0, r = e.length; n < r; n++) if (t(e[n], n, e)) return A.some(n); return A.none() }, X = function(e, t) { for (var n = 0, r = e.length; n < r; ++n) if (e[n] === t) return n; return -1 }, Y = Array.prototype.push, G = function(e, t) { return function(e) { for (var t = [], n = 0, r = e.length; n < r; ++n) { if (!Array.prototype.isPrototypeOf(e[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + e); Y.apply(t, e[n]) } return t }($(e, t)) }, J = function(e, t) { for (var n = 0, r = e.length; n < r; ++n) if (!0 !== t(e[n], n, e)) return !1; return !0 }, Q = Array.prototype.slice, Z = function(e, t) { return U(e, function(e) { return !I(t, e) }) }, ee = function(e) { return 0 === e.length ? A.none() : A.some(e[0]) }, te = function(e) { return 0 === e.length ? A.none() : A.some(e[e.length - 1]) }, ne = O(Array.from) ? Array.from : function(e) { return Q.call(e) }, re = "undefined" != typeof window ? window : Function("return this;")(), oe = function(e, t) { return function(e, t) { for (var n = t !== undefined && null !== t ? t : re, r = 0; r < e.length && n !== undefined && null !== n; ++r) n = n[e[r]]; return n }(e.split("."), t) }, ie = { getOrDie: function(e, t) { var n = oe(e, t); if (n === undefined || null === n) throw e + " not available on this browser"; return n } }, ae = function() { return ie.getOrDie("URL") }, ue = { createObjectURL: function(e) { return ae().createObjectURL(e) }, revokeObjectURL: function(e) { ae().revokeObjectURL(e) } }, se = navigator, ce = se.userAgent, le = function(e) { return "matchMedia" in window && matchMedia(e).matches }; d = /Android/.test(ce), a = (a = !(i = /WebKit/.test(ce)) && /MSIE/gi.test(ce) && /Explorer/gi.test(se.appName)) && /MSIE (\w+)\./.exec(ce)[1], u = -1 !== ce.indexOf("Trident/") && (-1 !== ce.indexOf("rv:") || -1 !== se.appName.indexOf("Netscape")) && 11, s = -1 !== ce.indexOf("Edge/") && !a && !u && 12, a = a || u || s, c = !i && !u && /Gecko/.test(ce), l = -1 !== ce.indexOf("Mac"), f = /(iPad|iPhone)/.test(ce), m = "FormData" in window && "FileReader" in window && "URL" in window && !! ue.createObjectURL, g = le("only screen and (max-device-width: 480px)") && (d || f), p = le("only screen and (min-width: 800px)") && (d || f), h = -1 !== ce.indexOf("Windows Phone"), s && (i = !1); var fe, de, me, ge, pe, he, ve, be, ye, Ce, xe, we, Ne, Ee, Se, Te, ke, Ae, _e, Re = { opera: !1, webkit: i, ie: a, gecko: c, mac: l, iOS: f, android: d, contentEditable: !f || m || 534 <= parseInt(ce.match(/AppleWebKit\/(\d*)/)[1], 10), transparentSrc: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", caretAfter: 8 !== a, range: window.getSelection && "Range" in window, documentMode: a && !s ? document.documentMode || 7 : 10, fileApi: m, ceFalse: !1 === a || 8 < a, cacheSuffix: null, container: null, overrideViewPort: null, experimentalShadowDom: !1, canHaveCSP: !1 === a || 11 < a, desktop: !g && !p, windowsPhone: h }, De = window.Promise ? window.Promise : function() { function r(e, t) { return function() { e.apply(t, arguments) } } var e = Array.isArray || function(e) { return "[object Array]" === Object.prototype.toString.call(e) }, i = function(e) { if ("object" != typeof this) throw new TypeError("Promises must be constructed via new"); if ("function" != typeof e) throw new TypeError("not a function"); this._state = null, this._value = null, this._deferreds = [], l(e, r(o, this), r(u, this)) }, t = i.immediateFn || "function" == typeof setImmediate && setImmediate || function(e) { setTimeout(e, 1) }; function a(r) { var o = this; null !== this._state ? t(function() { var e = o._state ? r.onFulfilled : r.onRejected; if (null !== e) { var t; try { t = e(o._value) } catch (n) { return void r.reject(n) } r.resolve(t) } else(o._state ? r.resolve : r.reject)(o._value) }) : this._deferreds.push(r) } function o(e) { try { if (e === this) throw new TypeError("A promise cannot be resolved with itself."); if (e && ("object" == typeof e || "function" == typeof e)) { var t = e.then; if ("function" == typeof t) return void l(r(t, e), r(o, this), r(u, this)) } this._state = !0, this._value = e, s.call(this) } catch (n) { u.call(this, n) } } function u(e) { this._state = !1, this._value = e, s.call(this) } function s() { for (var e = 0, t = this._deferreds.length; e < t; e++) a.call(this, this._deferreds[e]); this._deferreds = null } function c(e, t, n, r) { this.onFulfilled = "function" == typeof e ? e : null, this.onRejected = "function" == typeof t ? t : null, this.resolve = n, this.reject = r } function l(e, t, n) { var r = !1; try { e(function(e) { r || (r = !0, t(e)) }, function(e) { r || (r = !0, n(e)) }) } catch (o) { if (r) return; r = !0, n(o) } } return i.prototype["catch"] = function(e) { return this.then(null, e) }, i.prototype.then = function(n, r) { var o = this; return new i(function(e, t) { a.call(o, new c(n, r, e, t)) }) }, i.all = function() { var s = Array.prototype.slice.call(1 === arguments.length && e(arguments[0]) ? arguments[0] : arguments); return new i(function(o, i) { if (0 === s.length) return o([]); var a = s.length; function u(t, e) { try { if (e && ("object" == typeof e || "function" == typeof e)) { var n = e.then; if ("function" == typeof n) return void n.call(e, function(e) { u(t, e) }, i) } s[t] = e, 0 == --a && o(s) } catch (r) { i(r) } } for (var e = 0; e < s.length; e++) u(e, s[e]) }) }, i.resolve = function(t) { return t && "object" == typeof t && t.constructor === i ? t : new i(function(e) { e(t) }) }, i.reject = function(n) { return new i(function(e, t) { t(n) }) }, i.race = function(o) { return new i(function(e, t) { for (var n = 0, r = o.length; n < r; n++) o[n].then(e, t) }) }, i }(), Be = function(e, t) { return "number" != typeof t && (t = 0), setTimeout(e, t) }, Oe = function(e, t) { return "number" != typeof t && (t = 1), setInterval(e, t) }, Pe = function(t, n) { var r, e; return (e = function() { var e = arguments; clearTimeout(r), r = Be(function() { t.apply(this, e) }, n) }).stop = function() { clearTimeout(r) }, e }, Le = { requestAnimationFrame: function(e, t) { fe ? fe.then(e) : fe = new De(function(e) { t || (t = document.body), function(e, t) { var n, r = window.requestAnimationFrame, o = ["ms", "moz", "webkit"]; for (n = 0; n < o.length && !r; n++) r = window[o[n] + "RequestAnimationFrame"]; r || (r = function(e) { window.setTimeout(e, 0) }), r(e, t) }(e, t) }).then(e) }, setTimeout: Be, setInterval: Oe, setEditorTimeout: function(e, t, n) { return Be(function() { e.removed || t() }, n) }, setEditorInterval: function(e, t, n) { var r; return r = Oe(function() { e.removed ? clearInterval(r) : t() }, n) }, debounce: Pe, throttle: Pe, clearInterval: function(e) { return clearInterval(e) }, clearTimeout: function(e) { return clearTimeout(e) } }, Ie = /^(?:mouse|contextmenu)|click/, Me = { keyLocation: 1, layerX: 1, layerY: 1, returnValue: 1, webkitMovementX: 1, webkitMovementY: 1, keyIdentifier: 1 }, Fe = function() { return !1 }, Ue = function() { return !0 }, ze = function(e, t, n, r) { e.addEventListener ? e.addEventListener(t, n, r || !1) : e.attachEvent && e.attachEvent("on" + t, n) }, Ve = function(e, t, n, r) { e.removeEventListener ? e.removeEventListener(t, n, r || !1) : e.detachEvent && e.detachEvent("on" + t, n) }, qe = function(e, t) { var n, r, o = t || {}; for (n in e) Me[n] || (o[n] = e[n]); if (o.target || (o.target = o.srcElement || document), Re.experimentalShadowDom && (o.target = function(e, t) { if (e.composedPath) { var n = e.composedPath(); if (n && 0 < n.length) return n[0] } return t }(e, o.target)), e && Ie.test(e.type) && e.pageX === undefined && e.clientX !== undefined) { var i = o.target.ownerDocument || document, a = i.documentElement, u = i.body; o.pageX = e.clientX + (a && a.scrollLeft || u && u.scrollLeft || 0) - (a && a.clientLeft || u && u.clientLeft || 0), o.pageY = e.clientY + (a && a.scrollTop || u && u.scrollTop || 0) - (a && a.clientTop || u && u.clientTop || 0) } return o.preventDefault = function() { o.isDefaultPrevented = Ue, e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1) }, o.stopPropagation = function() { o.isPropagationStopped = Ue, e && (e.stopPropagation ? e.stopPropagation() : e.cancelBubble = !0) }, !(o.stopImmediatePropagation = function() { o.isImmediatePropagationStopped = Ue, o.stopPropagation() }) == ((r = o).isDefaultPrevented === Ue || r.isDefaultPrevented === Fe) && (o.isDefaultPrevented = Fe, o.isPropagationStopped = Fe, o.isImmediatePropagationStopped = Fe), "undefined" == typeof o.metaKey && (o.metaKey = !1), o }, He = function(e, t, n) { var r = e.document, o = { type: "ready" }; if (n.domLoaded) t(o); else { var i = function() { return "complete" === r.readyState || "interactive" === r.readyState && r.body }, a = function() { n.domLoaded || (n.domLoaded = !0, t(o)) }, u = function() { i() && (Ve(r, "readystatechange", u), a()) }, s = function() { try { r.documentElement.doScroll("left") } catch (e) { return void Le.setTimeout(s) } a() }; !r.addEventListener || Re.ie && Re.ie < 11 ? (ze(r, "readystatechange", u), r.documentElement.doScroll && e.self === e.top && s()) : i() ? a() : ze(e, "DOMContentLoaded", a), ze(e, "load", a) } }, je = function() { var m, g, p, h, v, b = this, y = {}; g = "mce-data-" + (+new Date).toString(32), h = "onmouseenter" in document.documentElement, p = "onfocusin" in document.documentElement, v = { mouseenter: "mouseover", mouseleave: "mouseout" }, m = 1, b.domLoaded = !1, b.events = y; var C = function(e, t) { var n, r, o, i, a = y[t]; if (n = a && a[e.type]) for (r = 0, o = n.length; r < o; r++) if ((i = n[r]) && !1 === i.func.call(i.scope, e) && e.preventDefault(), e.isImmediatePropagationStopped()) return }; b.bind = function(e, t, n, r) { var o, i, a, u, s, c, l, f = window, d = function(e) { C(qe(e || f.event), o) }; if (e && 3 !== e.nodeType && 8 !== e.nodeType) { for (e[g] ? o = e[g] : (o = m++, e[g] = o, y[o] = {}), r = r || e, a = (t = t.split(" ")).length; a--;) c = d, s = l = !1, "DOMContentLoaded" === (u = t[a]) && (u = "ready"), b.domLoaded && "ready" === u && "complete" === e.readyState ? n.call(r, qe({ type: u })) : (h || (s = v[u]) && (c = function(e) { var t, n; if (t = e.currentTarget, (n = e.relatedTarget) && t.contains) n = t.contains(n); else for (; n && n !== t;) n = n.parentNode; n || ((e = qe(e || f.event)).type = "mouseout" === e.type ? "mouseleave" : "mouseenter", e.target = t, C(e, o)) }), p || "focusin" !== u && "focusout" !== u || (l = !0, s = "focusin" === u ? "focus" : "blur", c = function(e) { (e = qe(e || f.event)).type = "focus" === e.type ? "focusin" : "focusout", C(e, o) }), (i = y[o][u]) ? "ready" === u && b.domLoaded ? n({ type: u }) : i.push({ func: n, scope: r }) : (y[o][u] = i = [{ func: n, scope: r }], i.fakeName = s, i.capture = l, i.nativeHandler = c, "ready" === u ? He(e, c, b) : ze(e, s || u, c, l))); return e = i = 0, n } }, b.unbind = function(e, t, n) { var r, o, i, a, u, s; if (!e || 3 === e.nodeType || 8 === e.nodeType) return b; if (r = e[g]) { if (s = y[r], t) { for (i = (t = t.split(" ")).length; i--;) if (o = s[u = t[i]]) { if (n) for (a = o.length; a--;) if (o[a].func === n) { var c = o.nativeHandler, l = o.fakeName, f = o.capture; (o = o.slice(0, a).concat(o.slice(a + 1))).nativeHandler = c, o.fakeName = l, o.capture = f, s[u] = o } n && 0 !== o.length || (delete s[u], Ve(e, o.fakeName || u, o.nativeHandler, o.capture)) } } else { for (u in s) o = s[u], Ve(e, o.fakeName || u, o.nativeHandler, o.capture); s = {} } for (u in s) return b; delete y[r]; try { delete e[g] } catch (d) { e[g] = null } } return b }, b.fire = function(e, t, n) { var r; if (!e || 3 === e.nodeType || 8 === e.nodeType) return b; for ((n = qe(null, n)).type = t, n.target = e; (r = e[g]) && C(n, r), (e = e.parentNode || e.ownerDocument || e.defaultView || e.parentWindow) && !n.isPropagationStopped();); return b }, b.clean = function(e) { var t, n, r = b.unbind; if (!e || 3 === e.nodeType || 8 === e.nodeType) return b; if (e[g] && r(e), e.getElementsByTagName || (e = e.document), e && e.getElementsByTagName) for (r(e), t = (n = e.getElementsByTagName("*")).length; t--;)(e = n[t])[g] && r(e); return b }, b.destroy = function() { y = {} }, b.cancel = function(e) { return e && (e.preventDefault(), e.stopImmediatePropagation()), !1 } }; je.Event = new je, je.Event.bind(window, "ready", function() {}); var $e = "sizzle" + -new Date, We = window.document, Ke = 0, Xe = 0, Ye = kt(), Ge = kt(), Je = kt(), Qe = function(e, t) { return e === t && (we = !0), 0 }, Ze = typeof undefined, et = {}.hasOwnProperty, tt = [], nt = tt.pop, rt = tt.push, ot = tt.push, it = tt.slice, at = tt.indexOf || function(e) { for (var t = 0, n = this.length; t < n; t++) if (this[t] === e) return t; return -1 }, ut = "[\\x20\\t\\r\\n\\f]", st = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", ct = "\\[" + ut + "*(" + st + ")(?:" + ut + "*([*^$|!~]?=)" + ut + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + st + "))|)" + ut + "*\\]", lt = ":(" + st + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + ct + ")*)|.*)\\)|)", ft = new RegExp("^" + ut + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ut + "+$", "g"), dt = new RegExp("^" + ut + "*," + ut + "*"), mt = new RegExp("^" + ut + "*([>+~]|" + ut + ")" + ut + "*"), gt = new RegExp("=" + ut + "*([^\\]'\"]*?)" + ut + "*\\]", "g"), pt = new RegExp(lt), ht = new RegExp("^" + st + "$"), vt = { ID: new RegExp("^#(" + st + ")"), CLASS: new RegExp("^\\.(" + st + ")"), TAG: new RegExp("^(" + st + "|[*])"), ATTR: new RegExp("^" + ct), PSEUDO: new RegExp("^" + lt), CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ut + "*(even|odd|(([+-]|)(\\d*)n|)" + ut + "*(?:([+-]|)" + ut + "*(\\d+)|))" + ut + "*\\)|)", "i"), bool: new RegExp("^(?:checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$", "i"), needsContext: new RegExp("^" + ut + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ut + "*((?:-\\d)?\\d*)" + ut + "*\\)|)(?=[^-]|$)", "i") }, bt = /^(?:input|select|textarea|button)$/i, yt = /^h\d$/i, Ct = /^[^{]+\{\s*\[native \w/, xt = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, wt = /[+~]/, Nt = /'|\\/g, Et = new RegExp("\\\\([\\da-f]{1,6}" + ut + "?|(" + ut + ")|.)", "ig"), St = function(e, t, n) { var r = "0x" + t - 65536; return r != r || n ? t : r < 0 ? String.fromCharCode(r + 65536) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320) }; try { ot.apply(tt = it.call(We.childNodes), We.childNodes), tt[We.childNodes.length].nodeType } catch (Kw) { ot = { apply: tt.length ? function(e, t) { rt.apply(e, it.call(t)) } : function(e, t) { for (var n = e.length, r = 0; e[n++] = t[r++];); e.length = n - 1 } } } var Tt = function(e, t, n, r) { var o, i, a, u, s, c, l, f, d, m; if ((t ? t.ownerDocument || t : We) !== Ee && Ne(t), n = n || [], !e || "string" != typeof e) return n; if (1 !== (u = (t = t || Ee).nodeType) && 9 !== u) return []; if (Te && !r) { if (o = xt.exec(e)) if (a = o[1]) { if (9 === u) { if (!(i = t.getElementById(a)) || !i.parentNode) return n; if (i.id === a) return n.push(i), n } else if (t.ownerDocument && (i = t.ownerDocument.getElementById(a)) && _e(t, i) && i.id === a) return n.push(i), n } else { if (o[2]) return ot.apply(n, t.getElementsByTagName(e)), n; if ((a = o[3]) && me.getElementsByClassName) return ot.apply(n, t.getElementsByClassName(a)), n } if (me.qsa && (!ke || !ke.test(e))) { if (f = l = $e, d = t, m = 9 === u && e, 1 === u && "object" !== t.nodeName.toLowerCase()) { for (c = ve(e), (l = t.getAttribute("id")) ? f = l.replace(Nt, "\\$&") : t.setAttribute("id", f), f = "[id='" + f + "'] ", s = c.length; s--;) c[s] = f + Lt(c[s]); d = wt.test(e) && Ot(t.parentNode) || t, m = c.join(",") } if (m) try { return ot.apply(n, d.querySelectorAll(m)), n } catch (g) {} finally { l || t.removeAttribute("id") } } } return ye(e.replace(ft, "$1"), t, n, r) }; function kt() { var r = []; return function e(t, n) { return r.push(t + " ") > ge.cacheLength && delete e[r.shift()], e[t + " "] = n } } function At(e) { return e[$e] = !0, e } function _t(e, t) { var n = t && e, r = n && 1 === e.nodeType && 1 === t.nodeType && (~t.sourceIndex || 1 << 31) - (~e.sourceIndex || 1 << 31); if (r) return r; if (n) for (; n = n.nextSibling;) if (n === t) return -1; return e ? 1 : -1 } function Rt(t) { return function(e) { return "input" === e.nodeName.toLowerCase() && e.type === t } } function Dt(n) { return function(e) { var t = e.nodeName.toLowerCase(); return ("input" === t || "button" === t) && e.type === n } } function Bt(a) { return At(function(i) { return i = +i, At(function(e, t) { for (var n, r = a([], e.length, i), o = r.length; o--;) e[n = r[o]] && (e[n] = !(t[n] = e[n])) }) }) } function Ot(e) { return e && typeof e.getElementsByTagName !== Ze && e } for (de in me = Tt.support = {}, he = Tt.isXML = function(e) { var t = e && (e.ownerDocument || e).documentElement; return !!t && "HTML" !== t.nodeName }, Ne = Tt.setDocument = function(e) { var t, s = e ? e.ownerDocument || e : We, n = s.defaultView; return s !== Ee && 9 === s.nodeType && s.documentElement ? (Se = (Ee = s).documentElement, Te = !he(s), n && n !== function(e) { try { return e.top } catch (t) {} return null }(n) && (n.addEventListener ? n.addEventListener("unload", function() { Ne() }, !1) : n.attachEvent && n.attachEvent("onunload", function() { Ne() })), me.attributes = !0, me.getElementsByTagName = !0, me.getElementsByClassName = Ct.test(s.getElementsByClassName), me.getById = !0, ge.find.ID = function(e, t) { if (typeof t.getElementById !== Ze && Te) { var n = t.getElementById(e); return n && n.parentNode ? [n] : [] } }, ge.filter.ID = function(e) { var t = e.replace(Et, St); return function(e) { return e.getAttribute("id") === t } }, ge.find.TAG = me.getElementsByTagName ? function(e, t) { if (typeof t.getElementsByTagName !== Ze) return t.getElementsByTagName(e) } : function(e, t) { var n, r = [], o = 0, i = t.getElementsByTagName(e); if ("*" === e) { for (; n = i[o++];) 1 === n.nodeType && r.push(n); return r } return i }, ge.find.CLASS = me.getElementsByClassName && function(e, t) { if (Te) return t.getElementsByClassName(e) }, Ae = [], ke = [], me.disconnectedMatch = !0, ke = ke.length && new RegExp(ke.join("|")), Ae = Ae.length && new RegExp(Ae.join("|")), t = Ct.test(Se.compareDocumentPosition), _e = t || Ct.test(Se.contains) ? function(e, t) { var n = 9 === e.nodeType ? e.documentElement : e, r = t && t.parentNode; return e === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(r))) } : function(e, t) { if (t) for (; t = t.parentNode;) if (t === e) return !0; return !1 }, Qe = t ? function(e, t) { if (e === t) return we = !0, 0; var n = !e.compareDocumentPosition - !t.compareDocumentPosition; return n || (1 & (n = (e.ownerDocument || e) === (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !me.sortDetached && t.compareDocumentPosition(e) === n ? e === s || e.ownerDocument === We && _e(We, e) ? -1 : t === s || t.ownerDocument === We && _e(We, t) ? 1 : xe ? at.call(xe, e) - at.call(xe, t) : 0 : 4 & n ? -1 : 1) } : function(e, t) { if (e === t) return we = !0, 0; var n, r = 0, o = e.parentNode, i = t.parentNode, a = [e], u = [t]; if (!o || !i) return e === s ? -1 : t === s ? 1 : o ? -1 : i ? 1 : xe ? at.call(xe, e) - at.call(xe, t) : 0; if (o === i) return _t(e, t); for (n = e; n = n.parentNode;) a.unshift(n); for (n = t; n = n.parentNode;) u.unshift(n); for (; a[r] === u[r];) r++; return r ? _t(a[r], u[r]) : a[r] === We ? -1 : u[r] === We ? 1 : 0 }, s) : Ee }, Tt.matches = function(e, t) { return Tt(e, null, null, t) }, Tt.matchesSelector = function(e, t) { if ((e.ownerDocument || e) !== Ee && Ne(e), t = t.replace(gt, "='$1']"), me.matchesSelector && Te && (!Ae || !Ae.test(t)) && (!ke || !ke.test(t))) try { var n = (void 0).call(e, t); if (n || me.disconnectedMatch || e.document && 11 !== e.document.nodeType) return n } catch (Kw) {} return 0 < Tt(t, Ee, null, [e]).length }, Tt.contains = function(e, t) { return (e.ownerDocument || e) !== Ee && Ne(e), _e(e, t) }, Tt.attr = function(e, t) { (e.ownerDocument || e) !== Ee && Ne(e); var n = ge.attrHandle[t.toLowerCase()], r = n && et.call(ge.attrHandle, t.toLowerCase()) ? n(e, t, !Te) : undefined; return r !== undefined ? r : me.attributes || !Te ? e.getAttribute(t) : (r = e.getAttributeNode(t)) && r.specified ? r.value : null }, Tt.error = function(e) { throw new Error("Syntax error, unrecognized expression: " + e) }, Tt.uniqueSort = function(e) { var t, n = [], r = 0, o = 0; if (we = !me.detectDuplicates, xe = !me.sortStable && e.slice(0), e.sort(Qe), we) { for (; t = e[o++];) t === e[o] && (r = n.push(o)); for (; r--;) e.splice(n[r], 1) } return xe = null, e }, pe = Tt.getText = function(e) { var t, n = "", r = 0, o = e.nodeType; if (o) { if (1 === o || 9 === o || 11 === o) { if ("string" == typeof e.textContent) return e.textContent; for (e = e.firstChild; e; e = e.nextSibling) n += pe(e) } else if (3 === o || 4 === o) return e.nodeValue } else for (; t = e[r++];) n += pe(t); return n }, (ge = Tt.selectors = { cacheLength: 50, createPseudo: At, match: vt, attrHandle: {}, find: {}, relative: { ">": { dir: "parentNode", first: !0 }, " ": { dir: "parentNode" }, "+": { dir: "previousSibling", first: !0 }, "~": { dir: "previousSibling" } }, preFilter: { ATTR: function(e) { return e[1] = e[1].replace(Et, St), e[3] = (e[3] || e[4] || e[5] || "").replace(Et, St), "~=" === e[2] && (e[3] = " " + e[3] + " "), e.slice(0, 4) }, CHILD: function(e) { return e[1] = e[1].toLowerCase(), "nth" === e[1].slice(0, 3) ? (e[3] || Tt.error(e[0]), e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && Tt.error(e[0]), e }, PSEUDO: function(e) { var t, n = !e[6] && e[2]; return vt.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && pt.test(n) && (t = ve(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), e[2] = n.slice(0, t)), e.slice(0, 3)) } }, filter: { TAG: function(e) { var t = e.replace(Et, St).toLowerCase(); return "*" === e ? function() { return !0 } : function(e) { return e.nodeName && e.nodeName.toLowerCase() === t } }, CLASS: function(e) { var t = Ye[e + " "]; return t || (t = new RegExp("(^|" + ut + ")" + e + "(" + ut + "|$)")) && Ye(e, function(e) { return t.test("string" == typeof e.className && e.className || typeof e.getAttribute !== Ze && e.getAttribute("class") || "") }) }, ATTR: function(n, r, o) { return function(e) { var t = Tt.attr(e, n); return null == t ? "!=" === r : !r || (t += "", "=" === r ? t === o : "!=" === r ? t !== o : "^=" === r ? o && 0 === t.indexOf(o) : "*=" === r ? o && -1 < t.indexOf(o) : "$=" === r ? o && t.slice(-o.length) === o : "~=" === r ? -1 < (" " + t + " ").indexOf(o) : "|=" === r && (t === o || t.slice(0, o.length + 1) === o + "-")) } }, CHILD: function(m, e, t, g, p) { var h = "nth" !== m.slice(0, 3), v = "last" !== m.slice(-4), b = "of-type" === e; return 1 === g && 0 === p ? function(e) { return !!e.parentNode } : function(e, t, n) { var r, o, i, a, u, s, c = h !== v ? "nextSibling" : "previousSibling", l = e.parentNode, f = b && e.nodeName.toLowerCase(), d = !n && !b; if (l) { if (h) { for (; c;) { for (i = e; i = i[c];) if (b ? i.nodeName.toLowerCase() === f : 1 === i.nodeType) return !1; s = c = "only" === m && !s && "nextSibling" } return !0 } if (s = [v ? l.firstChild : l.lastChild], v && d) { for (u = (r = (o = l[$e] || (l[$e] = {}))[m] || [])[0] === Ke && r[1], a = r[0] === Ke && r[2], i = u && l.childNodes[u]; i = ++u && i && i[c] || (a = u = 0) || s.pop();) if (1 === i.nodeType && ++a && i === e) { o[m] = [Ke, u, a]; break } } else if (d && (r = (e[$e] || (e[$e] = {}))[m]) && r[0] === Ke) a = r[1]; else for (; (i = ++u && i && i[c] || (a = u = 0) || s.pop()) && ((b ? i.nodeName.toLowerCase() !== f : 1 !== i.nodeType) || !++a || (d && ((i[$e] || (i[$e] = {}))[m] = [Ke, a]), i !== e));); return (a -= p) === g || a % g == 0 && 0 <= a / g } } }, PSEUDO: function(e, i) { var t, a = ge.pseudos[e] || ge.setFilters[e.toLowerCase()] || Tt.error("unsupported pseudo: " + e); return a[$e] ? a(i) : 1 < a.length ? (t = [e, e, "", i], ge.setFilters.hasOwnProperty(e.toLowerCase()) ? At(function(e, t) { for (var n, r = a(e, i), o = r.length; o--;) e[n = at.call(e, r[o])] = !(t[n] = r[o]) }) : function(e) { return a(e, 0, t) }) : a } }, pseudos: { not: At(function(e) { var r = [], o = [], u = be(e.replace(ft, "$1")); return u[$e] ? At(function(e, t, n, r) { for (var o, i = u(e, null, r, []), a = e.length; a--;)(o = i[a]) && (e[a] = !(t[a] = o)) }) : function(e, t, n) { return r[0] = e, u(r, null, n, o), !o.pop() } }), has: At(function(t) { return function(e) { return 0 < Tt(t, e).length } }), contains: At(function(t) { return t = t.replace(Et, St), function(e) { return -1 < (e.textContent || e.innerText || pe(e)).indexOf(t) } }), lang: At(function(n) { return ht.test(n || "") || Tt.error("unsupported lang: " + n), n = n.replace(Et, St).toLowerCase(), function(e) { var t; do { if (t = Te ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang")) return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-") } while ((e = e.parentNode) && 1 === e.nodeType); return !1 } }), target: function(e) { var t = window.location && window.location.hash; return t && t.slice(1) === e.id }, root: function(e) { return e === Se }, focus: function(e) { return e === Ee.activeElement && (!Ee.hasFocus || Ee.hasFocus()) && !! (e.type || e.href || ~e.tabIndex) }, enabled: function(e) { return !1 === e.disabled }, disabled: function(e) { return !0 === e.disabled }, checked: function(e) { var t = e.nodeName.toLowerCase(); return "input" === t && !! e.checked || "option" === t && !! e.selected }, selected: function(e) { return e.parentNode && e.parentNode.selectedIndex, !0 === e.selected }, empty: function(e) { for (e = e.firstChild; e; e = e.nextSibling) if (e.nodeType < 6) return !1; return !0 }, parent: function(e) { return !ge.pseudos.empty(e) }, header: function(e) { return yt.test(e.nodeName) }, input: function(e) { return bt.test(e.nodeName) }, button: function(e) { var t = e.nodeName.toLowerCase(); return "input" === t && "button" === e.type || "button" === t }, text: function(e) { var t; return "input" === e.nodeName.toLowerCase() && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase()) }, first: Bt(function() { return [0] }), last: Bt(function(e, t) { return [t - 1] }), eq: Bt(function(e, t, n) { return [n < 0 ? n + t : n] }), even: Bt(function(e, t) { for (var n = 0; n < t; n += 2) e.push(n); return e }), odd: Bt(function(e, t) { for (var n = 1; n < t; n += 2) e.push(n); return e }), lt: Bt(function(e, t, n) { for (var r = n < 0 ? n + t : n; 0 <= --r;) e.push(r); return e }), gt: Bt(function(e, t, n) { for (var r = n < 0 ? n + t : n; ++r < t;) e.push(r); return e }) } }).pseudos.nth = ge.pseudos.eq, { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 }) ge.pseudos[de] = Rt(de); for (de in { submit: !0, reset: !0 }) ge.pseudos[de] = Dt(de); function Pt() {} function Lt(e) { for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value; return r } function It(a, e, t) { var u = e.dir, s = t && "parentNode" === u, c = Xe++; return e.first ? function(e, t, n) { for (; e = e[u];) if (1 === e.nodeType || s) return a(e, t, n) } : function(e, t, n) { var r, o, i = [Ke, c]; if (n) { for (; e = e[u];) if ((1 === e.nodeType || s) && a(e, t, n)) return !0 } else for (; e = e[u];) if (1 === e.nodeType || s) { if ((r = (o = e[$e] || (e[$e] = {}))[u]) && r[0] === Ke && r[1] === c) return i[2] = r[2]; if ((o[u] = i)[2] = a(e, t, n)) return !0 } } } function Mt(o) { return 1 < o.length ? function(e, t, n) { for (var r = o.length; r--;) if (!o[r](e, t, n)) return !1; return !0 } : o[0] } function Ft(e, t, n, r, o) { for (var i, a = [], u = 0, s = e.length, c = null != t; u < s; u++)(i = e[u]) && (n && !n(i, r, o) || (a.push(i), c && t.push(u))); return a } function Ut(m, g, p, h, v, e) { return h && !h[$e] && (h = Ut(h)), v && !v[$e] && (v = Ut(v, e)), At(function(e, t, n, r) { var o, i, a, u = [], s = [], c = t.length, l = e || function(e, t, n) { for (var r = 0, o = t.length; r < o; r++) Tt(e, t[r], n); return n }(g || "*", n.nodeType ? [n] : n, []), f = !m || !e && g ? l : Ft(l, u, m, n, r), d = p ? v || (e ? m : c || h) ? [] : t : f; if (p && p(f, d, n, r), h) for (o = Ft(d, s), h(o, [], n, r), i = o.length; i--;)(a = o[i]) && (d[s[i]] = !(f[s[i]] = a)); if (e) { if (v || m) { if (v) { for (o = [], i = d.length; i--;)(a = d[i]) && o.push(f[i] = a); v(null, d = [], o, r) } for (i = d.length; i--;)(a = d[i]) && -1 < (o = v ? at.call(e, a) : u[i]) && (e[o] = !(t[o] = a)) } } else d = Ft(d === t ? d.splice(c, d.length) : d), v ? v(null, t, d, r) : ot.apply(t, d) }) } function zt(e) { for (var r, t, n, o = e.length, i = ge.relative[e[0].type], a = i || ge.relative[" "], u = i ? 1 : 0, s = It(function(e) { return e === r }, a, !0), c = It(function(e) { return -1 < at.call(r, e) }, a, !0), l = [function(e, t, n) { return !i && (n || t !== Ce) || ((r = t).nodeType ? s(e, t, n) : c(e, t, n)) }]; u < o; u++) if (t = ge.relative[e[u].type]) l = [It(Mt(l), t)]; else { if ((t = ge.filter[e[u].type].apply(null, e[u].matches))[$e]) { for (n = ++u; n < o && !ge.relative[e[n].type]; n++); return Ut(1 < u && Mt(l), 1 < u && Lt(e.slice(0, u - 1).concat({ value: " " === e[u - 2].type ? "*" : "" })).replace(ft, "$1"), t, u < n && zt(e.slice(u, n)), n < o && zt(e = e.slice(n)), n < o && Lt(e)) } l.push(t) } return Mt(l) } Pt.prototype = ge.filters = ge.pseudos, ge.setFilters = new Pt, ve = Tt.tokenize = function(e, t) { var n, r, o, i, a, u, s, c = Ge[e + " "]; if (c) return t ? 0 : c.slice(0); for (a = e, u = [], s = ge.preFilter; a;) { for (i in n && !(r = dt.exec(a)) || (r && (a = a.slice(r[0].length) || a), u.push(o = [])), n = !1, (r = mt.exec(a)) && (n = r.shift(), o.push({ value: n, type: r[0].replace(ft, " ") }), a = a.slice(n.length)), ge.filter)!(r = vt[i].exec(a)) || s[i] && !(r = s[i](r)) || (n = r.shift(), o.push({ value: n, type: i, matches: r }), a = a.slice(n.length)); if (!n) break } return t ? a.length : a ? Tt.error(e) : Ge(e, u).slice(0) }, be = Tt.compile = function(e, t) { var n, h, v, b, y, r, o = [], i = [], a = Je[e + " "]; if (!a) { for (t || (t = ve(e)), n = t.length; n--;)(a = zt(t[n]))[$e] ? o.push(a) : i.push(a); (a = Je(e, (h = i, b = 0 < (v = o).length, y = 0 < h.length, r = function(e, t, n, r, o) { var i, a, u, s = 0, c = "0", l = e && [], f = [], d = Ce, m = e || y && ge.find.TAG("*", o), g = Ke += null == d ? 1 : Math.random() || .1, p = m.length; for (o && (Ce = t !== Ee && t); c !== p && null != (i = m[c]); c++) { if (y && i) { for (a = 0; u = h[a++];) if (u(i, t, n)) { r.push(i); break } o && (Ke = g) } b && ((i = !u && i) && s--, e && l.push(i)) } if (s += c, b && c !== s) { for (a = 0; u = v[a++];) u(l, f, t, n); if (e) { if (0 < s) for (; c--;) l[c] || f[c] || (f[c] = nt.call(r)); f = Ft(f) } ot.apply(r, f), o && !e && 0 < f.length && 1 < s + v.length && Tt.uniqueSort(r) } return o && (Ke = g, Ce = d), l }, b ? At(r) : r))).selector = e } return a }, ye = Tt.select = function(e, t, n, r) { var o, i, a, u, s, c = "function" == typeof e && e, l = !r && ve(e = c.selector || e); if (n = n || [], 1 === l.length) { if (2 < (i = l[0] = l[0].slice(0)).length && "ID" === (a = i[0]).type && me.getById && 9 === t.nodeType && Te && ge.relative[i[1].type]) { if (!(t = (ge.find.ID(a.matches[0].replace(Et, St), t) || [])[0])) return n; c && (t = t.parentNode), e = e.slice(i.shift().value.length) } for (o = vt.needsContext.test(e) ? 0 : i.length; o-- && (a = i[o], !ge.relative[u = a.type]);) if ((s = ge.find[u]) && (r = s(a.matches[0].replace(Et, St), wt.test(i[0].type) && Ot(t.parentNode) || t))) { if (i.splice(o, 1), !(e = r.length && Lt(i))) return ot.apply(n, r), n; break } } return (c || be(e, l))(r, t, !Te, n, wt.test(e) && Ot(t.parentNode) || t), n }, me.sortStable = $e.split("").sort(Qe).join("") === $e, me.detectDuplicates = !! we, Ne(), me.sortDetached = !0; var Vt = Array.isArray, qt = function(e, t, n) { var r, o; if (!e) return 0; if (n = n || e, e.length !== undefined) { for (r = 0, o = e.length; r < o; r++) if (!1 === t.call(n, e[r], r, e)) return 0 } else for (r in e) if (e.hasOwnProperty(r) && !1 === t.call(n, e[r], r, e)) return 0; return 1 }, Ht = function(e, t, n) { var r, o; for (r = 0, o = e.length; r < o; r++) if (t.call(n, e[r], r, e)) return r; return -1 }, jt = { isArray: Vt, toArray: function(e) { var t, n, r = e; if (!Vt(e)) for (r = [], t = 0, n = e.length; t < n; t++) r[t] = e[t]; return r }, each: qt, map: function(n, r) { var o = []; return qt(n, function(e, t) { o.push(r(e, t, n)) }), o }, filter: function(n, r) { var o = []; return qt(n, function(e, t) { r && !r(e, t, n) || o.push(e) }), o }, indexOf: function(e, t) { var n, r; if (e) for (n = 0, r = e.length; n < r; n++) if (e[n] === t) return n; return -1 }, reduce: function(e, t, n, r) { var o = 0; for (arguments.length < 3 && (n = e[0]); o < e.length; o++) n = t.call(r, n, e[o], o); return n }, findIndex: Ht, find: function(e, t, n) { var r = Ht(e, t, n); return -1 !== r ? e[r] : undefined }, last: function(e) { return e[e.length - 1] } }, $t = /^\s*|\s*$/g, Wt = function(e) { return null === e || e === undefined ? "" : ("" + e).replace($t, "") }, Kt = function(e, t) { return t ? !("array" !== t || !jt.isArray(e)) || typeof e === t : e !== undefined }, Xt = function(e, n, r, o) { o = o || this, e && (r && (e = e[r]), jt.each(e, function(e, t) { if (!1 === n.call(o, e, t, r)) return !1; Xt(e, n, r, o) })) }, Yt = { trim: Wt, isArray: jt.isArray, is: Kt, toArray: jt.toArray, makeMap: function(e, t, n) { var r; for (t = t || ",", "string" == typeof(e = e || []) && (e = e.split(t)), n = n || {}, r = e.length; r--;) n[e[r]] = {}; return n }, each: jt.each, map: jt.map, grep: jt.filter, inArray: jt.indexOf, hasOwn: function(e, t) { return Object.prototype.hasOwnProperty.call(e, t) }, extend: function(e, t) { for (var n, r, o, i = [], a = 2; a < arguments.length; a++) i[a - 2] = arguments[a]; var u, s = arguments; for (n = 1, r = s.length; n < r; n++) for (o in t = s[n]) t.hasOwnProperty(o) && (u = t[o]) !== undefined && (e[o] = u); return e }, create: function(e, t, n) { var r, o, i, a, u, s = this, c = 0; if (e = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(e), i = e[3].match(/(^|\.)(\w+)$/i)[2], !(o = s.createNS(e[3].replace(/\.\w+$/, ""), n))[i]) { if ("static" === e[2]) return o[i] = t, void(this.onCreate && this.onCreate(e[2], e[3], o[i])); t[i] || (t[i] = function() {}, c = 1), o[i] = t[i], s.extend(o[i].prototype, t), e[5] && (r = s.resolve(e[5]).prototype, a = e[5].match(/\.(\w+)$/i)[1], u = o[i], o[i] = c ? function() { return r[a].apply(this, arguments) } : function() { return this.parent = r[a], u.apply(this, arguments) }, o[i].prototype[i] = o[i], s.each(r, function(e, t) { o[i].prototype[t] = r[t] }), s.each(t, function(e, t) { r[t] ? o[i].prototype[t] = function() { return this.parent = r[t], e.apply(this, arguments) } : t !== i && (o[i].prototype[t] = e) })), s.each(t["static"], function(e, t) { o[i][t] = e }) } }, walk: Xt, createNS: function(e, t) { var n, r; for (t = t || window, e = e.split("."), n = 0; n < e.length; n++) t[r = e[n]] || (t[r] = {}), t = t[r]; return t }, resolve: function(e, t) { var n, r; for (t = t || window, n = 0, r = (e = e.split(".")).length; n < r && (t = t[e[n]]); n++); return t }, explode: function(e, t) { return !e || Kt(e, "array") ? e : jt.map(e.split(t || ","), Wt) }, _addCacheSuffix: function(e) { var t = Re.cacheSuffix; return t && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e } }, Gt = document, Jt = Array.prototype.push, Qt = Array.prototype.slice, Zt = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/, en = je.Event, tn = Yt.makeMap("children,contents,next,prev"), nn = function(e) { return void 0 !== e }, rn = function(e) { return "string" == typeof e }, on = function(e, t) { var n, r, o; for (o = (t = t || Gt).createElement("div"), n = t.createDocumentFragment(), o.innerHTML = e; r = o.firstChild;) n.appendChild(r); return n }, an = function(e, t, n, r) { var o; if (rn(t)) t = on(t, Cn(e[0])); else if (t.length && !t.nodeType) { if (t = pn.makeArray(t), r) for (o = t.length - 1; 0 <= o; o--) an(e, t[o], n, r); else for (o = 0; o < t.length; o++) an(e, t[o], n, r); return e } if (t.nodeType) for (o = e.length; o--;) n.call(e[o], t); return e }, un = function(e, t) { return e && t && -1 !== (" " + e.className + " ").indexOf(" " + t + " ") }, sn = function(e, t, n) { var r, o; return t = pn(t)[0], e.each(function() { var e = this; n && r === e.parentNode || (r = e.parentNode, o = t.cloneNode(!1), e.parentNode.insertBefore(o, e)), o.appendChild(e) }), e }, cn = Yt.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom", " "), ln = Yt.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected", " "), fn = { "for": "htmlFor", "class": "className", readonly: "readOnly" }, dn = { "float": "cssFloat" }, mn = {}, gn = {}, pn = function(e, t) { return new pn.fn.init(e, t) }, hn = /^\s*|\s*$/g, vn = function(e) { return null === e || e === undefined ? "" : ("" + e).replace(hn, "") }, bn = function(e, t) { var n, r, o, i; if (e) if ((n = e.length) === undefined) { for (r in e) if (e.hasOwnProperty(r) && (i = e[r], !1 === t.call(i, r, i))) break } else for (o = 0; o < n && (i = e[o], !1 !== t.call(i, o, i)); o++); return e }, yn = function(e, n) { var r = []; return bn(e, function(e, t) { n(t, e) && r.push(t) }), r }, Cn = function(e) { return e ? 9 === e.nodeType ? e : e.ownerDocument : Gt }; pn.fn = pn.prototype = { constructor: pn, selector: "", context: null, length: 0, init: function(e, t) { var n, r, o = this; if (!e) return o; if (e.nodeType) return o.context = o[0] = e, o.length = 1, o; if (t && t.nodeType) o.context = t; else { if (t) return pn(e).attr(t); o.context = t = document } if (rn(e)) { if (!(n = "<" === (o.selector = e).charAt(0) && ">" === e.charAt(e.length - 1) && 3 <= e.length ? [null, e, null] : Zt.exec(e))) return pn(t).find(e); if (n[1]) for (r = on(e, Cn(t)).firstChild; r;) Jt.call(o, r), r = r.nextSibling; else { if (!(r = Cn(t).getElementById(n[2]))) return o; if (r.id !== n[2]) return o.find(e); o.length = 1, o[0] = r } } else this.add(e, !1); return o }, toArray: function() { return Yt.toArray(this) }, add: function(e, t) { var n, r, o = this; if (rn(e)) return o.add(pn(e)); if (!1 !== t) for (n = pn.unique(o.toArray().concat(pn.makeArray(e))), o.length = n.length, r = 0; r < n.length; r++) o[r] = n[r]; else Jt.apply(o, pn.makeArray(e)); return o }, attr: function(t, n) { var e, r = this; if ("object" == typeof t) bn(t, function(e, t) { r.attr(e, t) }); else { if (!nn(n)) { if (r[0] && 1 === r[0].nodeType) { if ((e = mn[t]) && e.get) return e.get(r[0], t); if (ln[t]) return r.prop(t) ? t : undefined; null === (n = r[0].getAttribute(t, 2)) && (n = undefined) } return n } this.each(function() { var e; if (1 === this.nodeType) { if ((e = mn[t]) && e.set) return void e.set(this, n); null === n ? this.removeAttribute(t, 2) : this.setAttribute(t, n, 2) } }) } return r }, removeAttr: function(e) { return this.attr(e, null) }, prop: function(e, t) { var n = this; if ("object" == typeof(e = fn[e] || e)) bn(e, function(e, t) { n.prop(e, t) }); else { if (!nn(t)) return n[0] && n[0].nodeType && e in n[0] ? n[0][e] : t; this.each(function() { 1 === this.nodeType && (this[e] = t) }) } return n }, css: function(n, r) { var e, o, i = this, t = function(e) { return e.replace(/-(\D)/g, function(e, t) { return t.toUpperCase() }) }, a = function(e) { return e.replace(/[A-Z]/g, function(e) { return "-" + e }) }; if ("object" == typeof n) bn(n, function(e, t) { i.css(e, t) }); else if (nn(r)) n = t(n), "number" != typeof r || cn[n] || (r = r.toString() + "px"), i.each(function() { var e = this.style; if ((o = gn[n]) && o.set) o.set(this, r); else { try { this.style[dn[n] || n] = r } catch (t) {} null !== r && "" !== r || (e.removeProperty ? e.removeProperty(a(n)) : e.removeAttribute(n)) } }); else { if (e = i[0], (o = gn[n]) && o.get) return o.get(e); if (!e.ownerDocument.defaultView) return e.currentStyle ? e.currentStyle[t(n)] : ""; try { return e.ownerDocument.defaultView.getComputedStyle(e, null).getPropertyValue(a(n)) } catch (u) { return undefined } } return i }, remove: function() { for (var e, t = this.length; t--;) e = this[t], en.clean(e), e.parentNode && e.parentNode.removeChild(e); return this }, empty: function() { for (var e, t = this.length; t--;) for (e = this[t]; e.firstChild;) e.removeChild(e.firstChild); return this }, html: function(e) { var t, n = this; if (nn(e)) { t = n.length; try { for (; t--;) n[t].innerHTML = e } catch (r) { pn(n[t]).empty().append(e) } return n } return n[0] ? n[0].innerHTML : "" }, text: function(e) { var t, n = this; if (nn(e)) { for (t = n.length; t--;)"innerText" in n[t] ? n[t].innerText = e : n[0].textContent = e; return n } return n[0] ? n[0].innerText || n[0].textContent : "" }, append: function() { return an(this, arguments, function(e) { (1 === this.nodeType || this.host && 1 === this.host.nodeType) && this.appendChild(e) }) }, prepend: function() { return an(this, arguments, function(e) { (1 === this.nodeType || this.host && 1 === this.host.nodeType) && this.insertBefore(e, this.firstChild) }, !0) }, before: function() { return this[0] && this[0].parentNode ? an(this, arguments, function(e) { this.parentNode.insertBefore(e, this) }) : this }, after: function() { return this[0] && this[0].parentNode ? an(this, arguments, function(e) { this.parentNode.insertBefore(e, this.nextSibling) }, !0) : this }, appendTo: function(e) { return pn(e).append(this), this }, prependTo: function(e) { return pn(e).prepend(this), this }, replaceWith: function(e) { return this.before(e).remove() }, wrap: function(e) { return sn(this, e) }, wrapAll: function(e) { return sn(this, e, !0) }, wrapInner: function(e) { return this.each(function() { pn(this).contents().wrapAll(e) }), this }, unwrap: function() { return this.parent().each(function() { pn(this).replaceWith(this.childNodes) }) }, clone: function() { var e = []; return this.each(function() { e.push(this.cloneNode(!0)) }), pn(e) }, addClass: function(e) { return this.toggleClass(e, !0) }, removeClass: function(e) { return this.toggleClass(e, !1) }, toggleClass: function(o, i) { var e = this; return "string" != typeof o || (-1 !== o.indexOf(" ") ? bn(o.split(" "), function() { e.toggleClass(this, i) }) : e.each(function(e, t) { var n, r; (r = un(t, o)) !== i && (n = t.className, r ? t.className = vn((" " + n + " ").replace(" " + o + " ", " ")) : t.className += n ? " " + o : o) })), e }, hasClass: function(e) { return un(this[0], e) }, each: function(e) { return bn(this, e) }, on: function(e, t) { return this.each(function() { en.bind(this, e, t) }) }, off: function(e, t) { return this.each(function() { en.unbind(this, e, t) }) }, trigger: function(e) { return this.each(function() { "object" == typeof e ? en.fire(this, e.type, e) : en.fire(this, e) }) }, show: function() { return this.css("display", "") }, hide: function() { return this.css("display", "none") }, slice: function() { return new pn(Qt.apply(this, arguments)) }, eq: function(e) { return -1 === e ? this.slice(e) : this.slice(e, +e + 1) }, first: function() { return this.eq(0) }, last: function() { return this.eq(-1) }, find: function(e) { var t, n, r = []; for (t = 0, n = this.length; t < n; t++) pn.find(e, this[t], r); return pn(r) }, filter: function(n) { return pn("function" == typeof n ? yn(this.toArray(), function(e, t) { return n(t, e) }) : pn.filter(n, this.toArray())) }, closest: function(n) { var r = []; return n instanceof pn && (n = n[0]), this.each(function(e, t) { for (; t;) { if ("string" == typeof n && pn(t).is(n)) { r.push(t); break } if (t === n) { r.push(t); break } t = t.parentNode } }), pn(r) }, offset: function(e) { var t, n, r, o, i = 0, a = 0; return e ? this.css(e) : ((t = this[0]) && (r = (n = t.ownerDocument).documentElement, t.getBoundingClientRect && (i = (o = t.getBoundingClientRect()).left + (r.scrollLeft || n.body.scrollLeft) - r.clientLeft, a = o.top + (r.scrollTop || n.body.scrollTop) - r.clientTop)), { left: i, top: a }) }, push: Jt, sort: [].sort, splice: [].splice }, Yt.extend(pn, { extend: Yt.extend, makeArray: function(e) { return (t = e) && t === t.window || e.nodeType ? [e] : Yt.toArray(e); var t }, inArray: function(e, t) { var n; if (t.indexOf) return t.indexOf(e); for (n = t.length; n--;) if (t[n] === e) return n; return -1 }, isArray: Yt.isArray, each: bn, trim: vn, grep: yn, find: Tt, expr: Tt.selectors, unique: Tt.uniqueSort, text: Tt.getText, contains: Tt.contains, filter: function(e, t, n) { var r = t.length; for (n && (e = ":not(" + e + ")"); r--;) 1 !== t[r].nodeType && t.splice(r, 1); return t = 1 === t.length ? pn.find.matchesSelector(t[0], e) ? [t[0]] : [] : pn.find.matches(e, t) } }); var xn = function(e, t, n) { var r = [], o = e[t]; for ("string" != typeof n && n instanceof pn && (n = n[0]); o && 9 !== o.nodeType;) { if (n !== undefined) { if (o === n) break; if ("string" == typeof n && pn(o).is(n)) break } 1 === o.nodeType && r.push(o), o = o[t] } return r }, wn = function(e, t, n, r) { var o = []; for (r instanceof pn && (r = r[0]); e; e = e[t]) if (!n || e.nodeType === n) { if (r !== undefined) { if (e === r) break; if ("string" == typeof r && pn(e).is(r)) break } o.push(e) } return o }, Nn = function(e, t, n) { for (e = e[t]; e; e = e[t]) if (e.nodeType === n) return e; return null }; bn({ parent: function(e) { var t = e.parentNode; return t && 11 !== t.nodeType ? t : null }, parents: function(e) { return xn(e, "parentNode") }, next: function(e) { return Nn(e, "nextSibling", 1) }, prev: function(e) { return Nn(e, "previousSibling", 1) }, children: function(e) { return wn(e.firstChild, "nextSibling", 1) }, contents: function(e) { return Yt.toArray(("iframe" === e.nodeName ? e.contentDocument || e.contentWindow.document : e).childNodes) } }, function(e, r) { pn.fn[e] = function(t) { var n = []; return this.each(function() { var e = r.call(n, this, t, n); e && (pn.isArray(e) ? n.push.apply(n, e) : n.push(e)) }), 1 < this.length && (tn[e] || (n = pn.unique(n)), 0 === e.indexOf("parents") && (n = n.reverse())), n = pn(n), t ? n.filter(t) : n } }), bn({ parentsUntil: function(e, t) { return xn(e, "parentNode", t) }, nextUntil: function(e, t) { return wn(e, "nextSibling", 1, t).slice(1) }, prevUntil: function(e, t) { return wn(e, "previousSibling", 1, t).slice(1) } }, function(r, o) { pn.fn[r] = function(t, e) { var n = []; return this.each(function() { var e = o.call(n, this, t, n); e && (pn.isArray(e) ? n.push.apply(n, e) : n.push(e)) }), 1 < this.length && (n = pn.unique(n), 0 !== r.indexOf("parents") && "prevUntil" !== r || (n = n.reverse())), n = pn(n), e ? n.filter(e) : n } }), pn.fn.is = function(e) { return !!e && 0 < this.filter(e).length }, pn.fn.init.prototype = pn.fn, pn.overrideDefaults = function(n) { var r, o = function(e, t) { return r = r || n(), 0 === arguments.length && (e = r.element), t || (t = r.context), new o.fn.init(e, t) }; return pn.extend(o, this), o }; var En = function(n, r, e) { bn(e, function(e, t) { n[e] = n[e] || {}, n[e][r] = t }) }; Re.ie && Re.ie < 8 && (En(mn, "get", { maxlength: function(e) { var t = e.maxLength; return 2147483647 === t ? undefined : t }, size: function(e) { var t = e.size; return 20 === t ? undefined : t }, "class": function(e) { return e.className }, style: function(e) { var t = e.style.cssText; return 0 === t.length ? undefined : t } }), En(mn, "set", { "class": function(e, t) { e.className = t }, style: function(e, t) { e.style.cssText = t } })), Re.ie && Re.ie < 9 && (dn["float"] = "styleFloat", En(gn, "set", { opacity: function(e, t) { var n = e.style; null === t || "" === t ? n.removeAttribute("filter") : (n.zoom = 1, n.filter = "alpha(opacity=" + 100 * t + ")") } })), pn.attrHooks = mn, pn.cssHooks = gn; var Sn = function(n) { var r, o = !1; return function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; return o || (o = !0, r = n.apply(null, e)), r } }, Tn = function(e, t) { var n = function(e, t) { for (var n = 0; n < e.length; n++) { var r = e[n]; if (r.test(t)) return r } return undefined }(e, t); if (!n) return { major: 0, minor: 0 }; var r = function(e) { return Number(t.replace(n, "$" + e)) }; return An(r(1), r(2)) }, kn = function() { return An(0, 0) }, An = function(e, t) { return { major: e, minor: t } }, _n = { nu: An, detect: function(e, t) { var n = String(t).toLowerCase(); return 0 === e.length ? kn() : Tn(e, n) }, unknown: kn }, Rn = "Firefox", Dn = function(e, t) { return function() { return t === e } }, Bn = function(e) { var t = e.current; return { current: t, version: e.version, isEdge: Dn("Edge", t), isChrome: Dn("Chrome", t), isIE: Dn("IE", t), isOpera: Dn("Opera", t), isFirefox: Dn(Rn, t), isSafari: Dn("Safari", t) } }, On = { unknown: function() { return Bn({ current: undefined, version: _n.unknown() }) }, nu: Bn, edge: H("Edge"), chrome: H("Chrome"), ie: H("IE"), opera: H("Opera"), firefox: H(Rn), safari: H("Safari") }, Pn = "Windows", Ln = "Android", In = "Solaris", Mn = "FreeBSD", Fn = function(e, t) { return function() { return t === e } }, Un = function(e) { var t = e.current; return { current: t, version: e.version, isWindows: Fn(Pn, t), isiOS: Fn("iOS", t), isAndroid: Fn(Ln, t), isOSX: Fn("OSX", t), isLinux: Fn("Linux", t), isSolaris: Fn(In, t), isFreeBSD: Fn(Mn, t) } }, zn = { unknown: function() { return Un({ current: undefined, version: _n.unknown() }) }, nu: Un, windows: H(Pn), ios: H("iOS"), android: H(Ln), linux: H("Linux"), osx: H("OSX"), solaris: H(In), freebsd: H(Mn) }, Vn = function(e, t) { var n = String(t).toLowerCase(); return V(e, function(e) { return e.search(n) }) }, qn = function(e, n) { return Vn(e, n).map(function(e) { var t = _n.detect(e.versionRegexes, n); return { current: e.name, version: t } }) }, Hn = function(e, n) { return Vn(e, n).map(function(e) { var t = _n.detect(e.versionRegexes, n); return { current: e.name, version: t } }) }, jn = function(e, t) { return -1 !== e.indexOf(t) }, $n = function(e) { return e.replace(/^\s+|\s+$/g, "") }, Wn = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, Kn = function(t) { return function(e) { return jn(e, t) } }, Xn = [{ name: "Edge", versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], search: function(e) { return jn(e, "edge/") && jn(e, "chrome") && jn(e, "safari") && jn(e, "applewebkit") } }, { name: "Chrome", versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, Wn], search: function(e) { return jn(e, "chrome") && !jn(e, "chromeframe") } }, { name: "IE", versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/], search: function(e) { return jn(e, "msie") || jn(e, "trident") } }, { name: "Opera", versionRegexes: [Wn, /.*?opera\/([0-9]+)\.([0-9]+).*/], search: Kn("opera") }, { name: "Firefox", versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], search: Kn("firefox") }, { name: "Safari", versionRegexes: [Wn, /.*?cpu os ([0-9]+)_([0-9]+).*/], search: function(e) { return (jn(e, "safari") || jn(e, "mobile/")) && jn(e, "applewebkit") } }], Yn = [{ name: "Windows", search: Kn("win"), versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] }, { name: "iOS", search: function(e) { return jn(e, "iphone") || jn(e, "ipad") }, versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/] }, { name: "Android", search: Kn("android"), versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] }, { name: "OSX", search: Kn("os x"), versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/] }, { name: "Linux", search: Kn("linux"), versionRegexes: [] }, { name: "Solaris", search: Kn("sunos"), versionRegexes: [] }, { name: "FreeBSD", search: Kn("freebsd"), versionRegexes: [] }], Gn = { browsers: H(Xn), oses: H(Yn) }, Jn = function(e) { var t, n, r, o, i, a, u, s, c, l, f, d = Gn.browsers(), m = Gn.oses(), g = qn(d, e).fold(On.unknown, On.nu), p = Hn(m, e).fold(zn.unknown, zn.nu); return { browser: g, os: p, deviceType: (n = g, r = e, o = (t = p).isiOS() && !0 === /ipad/i.test(r), i = t.isiOS() && !o, a = t.isAndroid() && 3 === t.version.major, u = t.isAndroid() && 4 === t.version.major, s = o || a || u && !0 === /mobile/i.test(r), c = t.isiOS() || t.isAndroid(), l = c && !s, f = n.isSafari() && t.isiOS() && !1 === /safari/i.test(r), { isiPad: H(o), isiPhone: H(i), isTablet: H(s), isPhone: H(l), isTouch: H(c), isAndroid: t.isAndroid, isiOS: t.isiOS, isWebView: H(f) }) } }, Qn = { detect: Sn(function() { var e = navigator.userAgent; return Jn(e) }) }, Zn = function(e) { if (null === e || e === undefined) throw new Error("Node cannot be null or undefined"); return { dom: H(e) } }, er = { fromHtml: function(e, t) { var n = (t || document).createElement("div"); if (n.innerHTML = e, !n.hasChildNodes() || 1 < n.childNodes.length) throw console.error("HTML does not have a single root node", e), "HTML must have a single root node"; return Zn(n.childNodes[0]) }, fromTag: function(e, t) { var n = (t || document).createElement(e); return Zn(n) }, fromText: function(e, t) { var n = (t || document).createTextNode(e); return Zn(n) }, fromDom: Zn, fromPoint: function(e, t, n) { var r = e.dom(); return A.from(r.elementFromPoint(t, n)).map(Zn) } }, tr = { ATTRIBUTE: Node.ATTRIBUTE_NODE, CDATA_SECTION: Node.CDATA_SECTION_NODE, COMMENT: Node.COMMENT_NODE, DOCUMENT: Node.DOCUMENT_NODE, DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE, DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE, ELEMENT: Node.ELEMENT_NODE, TEXT: Node.TEXT_NODE, PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE, ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE, ENTITY: Node.ENTITY_NODE, NOTATION: Node.NOTATION_NODE }, nr = function(e) { return e.dom().nodeName.toLowerCase() }, rr = function(e) { return e.dom().nodeType }, or = function(t) { return function(e) { return rr(e) === t } }, ir = or(tr.ELEMENT), ar = or(tr.TEXT), ur = or(tr.DOCUMENT), sr = { name: nr, type: rr, value: function(e) { return e.dom().nodeValue }, isElement: ir, isText: ar, isDocument: ur, isComment: function(e) { return rr(e) === tr.COMMENT || "#comment" === nr(e) } }, cr = Object.keys, lr = function(e, t) { for (var n = cr(e), r = 0, o = n.length; r < o; r++) { var i = n[r]; t(e[i], i, e) } }, fr = function(r, o) { var i = {}; return lr(r, function(e, t) { var n = o(e, t, r); i[n.k] = n.v }), i }, dr = function(e, t, n) { if (!(k(n) || B(n) || P(n))) throw console.error("Invalid call to Attr.set. Key ", t, ":: Value ", n, ":: Element ", e), new Error("Attribute value was not simple"); e.setAttribute(t, n + "") }, mr = function(e, t, n) { dr(e.dom(), t, n) }, gr = function(e, t) { var n = e.dom().getAttribute(t); return null === n ? undefined : n }, pr = function(e, t) { var n = e.dom(); return !(!n || !n.hasAttribute) && n.hasAttribute(t) }, hr = { clone: function(e) { return z(e.dom().attributes, function(e, t) { return e[t.name] = t.value, e }, {}) }, set: mr, setAll: function(e, t) { var n = e.dom(); lr(t, function(e, t) { dr(n, t, e) }) }, get: gr, has: pr, remove: function(e, t) { e.dom().removeAttribute(t) }, hasNone: function(e) { var t = e.dom().attributes; return t === undefined || null === t || 0 === t.length }, transfer: function(o, i, e) { sr.isElement(o) && sr.isElement(i) && F(e, function(e) { var t, n, r; n = i, pr(t = o, r = e) && !pr(n, r) && mr(n, r, gr(t, r)) }) } }, vr = Sn(function() { return br(er.fromDom(document)) }), br = function(e) { var t = e.dom().body; if (null === t || t === undefined) throw "Body is not available yet"; return er.fromDom(t) }, yr = { body: vr, getBody: br, inBody: function(e) { var t = sr.isText(e) ? e.dom().parentNode : e.dom(); return t !== undefined && null !== t && t.ownerDocument.body.contains(t) } }, Cr = function(e) { return e.style !== undefined }, xr = function(e, t, n) { if (!k(n)) throw console.error("Invalid call to CSS.set. Property ", t, ":: Value ", n, ":: Element ", e), new Error("CSS value must be a string: " + n); Cr(e) && e.style.setProperty(t, n) }, wr = function(e, t) { return Cr(e) ? e.style.getPropertyValue(t) : "" }, Nr = function(e, t) { var n = e.dom(), r = wr(n, t); return A.from(r).filter(function(e) { return 0 < e.length }) }, Er = function(e, t) { var n = e.dom(); lr(t, function(e, t) { xr(n, t, e) }) }, Sr = function(e, t) { var n = e.dom(), r = window.getComputedStyle(n).getPropertyValue(t), o = "" !== r || yr.inBody(e) ? r : wr(n, t); return null === o ? undefined : o }, Tr = Nr, kr = function() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; return function() { for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e]; if (t.length !== n.length) throw new Error('Wrong number of arguments to struct. Expected "[' + t.length + ']", got ' + n.length + " arguments"); var r = {}; return F(t, function(e, t) { r[e] = H(n[t]) }), r } }, Ar = function(e, t) { for (var n = [], r = function(e) { return n.push(e), t(e) }, o = t(e); (o = o.bind(r)).isSome();); return n }, _r = function() { return ie.getOrDie("Node") }, Rr = function(e, t, n) { return 0 != (e.compareDocumentPosition(t) & n) }, Dr = function(e, t) { return Rr(e, t, _r().DOCUMENT_POSITION_CONTAINED_BY) }, Br = tr.ELEMENT, Or = tr.DOCUMENT, Pr = function(e) { return e.nodeType !== Br && e.nodeType !== Or || 0 === e.childElementCount }, Lr = { all: function(e, t) { var n = t === undefined ? document : t.dom(); return Pr(n) ? [] : $(n.querySelectorAll(e), er.fromDom) }, is: function(e, t) { var n = e.dom(); if (n.nodeType !== Br) return !1; if (n.matches !== undefined) return n.matches(t); if (n.msMatchesSelector !== undefined) return n.msMatchesSelector(t); if (n.webkitMatchesSelector !== undefined) return n.webkitMatchesSelector(t); if (n.mozMatchesSelector !== undefined) return n.mozMatchesSelector(t); throw new Error("Browser lacks native selectors") }, one: function(e, t) { var n = t === undefined ? document : t.dom(); return Pr(n) ? A.none() : A.from(n.querySelector(e)).map(er.fromDom) } }, Ir = function(e, t) { return e.dom() === t.dom() }, Mr = Qn.detect().browser.isIE() ? function(e, t) { return Dr(e.dom(), t.dom()) } : function(e, t) { var n = e.dom(), r = t.dom(); return n !== r && n.contains(r) }, Fr = { eq: Ir, isEqualNode: function(e, t) { return e.dom().isEqualNode(t.dom()) }, member: function(e, t) { return M(t, b(Ir, e)) }, contains: Mr, is: Lr.is }, Ur = function(e) { var t = e.dom(); return A.from(t.parentNode).map(er.fromDom) }, zr = function(e) { var t = e.dom(); return A.from(t.previousSibling).map(er.fromDom) }, Vr = function(e) { var t = e.dom(); return A.from(t.nextSibling).map(er.fromDom) }, qr = function(e) { var t = e.dom(); return $(t.childNodes, er.fromDom) }, Hr = function(e, t) { var n = e.dom().childNodes; return A.from(n[t]).map(er.fromDom) }, jr = kr("element", "offset"), $r = { owner: function(e) { return er.fromDom(e.dom().ownerDocument) }, defaultView: function(e) { var t = e.dom().ownerDocument.defaultView; return er.fromDom(t) }, documentElement: function(e) { return er.fromDom(e.dom().ownerDocument.documentElement) }, parent: Ur, findIndex: function(n) { return Ur(n).bind(function(e) { var t = qr(e); return K(t, function(e) { return Fr.eq(n, e) }) }) }, parents: function(e, t) { for (var n = O(t) ? t : H(!1), r = e.dom(), o = []; null !== r.parentNode && r.parentNode !== undefined;) { var i = r.parentNode, a = er.fromDom(i); if (o.push(a), !0 === n(a)) break; r = i } return o }, siblings: function(t) { return Ur(t).map(qr).map(function(e) { return U(e, function(e) { return !Fr.eq(t, e) }) }).getOr([]) }, prevSibling: zr, offsetParent: function(e) { var t = e.dom(); return A.from(t.offsetParent).map(er.fromDom) }, prevSiblings: function(e) { return t = Ar(e, zr), (n = Q.call(t, 0)).reverse(), n; var t, n }, nextSibling: Vr, nextSiblings: function(e) { return Ar(e, Vr) }, children: qr, child: Hr, firstChild: function(e) { return Hr(e, 0) }, lastChild: function(e) { return Hr(e, e.dom().childNodes.length - 1) }, childNodesCount: function(e) { return e.dom().childNodes.length }, hasChildNodes: function(e) { return e.dom().hasChildNodes() }, leaf: function(e, t) { var n = qr(e); return 0 < n.length && t < n.length ? jr(n[t], 0) : jr(e, t) } }, Wr = Qn.detect().browser, Kr = function(e) { return V(e, sr.isElement) }, Xr = { getPos: function(e, t, n) { var r, o, i, a = 0, u = 0, s = e.ownerDocument; if (n = n || e, t) { if (n === e && t.getBoundingClientRect && "static" === Sr(er.fromDom(e), "position")) return { x: a = (o = t.getBoundingClientRect()).left + (s.documentElement.scrollLeft || e.scrollLeft) - s.documentElement.clientLeft, y: u = o.top + (s.documentElement.scrollTop || e.scrollTop) - s.documentElement.clientTop }; for (r = t; r && r !== n && r.nodeType;) a += r.offsetLeft || 0, u += r.offsetTop || 0, r = r.offsetParent; for (r = t.parentNode; r && r !== n && r.nodeType;) a -= r.scrollLeft || 0, u -= r.scrollTop || 0, r = r.parentNode; u += (i = er.fromDom(t), Wr.isFirefox() && "table" === sr.name(i) ? Kr($r.children(i)).filter(function(e) { return "caption" === sr.name(e) }).bind(function(o) { return Kr($r.nextSiblings(o)).map(function(e) { var t = e.dom().offsetTop, n = o.dom().offsetTop, r = o.dom().offsetHeight; return t <= n ? -r : 0 }) }).getOr(0) : 0) } return { x: a, y: u } } }, Yr = function(e) { var n = A.none(), t = [], r = function(e) { o() ? a(e) : t.push(e) }, o = function() { return n.isSome() }, i = function(e) { F(e, a) }, a = function(t) { n.each(function(e) { setTimeout(function() { t(e) }, 0) }) }; return e(function(e) { n = A.some(e), i(t), t = [] }), { get: r, map: function(n) { return Yr(function(t) { r(function(e) { t(n(e)) }) }) }, isReady: o } }, Gr = { nu: Yr, pure: function(t) { return Yr(function(e) { e(t) }) } }, Jr = function(t) { var e = function(e) { var r; t((r = e, function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; var n = this; setTimeout(function() { r.apply(n, e) }, 0) })) }; return { map: function(r) { return Jr(function(n) { e(function(e) { var t = r(e); n(t) }) }) }, bind: function(n) { return Jr(function(t) { e(function(e) { n(e).get(t) }) }) }, anonBind: function(n) { return Jr(function(t) { e(function(e) { n.get(t) }) }) }, toLazy: function() { return Gr.nu(e) }, get: e } }, Qr = { nu: Jr, pure: function(t) { return Jr(function(e) { e(t) }) } }, Zr = function(a, e) { return e(function(r) { var o = [], i = 0; 0 === a.length ? r([]) : F(a, function(e, t) { var n; e.get((n = t, function(e) { o[n] = e, ++i >= a.length && r(o) })) }) }) }, eo = function(e) { return Zr(e, Qr.nu) }, to = function(n) { return { is: function(e) { return n === e }, isValue: C, isError: y, getOr: H(n), getOrThunk: H(n), getOrDie: H(n), or: function(e) { return to(n) }, orThunk: function(e) { return to(n) }, fold: function(e, t) { return t(n) }, map: function(e) { return to(e(n)) }, each: function(e) { e(n) }, bind: function(e) { return e(n) }, exists: function(e) { return e(n) }, forall: function(e) { return e(n) }, toOption: function() { return A.some(n) } } }, no = function(n) { return { is: y, isValue: y, isError: C, getOr: j, getOrThunk: function(e) { return e() }, getOrDie: function() { return e = String(n), function() { throw new Error(e) }(); var e }, or: function(e) { return e }, orThunk: function(e) { return e() }, fold: function(e, t) { return e(n) }, map: function(e) { return no(n) }, each: v, bind: function(e) { return no(n) }, exists: y, forall: C, toOption: A.none } }, ro = { value: to, error: no }; function oo(e, u) { var t = e, n = function(e, t, n, r) { var o, i; if (e) { if (!r && e[t]) return e[t]; if (e !== u) { if (o = e[n]) return o; for (i = e.parentNode; i && i !== u; i = i.parentNode) if (o = i[n]) return o } } }; this.current = function() { return t }, this.next = function(e) { return t = n(t, "firstChild", "nextSibling", e) }, this.prev = function(e) { return t = n(t, "lastChild", "previousSibling", e) }, this.prev2 = function(e) { return t = function(e, t, n, r) { var o, i, a; if (e) { if (o = e[n], u && o === u) return; if (o) { if (!r) for (a = o[t]; a; a = a[t]) if (!a[t]) return a; return o } if ((i = e.parentNode) && i !== u) return i } }(t, "lastChild", "previousSibling", e) } } var io, ao, uo, so = function(t) { var n; return function(e) { return (n = n || function(e, t) { for (var n = {}, r = 0, o = e.length; r < o; r++) { var i = e[r]; n[String(i)] = t(i, r) } return n }(t, H(!0))).hasOwnProperty(sr.name(e)) } }, co = so(["h1", "h2", "h3", "h4", "h5", "h6"]), lo = so(["article", "aside", "details", "div", "dt", "figcaption", "footer", "form", "fieldset", "header", "hgroup", "html", "main", "nav", "section", "summary", "body", "p", "dl", "multicol", "dd", "figure", "address", "center", "blockquote", "h1", "h2", "h3", "h4", "h5", "h6", "listing", "xmp", "pre", "plaintext", "menu", "dir", "ul", "ol", "li", "hr", "table", "tbody", "thead", "tfoot", "th", "tr", "td", "caption"]), fo = function(e) { return sr.isElement(e) && !lo(e) }, mo = function(e) { return sr.isElement(e) && "br" === sr.name(e) }, go = so(["h1", "h2", "h3", "h4", "h5", "h6", "p", "div", "address", "pre", "form", "blockquote", "center", "dir", "fieldset", "header", "footer", "article", "section", "hgroup", "aside", "nav", "figure"]), po = so(["ul", "ol", "dl"]), ho = so(["li", "dd", "dt"]), vo = so(["area", "base", "basefont", "br", "col", "frame", "hr", "img", "input", "isindex", "link", "meta", "param", "embed", "source", "wbr", "track"]), bo = so(["thead", "tbody", "tfoot"]), yo = so(["td", "th"]), Co = so(["pre", "script", "textarea", "style"]), xo = function(t) { return function(e) { return !!e && e.nodeType === t } }, wo = xo(1), No = function(e) { var r = e.toLowerCase().split(" "); return function(e) { var t, n; if (e && e.nodeType) for (n = e.nodeName.toLowerCase(), t = 0; t < r.length; t++) if (n === r[t]) return !0; return !1 } }, Eo = function(t) { return function(e) { if (wo(e)) { if (e.contentEditable === t) return !0; if (e.getAttribute("data-mce-contenteditable") === t) return !0 } return !1 } }, So = xo(3), To = xo(8), ko = xo(9), Ao = No("br"), _o = Eo("true"), Ro = Eo("false"), Do = { isText: So, isElement: wo, isComment: To, isDocument: ko, isBr: Ao, isContentEditableTrue: _o, isContentEditableFalse: Ro, matchNodeNames: No, hasPropValue: function(t, n) { return function(e) { return wo(e) && e[t] === n } }, hasAttribute: function(t, e) { return function(e) { return wo(e) && e.hasAttribute(t) } }, hasAttributeValue: function(t, n) { return function(e) { return wo(e) && e.getAttribute(t) === n } }, matchStyleValues: function(r, e) { var o = e.toLowerCase().split(" "); return function(e) { var t; if (wo(e)) for (t = 0; t < o.length; t++) { var n = e.ownerDocument.defaultView.getComputedStyle(e, null); if ((n ? n.getPropertyValue(r) : null) === o[t]) return !0 } return !1 } }, isBogus: function(e) { return wo(e) && e.hasAttribute("data-mce-bogus") }, isBogusAll: function(e) { return wo(e) && "all" === e.getAttribute("data-mce-bogus") }, isTable: function(e) { return wo(e) && "TABLE" === e.tagName } }, Bo = function(e) { return e && "SPAN" === e.tagName && "bookmark" === e.getAttribute("data-mce-type") }, Oo = function(e, t) { var n, r = t.childNodes; if (!Do.isElement(t) || !Bo(t)) { for (n = r.length - 1; 0 <= n; n--) Oo(e, r[n]); if (!1 === Do.isDocument(t)) { if (Do.isText(t) && 0 < t.nodeValue.length) { var o = Yt.trim(t.nodeValue).length; if (e.isBlock(t.parentNode) || 0 < o) return; if (0 === o && (a = (i = t).previousSibling && "SPAN" === i.previousSibling.nodeName, u = i.nextSibling && "SPAN" === i.nextSibling.nodeName, a && u)) return } else if (Do.isElement(t) && (1 === (r = t.childNodes).length && Bo(r[0]) && t.parentNode.insertBefore(r[0], t), r.length || vo(er.fromDom(t)))) return; e.remove(t) } var i, a, u; return t } }, Po = { trimNode: Oo }, Lo = Yt.makeMap, Io = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g, Mo = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g, Fo = /[<>&\"\']/g, Uo = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi, zo = { 128: "\u20ac", 130: "\u201a", 131: "\u0192", 132: "\u201e", 133: "\u2026", 134: "\u2020", 135: "\u2021", 136: "\u02c6", 137: "\u2030", 138: "\u0160", 139: "\u2039", 140: "\u0152", 142: "\u017d", 145: "\u2018", 146: "\u2019", 147: "\u201c", 148: "\u201d", 149: "\u2022", 150: "\u2013", 151: "\u2014", 152: "\u02dc", 153: "\u2122", 154: "\u0161", 155: "\u203a", 156: "\u0153", 158: "\u017e", 159: "\u0178" }; ao = { '"': """, "'": "'", "<": "<", ">": ">", "&": "&", "`": "`" }, uo = { "<": "<", ">": ">", "&": "&", """: '"', "'": "'" }; var Vo = function(e, t) { var n, r, o, i = {}; if (e) { for (e = e.split(","), t = t || 10, n = 0; n < e.length; n += 2) r = String.fromCharCode(parseInt(e[n], t)), ao[r] || (o = "&" + e[n + 1] + ";", i[r] = o, i[o] = r); return i } }; io = Vo("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro", 32); var qo = function(e, t) { return e.replace(t ? Io : Mo, function(e) { return ao[e] || e }) }, Ho = function(e, t) { return e.replace(t ? Io : Mo, function(e) { return 1 < e.length ? "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : ao[e] || "&#" + e.charCodeAt(0) + ";" }) }, jo = function(e, t, n) { return n = n || io, e.replace(t ? Io : Mo, function(e) { return ao[e] || n[e] || e }) }, $o = { encodeRaw: qo, encodeAllRaw: function(e) { return ("" + e).replace(Fo, function(e) { return ao[e] || e }) }, encodeNumeric: Ho, encodeNamed: jo, getEncodeFunc: function(e, t) { var n = Vo(t) || io, r = Lo(e.replace(/\+/g, ",")); return r.named && r.numeric ? function(e, t) { return e.replace(t ? Io : Mo, function(e) { return ao[e] !== undefined ? ao[e] : n[e] !== undefined ? n[e] : 1 < e.length ? "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : "&#" + e.charCodeAt(0) + ";" }) } : r.named ? t ? function(e, t) { return jo(e, t, n) } : jo : r.numeric ? Ho : qo }, decode: function(e) { return e.replace(Uo, function(e, t) { return t ? 65535 < (t = "x" === t.charAt(0).toLowerCase() ? parseInt(t.substr(1), 16) : parseInt(t, 10)) ? (t -= 65536, String.fromCharCode(55296 + (t >> 10), 56320 + (1023 & t))) : zo[t] || String.fromCharCode(t) : uo[e] || io[e] || (n = e, (r = er.fromTag("div").dom()).innerHTML = n, r.textContent || r.innerText || n); var n, r }) } }, Wo = {}, Ko = {}, Xo = Yt.makeMap, Yo = Yt.each, Go = Yt.extend, Jo = Yt.explode, Qo = Yt.inArray, Zo = function(e, t) { return (e = Yt.trim(e)) ? e.split(t || " ") : [] }, ei = function(e) { var u, t, n, r, o, i, s = {}, a = function(e, t, n) { var r, o, i, a = function(e, t) { var n, r, o = {}; for (n = 0, r = e.length; n < r; n++) o[e[n]] = t || {}; return o }; for (t = t || "", "string" == typeof(n = n || []) && (n = Zo(n)), r = (e = Zo(e)).length; r--;) i = { attributes: a(o = Zo([u, t].join(" "))), attributesOrder: o, children: a(n, Ko) }, s[e[r]] = i }, c = function(e, t) { var n, r, o, i; for (n = (e = Zo(e)).length, t = Zo(t); n--;) for (r = s[e[n]], o = 0, i = t.length; o < i; o++) r.attributes[t[o]] = {}, r.attributesOrder.push(t[o]) }; return Wo[e] ? Wo[e] : (u = "id accesskey class dir lang style tabindex title role", t = "address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul", n = "a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment", "html4" !== e && (u += " contenteditable contextmenu draggable dropzone hidden spellcheck translate", t += " article aside details dialog figure header footer hgroup section nav", n += " audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"), "html5-strict" !== e && (u += " xml:lang", n = [n, i = "acronym applet basefont big font strike tt"].join(" "), Yo(Zo(i), function(e) { a(e, "", n) }), t = [t, o = "center dir isindex noframes"].join(" "), r = [t, n].join(" "), Yo(Zo(o), function(e) { a(e, "", r) })), r = r || [t, n].join(" "), a("html", "manifest", "head body"), a("head", "", "base command link meta noscript script style title"), a("title hr noscript br"), a("base", "href target"), a("link", "href rel media hreflang type sizes hreflang"), a("meta", "name http-equiv content charset"), a("style", "media type scoped"), a("script", "src async defer type charset"), a("body", "onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload", r), a("address dt dd div caption", "", r), a("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn", "", n), a("blockquote", "cite", r), a("ol", "reversed start type", "li"), a("ul", "", "li"), a("li", "value", r), a("dl", "", "dt dd"), a("a", "href target rel media hreflang type", n), a("q", "cite", n), a("ins del", "cite datetime", r), a("img", "src sizes srcset alt usemap ismap width height"), a("iframe", "src name width height", r), a("embed", "src type width height"), a("object", "data type typemustmatch name usemap form width height", [r, "param"].join(" ")), a("param", "name value"), a("map", "name", [r, "area"].join(" ")), a("area", "alt coords shape href target rel media hreflang type"), a("table", "border", "caption colgroup thead tfoot tbody tr" + ("html4" === e ? " col" : "")), a("colgroup", "span", "col"), a("col", "span"), a("tbody thead tfoot", "", "tr"), a("tr", "", "td th"), a("td", "colspan rowspan headers", r), a("th", "colspan rowspan headers scope abbr", r), a("form", "accept-charset action autocomplete enctype method name novalidate target", r), a("fieldset", "disabled form name", [r, "legend"].join(" ")), a("label", "form for", n), a("input", "accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"), a("button", "disabled form formaction formenctype formmethod formnovalidate formtarget name type value", "html4" === e ? r : n), a("select", "disabled form multiple name required size", "option optgroup"), a("optgroup", "disabled label", "option"), a("option", "disabled label selected value"), a("textarea", "cols dirname disabled form maxlength name readonly required rows wrap"), a("menu", "type label", [r, "li"].join(" ")), a("noscript", "", r), "html4" !== e && (a("wbr"), a("ruby", "", [n, "rt rp"].join(" ")), a("figcaption", "", r), a("mark rt rp summary bdi", "", n), a("canvas", "width height", r), a("video", "src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered", [r, "track source"].join(" ")), a("audio", "src crossorigin preload autoplay mediagroup loop muted controls buffered volume", [r, "track source"].join(" ")), a("picture", "", "img source"), a("source", "src srcset type media sizes"), a("track", "kind src srclang label default"), a("datalist", "", [n, "option"].join(" ")), a("article section nav aside header footer", "", r), a("hgroup", "", "h1 h2 h3 h4 h5 h6"), a("figure", "", [r, "figcaption"].join(" ")), a("time", "datetime", n), a("dialog", "open", r), a("command", "type label icon disabled checked radiogroup command"), a("output", "for form name", n), a("progress", "value max", n), a("meter", "value min max low high optimum", n), a("details", "open", [r, "summary"].join(" ")), a("keygen", "autofocus challenge disabled form keytype name")), "html5-strict" !== e && (c("script", "language xml:space"), c("style", "xml:space"), c("object", "declare classid code codebase codetype archive standby align border hspace vspace"), c("embed", "align name hspace vspace"), c("param", "valuetype type"), c("a", "charset name rev shape coords"), c("br", "clear"), c("applet", "codebase archive code object alt name width height align hspace vspace"), c("img", "name longdesc align border hspace vspace"), c("iframe", "longdesc frameborder marginwidth marginheight scrolling align"), c("font basefont", "size color face"), c("input", "usemap align"), c("select", "onchange"), c("textarea"), c("h1 h2 h3 h4 h5 h6 div p legend caption", "align"), c("ul", "type compact"), c("li", "type"), c("ol dl menu dir", "compact"), c("pre", "width xml:space"), c("hr", "align noshade size width"), c("isindex", "prompt"), c("table", "summary width frame rules cellspacing cellpadding align bgcolor"), c("col", "width align char charoff valign"), c("colgroup", "width align char charoff valign"), c("thead", "align char charoff valign"), c("tr", "align char charoff valign bgcolor"), c("th", "axis align char charoff valign nowrap bgcolor width height"), c("form", "accept"), c("td", "abbr axis scope align char charoff valign nowrap bgcolor width height"), c("tfoot", "align char charoff valign"), c("tbody", "align char charoff valign"), c("area", "nohref"), c("body", "background bgcolor text link vlink alink")), "html4" !== e && (c("input button select textarea", "autofocus"), c("input textarea", "placeholder"), c("a", "download"), c("link script img", "crossorigin"), c("iframe", "sandbox seamless allowfullscreen")), Yo(Zo("a form meter progress dfn"), function(e) { s[e] && delete s[e].children[e] }), delete s.caption.children.table, delete s.script, Wo[e] = s) }, ti = function(e, n) { var r; return e && (r = {}, "string" == typeof e && (e = { "*": e }), Yo(e, function(e, t) { r[t] = r[t.toUpperCase()] = "map" === n ? Xo(e, /[, ]/) : Jo(e, /[, ]/) })), r }; function ni(i) { var e, t, n, r, o, a, u, s, c, l, f, d, m, N = {}, g = {}, E = [], p = {}, h = {}, v = function(e, t, n) { var r = i[e]; return r ? r = Xo(r, /[, ]/, Xo(r.toUpperCase(), /[, ]/)) : (r = Wo[e]) || (r = Xo(t, " ", Xo(t.toUpperCase(), " ")), r = Go(r, n), Wo[e] = r), r }; n = ei((i = i || {}).schema), !1 === i.verify_html && (i.valid_elements = "*[*]"), e = ti(i.valid_styles), t = ti(i.invalid_styles, "map"), s = ti(i.valid_classes, "map"), r = v("whitespace_elements", "pre script noscript style textarea video audio iframe object code"), o = v("self_closing_elements", "colgroup dd dt li option p td tfoot th thead tr"), a = v("short_ended_elements", "area base basefont br col frame hr img input isindex link meta param embed source wbr track"), u = v("boolean_attributes", "checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"), l = v("non_empty_elements", "td th iframe video audio object script pre code", a), f = v("move_caret_before_on_enter_elements", "table", l), d = v("text_block_elements", "h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure"), c = v("block_elements", "hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup figcaption details summary", d), m = v("text_inline_elements", "span strong b em i font strike u var cite dfn code mark q sup sub samp"), Yo((i.special || "script noscript noframes noembed title style textarea xmp").split(" "), function(e) { h[e] = new RegExp("]*>", "gi") }); var S = function(e) { return new RegExp("^" + e.replace(/([?+*])/g, ".$1") + "$") }, b = function(e) { var t, n, r, o, i, a, u, s, c, l, f, d, m, g, p, h, v, b, y, C = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/, x = /^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/, w = /[*?+]/; if (e) for (e = Zo(e, ","), N["@"] && (h = N["@"].attributes, v = N["@"].attributesOrder), t = 0, n = e.length; t < n; t++) if (i = C.exec(e[t])) { if (g = i[1], c = i[2], p = i[3], s = i[5], a = { attributes: d = {}, attributesOrder: m = [] }, "#" === g && (a.paddEmpty = !0), "-" === g && (a.removeEmpty = !0), "!" === i[4] && (a.removeEmptyAttrs = !0), h) { for (b in h) d[b] = h[b]; m.push.apply(m, v) } if (s) for (r = 0, o = (s = Zo(s, "|")).length; r < o; r++) if (i = x.exec(s[r])) { if (u = {}, f = i[1], l = i[2].replace(/[\\:]:/g, ":"), g = i[3], y = i[4], "!" === f && (a.attributesRequired = a.attributesRequired || [], a.attributesRequired.push(l), u.required = !0), "-" === f) { delete d[l], m.splice(Qo(m, l), 1); continue } g && ("=" === g && (a.attributesDefault = a.attributesDefault || [], a.attributesDefault.push({ name: l, value: y }), u.defaultValue = y), ":" === g && (a.attributesForced = a.attributesForced || [], a.attributesForced.push({ name: l, value: y }), u.forcedValue = y), "<" === g && (u.validValues = Xo(y, "?"))), w.test(l) ? (a.attributePatterns = a.attributePatterns || [], u.pattern = S(l), a.attributePatterns.push(u)) : (d[l] || m.push(l), d[l] = u) } h || "@" !== c || (h = d, v = m), p && (a.outputName = c, N[p] = a), w.test(c) ? (a.pattern = S(c), E.push(a)) : N[c] = a } }, y = function(e) { N = {}, E = [], b(e), Yo(n, function(e, t) { g[t] = e.children }) }, C = function(e) { var a = /^(~)?(.+)$/; e && (Wo.text_block_elements = Wo.block_elements = null, Yo(Zo(e, ","), function(e) { var t = a.exec(e), n = "~" === t[1], r = n ? "span" : "div", o = t[2]; if (g[o] = g[r], p[o] = r, n || (c[o.toUpperCase()] = {}, c[o] = {}), !N[o]) { var i = N[r]; delete(i = Go({}, i)).removeEmptyAttrs, delete i.removeEmpty, N[o] = i } Yo(g, function(e, t) { e[r] && (g[t] = e = Go({}, g[t]), e[o] = e[r]) }) })) }, x = function(e) { var o = /^([+\-]?)(\w+)\[([^\]]+)\]$/; Wo[i.schema] = null, e && Yo(Zo(e, ","), function(e) { var t, n, r = o.exec(e); r && (n = r[1], t = n ? g[r[2]] : g[r[2]] = { "#comment": {} }, t = g[r[2]], Yo(Zo(r[3], "|"), function(e) { "-" === n ? delete t[e] : t[e] = {} })) }) }, w = function(e) { var t, n = N[e]; if (n) return n; for (t = E.length; t--;) if ((n = E[t]).pattern.test(e)) return n }; return i.valid_elements ? y(i.valid_elements) : (Yo(n, function(e, t) { N[t] = { attributes: e.attributes, attributesOrder: e.attributesOrder }, g[t] = e.children }), "html5" !== i.schema && Yo(Zo("strong/b em/i"), function(e) { e = Zo(e, "/"), N[e[1]].outputName = e[0] }), Yo(Zo("ol ul sub sup blockquote span font a table tbody tr strong em b i"), function(e) { N[e] && (N[e].removeEmpty = !0) }), Yo(Zo("p h1 h2 h3 h4 h5 h6 th td pre div address caption li"), function(e) { N[e].paddEmpty = !0 }), Yo(Zo("span"), function(e) { N[e].removeEmptyAttrs = !0 })), C(i.custom_elements), x(i.valid_children), b(i.extended_valid_elements), x("+ol[ul|ol],+ul[ul|ol]"), Yo({ dd: "dl", dt: "dl", li: "ul ol", td: "tr", th: "tr", tr: "tbody thead tfoot", tbody: "table", thead: "table", tfoot: "table", legend: "fieldset", area: "map", param: "video audio object" }, function(e, t) { N[t] && (N[t].parentsRequired = Zo(e)) }), i.invalid_elements && Yo(Jo(i.invalid_elements), function(e) { N[e] && delete N[e] }), w("span") || b("span[!data-mce-type|*]"), { children: g, elements: N, getValidStyles: function() { return e }, getValidClasses: function() { return s }, getBlockElements: function() { return c }, getInvalidStyles: function() { return t }, getShortEndedElements: function() { return a }, getTextBlockElements: function() { return d }, getTextInlineElements: function() { return m }, getBoolAttrs: function() { return u }, getElementRule: w, getSelfClosingElements: function() { return o }, getNonEmptyElements: function() { return l }, getMoveCaretBeforeOnEnterElements: function() { return f }, getWhiteSpaceElements: function() { return r }, getSpecialElements: function() { return h }, isValidChild: function(e, t) { var n = g[e.toLowerCase()]; return !(!n || !n[t.toLowerCase()]) }, isValid: function(e, t) { var n, r, o = w(e); if (o) { if (!t) return !0; if (o.attributes[t]) return !0; if (n = o.attributePatterns) for (r = n.length; r--;) if (n[r].pattern.test(e)) return !0 } return !1 }, getCustomElements: function() { return p }, addValidElements: b, setValidElements: y, addCustomElements: C, addValidChildren: x } } var ri = function(e, t, n, r) { var o = function(e) { return 1 < (e = parseInt(e, 10).toString(16)).length ? e : "0" + e }; return "#" + o(t) + o(n) + o(r) }; function oi(y, e) { var C, t, c, l, x = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi, w = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi, N = /\s*([^:]+):\s*([^;]+);?/g, E = /\s+$/, S = {}, T = "\ufeff"; for (y = y || {}, e && (c = e.getValidStyles(), l = e.getInvalidStyles()), t = ("\\\" \\' \\; \\: ; : " + T).split(" "), C = 0; C < t.length; C++) S[t[C]] = T + C, S[T + C] = t[C]; return { toHex: function(e) { return e.replace(x, ri) }, parse: function(e) { var t, n, r, o, i, a, u, s, c = {}, l = y.url_converter, f = y.url_converter_scope || this, d = function(e, t, n) { var r, o, i, a; if ((r = c[e + "-top" + t]) && (o = c[e + "-right" + t]) && (i = c[e + "-bottom" + t]) && (a = c[e + "-left" + t])) { var u = [r, o, i, a]; for (C = u.length - 1; C-- && u[C] === u[C + 1];); - 1 < C && n || (c[e + t] = -1 === C ? u[0] : u.join(" "), delete c[e + "-top" + t], delete c[e + "-right" + t], delete c[e + "-bottom" + t], delete c[e + "-left" + t]) } }, m = function(e) { var t, n = c[e]; if (n) { for (t = (n = n.split(" ")).length; t--;) if (n[t] !== n[0]) return !1; return c[e] = n[0], !0 } }, g = function(e) { return o = !0, S[e] }, p = function(e, t) { return o && (e = e.replace(/\uFEFF[0-9]/g, function(e) { return S[e] })), t || (e = e.replace(/\\([\'\";:])/g, "$1")), e }, h = function(e) { return String.fromCharCode(parseInt(e.slice(1), 16)) }, v = function(e) { return e.replace(/\\[0-9a-f]+/gi, h) }, b = function(e, t, n, r, o, i) { if (o = o || i) return "'" + (o = p(o)).replace(/\'/g, "\\'") + "'"; if (t = p(t || n || r), !y.allow_script_urls) { var a = t.replace(/[\s\r\n]+/g, ""); if (/(java|vb)script:/i.test(a)) return ""; if (!y.allow_svg_data_urls && /^data:image\/svg/i.test(a)) return "" } return l && (t = l.call(f, t, "style")), "url('" + t.replace(/\'/g, "\\'") + "')" }; if (e) { for (e = (e = e.replace(/[\u0000-\u001F]/g, "")).replace(/\\[\"\';:\uFEFF]/g, g).replace(/\"[^\"]+\"|\'[^\']+\'/g, function(e) { return e.replace(/[;:]/g, g) }); t = N.exec(e);) if (N.lastIndex = t.index + t[0].length, n = t[1].replace(E, "").toLowerCase(), r = t[2].replace(E, ""), n && r) { if (n = v(n), r = v(r), -1 !== n.indexOf(T) || -1 !== n.indexOf('"')) continue; if (!y.allow_script_urls && ("behavior" === n || /expression\s*\(|\/\*|\*\//.test(r))) continue; "font-weight" === n && "700" === r ? r = "bold" : "color" !== n && "background-color" !== n || (r = r.toLowerCase()), r = (r = r.replace(x, ri)).replace(w, b), c[n] = o ? p(r, !0) : r } d("border", "", !0), d("border", "-width"), d("border", "-color"), d("border", "-style"), d("padding", ""), d("margin", ""), i = "border", u = "border-style", s = "border-color", m(a = "border-width") && m(u) && m(s) && (c[i] = c[a] + " " + c[u] + " " + c[s], delete c[a], delete c[u], delete c[s]), "medium none" === c.border && delete c.border, "none" === c["border-image"] && delete c["border-image"] } return c }, serialize: function(i, e) { var t, n, r, o, a, u = "", s = function(e) { var t, n, r, o; if (t = c[e]) for (n = 0, r = t.length; n < r; n++) e = t[n], (o = i[e]) && (u += (0 < u.length ? " " : "") + e + ": " + o + ";") }; if (e && c) s("*"), s(e); else for (t in i)!(n = i[t]) || l && (r = t, o = e, a = void 0, (a = l["*"]) && a[r] || (a = l[o]) && a[r]) || (u += (0 < u.length ? " " : "") + t + ": " + n + ";"); return u } } } var ii, ai = Yt.each, ui = Yt.grep, si = Re.ie, ci = /^([a-z0-9],?)+$/i, li = /^[ \t\r\n]*$/, fi = function(n, r, o) { var e = {}, i = r.keep_values, t = { set: function(e, t, n) { r.url_converter && (t = r.url_converter.call(r.url_converter_scope || o(), t, n, e[0])), e.attr("data-mce-" + n, t).attr(n, t) }, get: function(e, t) { return e.attr("data-mce-" + t) || e.attr(t) } }; return e = { style: { set: function(e, t) { null === t || "object" != typeof t ? (i && e.attr("data-mce-style", t), e.attr("style", t)) : e.css(t) }, get: function(e) { var t = e.attr("data-mce-style") || e.attr("style"); return t = n.serialize(n.parse(t), e[0].nodeName) } } }, i && (e.href = e.src = t), e }, di = function(e, t) { var n = t.attr("style"), r = e.serialize(e.parse(n), t[0].nodeName); r || (r = null), t.attr("data-mce-style", r) }, mi = function(e, t) { var n, r, o = 0; if (e) for (n = e.nodeType, e = e.previousSibling; e; e = e.previousSibling) r = e.nodeType, (!t || 3 !== r || r !== n && e.nodeValue.length) && (o++, n = r); return o }; function gi(a, u) { var s, c = this; void 0 === u && (u = {}); var r = {}, i = window, o = {}, t = 0, e = function(m, e) { var g, p = 0, h = {}; g = (e = e || {}).maxLoadTime || 5e3; var v = function(e) { m.getElementsByTagName("head")[0].appendChild(e) }, n = function(e, t, n) { var o, r, i, a, u = function() { for (var e = a.passed, t = e.length; t--;) e[t](); a.status = 2, a.passed = [], a.failed = [] }, s = function() { for (var e = a.failed, t = e.length; t--;) e[t](); a.status = 3, a.passed = [], a.failed = [] }, c = function(e, t) { e() || ((new Date).getTime() - i < g ? Le.setTimeout(t) : s()) }, l = function() { c(function() { for (var e, t, n = m.styleSheets, r = n.length; r--;) if ((t = (e = n[r]).ownerNode ? e.ownerNode : e.owningElement) && t.id === o.id) return u(), !0 }, l) }, f = function() { c(function() { try { var e = r.sheet.cssRules; return u(), !! e } catch (t) {} }, f) }; if (e = Yt._addCacheSuffix(e), h[e] ? a = h[e] : (a = { passed: [], failed: [] }, h[e] = a), t && a.passed.push(t), n && a.failed.push(n), 1 !== a.status) if (2 !== a.status) if (3 !== a.status) { if (a.status = 1, (o = m.createElement("link")).rel = "stylesheet", o.type = "text/css", o.id = "u" + p++, o.async = !1, o.defer = !1, i = (new Date).getTime(), "onload" in o && !((d = navigator.userAgent.match(/WebKit\/(\d*)/)) && parseInt(d[1], 10) < 536)) o.onload = l, o.onerror = s; else { if (0 < navigator.userAgent.indexOf("Firefox")) return (r = m.createElement("style")).textContent = '@import "' + e + '"', f(), void v(r); l() } var d; v(o), o.href = e } else s(); else u() }, t = function(t) { return Qr.nu(function(e) { n(t, q(e, H(ro.value(t))), q(e, H(ro.error(t)))) }) }, o = function(e) { return e.fold(j, j) }; return { load: n, loadAll: function(e, n, r) { eo($(e, t)).get(function(e) { var t = W(e, function(e) { return e.isValue() }); 0 < t.fail.length ? r(t.fail.map(o)) : n(t.pass.map(o)) }) } } }(a), l = [], f = u.schema ? u.schema : ni({}), d = oi({ url_converter: u.url_converter, url_converter_scope: u.url_converter_scope }, u.schema), m = u.ownEvents ? new je(u.proxy) : je.Event, n = f.getBlockElements(), g = pn.overrideDefaults(function() { return { context: a, element: V.getRoot() } }), p = function(e) { if (e && a && "string" == typeof e) { var t = a.getElementById(e); return t && t.id !== e ? a.getElementsByName(e)[1] : t } return e }, h = function(e) { return "string" == typeof e && (e = p(e)), g(e) }, v = function(e, t, n) { var r, o, i = h(e); return i.length && (o = (r = s[t]) && r.get ? r.get(i, t) : i.attr(t)), void 0 === o && (o = n || ""), o }, b = function(e) { var t = p(e); return t ? t.attributes : [] }, y = function(e, t, n) { var r, o; "" === n && (n = null); var i = h(e); r = i.attr(t), i.length && ((o = s[t]) && o.set ? o.set(i, n, t) : i.attr(t, n), r !== n && u.onSetAttrib && u.onSetAttrib({ attrElm: i, attrName: t, attrValue: n })) }, C = function() { return u.root_element || a.body }, x = function(e, t) { return Xr.getPos(a.body, p(e), t) }, w = function(e, t, n) { var r = h(e); return n ? r.css(t) : ("float" === (t = t.replace(/-(\D)/g, function(e, t) { return t.toUpperCase() })) && (t = Re.ie && Re.ie < 12 ? "styleFloat" : "cssFloat"), r[0] && r[0].style ? r[0].style[t] : undefined) }, N = function(e) { var t, n; return e = p(e), t = w(e, "width"), n = w(e, "height"), -1 === t.indexOf("px") && (t = 0), -1 === n.indexOf("px") && (n = 0), { w: parseInt(t, 10) || e.offsetWidth || e.clientWidth, h: parseInt(n, 10) || e.offsetHeight || e.clientHeight } }, E = function(e, t) { var n; if (!e) return !1; if (!Array.isArray(e)) { if ("*" === t) return 1 === e.nodeType; if (ci.test(t)) { var r = t.toLowerCase().split(/,/), o = e.nodeName.toLowerCase(); for (n = r.length - 1; 0 <= n; n--) if (r[n] === o) return !0; return !1 } if (e.nodeType && 1 !== e.nodeType) return !1 } var i = Array.isArray(e) ? e : [e]; return 0 < Tt(t, i[0].ownerDocument || i[0], null, i).length }, S = function(e, t, n, r) { var o, i = [], a = p(e); for (r = r === undefined, n = n || ("BODY" !== C().nodeName ? C().parentNode : null), Yt.is(t, "string") && (t = "*" === (o = t) ? function(e) { return 1 === e.nodeType } : function(e) { return E(e, o) }); a && a !== n && a.nodeType && 9 !== a.nodeType;) { if (!t || "function" == typeof t && t(a)) { if (!r) return [a]; i.push(a) } a = a.parentNode } return r ? i : null }, T = function(e, t, n) { var r = t; if (e) for ("string" == typeof t && (r = function(e) { return E(e, t) }), e = e[n]; e; e = e[n]) if ("function" == typeof r && r(e)) return e; return null }, k = function(e, n, r) { var o, t = "string" == typeof e ? p(e) : e; if (!t) return !1; if (Yt.isArray(t) && (t.length || 0 === t.length)) return o = [], ai(t, function(e, t) { e && ("string" == typeof e && (e = p(e)), o.push(n.call(r, e, t))) }), o; var i = r || c; return n.call(i, t) }, A = function(e, t) { h(e).each(function(e, n) { ai(t, function(e, t) { y(n, t, e) }) }) }, _ = function(e, r) { var t = h(e); si ? t.each(function(e, t) { if (!1 !== t.canHaveHTML) { for (; t.firstChild;) t.removeChild(t.firstChild); try { t.innerHTML = "
" + r, t.removeChild(t.firstChild) } catch (n) { pn("
").html("
" + r).contents().slice(1).appendTo(t) } return r } }) : t.html(r) }, R = function(e, n, r, o, i) { return k(e, function(e) { var t = "string" == typeof n ? a.createElement(n) : n; return A(t, r), o && ("string" != typeof o && o.nodeType ? t.appendChild(o) : "string" == typeof o && _(t, o)), i ? t : e.appendChild(t) }) }, D = function(e, t, n) { return R(a.createElement(e), e, t, n, !0) }, B = $o.decode, O = $o.encodeAllRaw, P = function(e, t) { var n = h(e); return t ? n.each(function() { for (var e; e = this.firstChild;) 3 === e.nodeType && 0 === e.data.length ? this.removeChild(e) : this.parentNode.insertBefore(e, this) }).remove() : n.remove(), 1 < n.length ? n.toArray() : n[0] }, L = function(e, t, n) { h(e).toggleClass(t, n).each(function() { "" === this.className && pn(this).attr("class", null) }) }, I = function(t, e, n) { return k(e, function(e) { return Yt.is(e, "array") && (t = t.cloneNode(!0)), n && ai(ui(e.childNodes), function(e) { t.appendChild(e) }), e.parentNode.replaceChild(t, e) }) }, M = function() { return a.createRange() }, F = function(e, t, n, r) { if (Yt.isArray(e)) { for (var o = e.length; o--;) e[o] = F(e[o], t, n, r); return e } return !u.collect || e !== a && e !== i || l.push([e, t, n, r]), m.bind(e, t, n, r || V) }, U = function(e, t, n) { var r; if (Yt.isArray(e)) { for (r = e.length; r--;) e[r] = U(e[r], t, n); return e } if (l && (e === a || e === i)) for (r = l.length; r--;) { var o = l[r]; e !== o[0] || t && t !== o[1] || n && n !== o[2] || m.unbind(o[0], o[1], o[2]) } return m.unbind(e, t, n) }, z = function(e) { if (e && Do.isElement(e)) { var t = e.getAttribute("data-mce-contenteditable"); return t && "inherit" !== t ? t : "inherit" !== e.contentEditable ? e.contentEditable : null } return null }, V = { doc: a, settings: u, win: i, files: o, stdMode: !0, boxModel: !0, styleSheetLoader: e, boundEvents: l, styles: d, schema: f, events: m, isBlock: function(e) { if ("string" == typeof e) return !!n[e]; if (e) { var t = e.nodeType; if (t) return !(1 !== t || !n[e.nodeName]) } return !1 }, $: g, $$: h, root: null, clone: function(t, e) { if (!si || 1 !== t.nodeType || e) return t.cloneNode(e); if (!e) { var n = a.createElement(t.nodeName); return ai(b(t), function(e) { y(n, e.nodeName, v(t, e.nodeName)) }), n } return null }, getRoot: C, getViewPort: function(e) { var t = e || i, n = t.document, r = n.documentElement; return { x: t.pageXOffset || r.scrollLeft, y: t.pageYOffset || r.scrollTop, w: t.innerWidth || r.clientWidth, h: t.innerHeight || r.clientHeight } }, getRect: function(e) { var t, n; return e = p(e), t = x(e), n = N(e), { x: t.x, y: t.y, w: n.w, h: n.h } }, getSize: N, getParent: function(e, t, n) { var r = S(e, t, n, !1); return r && 0 < r.length ? r[0] : null }, getParents: S, get: p, getNext: function(e, t) { return T(e, t, "nextSibling") }, getPrev: function(e, t) { return T(e, t, "previousSibling") }, select: function(e, t) { return Tt(e, p(t) || u.root_element || a, []) }, is: E, add: R, create: D, createHTML: function(e, t, n) { var r, o = ""; for (r in o += "<" + e, t) t.hasOwnProperty(r) && null !== t[r] && "undefined" != typeof t[r] && (o += " " + r + '="' + O(t[r]) + '"'); return void 0 !== n ? o + ">" + n + "" : o + " />" }, createFragment: function(e) { var t, n = a.createElement("div"), r = a.createDocumentFragment(); for (e && (n.innerHTML = e); t = n.firstChild;) r.appendChild(t); return r }, remove: P, setStyle: function(e, t, n) { var r = h(e).css(t, n); u.update_styles && di(d, r) }, getStyle: w, setStyles: function(e, t) { var n = h(e).css(t); u.update_styles && di(d, n) }, removeAllAttribs: function(e) { return k(e, function(e) { var t, n = e.attributes; for (t = n.length - 1; 0 <= t; t--) e.removeAttributeNode(n.item(t)) }) }, setAttrib: y, setAttribs: A, getAttrib: v, getPos: x, parseStyle: function(e) { return d.parse(e) }, serializeStyle: function(e, t) { return d.serialize(e, t) }, addStyle: function(e) { var t, n; if (V !== gi.DOM && a === document) { if (r[e]) return; r[e] = !0 }(n = a.getElementById("mceDefaultStyles")) || ((n = a.createElement("style")).id = "mceDefaultStyles", n.type = "text/css", (t = a.getElementsByTagName("head")[0]).firstChild ? t.insertBefore(n, t.firstChild) : t.appendChild(n)), n.styleSheet ? n.styleSheet.cssText += e : n.appendChild(a.createTextNode(e)) }, loadCSS: function(e) { var n; V === gi.DOM || a !== document ? (e || (e = ""), n = a.getElementsByTagName("head")[0], ai(e.split(","), function(e) { var t; e = Yt._addCacheSuffix(e), o[e] || (o[e] = !0, t = D("link", { rel: "stylesheet", href: e }), n.appendChild(t)) })) : gi.DOM.loadCSS(e) }, addClass: function(e, t) { h(e).addClass(t) }, removeClass: function(e, t) { L(e, t, !1) }, hasClass: function(e, t) { return h(e).hasClass(t) }, toggleClass: L, show: function(e) { h(e).show() }, hide: function(e) { h(e).hide() }, isHidden: function(e) { return "none" === h(e).css("display") }, uniqueId: function(e) { return (e || "mce_") + t++ }, setHTML: _, getOuterHTML: function(e) { var t = "string" == typeof e ? p(e) : e; return Do.isElement(t) ? t.outerHTML : pn("
").append(pn(t).clone()).html() }, setOuterHTML: function(e, t) { h(e).each(function() { try { if ("outerHTML" in this) return void(this.outerHTML = t) } catch (e) {} P(pn(this).html(t), !0) }) }, decode: B, encode: O, insertAfter: function(e, t) { var r = p(t); return k(e, function(e) { var t, n; return t = r.parentNode, (n = r.nextSibling) ? t.insertBefore(e, n) : t.appendChild(e), e }) }, replace: I, rename: function(t, e) { var n; return t.nodeName !== e.toUpperCase() && (n = D(e), ai(b(t), function(e) { y(n, e.nodeName, v(t, e.nodeName)) }), I(n, t, !0)), n || t }, findCommonAncestor: function(e, t) { for (var n, r = e; r;) { for (n = t; n && r !== n;) n = n.parentNode; if (r === n) break; r = r.parentNode } return !r && e.ownerDocument ? e.ownerDocument.documentElement : r }, toHex: function(e) { return d.toHex(Yt.trim(e)) }, run: k, getAttribs: b, isEmpty: function(e, t) { var n, r, o, i, a, u, s = 0; if (e = e.firstChild) { a = new oo(e, e.parentNode), t = t || (f ? f.getNonEmptyElements() : null), i = f ? f.getWhiteSpaceElements() : {}; do { if (o = e.nodeType, Do.isElement(e)) { var c = e.getAttribute("data-mce-bogus"); if (c) { e = a.next("all" === c); continue } if (u = e.nodeName.toLowerCase(), t && t[u]) { if ("br" === u) { s++, e = a.next(); continue } return !1 } for (n = (r = b(e)).length; n--;) if ("name" === (u = r[n].nodeName) || "data-mce-bookmark" === u) return !1 } if (8 === o) return !1; if (3 === o && !li.test(e.nodeValue)) return !1; if (3 === o && e.parentNode && i[e.parentNode.nodeName] && li.test(e.nodeValue)) return !1; e = a.next() } while (e) } return s <= 1 }, createRng: M, nodeIndex: mi, split: function(e, t, n) { var r, o, i, a = M(); if (e && t) return a.setStart(e.parentNode, mi(e)), a.setEnd(t.parentNode, mi(t)), r = a.extractContents(), (a = M()).setStart(t.parentNode, mi(t) + 1), a.setEnd(e.parentNode, mi(e) + 1), o = a.extractContents(), (i = e.parentNode).insertBefore(Po.trimNode(V, r), e), n ? i.insertBefore(n, e) : i.insertBefore(t, e), i.insertBefore(Po.trimNode(V, o), e), P(e), n || t }, bind: F, unbind: U, fire: function(e, t, n) { return m.fire(e, t, n) }, getContentEditable: z, getContentEditableParent: function(e) { for (var t = C(), n = null; e && e !== t && null === (n = z(e)); e = e.parentNode); return n }, destroy: function() { if (l) for (var e = l.length; e--;) { var t = l[e]; m.unbind(t[0], t[1], t[2]) } Tt.setDocument && Tt.setDocument() }, isChildOf: function(e, t) { for (; e;) { if (t === e) return !0; e = e.parentNode } return !1 }, dumpRng: function(e) { return "startContainer: " + e.startContainer.nodeName + ", startOffset: " + e.startOffset + ", endContainer: " + e.endContainer.nodeName + ", endOffset: " + e.endOffset } }; return s = fi(d, u, function() { return V }), V }(ii = gi || (gi = {})).DOM = ii(document), ii.nodeIndex = mi; var pi = gi, hi = pi.DOM, vi = Yt.each, bi = Yt.grep, yi = function(e) { return "function" == typeof e }, Ci = function() { var l = {}, o = [], i = {}, a = [], f = 0; this.isDone = function(e) { return 2 === l[e] }, this.markDone = function(e) { l[e] = 2 }, this.add = this.load = function(e, t, n, r) { l[e] === undefined && (o.push(e), l[e] = 0), t && (i[e] || (i[e] = []), i[e].push({ success: t, failure: r, scope: n || this })) }, this.remove = function(e) { delete l[e], delete i[e] }, this.loadQueue = function(e, t, n) { this.loadScripts(o, e, t, n) }, this.loadScripts = function(n, e, t, r) { var u, s = [], c = function(t, e) { vi(i[e], function(e) { yi(e[t]) && e[t].call(e.scope) }), i[e] = undefined }; a.push({ success: e, failure: r, scope: t || this }), (u = function() { var e = bi(n); if (n.length = 0, vi(e, function(e) { var t, n, r, o, i, a; 2 !== l[e] ? 3 !== l[e] ? 1 !== l[e] && (l[e] = 1, f++, t = e, n = function() { l[e] = 2, f--, c("success", e), u() }, r = function() { l[e] = 3, f--, s.push(e), c("failure", e), u() }, i = (a = hi).uniqueId(), (o = document.createElement("script")).id = i, o.type = "text/javascript", o.src = Yt._addCacheSuffix(t), o.onload = function() { a.remove(i), o && (o.onreadystatechange = o.onload = o = null), n() }, o.onerror = function() { yi(r) ? r() : "undefined" != typeof console && console.log && console.log("Failed to load script: " + t) }, (document.getElementsByTagName("head")[0] || document.body).appendChild(o)) : c("failure", e) : c("success", e) }), !f) { var t = a.slice(0); a.length = 0, vi(t, function(e) { 0 === s.length ? yi(e.success) && e.success.call(e.scope) : yi(e.failure) && e.failure.call(e.scope, s) }) } })() } }; Ci.ScriptLoader = new Ci; var xi, wi = Yt.each; function Ni() { var r = this, o = [], a = {}, u = {}, i = [], s = function(e) { var t; return u[e] && (t = u[e].dependencies), t || [] }, c = function(e, t) { return "object" == typeof t ? t : "string" == typeof e ? { prefix: "", resource: t, suffix: "" } : { prefix: e.prefix, resource: t, suffix: e.suffix } }, l = function(e, n, t, r) { var o = s(e); wi(o, function(e) { var t = c(n, e); f(t.resource, t, undefined, undefined) }), t && (r ? t.call(r) : t.call(Ci)) }, f = function(e, t, n, r, o) { if (!a[e]) { var i = "string" == typeof t ? t : t.prefix + t.resource + t.suffix; 0 !== i.indexOf("/") && -1 === i.indexOf("://") && (i = Ni.baseURL + "/" + i), a[e] = i.substring(0, i.lastIndexOf("/")), u[e] ? l(e, t, n, r) : Ci.ScriptLoader.add(i, function() { return l(e, t, n, r) }, r, o) } }; return { items: o, urls: a, lookup: u, _listeners: i, get: function(e) { return u[e] ? u[e].instance : undefined }, dependencies: s, requireLangPack: function(e, t) { var n = Ni.language; if (n && !1 !== Ni.languageLoad) { if (t) if (-1 !== (t = "," + t + ",").indexOf("," + n.substr(0, 2) + ",")) n = n.substr(0, 2); else if (-1 === t.indexOf("," + n + ",")) return; Ci.ScriptLoader.add(a[e] + "/langs/" + n + ".js") } }, add: function(t, e, n) { o.push(e), u[t] = { instance: e, dependencies: n }; var r = W(i, function(e) { return e.name === t }); return i = r.fail, wi(r.pass, function(e) { e.callback() }), e }, remove: function(e) { delete a[e], delete u[e] }, createUrl: c, addComponents: function(e, t) { var n = r.urls[e]; wi(t, function(e) { Ci.ScriptLoader.add(n + "/" + e) }) }, load: f, waitFor: function(e, t) { u.hasOwnProperty(e) ? t() : i.push({ name: e, callback: t }) } } }(xi = Ni || (Ni = {})).PluginManager = xi(), xi.ThemeManager = xi(); var Ei = function(t, n) { $r.parent(t).each(function(e) { e.dom().insertBefore(n.dom(), t.dom()) }) }, Si = function(e, t) { e.dom().appendChild(t.dom()) }, Ti = { before: Ei, after: function(e, t) { $r.nextSibling(e).fold(function() { $r.parent(e).each(function(e) { Si(e, t) }) }, function(e) { Ei(e, t) }) }, prepend: function(t, n) { $r.firstChild(t).fold(function() { Si(t, n) }, function(e) { t.dom().insertBefore(n.dom(), e.dom()) }) }, append: Si, appendAt: function(e, t, n) { $r.child(e, n).fold(function() { Si(e, t) }, function(e) { Ei(e, t) }) }, wrap: function(e, t) { Ei(e, t), Si(t, e) } }, ki = function(t, e) { F(e, function(e) { Ti.before(t, e) }) }, Ai = function(t, e) { F(e, function(e) { Ti.append(t, e) }) }, _i = function(e) { var t = e.dom(); null !== t.parentNode && t.parentNode.removeChild(t) }, Ri = { empty: function(e) { e.dom().textContent = "", F($r.children(e), function(e) { _i(e) }) }, remove: _i, unwrap: function(e) { var t = $r.children(e); 0 < t.length && ki(e, t), _i(e) } }, Di = function(n, r) { var o = null; return { cancel: function() { null !== o && (clearTimeout(o), o = null) }, throttle: function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; null === o && (o = setTimeout(function() { n.apply(null, e), o = null }, r)) } } }, Bi = function(e) { var t = e, n = function() { return t }; return { get: n, set: function(e) { t = e }, clone: function() { return Bi(n()) } } }, Oi = function(e, t) { var n = hr.get(e, t); return n === undefined || "" === n ? [] : n.split(" ") }, Pi = Oi, Li = function(e, t, n) { var r = Oi(e, t).concat([n]); return hr.set(e, t, r.join(" ")), !0 }, Ii = function(e, t, n) { var r = U(Oi(e, t), function(e) { return e !== n }); return 0 < r.length ? hr.set(e, t, r.join(" ")) : hr.remove(e, t), !1 }, Mi = function(e) { return Pi(e, "class") }, Fi = function(e, t) { return Li(e, "class", t) }, Ui = function(e, t) { return Ii(e, "class", t) }, zi = Mi, Vi = Fi, qi = Ui, Hi = function(e, t) { return I(Mi(e), t) ? Ui(e, t) : Fi(e, t) }, ji = function(e) { return e.dom().classList !== undefined }, $i = function(e, t) { return ji(e) && e.dom().classList.contains(t) }, Wi = { add: function(e, t) { ji(e) ? e.dom().classList.add(t) : Vi(e, t) }, remove: function(e, t) { var n; ji(e) ? e.dom().classList.remove(t) : qi(e, t), 0 === (ji(n = e) ? n.dom().classList : zi(n)).length && hr.remove(n, "class") }, toggle: function(e, t) { return ji(e) ? e.dom().classList.toggle(t) : Hi(e, t) }, toggler: function(e, t) { var n, r, o, i, a, u, s = ji(e), c = e.dom().classList; return n = function() { s ? c.remove(t) : qi(e, t) }, r = function() { s ? c.add(t) : Vi(e, t) }, o = $i(e, t), i = o || !1, { on: a = function() { r(), i = !0 }, off: u = function() { n(), i = !1 }, toggle: function() { (i ? u : a)() }, isOn: function() { return i } } }, has: $i }, Ki = function(e, t) { return Lr.all(t, e) }; function Xi(e, t, n, r, o) { return e(n, r) ? A.some(n) : O(o) && o(n) ? A.none() : t(n, r, o) } var Yi, Gi = function(e, t, n) { for (var r = e.dom(), o = O(n) ? n : H(!1); r.parentNode;) { r = r.parentNode; var i = er.fromDom(r); if (t(i)) return A.some(i); if (o(i)) break } return A.none() }, Ji = function(e, t) { return V(e.dom().childNodes, q(t, er.fromDom)).map(er.fromDom) }, Qi = function(e, r) { var o = function(e) { for (var t = 0; t < e.childNodes.length; t++) { if (r(er.fromDom(e.childNodes[t]))) return A.some(er.fromDom(e.childNodes[t])); var n = o(e.childNodes[t]); if (n.isSome()) return n } return A.none() }; return o(e.dom()) }, Zi = { first: function(e) { return Qi(yr.body(), e) }, ancestor: Gi, closest: function(e, t, n) { return Xi(function(e) { return t(e) }, Gi, e, t, n) }, sibling: function(t, n) { var e = t.dom(); return e.parentNode ? Ji(er.fromDom(e.parentNode), function(e) { return !Fr.eq(t, e) && n(e) }) : A.none() }, child: Ji, descendant: Qi }, ea = function(e, t, n) { return Zi.ancestor(e, function(e) { return Lr.is(e, t) }, n) }, ta = ea, na = function(e, t) { return Lr.one(t, e) }, ra = function(e, t, n) { return Xi(Lr.is, ea, e, t, n) }, oa = H("mce-annotation"), ia = H("data-mce-annotation"), aa = H("data-mce-annotation-uid"), ua = function(r, e) { var t = r.selection.getRng(), n = er.fromDom(t.startContainer), o = er.fromDom(r.getBody()), i = e.fold(function() { return "." + oa() }, function(e) { return "[" + ia() + '="' + e + '"]' }), a = $r.child(n, t.startOffset).getOr(n), u = ra(a, i, function(e) { return Fr.eq(e, o) }), s = function(e, t) { return hr.has(e, t) ? A.some(hr.get(e, t)) : A.none() }; return u.bind(function(e) { return s(e, "" + aa()).bind(function(n) { return s(e, "" + ia()).map(function(e) { var t = sa(r, n); return { uid: n, name: e, elements: t } }) }) }) }, sa = function(e, t) { var n = er.fromDom(e.getBody()); return Ki(n, "[" + aa() + '="' + t + '"]') }, ca = function(i, e) { var n, r, o, a = Bi({}), c = function(e, t) { u(e, function(e) { return t(e), e }) }, u = function(e, t) { var n = a.get(), r = t(n.hasOwnProperty(e) ? n[e] : { listeners: [], previous: Bi(A.none()) }); n[e] = r, a.set(n) }, t = (n = function() { var e, t, n, r = a.get(), o = (e = cr(r), (n = Q.call(e, 0)).sort(t), n); F(o, function(e) { u(e, function(u) { var s = u.previous.get(); return ua(i, A.some(e)).fold(function() { var t; s.isSome() && (c(t = e, function(e) { F(e.listeners, function(e) { return e(!1, t) }) }), u.previous.set(A.none())) }, function(e) { var t, n, r, o = e.uid, i = e.name, a = e.elements; s.is(o) || (n = o, r = a, c(t = i, function(e) { F(e.listeners, function(e) { return e(!0, t, { uid: n, nodes: $(r, function(e) { return e.dom() }) }) }) }), u.previous.set(A.some(o))) }), { previous: u.previous, listeners: u.listeners } }) }) }, r = 30, o = null, { cancel: function() { null !== o && (clearTimeout(o), o = null) }, throttle: function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; null !== o && clearTimeout(o), o = setTimeout(function() { n.apply(null, e), o = null }, r) } }); return i.on("remove", function() { t.cancel() }), i.on("nodeChange", function() { t.throttle() }), { addListener: function(e, t) { u(e, function(e) { return { previous: e.previous, listeners: e.listeners.concat([t]) } }) } } }, la = function(e, n) { e.on("init", function() { e.serializer.addNodeFilter("span", function(e) { F(e, function(t) { var e; (e = t, A.from(e.attributes.map[ia()]).bind(n.lookup)).each(function(e) { !1 === e.persistent && t.unwrap() }) }) }) }) }, fa = 0, da = function(t, e) { F(e, function(e) { Wi.add(t, e) }) }, ma = function(e, t) { return er.fromDom(e.dom().cloneNode(t)) }, ga = function(e) { return ma(e, !0) }, pa = function(e) { return ma(e, !1) }, ha = ga, va = [].slice, ba = function(e) { for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; var r = va.call(arguments); return r.length - 1 >= e.length ? e.apply(this, r.slice(1)) : function() { var e = r.concat([].slice.call(arguments)); return ba.apply(this, e) } }, ya = { constant: function(e) { return function() { return e } }, negate: function(t) { return function(e) { return !t(e) } }, and: function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; var n = va.call(arguments); return function(e) { for (var t = 0; t < n.length; t++) if (!n[t](e)) return !1; return !0 } }, or: function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; var n = va.call(arguments); return function(e) { for (var t = 0; t < n.length; t++) if (n[t](e)) return !0; return !1 } }, curry: ba, compose: function(t, n) { return function(e) { return t(n(e)) } }, noop: function() {} }, Ca = "\ufeff", xa = function(e) { return e === Ca }, wa = Ca, Na = function(e) { return e.replace(new RegExp(Ca, "g"), "") }, Ea = Do.isElement, Sa = Do.isText, Ta = function(e) { return Sa(e) && (e = e.parentNode), Ea(e) && e.hasAttribute("data-mce-caret") }, ka = function(e) { return Sa(e) && xa(e.data) }, Aa = function(e) { return Ta(e) || ka(e) }, _a = function(e) { return e.firstChild !== e.lastChild || !Do.isBr(e.firstChild) }, Ra = function(e) { var t = e.container(); return e && Do.isText(t) && t.data.charAt(e.offset()) === wa }, Da = function(e) { var t = e.container(); return e && Do.isText(t) && t.data.charAt(e.offset() - 1) === wa }, Ba = function(e, t, n) { var r, o, i; return (r = t.ownerDocument.createElement(e)).setAttribute("data-mce-caret", n ? "before" : "after"), r.setAttribute("data-mce-bogus", "all"), r.appendChild(((i = document.createElement("br")).setAttribute("data-mce-bogus", "1"), i)), o = t.parentNode, n ? o.insertBefore(r, t) : t.nextSibling ? o.insertBefore(r, t.nextSibling) : o.appendChild(r), r }, Oa = function(e) { return Sa(e) && e.data[0] === wa }, Pa = function(e) { return Sa(e) && e.data[e.data.length - 1] === wa }, La = function(e) { return e && e.hasAttribute("data-mce-caret") ? (t = e.getElementsByTagName("br"), n = t[t.length - 1], Do.isBogus(n) && n.parentNode.removeChild(n), e.removeAttribute("data-mce-caret"), e.removeAttribute("data-mce-bogus"), e.removeAttribute("style"), e.removeAttribute("_moz_abspos"), e) : null; var t, n }, Ia = Do.isContentEditableTrue, Ma = Do.isContentEditableFalse, Fa = Do.isBr, Ua = Do.isText, za = Do.matchNodeNames("script style textarea"), Va = Do.matchNodeNames("img input textarea hr iframe video audio object"), qa = Do.matchNodeNames("table"), Ha = Aa, ja = function(e) { return !Ha(e) && (Ua(e) ? !za(e.parentNode) : Va(e) || Fa(e) || qa(e) || $a(e)) }, $a = function(e) { return !1 === (t = e, Do.isElement(t) && "true" === t.getAttribute("unselectable")) && Ma(e); var t }, Wa = function(e, t) { return ja(e) && function(e, t) { for (e = e.parentNode; e && e !== t; e = e.parentNode) { if ($a(e)) return !1; if (Ia(e)) return !0 } return !0 }(e, t) }, Ka = Math.round, Xa = function(e) { return e ? { left: Ka(e.left), top: Ka(e.top), bottom: Ka(e.bottom), right: Ka(e.right), width: Ka(e.width), height: Ka(e.height) } : { left: 0, top: 0, bottom: 0, right: 0, width: 0, height: 0 } }, Ya = function(e, t) { return e = Xa(e), t || (e.left = e.left + e.width), e.right = e.left, e.width = 0, e }, Ga = function(e, t, n) { return 0 <= e && e <= Math.min(t.height, n.height) / 2 }, Ja = function(e, t) { return e.bottom - e.height / 2 < t.top || !(e.top > t.bottom) && Ga(t.top - e.bottom, e, t) }, Qa = function(e, t) { return e.top > t.bottom || !(e.bottom < t.top) && Ga(t.bottom - e.top, e, t) }, Za = function(e) { var t = e.startContainer, n = e.startOffset; return t.hasChildNodes() && e.endOffset === n + 1 ? t.childNodes[n] : null }, eu = function(e, t) { return 1 === e.nodeType && e.hasChildNodes() && (t >= e.childNodes.length && (t = e.childNodes.length - 1), e = e.childNodes[t]), e }, tu = new RegExp("[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08e3-\u0902\u093a\u093c\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1abe\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20dd-\u20e0\u20e1\u20e2-\u20e4\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\ua670-\ua672\ua674-\ua67d\ua69e-\ua69f\ua6f0-\ua6f1\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\uff9e-\uff9f]"), nu = function(e) { return "string" == typeof e && 768 <= e.charCodeAt(0) && tu.test(e) }, ru = function(e, t) { for (var n = [], r = 0; r < e.length; r++) { var o = e[r]; if (!o.isSome()) return A.none(); n.push(o.getOrDie()) } return A.some(t.apply(null, n)) }, ou = Do.isElement, iu = ja, au = Do.matchStyleValues("display", "block table"), uu = Do.matchStyleValues("float", "left right"), su = ya.and(ou, iu, ya.negate(uu)), cu = ya.negate(Do.matchStyleValues("white-space", "pre pre-line pre-wrap")), lu = Do.isText, fu = Do.isBr, du = pi.nodeIndex, mu = eu, gu = function(e) { return "createRange" in e ? e.createRange() : pi.DOM.createRng() }, pu = function(e) { return e && /[\r\n\t ]/.test(e) }, hu = function(e) { return !!e.setStart && !! e.setEnd }, vu = function(e) { var t, n = e.startContainer, r = e.startOffset; return !!(pu(e.toString()) && cu(n.parentNode) && Do.isText(n) && (t = n.data, pu(t[r - 1]) || pu(t[r + 1]))) }, bu = function(e) { return 0 === e.left && 0 === e.right && 0 === e.top && 0 === e.bottom }, yu = function(e) { var t, n, r, o, i, a, u, s; return t = 0 < (n = e.getClientRects()).length ? Xa(n[0]) : Xa(e.getBoundingClientRect()), !hu(e) && fu(e) && bu(t) ? (i = (r = e).ownerDocument, a = gu(i), u = i.createTextNode("\xa0"), (s = r.parentNode).insertBefore(u, r), a.setStart(u, 0), a.setEnd(u, 1), o = Xa(a.getBoundingClientRect()), s.removeChild(u), o) : bu(t) && hu(e) ? function(e) { var t = e.startContainer, n = e.endContainer, r = e.startOffset, o = e.endOffset; if (t === n && Do.isText(n) && 0 === r && 1 === o) { var i = e.cloneRange(); return i.setEndAfter(n), yu(i) } return null }(e) : t }, Cu = function(e, t) { var n = Ya(e, t); return n.width = 1, n.right = n.left + 1, n }, xu = function(e) { var t, n, r = [], o = function(e) { var t, n; 0 !== e.height && (0 < r.length && (t = e, n = r[r.length - 1], t.left === n.left && t.top === n.top && t.bottom === n.bottom && t.right === n.right) || r.push(e)) }, i = function(e, t) { var n = gu(e.ownerDocument); if (t < e.data.length) { if (nu(e.data[t])) return r; if (nu(e.data[t - 1]) && (n.setStart(e, t), n.setEnd(e, t + 1), !vu(n))) return o(Cu(yu(n), !1)), r } 0 < t && (n.setStart(e, t - 1), n.setEnd(e, t), vu(n) || o(Cu(yu(n), !1))), t < e.data.length && (n.setStart(e, t), n.setEnd(e, t + 1), vu(n) || o(Cu(yu(n), !0))) }; if (lu(e.container())) return i(e.container(), e.offset()), r; if (ou(e.container())) if (e.isAtEnd()) n = mu(e.container(), e.offset()), lu(n) && i(n, n.data.length), su(n) && !fu(n) && o(Cu(yu(n), !1)); else { if (n = mu(e.container(), e.offset()), lu(n) && i(n, 0), su(n) && e.isAtEnd()) return o(Cu(yu(n), !1)), r; t = mu(e.container(), e.offset() - 1), su(t) && !fu(t) && (au(t) || au(n) || !su(n)) && o(Cu(yu(t), !1)), su(n) && o(Cu(yu(n), !0)) } return r }; function wu(t, n, e) { var r = function() { return e || (e = xu(wu(t, n))), e }; return { container: ya.constant(t), offset: ya.constant(n), toRange: function() { var e; return (e = gu(t.ownerDocument)).setStart(t, n), e.setEnd(t, n), e }, getClientRects: r, isVisible: function() { return 0 < r().length }, isAtStart: function() { return lu(t), 0 === n }, isAtEnd: function() { return lu(t) ? n >= t.data.length : n >= t.childNodes.length }, isEqual: function(e) { return e && t === e.container() && n === e.offset() }, getNode: function(e) { return mu(t, e ? n - 1 : n) } } }(Yi = wu || (wu = {})).fromRangeStart = function(e) { return Yi(e.startContainer, e.startOffset) }, Yi.fromRangeEnd = function(e) { return Yi(e.endContainer, e.endOffset) }, Yi.after = function(e) { return Yi(e.parentNode, du(e) + 1) }, Yi.before = function(e) { return Yi(e.parentNode, du(e)) }, Yi.isAbove = function(e, t) { return ru([ee(t.getClientRects()), te(e.getClientRects())], Ja).getOr(!1) }, Yi.isBelow = function(e, t) { return ru([te(t.getClientRects()), ee(e.getClientRects())], Qa).getOr(!1) }, Yi.isAtStart = function(e) { return !!e && e.isAtStart() }, Yi.isAtEnd = function(e) { return !!e && e.isAtEnd() }, Yi.isTextPosition = function(e) { return !!e && Do.isText(e.container()) }, Yi.isElementPosition = function(e) { return !1 === Yi.isTextPosition(e) }; var Nu, Eu, Su = wu, Tu = Do.isText, ku = Do.isBogus, Au = pi.nodeIndex, _u = function(e) { var t = e.parentNode; return ku(t) ? _u(t) : t }, Ru = function(e) { return e ? jt.reduce(e.childNodes, function(e, t) { return ku(t) && "BR" !== t.nodeName ? e = e.concat(Ru(t)) : e.push(t), e }, []) : [] }, Du = function(t) { return function(e) { return t === e } }, Bu = function(e) { var t, r, n, o; return (Tu(e) ? "text()" : e.nodeName.toLowerCase()) + "[" + (r = Ru(_u(t = e)), n = jt.findIndex(r, Du(t), t), r = r.slice(0, n + 1), o = jt.reduce(r, function(e, t, n) { return Tu(t) && Tu(r[n - 1]) && e++, e }, 0), r = jt.filter(r, Do.matchNodeNames(t.nodeName)), (n = jt.findIndex(r, Du(t), t)) - o) + "]" }, Ou = function(e, t) { var n, r, o, i, a, u = []; return n = t.container(), r = t.offset(), Tu(n) ? o = function(e, t) { for (; (e = e.previousSibling) && Tu(e);) t += e.data.length; return t }(n, r) : (r >= (i = n.childNodes).length ? (o = "after", r = i.length - 1) : o = "before", n = i[r]), u.push(Bu(n)), a = function(e, t, n) { var r = []; for (t = t.parentNode; !(t === e || n && n(t)); t = t.parentNode) r.push(t); return r }(e, n), a = jt.filter(a, ya.negate(Do.isBogus)), (u = u.concat(jt.map(a, function(e) { return Bu(e) }))).reverse().join("/") + "," + o }, Pu = function(e, t) { var n, r, o; return t ? (t = (n = t.split(","))[0].split("/"), o = 1 < n.length ? n[1] : "before", (r = jt.reduce(t, function(e, t) { return (t = /([\w\-\(\)]+)\[([0-9]+)\]/.exec(t)) ? ("text()" === t[1] && (t[1] = "#text"), n = e, r = t[1], o = parseInt(t[2], 10), i = Ru(n), i = jt.filter(i, function(e, t) { return !Tu(e) || !Tu(i[t - 1]) }), (i = jt.filter(i, Do.matchNodeNames(r)))[o]) : null; var n, r, o, i }, e)) ? Tu(r) ? function(e, t) { for (var n, r = e, o = 0; Tu(r);) { if (n = r.data.length, o <= t && t <= o + n) { e = r, t -= o; break } if (!Tu(r.nextSibling)) { e = r, t = n; break } o += n, r = r.nextSibling } return Tu(e) && t > e.data.length && (t = e.data.length), Su(e, t) }(r, parseInt(o, 10)) : (o = "after" === o ? Au(r) + 1 : Au(r), Su(r.parentNode, o)) : null) : null }, Lu = Do.isContentEditableFalse, Iu = function(e, t, n, r, o) { var i, a = r[o ? "startContainer" : "endContainer"], u = r[o ? "startOffset" : "endOffset"], s = [], c = 0, l = e.getRoot(); for (Do.isText(a) ? s.push(n ? function(e, t, n) { var r, o; for (o = e(t.data.slice(0, n)).length, r = t.previousSibling; r && Do.isText(r); r = r.previousSibling) o += e(r.data).length; return o }(t, a, u) : u) : (u >= (i = a.childNodes).length && i.length && (c = 1, u = Math.max(0, i.length - 1)), s.push(e.nodeIndex(i[u], n) + c)); a && a !== l; a = a.parentNode) s.push(e.nodeIndex(a, n)); return s }, Mu = function(e) { Do.isText(e) && 0 === e.data.length && e.parentNode.removeChild(e) }, Fu = function(e, t, n) { var r = 0; return Yt.each(e.select(t), function(e) { if ("all" !== e.getAttribute("data-mce-bogus")) return e !== n && void r++ }), r }, Uu = function(e, t) { var n, r, o, i = t ? "start" : "end"; n = e[i + "Container"], r = e[i + "Offset"], Do.isElement(n) && "TR" === n.nodeName && (n = (o = n.childNodes)[Math.min(t ? r : r - 1, o.length - 1)]) && (r = t ? 0 : n.childNodes.length, e["set" + (t ? "Start" : "End")](n, r)) }, zu = function(e) { return Uu(e, !0), Uu(e, !1), e }, Vu = function(e, t) { var n; if (Do.isElement(e) && (e = eu(e, t), Lu(e))) return e; if (Aa(e)) { if (Do.isText(e) && Ta(e) && (e = e.parentNode), n = e.previousSibling, Lu(n)) return n; if (n = e.nextSibling, Lu(n)) return n } }, qu = function(e, t, n) { var r = n.getNode(), o = r ? r.nodeName : null, i = n.getRng(); if (Lu(r) || "IMG" === o) return { name: o, index: Fu(n.dom, o, r) }; var a, u, s, c, l, f, d, m = Vu((a = i).startContainer, a.startOffset) || Vu(a.endContainer, a.endOffset); return m ? { name: o = m.tagName, index: Fu(n.dom, o, m) } : (u = e, c = t, l = i, f = (s = n).dom, (d = {}).start = Iu(f, u, c, l, !0), s.isCollapsed() || (d.end = Iu(f, u, c, l, !1)), d) }, Hu = function(e, t, n) { var r = { "data-mce-type": "bookmark", id: t, style: "overflow:hidden;line-height:0px" }; return n ? e.create("span", r, "") : e.create("span", r) }, ju = function(e, t) { var n = e.dom, r = e.getRng(), o = n.uniqueId(), i = e.isCollapsed(), a = e.getNode(), u = a.nodeName; if ("IMG" === u) return { name: u, index: Fu(n, u, a) }; var s = zu(r.cloneRange()); if (!i) { s.collapse(!1); var c = Hu(n, o + "_end", t); s.insertNode(c), Mu(c.nextSibling) }(r = zu(r)).collapse(!0); var l = Hu(n, o + "_start", t); return r.insertNode(l), Mu(l.previousSibling), e.moveToBookmark({ id: o, keep: 1 }), { id: o } }, $u = { getBookmark: function(e, t, n) { return 2 === t ? qu(Na, n, e) : 3 === t ? (o = (r = e).getRng(), { start: Ou(r.dom.getRoot(), Su.fromRangeStart(o)), end: Ou(r.dom.getRoot(), Su.fromRangeEnd(o)) }) : t ? { rng: e.getRng() } : ju(e, !1); var r, o }, getUndoBookmark: b(qu, j, !0), getPersistentBookmark: ju }, Wu = "_mce_caret", Ku = function(e) { return Do.isElement(e) && e.id === Wu }, Xu = function(e, t) { for (; t && t !== e;) { if (t.id === Wu) return t; t = t.parentNode } return null }, Yu = Do.isElement, Gu = Do.isText, Ju = function(e) { var t = e.parentNode; t && t.removeChild(e) }, Qu = function(e, t) { 0 === t.length ? Ju(e) : e.nodeValue = t }, Zu = function(e) { var t = Na(e); return { count: e.length - t.length, text: t } }, es = function(e, t) { return rs(e), t }, ts = function(e, t) { var n, r, o, i = t.container(), a = (n = ne(i.childNodes), r = e, o = L(n, r), -1 === o ? A.none() : A.some(o)).map(function(e) { return e < t.offset() ? Su(i, t.offset() - 1) : t }).getOr(t); return rs(e), a }, ns = function(e, t) { return Gu(e) && t.container() === e ? (r = t, o = Zu((n = e).data.substr(0, r.offset())), i = Zu(n.data.substr(r.offset())), 0 < (a = o.text + i.text).length ? (Qu(n, a), Su(n, r.offset() - o.count)) : r) : es(e, t); var n, r, o, i, a }, rs = function(e) { if (Yu(e) && Aa(e) && (_a(e) ? e.removeAttribute("data-mce-caret") : Ju(e)), Gu(e)) { var t = Na(function(e) { try { return e.nodeValue } catch (t) { return "" } }(e)); Qu(e, t) } }, os = { removeAndReposition: function(e, t) { return Su.isTextPosition(t) ? ns(e, t) : (n = e, (r = t).container() === n.parentNode ? ts(n, r) : es(n, r)); var n, r }, remove: rs }, is = Do.isContentEditableTrue, as = Do.isContentEditableFalse, us = function(e, t, n, r, o) { return t._selectionOverrides.showCaret(e, n, r, o) }, ss = function(e, t) { var n, r; return e.fire("BeforeObjectSelected", { target: t }).isDefaultPrevented() ? null : ((r = (n = t).ownerDocument.createRange()).selectNode(n), r) }, cs = function(e, t, n) { var r = qc(1, e.getBody(), t), o = Su.fromRangeStart(r), i = o.getNode(); if (as(i)) return us(1, e, i, !o.isAtEnd(), !1); var a = o.getNode(!0); if (as(a)) return us(1, e, a, !1, !1); var u = e.dom.getParent(o.getNode(), function(e) { return as(e) || is(e) }); return as(u) ? us(1, e, u, !1, n) : null }, ls = function(e, t, n) { if (!t || !t.collapsed) return t; var r = cs(e, t, n); return r || t }; (Eu = Nu || (Nu = {}))[Eu.Backwards = -1] = "Backwards", Eu[Eu.Forwards = 1] = "Forwards"; var fs, ds, ms = Do.isContentEditableFalse, gs = Do.isText, ps = Do.isElement, hs = Do.isBr, vs = ja, bs = function(e) { return Va(e) || !! $a(t = e) && !0 !== jt.reduce(t.getElementsByTagName("*"), function(e, t) { return e || Ia(t) }, !1); var t }, ys = Wa, Cs = function(e, t) { return e.hasChildNodes() && t < e.childNodes.length ? e.childNodes[t] : null }, xs = function(e, t) { if (Dc(e)) { if (vs(t.previousSibling) && !gs(t.previousSibling)) return Su.before(t); if (gs(t)) return Su(t, 0) } if (Bc(e)) { if (vs(t.nextSibling) && !gs(t.nextSibling)) return Su.after(t); if (gs(t)) return Su(t, t.data.length) } return Bc(e) ? hs(t) ? Su.before(t) : Su.after(t) : Su.before(t) }, ws = function(e, t, n) { var r, o, i, a, u; if (!ps(n) || !t) return null; if (t.isEqual(Su.after(n)) && n.lastChild) { if (u = Su.after(n.lastChild), Bc(e) && vs(n.lastChild) && ps(n.lastChild)) return hs(n.lastChild) ? Su.before(n.lastChild) : u } else u = t; var s, c, l, f = u.container(), d = u.offset(); if (gs(f)) { if (Bc(e) && 0 < d) return Su(f, --d); if (Dc(e) && d < f.length) return Su(f, ++d); r = f } else { if (Bc(e) && 0 < d && (o = Cs(f, d - 1), vs(o))) return !bs(o) && (i = Pc(o, e, ys, o)) ? gs(i) ? Su(i, i.data.length) : Su.after(i) : gs(o) ? Su(o, o.data.length) : Su.before(o); if (Dc(e) && d < f.childNodes.length && (o = Cs(f, d), vs(o))) return hs(o) && n.lastChild === o ? null : (s = o, c = n, Do.isBr(s) && (l = ws(1, Su.after(s), c)) && !Ic(Su.before(s), Su.before(l), c) ? ws(e, Su.after(o), n) : !bs(o) && (i = Pc(o, e, ys, o)) ? gs(i) ? Su(i, 0) : Su.before(i) : gs(o) ? Su(o, 0) : Su.after(o)); r = o || u.getNode() } return (Dc(e) && u.isAtEnd() || Bc(e) && u.isAtStart()) && (r = Pc(r, e, ya.constant(!0), n, !0), ys(r, n)) ? xs(e, r) : (o = Pc(r, e, ys, n), !(a = jt.last(jt.filter(function(e, t) { for (var n = []; e && e !== t;) n.push(e), e = e.parentNode; return n }(f, n), ms))) || o && a.contains(o) ? o ? xs(e, o) : null : u = Dc(e) ? Su.after(a) : Su.before(a)) }, Ns = function(t) { return { next: function(e) { return ws(Nu.Forwards, e, t) }, prev: function(e) { return ws(Nu.Backwards, e, t) } } }; (ds = fs || (fs = {}))[ds.Br = 0] = "Br", ds[ds.Block = 1] = "Block", ds[ds.Wrap = 2] = "Wrap", ds[ds.Eol = 3] = "Eol"; var Es, Ss, Ts, ks, As, _s = function(e, t) { return e === Nu.Backwards ? t.reverse() : t }, Rs = function(e, t, n, r) { for (var o, i, a, u, s, c, l = Ns(n), f = r, d = []; f && (s = l, c = f, o = t === Nu.Forwards ? s.next(c) : s.prev(c));) { if (Do.isBr(o.getNode(!1))) return t === Nu.Forwards ? { positions: _s(t, d).concat([o]), breakType: fs.Br, breakAt: A.some(o) } : { positions: _s(t, d), breakType: fs.Br, breakAt: A.some(o) }; if (o.isVisible()) { if (e(f, o)) { var m = (i = t, a = f, u = o, Do.isBr(u.getNode(i === Nu.Forwards)) ? fs.Br : !1 === Ic(a, u) ? fs.Block : fs.Wrap); return { positions: _s(t, d), breakType: m, breakAt: A.some(o) } } d.push(o), f = o } else f = o } return { positions: _s(t, d), breakType: fs.Eol, breakAt: A.none() } }, Ds = function(n, r, o, e) { return r(o, e).breakAt.map(function(e) { var t = r(o, e).positions; return n === Nu.Backwards ? t.concat(e) : [e].concat(t) }).getOr([]) }, Bs = function(e, i) { return z(e, function(e, o) { return e.fold(function() { return A.some(o) }, function(r) { return ru([ee(r.getClientRects()), ee(o.getClientRects())], function(e, t) { var n = Math.abs(i - e.left); return Math.abs(i - t.left) <= n ? o : r }).or(e) }) }, A.none()) }, Os = function(t, e) { return ee(e.getClientRects()).bind(function(e) { return Bs(t, e.left) }) }, Ps = b(Rs, wu.isAbove, -1), Ls = b(Rs, wu.isBelow, 1), Is = b(Ds, -1, Ps), Ms = b(Ds, 1, Ls), Fs = function(e, t, n, r, o) { var i, a, u, s, c = Ki(er.fromDom(n), "td,th").map(function(e) { return e.dom() }), l = U((i = e, G(c, function(e) { var t, n, r = (t = e.getBoundingClientRect(), n = -1, { left: t.left - n, top: t.top - n, right: t.right + 2 * n, bottom: t.bottom + 2 * n, width: t.width + n, height: t.height + n }); return [{ x: r.left, y: i(r), cell: e }, { x: r.right, y: i(r), cell: e }] })), function(e) { return t(e, o) }); return (a = l, u = r, s = o, z(a, function(e, r) { return e.fold(function() { return A.some(r) }, function(e) { var t = Math.sqrt(Math.abs(e.x - u) + Math.abs(e.y - s)), n = Math.sqrt(Math.abs(r.x - u) + Math.abs(r.y - s)); return A.some(n < t ? r : e) }) }, A.none())).map(function(e) { return e.cell }) }, Us = b(Fs, function(e) { return e.bottom }, function(e, t) { return e.y < t }), zs = b(Fs, function(e) { return e.top }, function(e, t) { return e.y > t }), Vs = function(t, n) { return ee(n.getClientRects()).bind(function(e) { return Us(t, e.left, e.top) }).bind(function(e) { return Os((t = e, rl.lastPositionIn(t).map(function(e) { return Ps(t, e).positions.concat(e) }).getOr([])), n); var t }) }, qs = function(t, n) { return te(n.getClientRects()).bind(function(e) { return zs(t, e.left, e.top) }).bind(function(e) { return Os((t = e, rl.firstPositionIn(t).map(function(e) { return [e].concat(Ls(t, e).positions) }).getOr([])), n); var t }) }, Hs = function(e) { for (var t = 0, n = 0, r = e; r && r.nodeType;) t += r.offsetLeft || 0, n += r.offsetTop || 0, r = r.offsetParent; return { x: t, y: n } }, js = function(e, t, n) { var r, o, i, a, u, s = e.dom, c = s.getRoot(), l = 0; if (u = { elm: t, alignToTop: n }, e.fire("scrollIntoView", u), !u.isDefaultPrevented() && Do.isElement(t)) { if (!1 === n && (l = t.offsetHeight), "BODY" !== c.nodeName) { var f = e.selection.getScrollContainer(); if (f) return r = Hs(t).y - Hs(f).y + l, a = f.clientHeight, void((r < (i = f.scrollTop) || i + a < r + 25) && (f.scrollTop = r < i ? r : r - a + 25)) } o = s.getViewPort(e.getWin()), r = s.getPos(t).y + l, i = o.y, a = o.h, (r < o.y || i + a < r + 25) && e.getWin().scrollTo(0, r < i ? r : r - a + 25) } }, $s = function(d, e) { ee(wu.fromRangeStart(e).getClientRects()).each(function(e) { var t, n, r, o, i, a, u, s, c, l = function(e) { if (e.inline) return e.getBody().getBoundingClientRect(); var t = e.getWin(); return { left: 0, right: t.innerWidth, top: 0, bottom: t.innerHeight, width: t.innerWidth, height: t.innerHeight } }(d), f = { x: (i = t = l, a = n = e, a.left > i.left && a.right < i.right ? 0 : a.left < i.left ? a.left - i.left : a.right - i.right), y: (r = t, o = n, o.top > r.top && o.bottom < r.bottom ? 0 : o.top < r.top ? o.top - r.top : o.bottom - r.bottom) }; s = 0 !== f.x ? 0 < f.x ? f.x + 4 : f.x - 4 : 0, c = 0 !== f.y ? 0 < f.y ? f.y + 4 : f.y - 4 : 0, (u = d).inline ? (u.getBody().scrollLeft += s, u.getBody().scrollTop += c) : u.getWin().scrollBy(s, c) }) }, Ws = function(e, t, n) { var r = e.getParam(t, n); if (-1 !== r.indexOf("=")) { var o = e.getParam(t, "", "hash"); return o.hasOwnProperty(e.id) ? o[e.id] : n } return r }, Ks = function(e) { return e.getParam("iframe_attrs", {}) }, Xs = function(e) { return e.getParam("doctype", "") }, Ys = function(e) { return e.getParam("document_base_url", "") }, Gs = function(e) { return Ws(e, "body_id", "tinymce") }, Js = function(e) { return Ws(e, "body_class", "") }, Qs = function(e) { return e.getParam("content_security_policy", "") }, Zs = function(e) { return e.getParam("br_in_pre", !0) }, ec = function(e) { if (e.getParam("force_p_newlines", !1)) return "p"; var t = e.getParam("forced_root_block", "p"); return !1 === t ? "" : t }, tc = function(e) { return e.getParam("forced_root_block_attrs", {}) }, nc = function(e) { return e.getParam("br_newline_selector", ".mce-toc h2,figcaption,caption") }, rc = function(e) { return e.getParam("no_newline_selector", "") }, oc = function(e) { return e.getParam("keep_styles", !0) }, ic = function(e) { return e.getParam("end_container_on_empty_block", !1) }, ac = function(e) { return Yt.explode(e.getParam("font_size_style_values", "")) }, uc = function(e) { return Yt.explode(e.getParam("font_size_classes", "")) }, sc = Qn.detect().browser, cc = function() { return sc.isIE() || sc.isEdge() || sc.isFirefox() }, lc = function(e, t) { e.selection.setRng(t), $s(e, t) }, fc = function(t, n, e) { var r = t(n, e); return r.breakType === fs.Wrap && 0 === r.positions.length ? r.breakAt.map(function(e) { return t(n, e).breakAt.isNone() }).getOr(!0) : r.breakAt.isNone() }, dc = ya.curry(fc, Ps), mc = ya.curry(fc, Ls), gc = function(e, t, n, r) { var o, i, a, u, s = e.selection.getRng(), c = t ? 1 : -1; if (cc() && (o = t, i = s, a = n, u = Su.fromRangeStart(i), rl.positionIn(!o, a).map(function(e) { return e.isEqual(u) }).getOr(!1))) { var l = us(c, e, n, !t, !0); return lc(e, l), !0 } return !1 }, pc = function(e, t) { var n = t.getNode(e); return Do.isElement(n) && "TABLE" === n.nodeName ? A.some(n) : A.none() }, hc = function(u, s, c) { var e = pc( !! s, c), t = !1 === s; e.fold(function() { return lc(u, c.toRange()) }, function(a) { return rl.positionIn(t, u.getBody()).filter(function(e) { return e.isEqual(c) }).fold(function() { return lc(u, c.toRange()) }, function(e) { return n = s, o = a, t = c, void((i = ec(r = u)) ? r.undoManager.transact(function() { var e = er.fromTag(i); hr.setAll(e, tc(r)), Ti.append(e, er.fromTag("br")), n ? Ti.after(er.fromDom(o), e) : Ti.before(er.fromDom(o), e); var t = r.dom.createRng(); t.setStart(e.dom(), 0), t.setEnd(e.dom(), 0), lc(r, t) }) : lc(r, t.toRange())); var n, r, o, t, i }) }) }, vc = function(e, t, n, r) { var o, i, a, u, s, c, l = e.selection.getRng(), f = Su.fromRangeStart(l), d = e.getBody(); if (!t && dc(r, f)) { var m = (u = d, Vs(s = n, c = f).orThunk(function() { return ee(c.getClientRects()).bind(function(e) { return Bs(Is(u, Su.before(s)), e.left) }) }).getOr(Su.before(s))); return hc(e, t, m), !0 } return !(!t || !mc(r, f)) && (o = d, m = qs(i = n, a = f).orThunk(function() { return ee(a.getClientRects()).bind(function(e) { return Bs(Ms(o, Su.after(i)), e.left) }) }).getOr(Su.after(i)), hc(e, t, m), !0) }, bc = function(t, n) { return function() { return A.from(t.dom.getParent(t.selection.getNode(), "td,th")).bind(function(e) { return A.from(t.dom.getParent(e, "table")).map(function(e) { return gc(t, n, e) }) }).getOr(!1) } }, yc = function(n, r) { return function() { return A.from(n.dom.getParent(n.selection.getNode(), "td,th")).bind(function(t) { return A.from(n.dom.getParent(t, "table")).map(function(e) { return vc(n, r, e, t) }) }).getOr(!1) } }, Cc = Do.isContentEditableFalse, xc = function(e, t, n) { var r, o, i, a, u, s = Ya(t.getBoundingClientRect(), n); return "BODY" === e.tagName ? (r = e.ownerDocument.documentElement, o = e.scrollLeft || r.scrollLeft, i = e.scrollTop || r.scrollTop) : (u = e.getBoundingClientRect(), o = e.scrollLeft - u.left, i = e.scrollTop - u.top), s.left += o, s.right += o, s.top += i, s.bottom += i, s.width = 1, 0 < (a = t.offsetWidth - t.clientWidth) && (n && (a *= -1), s.left += a, s.right += a), s }, wc = function(a, u, e) { var t, s, c = Bi(A.none()), l = function() { ! function(e) { var t, n, r, o, i; for (t = pn("*[contentEditable=false]", e), o = 0; o < t.length; o++) r = (n = t[o]).previousSibling, Pa(r) && (1 === (i = r.data).length ? r.parentNode.removeChild(r) : r.deleteData(i.length - 1, 1)), r = n.nextSibling, Oa(r) && (1 === (i = r.data).length ? r.parentNode.removeChild(r) : r.deleteData(0, 1)) }(a), s && (os.remove(s), s = null), c.get().each(function(e) { pn(e.caret).remove(), c.set(A.none()) }), clearInterval(t) }, f = function() { t = Le.setInterval(function() { e() ? pn("div.mce-visual-caret", a).toggleClass("mce-visual-caret-hidden") : pn("div.mce-visual-caret", a).addClass("mce-visual-caret-hidden") }, 500) }; return { show: function(t, e) { var n, r, o; if (l(), o = e, Do.isElement(o) && /^(TD|TH)$/i.test(o.tagName)) return null; if (!u(e)) return s = function(e, t) { var n, r, o; if (r = e.ownerDocument.createTextNode(wa), o = e.parentNode, t) { if (n = e.previousSibling, Sa(n)) { if (Aa(n)) return n; if (Pa(n)) return n.splitText(n.data.length - 1) } o.insertBefore(r, e) } else { if (n = e.nextSibling, Sa(n)) { if (Aa(n)) return n; if (Oa(n)) return n.splitText(1), n } e.nextSibling ? o.insertBefore(r, e.nextSibling) : o.appendChild(r) } return r }(e, t), r = e.ownerDocument.createRange(), Cc(s.nextSibling) ? (r.setStart(s, 0), r.setEnd(s, 0)) : (r.setStart(s, 1), r.setEnd(s, 1)), r; s = Ba("p", e, t), n = xc(a, e, t), pn(s).css("top", n.top); var i = pn('
').css(n).appendTo(a)[0]; return c.set(A.some({ caret: i, element: e, before: t })), c.get().each(function(e) { t && pn(e.caret).addClass("mce-visual-caret-before") }), f(), (r = e.ownerDocument.createRange()).setStart(s, 0), r.setEnd(s, 0), r }, hide: l, getCss: function() { return ".mce-visual-caret {position: absolute;background-color: black;background-color: currentcolor;}.mce-visual-caret-hidden {display: none;}*[data-mce-caret] {position: absolute;left: -1000px;right: auto;top: 0;margin: 0;padding: 0;}" }, reposition: function() { c.get().each(function(e) { var t = xc(a, e.element, e.before); pn(e.caret).css(t) }) }, destroy: function() { return Le.clearInterval(t) } } }, Nc = function(e) { return Cc(e) || Do.isTable(e) && cc() }, Ec = Do.isContentEditableFalse, Sc = Do.matchStyleValues("display", "block table table-cell table-caption list-item"), Tc = Aa, kc = Ta, Ac = ya.curry, _c = Do.isElement, Rc = ja, Dc = function(e) { return 0 < e }, Bc = function(e) { return e < 0 }, Oc = function(e, t) { for (var n; n = e(t);) if (!kc(n)) return n; return null }, Pc = function(e, t, n, r, o) { var i = new oo(e, r); if (Bc(t)) { if ((Ec(e) || kc(e)) && n(e = Oc(i.prev, !0))) return e; for (; e = Oc(i.prev, o);) if (n(e)) return e } if (Dc(t)) { if ((Ec(e) || kc(e)) && n(e = Oc(i.next, !0))) return e; for (; e = Oc(i.next, o);) if (n(e)) return e } return null }, Lc = function(e, t) { for (; e && e !== t;) { if (Sc(e)) return e; e = e.parentNode } return null }, Ic = function(e, t, n) { return Lc(e.container(), n) === Lc(t.container(), n) }, Mc = function(e, t) { var n, r; return t ? (n = t.container(), r = t.offset(), _c(n) ? n.childNodes[r + e] : null) : null }, Fc = function(e, t) { var n = t.ownerDocument.createRange(); return e ? (n.setStartBefore(t), n.setEndBefore(t)) : (n.setStartAfter(t), n.setEndAfter(t)), n }, Uc = function(e, t, n) { var r, o, i, a; for (o = e ? "previousSibling" : "nextSibling"; n && n !== t;) { if (r = n[o], Tc(r) && (r = r[o]), Ec(r)) { if (a = n, Lc(r, i = t) === Lc(a, i)) return r; break } if (Rc(r)) break; n = n.parentNode } return null }, zc = Ac(Fc, !0), Vc = Ac(Fc, !1), qc = function(e, t, n) { var r, o, i, a, u = Ac(Uc, !0, t), s = Ac(Uc, !1, t); if (o = n.startContainer, i = n.startOffset, Ta(o)) { if (_c(o) || (o = o.parentNode), "before" === (a = o.getAttribute("data-mce-caret")) && (r = o.nextSibling, Nc(r))) return zc(r); if ("after" === a && (r = o.previousSibling, Nc(r))) return Vc(r) } if (!n.collapsed) return n; if (Do.isText(o)) { if (Tc(o)) { if (1 === e) { if (r = s(o)) return zc(r); if (r = u(o)) return Vc(r) } if (-1 === e) { if (r = u(o)) return Vc(r); if (r = s(o)) return zc(r) } return n } if (Pa(o) && i >= o.data.length - 1) return 1 === e && (r = s(o)) ? zc(r) : n; if (Oa(o) && i <= 1) return -1 === e && (r = u(o)) ? Vc(r) : n; if (i === o.data.length) return (r = s(o)) ? zc(r) : n; if (0 === i) return (r = u(o)) ? Vc(r) : n } return n }, Hc = function(e, t) { var n = Mc(e, t); return Ec(n) && !Do.isBogusAll(n) }, jc = function(e, t) { return Do.isTable(Mc(e, t)) }, $c = function(e, t) { return A.from(Mc(e ? 0 : -1, t)).filter(Ec) }, Wc = function(e, t, n) { var r = qc(e, t, n); return -1 === e ? wu.fromRangeStart(r) : wu.fromRangeEnd(r) }, Kc = Ac(Hc, 0), Xc = Ac(Hc, -1), Yc = Ac(jc, 0), Gc = Ac(jc, -1), Jc = function(e) { return Su.isTextPosition(e) ? 0 === e.offset() : ja(e.getNode()) }, Qc = function(e) { if (Su.isTextPosition(e)) { var t = e.container(); return e.offset() === t.data.length } return ja(e.getNode(!0)) }, Zc = function(e, t) { return !Su.isTextPosition(e) && !Su.isTextPosition(t) && e.getNode() === t.getNode(!0) }, el = function(e, t, n) { return e ? !Zc(t, n) && (r = t, !(!Su.isTextPosition(r) && Do.isBr(r.getNode()))) && Qc(t) && Jc(n) : !Zc(n, t) && Jc(t) && Qc(n); var r }, tl = function(e, t, n) { var r = Ns(t); return A.from(e ? r.next(n) : r.prev(n)) }, nl = function(e, t) { var n, r, o, i, a, u = e ? t.firstChild : t.lastChild; return Do.isText(u) ? A.some(Su(u, e ? 0 : u.data.length)) : u ? ja(u) ? A.some(e ? Su.before(u) : (a = u, Do.isBr(a) ? Su.before(a) : Su.after(a))) : (r = t, o = u, i = (n = e) ? Su.before(o) : Su.after(o), tl(n, r, i)) : A.none() }, rl = { fromPosition: tl, nextPosition: b(tl, !0), prevPosition: b(tl, !1), navigate: function(t, n, r) { return tl(t, n, r).bind(function(e) { return Ic(r, e, n) && el(t, r, e) ? tl(t, n, e) : A.some(e) }) }, positionIn: nl, firstPositionIn: b(nl, !0), lastPositionIn: b(nl, !1) }, ol = function(e, t) { return !e.isBlock(t) || t.innerHTML || Re.ie || (t.innerHTML = '
'), t }, il = function(e, t) { return rl.lastPositionIn(e).fold(function() { return !1 }, function(e) { return t.setStart(e.container(), e.offset()), t.setEnd(e.container(), e.offset()), !0 }) }, al = function(e, t, n) { return !(!1 !== t.hasChildNodes() || !Xu(e, t) || (o = n, i = (r = t).ownerDocument.createTextNode(wa), r.appendChild(i), o.setStart(i, 0), o.setEnd(i, 0), 0)); var r, o, i }, ul = function(e, t, n, r) { var o, i, a, u, s = n[t ? "start" : "end"], c = e.getRoot(); if (s) { for (a = s[0], i = c, o = s.length - 1; 1 <= o; o--) { if (u = i.childNodes, al(c, i, r)) return !0; if (s[o] > u.length - 1) return !!al(c, i, r) || il(i, r); i = u[s[o]] } 3 === i.nodeType && (a = Math.min(s[0], i.nodeValue.length)), 1 === i.nodeType && (a = Math.min(s[0], i.childNodes.length)), t ? r.setStart(i, a) : r.setEnd(i, a) } return !0 }, sl = function(e) { return Do.isText(e) && 0 < e.data.length }, cl = function(e, t, n) { var r, o, i, a, u, s, c = e.get(n.id + "_" + t), l = n.keep; if (c) { if (r = c.parentNode, "start" === t ? l ? c.hasChildNodes() ? (r = c.firstChild, o = 1) : sl(c.nextSibling) ? (r = c.nextSibling, o = 0) : sl(c.previousSibling) ? (r = c.previousSibling, o = c.previousSibling.data.length) : (r = c.parentNode, o = e.nodeIndex(c) + 1) : o = e.nodeIndex(c) : l ? c.hasChildNodes() ? (r = c.firstChild, o = 1) : sl(c.previousSibling) ? (r = c.previousSibling, o = c.previousSibling.data.length) : (r = c.parentNode, o = e.nodeIndex(c)) : o = e.nodeIndex(c), u = r, s = o, !l) { for (a = c.previousSibling, i = c.nextSibling, Yt.each(Yt.grep(c.childNodes), function(e) { Do.isText(e) && (e.nodeValue = e.nodeValue.replace(/\uFEFF/g, "")) }); c = e.get(n.id + "_" + t);) e.remove(c, !0); a && i && a.nodeType === i.nodeType && Do.isText(a) && !Re.opera && (o = a.nodeValue.length, a.appendData(i.nodeValue), e.remove(i), u = a, s = o) } return A.some(Su(u, s)) } return A.none() }, ll = function(e, t) { var n, r, o, i, a, u, s, c, l, f, d, m, g, p, h, v, b = e.dom; if (t) { if (v = t, Yt.isArray(v.start)) return p = t, h = (g = b).createRng(), ul(g, !0, p, h) && ul(g, !1, p, h) ? A.some(h) : A.none(); if ("string" == typeof t.start) return A.some((f = t, d = (l = b).createRng(), m = Pu(l.getRoot(), f.start), d.setStart(m.container(), m.offset()), m = Pu(l.getRoot(), f.end), d.setEnd(m.container(), m.offset()), d)); if (t.hasOwnProperty("id")) return s = cl(o = b, "start", i = t), c = cl(o, "end", i), ru([s, (a = c, u = s, a.isSome() ? a : u)], function(e, t) { var n = o.createRng(); return n.setStart(ol(o, e.container()), e.offset()), n.setEnd(ol(o, t.container()), t.offset()), n }); if (t.hasOwnProperty("name")) return n = b, r = t, A.from(n.select(r.name)[r.index]).map(function(e) { var t = n.createRng(); return t.selectNode(e), t }); if (t.hasOwnProperty("rng")) return A.some(t.rng) } return A.none() }, fl = function(e, t, n) { return $u.getBookmark(e, t, n) }, dl = function(t, e) { ll(t, e).each(function(e) { t.setRng(e) }) }, ml = function(e) { return Do.isElement(e) && "SPAN" === e.tagName && "bookmark" === e.getAttribute("data-mce-type") }, gl = function(e) { return e && /^(IMG)$/.test(e.nodeName) }, pl = function(e) { return e && 3 === e.nodeType && /^([\t \r\n]+|)$/.test(e.nodeValue) }, hl = function(e, t, n) { return "color" !== n && "backgroundColor" !== n || (t = e.toHex(t)), "fontWeight" === n && 700 === t && (t = "bold"), "fontFamily" === n && (t = t.replace(/[\'\"]/g, "").replace(/,\s+/g, ",")), "" + t }, vl = { isInlineBlock: gl, moveStart: function(e, t, n) { var r, o, i, a = n.startOffset, u = n.startContainer; if ((n.startContainer !== n.endContainer || !gl(n.startContainer.childNodes[n.startOffset])) && 1 === u.nodeType) for (a < (i = u.childNodes).length ? r = new oo(u = i[a], e.getParent(u, e.isBlock)) : (r = new oo(u = i[i.length - 1], e.getParent(u, e.isBlock))).next(!0), o = r.current(); o; o = r.next()) if (3 === o.nodeType && !pl(o)) return n.setStart(o, 0), void t.setRng(n) }, getNonWhiteSpaceSibling: function(e, t, n) { if (e) for (t = t ? "nextSibling" : "previousSibling", e = n ? e : e[t]; e; e = e[t]) if (1 === e.nodeType || !pl(e)) return e }, isTextBlock: function(e, t) { return t.nodeType && (t = t.nodeName), !! e.schema.getTextBlockElements()[t.toLowerCase()] }, isValid: function(e, t, n) { return e.schema.isValidChild(t, n) }, isWhiteSpaceNode: pl, replaceVars: function(e, n) { return "string" != typeof e ? e = e(n) : n && (e = e.replace(/%(\w+)/g, function(e, t) { return n[t] || e })), e }, isEq: function(e, t) { return t = t || "", e = "" + ((e = e || "").nodeName || e), t = "" + (t.nodeName || t), e.toLowerCase() === t.toLowerCase() }, normalizeStyleValue: hl, getStyle: function(e, t, n) { return hl(e, e.getStyle(t, n), n) }, getTextDecoration: function(t, e) { var n; return t.getParent(e, function(e) { return (n = t.getStyle(e, "text-decoration")) && "none" !== n }), n }, getParents: function(e, t, n) { return e.getParents(t, n, e.getRoot()) } }, bl = ml, yl = vl.getParents, Cl = vl.isWhiteSpaceNode, xl = vl.isTextBlock, wl = function(e, t) { for (void 0 === t && (t = 3 === e.nodeType ? e.length : e.childNodes.length); e && e.hasChildNodes();)(e = e.childNodes[t]) && (t = 3 === e.nodeType ? e.length : e.childNodes.length); return { node: e, offset: t } }, Nl = function(e, t) { for (var n = t; n;) { if (1 === n.nodeType && e.getContentEditable(n)) return "false" === e.getContentEditable(n) ? n : t; n = n.parentNode } return t }, El = function(e, t, n, r) { var o, i, a = n.nodeValue; return void 0 === r && (r = e ? a.length : 0), e ? (o = a.lastIndexOf(" ", r), -1 === (o = (i = a.lastIndexOf("\xa0", r)) < o ? o : i) || t || o++) : (o = a.indexOf(" ", r), i = a.indexOf("\xa0", r), o = -1 !== o && (-1 === i || o < i) ? o : i), o }, Sl = function(e, t, n, r, o, i) { var a, u, s, c; if (3 === n.nodeType) { if (-1 !== (s = El(o, i, n, r))) return { container: n, offset: s }; c = n } for (a = new oo(n, e.getParent(n, e.isBlock) || t); u = a[o ? "prev" : "next"]();) if (3 === u.nodeType) { if (-1 !== (s = El(o, i, c = u))) return { container: u, offset: s } } else if (e.isBlock(u)) break; if (c) return { container: c, offset: r = o ? 0 : c.length } }, Tl = function(e, t, n, r, o) { var i, a, u, s; for (3 === r.nodeType && 0 === r.nodeValue.length && r[o] && (r = r[o]), i = yl(e, r), a = 0; a < i.length; a++) for (u = 0; u < t.length; u++) if (!("collapsed" in (s = t[u]) && s.collapsed !== n.collapsed) && e.is(i[a], s.selector)) return i[a]; return r }, kl = function(t, e, n, r) { var o, i = t.dom, a = i.getRoot(); if (e[0].wrapper || (o = i.getParent(n, e[0].block, a)), !o) { var u = i.getParent(n, "LI,TD,TH"); o = i.getParent(3 === n.nodeType ? n.parentNode : n, function(e) { return e !== a && xl(t, e) }, u) } if (o && e[0].wrapper && (o = yl(i, o, "ul,ol").reverse()[0] || o), !o) for (o = n; o[r] && !i.isBlock(o[r]) && (o = o[r], !vl.isEq(o, "br"));); return o || n }, Al = function(e, t, n, r, o, i, a) { var u, s, c, l, f, d; if (u = s = a ? n : o, l = a ? "previousSibling" : "nextSibling", f = e.getRoot(), 3 === u.nodeType && !Cl(u) && (a ? 0 < r : i < u.nodeValue.length)) return u; for (;;) { if (!t[0].block_expand && e.isBlock(s)) return s; for (c = s[l]; c; c = c[l]) if (!bl(c) && !Cl(c) && ("BR" !== (d = c).nodeName || !d.getAttribute("data-mce-bogus") || d.nextSibling)) return s; if (s === f || s.parentNode === f) { u = s; break } s = s.parentNode } return u }, _l = function(e, t, n, r) { var o, i = t.startContainer, a = t.startOffset, u = t.endContainer, s = t.endOffset, c = e.dom; return 1 === i.nodeType && i.hasChildNodes() && 3 === (i = eu(i, a)).nodeType && (a = 0), 1 === u.nodeType && u.hasChildNodes() && 3 === (u = eu(u, t.collapsed ? s : s - 1)).nodeType && (s = u.nodeValue.length), i = Nl(c, i), u = Nl(c, u), (bl(i.parentNode) || bl(i)) && 3 === (i = (i = bl(i) ? i : i.parentNode).nextSibling || i).nodeType && (a = 0), (bl(u.parentNode) || bl(u)) && 3 === (u = (u = bl(u) ? u : u.parentNode).previousSibling || u).nodeType && (s = u.length), n[0].inline && (t.collapsed && ((o = Sl(c, e.getBody(), i, a, !0, r)) && (i = o.container, a = o.offset), (o = Sl(c, e.getBody(), u, s, !1, r)) && (u = o.container, s = o.offset)), u = r ? u : function(e, t) { var n = wl(e, t); if (n.node) { for (; n.node && 0 === n.offset && n.node.previousSibling;) n = wl(n.node.previousSibling); n.node && 0 < n.offset && 3 === n.node.nodeType && " " === n.node.nodeValue.charAt(n.offset - 1) && 1 < n.offset && (e = n.node).splitText(n.offset - 1) } return e }(u, s)), (n[0].inline || n[0].block_expand) && (n[0].inline && 3 === i.nodeType && 0 !== a || (i = Al(c, n, i, a, u, s, !0)), n[0].inline && 3 === u.nodeType && s !== u.nodeValue.length || (u = Al(c, n, i, a, u, s, !1))), n[0].selector && !1 !== n[0].expand && !n[0].inline && (i = Tl(c, n, t, i, "previousSibling"), u = Tl(c, n, t, u, "nextSibling")), (n[0].block || n[0].selector) && (i = kl(e, n, i, "previousSibling"), u = kl(e, n, u, "nextSibling"), n[0].block && (c.isBlock(i) || (i = Al(c, n, i, a, u, s, !0)), c.isBlock(u) || (u = Al(c, n, i, a, u, s, !1)))), 1 === i.nodeType && (a = c.nodeIndex(i), i = i.parentNode), 1 === u.nodeType && (s = c.nodeIndex(u) + 1, u = u.parentNode), { startContainer: i, startOffset: a, endContainer: u, endOffset: s } }, Rl = Yt.each, Dl = function(e, t, o) { var n, r, i, a, u, s, c, l = t.startContainer, f = t.startOffset, d = t.endContainer, m = t.endOffset; if (0 < (c = e.select("td[data-mce-selected],th[data-mce-selected]")).length) Rl(c, function(e) { o([e]) }); else { var g, p, h, v = function(e) { var t; return 3 === (t = e[0]).nodeType && t === l && f >= t.nodeValue.length && e.splice(0, 1), t = e[e.length - 1], 0 === m && 0 < e.length && t === d && 3 === t.nodeType && e.splice(e.length - 1, 1), e }, b = function(e, t, n) { for (var r = []; e && e !== n; e = e[t]) r.push(e); return r }, y = function(e, t) { do { if (e.parentNode === t) return e; e = e.parentNode } while (e) }, C = function(e, t, n) { var r = n ? "nextSibling" : "previousSibling"; for (u = (a = e).parentNode; a && a !== t; a = u) u = a.parentNode, (s = b(a === e ? a : a[r], r)).length && (n || s.reverse(), o(v(s))) }; if (1 === l.nodeType && l.hasChildNodes() && (l = l.childNodes[f]), 1 === d.nodeType && d.hasChildNodes() && (p = m, h = (g = d).childNodes, --p > h.length - 1 ? p = h.length - 1 : p < 0 && (p = 0), d = h[p] || g), l === d) return o(v([l])); for (n = e.findCommonAncestor(l, d), a = l; a; a = a.parentNode) { if (a === d) return C(l, n, !0); if (a === n) break } for (a = d; a; a = a.parentNode) { if (a === l) return C(d, n); if (a === n) break } r = y(l, n) || l, i = y(d, n) || d, C(l, r, !0), (s = b(r === l ? r : r.nextSibling, "nextSibling", i === d ? i.nextSibling : i)).length && o(v(s)), C(d, i) } }, Bl = (Es = sr.isText, Ss = "text", Ts = function(e) { return Es(e) ? A.from(e.dom().nodeValue) : A.none() }, ks = Qn.detect().browser, { get: function(e) { if (!Es(e)) throw new Error("Can only get " + Ss + " value of a " + Ss + " node"); return As(e).getOr("") }, getOption: As = ks.isIE() && 10 === ks.version.major ? function(e) { try { return Ts(e) } catch (Kw) { return A.none() } } : Ts, set: function(e, t) { if (!Es(e)) throw new Error("Can only set raw " + Ss + " value of a " + Ss + " node"); e.dom().nodeValue = t } }), Ol = function(e) { return Bl.get(e) }, Pl = function(r, o, i, a) { return $r.parent(o).fold(function() { return "skipping" }, function(e) { return "br" === a || (n = o, sr.isText(n) && "\ufeff" === Ol(n)) ? "skipping" : (t = o, sr.isElement(t) && Wi.has(t, oa()) ? "existing" : Ku(o) ? "caret" : vl.isValid(r, i, a) && vl.isValid(r, sr.name(e), i) ? "valid" : "invalid-child"); var t, n }) }, Ll = undefined && undefined.__rest || function(e, t) { var n = {}; for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); if (null != e && "function" == typeof Object.getOwnPropertySymbols) { var o = 0; for (r = Object.getOwnPropertySymbols(e); o < r.length; o++) t.indexOf(r[o]) < 0 && (n[r[o]] = e[r[o]]) } return n }, Il = function(r, e, t, n, o) { var i, a, u = o.uid, s = void 0 === u ? (i = "mce-annotation", a = (new Date).getTime(), i + "_" + Math.floor(1e9 * Math.random()) + ++fa + String(a)) : u, c = Ll(o, ["uid"]), l = [], f = er.fromTag("span"); Wi.add(f, oa()), hr.set(f, "" + aa(), s), hr.set(f, "" + ia(), t); var d = n(s, c), m = d.attributes, g = void 0 === m ? {} : m, p = d.classes, h = void 0 === p ? [] : p; hr.setAll(f, g), da(f, h); var v = Bi(A.none()), b = function() { v.set(A.none()) }, y = function(e) { F(e, C) }, C = function(e) { switch (Pl(r, e, "span", sr.name(e))) { case "invalid-child": b(); var t = $r.children(e); y(t), b(); break; case "valid": var n = v.get().getOrThunk(function() { var e = pa(f); return l.push(e), v.set(A.some(e)), e }); Ti.wrap(e, n) } }; return Dl(r.dom, e, function(e) { var t; b(), t = $(e, er.fromDom), y(t) }), l }, Ml = function(a, u, s, c) { a.undoManager.transact(function() { var e, t, n, r = a.selection.getRng(); r.collapsed && (n = _l(e = a, t = r, [{ inline: !0 }], !1), t.setStart(n.startContainer, n.startOffset), t.setEnd(n.endContainer, n.endOffset), e.selection.setRng(t)); var o = $u.getPersistentBookmark(a.selection, !0), i = a.selection.getRng(); Il(a, i, u, s.decorate, c), a.selection.moveToBookmark(o) }) }; function Fl(s) { var n, r = (n = {}, { register: function(e, t) { n[e] = { name: e, settings: t } }, lookup: function(e) { return n.hasOwnProperty(e) ? A.from(n[e]).map(function(e) { return e.settings }) : A.none() } }); la(s, r); var o = ca(s); return { register: function(e, t) { r.register(e, t) }, annotate: function(t, n) { r.lookup(t).each(function(e) { Ml(s, t, e, n) }) }, annotationChanged: function(e, t) { o.addListener(e, t) }, remove: function(e) { ua(s, A.some(e)).each(function(e) { var t = e.elements; F(t, Ri.unwrap) }) }, getAll: function(e) { var t, n, r, o, i, a, u = (t = s, n = e, r = er.fromDom(t.getBody()), o = Ki(r, "[" + ia() + '="' + n + '"]'), i = {}, F(o, function(e) { var t = hr.get(e, aa()), n = i.hasOwnProperty(t) ? i[t] : []; i[t] = n.concat([e]) }), i); return a = function(e) { return $(e, function(e) { return e.dom() }) }, fr(u, function(e, t, n) { return { k: t, v: a(e, t, n) } }) } } } var Ul = function(e) { return Yt.grep(e.childNodes, function(e) { return "LI" === e.nodeName }) }, zl = function(e) { return e && e.firstChild && e.firstChild === e.lastChild && ("\xa0" === (t = e.firstChild).data || Do.isBr(t)); var t }, Vl = function(e) { return 0 < e.length && (!(t = e[e.length - 1]).firstChild || zl(t)) ? e.slice(0, -1) : e; var t }, ql = function(e, t) { var n = e.getParent(t, e.isBlock); return n && "LI" === n.nodeName ? n : null }, Hl = function(e, t) { var n = Su.after(e), r = Ns(t).prev(n); return r ? r.toRange() : null }, jl = function(t, e, n) { var r, o, i, a, u = t.parentNode; return Yt.each(e, function(e) { u.insertBefore(e, t) }), r = t, o = n, i = Su.before(r), (a = Ns(o).next(i)) ? a.toRange() : null }, $l = function(e, t) { var n, r, o, i, a, u, s = t.firstChild, c = t.lastChild; return s && "meta" === s.name && (s = s.next), c && "mce_marker" === c.attr("id") && (c = c.prev), r = c, u = (n = e).getNonEmptyElements(), r && (r.isEmpty(u) || (o = r, n.getBlockElements()[o.name] && (a = o).firstChild && a.firstChild === a.lastChild && ("br" === (i = o.firstChild).name || "\xa0" === i.value))) && (c = c.prev), !(!s || s !== c || "ul" !== s.name && "ol" !== s.name) }, Wl = function(e, o, i, t) { var n, r, a, u, s, c, l, f, d, m, g, p, h, v, b, y, C, x, w, N = (n = o, r = t, c = e.serialize(r), l = n.createFragment(c), u = (a = l).firstChild, s = a.lastChild, u && "META" === u.nodeName && u.parentNode.removeChild(u), s && "mce_marker" === s.id && s.parentNode.removeChild(s), a), E = ql(o, i.startContainer), S = Vl(Ul(N.firstChild)), T = o.getRoot(), k = function(e) { var t = Su.fromRangeStart(i), n = Ns(o.getRoot()), r = 1 === e ? n.prev(t) : n.next(t); return !r || ql(o, r.getNode()) !== E }; return k(1) ? jl(E, S, T) : k(2) ? (f = E, d = S, m = T, o.insertAfter(d.reverse(), f), Hl(d[0], m)) : (p = S, h = T, v = g = E, y = (b = i).cloneRange(), C = b.cloneRange(), y.setStartBefore(v), C.setEndAfter(v), x = [y.cloneContents(), C.cloneContents()], (w = g.parentNode).insertBefore(x[0], g), Yt.each(p, function(e) { w.insertBefore(e, g) }), w.insertBefore(x[1], g), w.removeChild(g), Hl(p[p.length - 1], h)) }, Kl = function(e, t) { return !!ql(e, t) }, Xl = Yt.each, Yl = function(o) { this.compare = function(e, t) { if (e.nodeName !== t.nodeName) return !1; var n = function(n) { var r = {}; return Xl(o.getAttribs(n), function(e) { var t = e.nodeName.toLowerCase(); 0 !== t.indexOf("_") && "style" !== t && 0 !== t.indexOf("data-") && (r[t] = o.getAttrib(n, t)) }), r }, r = function(e, t) { var n, r; for (r in e) if (e.hasOwnProperty(r)) { if (void 0 === (n = t[r])) return !1; if (e[r] !== n) return !1; delete t[r] } for (r in t) if (t.hasOwnProperty(r)) return !1; return !0 }; return !(!r(n(e), n(t)) || !r(o.parseStyle(o.getAttrib(e, "style")), o.parseStyle(o.getAttrib(t, "style"))) || ml(e) || ml(t)) } }, Gl = function(e) { var t = Ki(e, "br"), n = U(function(e) { for (var t = [], n = e.dom(); n;) t.push(er.fromDom(n)), n = n.lastChild; return t }(e).slice(-1), mo); t.length === n.length && F(n, Ri.remove) }, Jl = function(e) { Ri.empty(e), Ti.append(e, er.fromHtml('
')) }, Ql = function(n) { $r.lastChild(n).each(function(t) { $r.prevSibling(t).each(function(e) { lo(n) && mo(t) && lo(e) && Ri.remove(t) }) }) }, Zl = Yt.makeMap; function ef(e) { var u, s, c, l, f, d = []; return u = (e = e || {}).indent, s = Zl(e.indent_before || ""), c = Zl(e.indent_after || ""), l = $o.getEncodeFunc(e.entity_encoding || "raw", e.entities), f = "html" === e.element_format, { start: function(e, t, n) { var r, o, i, a; if (u && s[e] && 0 < d.length && 0 < (a = d[d.length - 1]).length && "\n" !== a && d.push("\n"), d.push("<", e), t) for (r = 0, o = t.length; r < o; r++) i = t[r], d.push(" ", i.name, '="', l(i.value, !0), '"'); d[d.length] = !n || f ? ">" : " />", n && u && c[e] && 0 < d.length && 0 < (a = d[d.length - 1]).length && "\n" !== a && d.push("\n") }, end: function(e) { var t; d.push(""), u && c[e] && 0 < d.length && 0 < (t = d[d.length - 1]).length && "\n" !== t && d.push("\n") }, text: function(e, t) { 0 < e.length && (d[d.length] = t ? e : l(e)) }, cdata: function(e) { d.push("") }, comment: function(e) { d.push("\x3c!--", e, "--\x3e") }, pi: function(e, t) { t ? d.push("") : d.push(""), u && d.push("\n") }, doctype: function(e) { d.push("", u ? "\n" : "") }, reset: function() { d.length = 0 }, getContent: function() { return d.join("").replace(/\n$/, "") } } } function tf(t, g) { void 0 === g && (g = ni()); var p = ef(t); return (t = t || {}).validate = !("validate" in t) || t.validate, { serialize: function(e) { var f, d; d = t.validate, f = { 3: function(e) { p.text(e.value, e.raw) }, 8: function(e) { p.comment(e.value) }, 7: function(e) { p.pi(e.name, e.value) }, 10: function(e) { p.doctype(e.value) }, 4: function(e) { p.cdata(e.value) }, 11: function(e) { if (e = e.firstChild) for (; m(e), e = e.next;); } }, p.reset(); var m = function(e) { var t, n, r, o, i, a, u, s, c, l = f[e.type]; if (l) l(e); else { if (t = e.name, n = e.shortEnded, r = e.attributes, d && r && 1 < r.length && ((a = []).map = {}, c = g.getElementRule(e.name))) { for (u = 0, s = c.attributesOrder.length; u < s; u++)(o = c.attributesOrder[u]) in r.map && (i = r.map[o], a.map[o] = i, a.push({ name: o, value: i })); for (u = 0, s = r.length; u < s; u++)(o = r[u].name) in a.map || (i = r.map[o], a.map[o] = i, a.push({ name: o, value: i })); r = a } if (p.start(e.name, r, n), !n) { if (e = e.firstChild) for (; m(e), e = e.next;); p.end(t) } } }; return 1 !== e.type || t.inner ? f[11](e) : m(e), p.getContent() } } } var nf = function(a) { var u = Su.fromRangeStart(a), s = Su.fromRangeEnd(a), c = a.commonAncestorContainer; return rl.fromPosition(!1, c, s).map(function(e) { return !Ic(u, s, c) && Ic(u, e, c) ? (t = u.container(), n = u.offset(), r = e.container(), o = e.offset(), (i = document.createRange()).setStart(t, n), i.setEnd(r, o), i) : a; var t, n, r, o, i }).getOr(a) }, rf = function(e) { return e.collapsed ? e : nf(e) }, of = Do.matchNodeNames("td th"), af = function(o, e, t) { var n, r, i, a, u, s, c, l, f, d, m, g, p = o.schema.getTextInlineElements(), h = o.selection, v = o.dom; if (/^ | $/.test(e) && (e = function(e) { var t, n, r; t = h.getRng(), n = t.startContainer, r = t.startOffset; var o = function(e) { return n[e] && 3 === n[e].nodeType }; return 3 === n.nodeType && (0 < r ? e = e.replace(/^ /, " ") : o("previousSibling") || (e = e.replace(/^ /, " ")), r < n.length ? e = e.replace(/ (
|)$/, " ") : o("nextSibling") || (e = e.replace(/( | )(
|)$/, " "))), e }(e)), n = o.parser, g = t.merge, r = tf({ validate: o.settings.validate }, o.schema), m = '​', s = { content: e, format: "html", selection: !0, paste: t.paste }, (s = o.fire("BeforeSetContent", s)).isDefaultPrevented()) o.fire("SetContent", { content: s.content, format: "html", selection: !0, paste: t.paste }); else { -1 === (e = s.content).indexOf("{$caret}") && (e += "{$caret}"), e = e.replace(/\{\$caret\}/, m); var b, y, C, x, w = (l = h.getRng()).startContainer || (l.parentElement ? l.parentElement() : null), N = o.getBody(); w === N && h.isCollapsed() && v.isBlock(N.firstChild) && (b = N.firstChild) && !o.schema.getShortEndedElements()[b.nodeName] && v.isEmpty(N.firstChild) && ((l = v.createRng()).setStart(N.firstChild, 0), l.setEnd(N.firstChild, 0), h.setRng(l)), h.isCollapsed() || (o.selection.setRng(rf(o.selection.getRng())), o.getDoc().execCommand("Delete", !1, null), C = (y = h.getRng()).startContainer, x = y.startOffset, 3 === C.nodeType && y.collapsed && ("\xa0" === C.data[x] ? (C.deleteData(x, 1), /[\u00a0| ]$/.test(e) || (e += " ")) : "\xa0" === C.data[x - 1] && (C.deleteData(x - 1, 1), /[\u00a0| ]$/.test(e) || (e = " " + e)))); var E, S, T, k = { context: (i = h.getNode()).nodeName.toLowerCase(), data: t.data, insert: !0 }; if (u = n.parse(e, k), !0 === t.paste && $l(o.schema, u) && Kl(v, i)) return l = Wl(r, v, o.selection.getRng(), u), o.selection.setRng(l), void o.fire("SetContent", s); if (function(e) { for (var t = e; t = t.walk();) 1 === t.type && t.attr("data-mce-fragment", "1") }(u), "mce_marker" === (f = u.lastChild).attr("id")) for (f = (c = f).prev; f; f = f.walk(!0)) if (3 === f.type || !v.isBlock(f.name)) { o.schema.isValidChild(f.parent.name, "span") && f.parent.insert(c, f, "br" === f.name); break } if (o._selectionOverrides.showBlockCaretContainer(i), k.invalid) { for (h.setContent(m), i = h.getNode(), a = o.getBody(), 9 === i.nodeType ? i = f = a : f = i; f !== a;) f = (i = f).parentNode; e = i === a ? a.innerHTML : v.getOuterHTML(i), e = r.serialize(n.parse(e.replace(//i, function() { return r.serialize(u) }))), i === a ? v.setHTML(a, e) : v.setOuterHTML(i, e) } else e = r.serialize(u), function(e, t, n) { if ("all" === n.getAttribute("data-mce-bogus")) n.parentNode.insertBefore(e.dom.createFragment(t), n); else { var r = n.firstChild, o = n.lastChild; !r || r === o && "BR" === r.nodeName ? e.dom.setHTML(n, t) : e.selection.setContent(t) } }(o, e, i); ! function() { if (g) { var n = o.getBody(), r = new Yl(v); Yt.each(v.select("*[data-mce-fragment]"), function(e) { for (var t = e.parentNode; t && t !== n; t = t.parentNode) p[e.nodeName.toLowerCase()] && r.compare(t, e) && v.remove(e, !0) }) } }(), function(e) { var t, n, r; if (e) { if (h.scrollIntoView(e), t = function(e) { for (var t = o.getBody(); e && e !== t; e = e.parentNode) if ("false" === o.dom.getContentEditable(e)) return e; return null }(e)) return v.remove(e), h.select(t); l = v.createRng(), (f = e.previousSibling) && 3 === f.nodeType ? (l.setStart(f, f.nodeValue.length), Re.ie || (d = e.nextSibling) && 3 === d.nodeType && (f.appendData(d.data), d.parentNode.removeChild(d))) : (l.setStartBefore(e), l.setEndBefore(e)), n = v.getParent(e, v.isBlock), v.remove(e), n && v.isEmpty(n) && (o.$(n).empty(), l.setStart(n, 0), l.setEnd(n, 0), of(n) || n.getAttribute("data-mce-fragment") || !(r = function(e) { var t = Su.fromRangeStart(e); if (t = Ns(o.getBody()).next(t)) return t.toRange() }(l)) ? v.add(n, v.create("br", { "data-mce-bogus": "1" })) : (l = r, v.remove(n))), h.setRng(l) } }(v.get("mce_marker")), E = o.getBody(), Yt.each(E.getElementsByTagName("*"), function(e) { e.removeAttribute("data-mce-fragment") }), S = o.dom, T = o.selection.getStart(), A.from(S.getParent(T, "td,th")).map(er.fromDom).each(Ql), o.fire("SetContent", s), o.addVisual() } }, uf = function(e, t) { var n, r, o = "string" != typeof(n = t) ? (r = Yt.extend({ paste: n.paste, data: { paste: n.paste } }, n), { content: n.content, details: r }) : { content: n, details: {} }; af(e, o.content, o.details) }, sf = kr("sections", "settings"), cf = Qn.detect().deviceType.isTouch(), lf = ["lists", "autolink", "autosave"], ff = { theme: "mobile" }, df = function(e) { var t = R(e) ? e.join(" ") : e, n = $(k(t) ? t.split(" ") : [], $n); return U(n, function(e) { return 0 < e.length }) }, mf = function(n, e) { var r, o, i, t = (r = function(e, t) { return I(n, t) }, o = {}, i = {}, lr(e, function(e, t) { (r(e, t) ? o : i)[t] = e }), { t: o, f: i }); return sf(t.t, t.f) }, gf = function(e, t) { return e.sections().hasOwnProperty(t) }, pf = function(e, t, n, r) { var o, i = df(n.forced_plugins), a = df(r.plugins), u = e && gf(t, "mobile") ? U(a, b(I, lf)) : a, s = (o = u, [].concat(df(i)).concat(df(o))); return Yt.extend(r, { plugins: s.join(" ") }) }, hf = function(e, t, n, r) { var o, i, a, u, s, c, l, f, d, m, g = mf(["mobile"], r), p = Yt.extend(t, n, g.settings(), (f = e, m = (d = g).settings().inline, f && gf(d, "mobile") && !m ? (u = "mobile", s = ff, c = g.sections(), l = c.hasOwnProperty(u) ? c[u] : {}, Yt.extend({}, s, l)) : {}), { validate: !0, content_editable: g.settings().inline, external_plugins: (o = n, i = g.settings(), a = i.external_plugins ? i.external_plugins : {}, o && o.external_plugins ? Yt.extend({}, o.external_plugins, a) : a) }); return pf(e, g, n, p) }, vf = function(e, t, n) { return A.from(t.settings[n]).filter(e) }, bf = b(vf, k), yf = function(e, t, n, r) { var o, i, a, u = t in e.settings ? e.settings[t] : n; return "hash" === r ? (a = {}, "string" == typeof(i = u) ? F(0 < i.indexOf("=") ? i.split(/[;,](?![^=;,]*(?:[;,]|$))/) : i.split(","), function(e) { var t = e.split("="); 1 < t.length ? a[Yt.trim(t[0])] = Yt.trim(t[1]) : a[Yt.trim(t[0])] = Yt.trim(t) }) : a = i, a) : "string" === r ? vf(k, e, t).getOr(n) : "number" === r ? vf(P, e, t).getOr(n) : "boolean" === r ? vf(B, e, t).getOr(n) : "object" === r ? vf(_, e, t).getOr(n) : "array" === r ? vf(R, e, t).getOr(n) : "string[]" === r ? vf((o = k, function(e) { return R(e) && J(e, o) }), e, t).getOr(n) : "function" === r ? vf(O, e, t).getOr(n) : u }, Cf = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/, xf = function(e, t) { var n = t.container(), r = t.offset(); return e ? ka(n) ? Do.isText(n.nextSibling) ? Su(n.nextSibling, 0) : Su.after(n) : Ra(t) ? Su(n, r + 1) : t : ka(n) ? Do.isText(n.previousSibling) ? Su(n.previousSibling, n.previousSibling.data.length) : Su.before(n) : Da(t) ? Su(n, r - 1) : t }, wf = { isInlineTarget: function(e, t) { var n = bf(e, "inline_boundaries_selector").getOr("a[href],code"); return Lr.is(er.fromDom(t), n) }, findRootInline: function(e, t, n) { var r, o, i, a = (r = e, o = t, i = n, U(pi.DOM.getParents(i.container(), "*", o), r)); return A.from(a[a.length - 1]) }, isRtl: function(e) { return "rtl" === pi.DOM.getStyle(e, "direction", !0) || (t = e.textContent, Cf.test(t)); var t }, isAtZwsp: function(e) { return Ra(e) || Da(e) }, normalizePosition: xf, normalizeForwards: b(xf, !0), normalizeBackwards: b(xf, !1), hasSameParentBlock: function(e, t, n) { var r = Lc(t, e), o = Lc(n, e); return r && r === o } }, Nf = function(e, t) { return Fr.contains(e, t) ? Zi.closest(t, function(e) { return go(e) || ho(e) }, (n = e, function(e) { return Fr.eq(n, er.fromDom(e.dom().parentNode)) })) : A.none(); var n }, Ef = function(e) { var t, n, r; e.dom.isEmpty(e.getBody()) && (e.setContent(""), n = (t = e).getBody(), r = n.firstChild && t.dom.isBlock(n.firstChild) ? n.firstChild : n, t.selection.setCursorLocation(r, 0)) }, Sf = function(i, a, u) { return ru([rl.firstPositionIn(u), rl.lastPositionIn(u)], function(e, t) { var n = wf.normalizePosition(!0, e), r = wf.normalizePosition(!1, t), o = wf.normalizePosition(!1, a); return i ? rl.nextPosition(u, o).map(function(e) { return e.isEqual(r) && a.isEqual(n) }).getOr(!1) : rl.prevPosition(u, o).map(function(e) { return e.isEqual(n) && a.isEqual(r) }).getOr(!1) }).getOr(!0) }, Tf = function(e, t, n) { return ta(e, t, n).isSome() }, kf = function(e, t) { return Do.isText(t) && /^[ \t\r\n]*$/.test(t.data) && !1 === (n = e, r = t, o = er.fromDom(n), i = er.fromDom(r), Tf(i, "pre,code", b(Fr.eq, o))); var n, r, o, i }, Af = function(e, t) { return ja(t) && !1 === kf(e, t) || (n = t, Do.isElement(n) && "A" === n.nodeName && n.hasAttribute("name")) || _f(t); var n }, _f = Do.hasAttribute("data-mce-bookmark"), Rf = Do.hasAttribute("data-mce-bogus"), Df = Do.hasAttributeValue("data-mce-bogus", "all"), Bf = function(e) { return function(e) { var t, n, r = 0; if (Af(e, e)) return !1; if (!(n = e.firstChild)) return !0; t = new oo(n, e); do { if (Df(n)) n = t.next(!0); else if (Rf(n)) n = t.next(); else if (Do.isBr(n)) r++, n = t.next(); else { if (Af(e, n)) return !1; n = t.next() } } while (n); return r <= 1 }(e.dom()) }, Of = kr("block", "position"), Pf = kr("from", "to"), Lf = function(e, t) { var n = er.fromDom(e), r = er.fromDom(t.container()); return Nf(n, r).map(function(e) { return Of(e, t) }) }, If = function(o, i, e) { var t = Lf(o, Su.fromRangeStart(e)), n = t.bind(function(e) { return rl.fromPosition(i, o, e.position()).bind(function(e) { return Lf(o, e).map(function(e) { return t = o, n = i, r = e, Do.isBr(r.position().getNode()) && !1 === Bf(r.block()) ? rl.positionIn(!1, r.block().dom()).bind(function(e) { return e.isEqual(r.position()) ? rl.fromPosition(n, t, e).bind(function(e) { return Lf(t, e) }) : A.some(r) }).getOr(r) : r; var t, n, r }) }) }); return ru([t, n], Pf).filter(function(e) { return r = e, !1 === Fr.eq(r.from().block(), r.to().block()) && (n = e, $r.parent(n.from().block()).bind(function(t) { return $r.parent(n.to().block()).filter(function(e) { return Fr.eq(t, e) }) }).isSome()) && (t = e, !1 === Do.isContentEditableFalse(t.from().block()) && !1 === Do.isContentEditableFalse(t.to().block())); var t, n, r }) }, Mf = function(e, t, n) { return n.collapsed ? If(e, t, n) : A.none() }, Ff = function(e, t, n) { return Fr.contains(t, e) ? $r.parents(e, function(e) { return n(e) || Fr.eq(e, t) }).slice(0, -1) : [] }, Uf = function(e, t) { return Ff(e, t, H(!1)) }, zf = Uf, Vf = function(e, t) { return [e].concat(Uf(e, t)) }, qf = function(e) { var t, n, r = (t = e, n = $r.children(t), K(n, lo).fold(function() { return n }, function(e) { return n.slice(0, e) })); return F(r, function(e) { Ri.remove(e) }), r }, Hf = function(e, t) { rl.positionIn(e, t.dom()).each(function(e) { var t = e.getNode(); Do.isBr(t) && Ri.remove(er.fromDom(t)) }) }, jf = function(e, t) { var n = Vf(t, e); return V(n.reverse(), Bf).each(Ri.remove) }, $f = function(o, i) { return Fr.contains(i, o) ? $r.parent(o).bind(function(e) { return Fr.eq(e, i) ? A.some(o) : (t = i, n = o, r = $r.parents(n, function(e) { return Fr.eq(e, t) }), A.from(r[r.length - 2])); var t, n, r }) : A.none() }, Wf = function(n, r, o) { if (Bf(o)) return Ri.remove(o), Bf(r) && Jl(r), rl.firstPositionIn(r.dom()); Hf(!0, r), Hf(!1, o); var i = qf(r); return $f(r, o).fold(function() { jf(n, r); var e = rl.lastPositionIn(o.dom()); return F(i, function(e) { Ti.append(o, e) }), e }, function(t) { var e = rl.prevPosition(o.dom(), Su.before(t.dom())); return F(i, function(e) { Ti.before(t, e) }), jf(n, r), e }) }, Kf = function(e, t, n, r) { return t ? Wf(e, r, n) : Wf(e, n, r) }, Xf = function(t, n) { var e, r = er.fromDom(t.getBody()); return (e = Mf(r.dom(), n, t.selection.getRng()).bind(function(e) { return Kf(r, n, e.from().block(), e.to().block()) })).each(function(e) { t.selection.setRng(e.toRange()) }), e.isSome() }, Yf = function(e, t) { var n = er.fromDom(t), r = b(Fr.eq, e); return Zi.ancestor(n, yo, r).isSome() }, Gf = function(e, t) { var n, r, o = rl.prevPosition(e.dom(), Su.fromRangeStart(t)).isNone(), i = rl.nextPosition(e.dom(), Su.fromRangeEnd(t)).isNone(); return !(Yf(n = e, (r = t).startContainer) || Yf(n, r.endContainer)) && o && i }, Jf = function(e) { var n, r, o, t, i = er.fromDom(e.getBody()), a = e.selection.getRng(); return Gf(i, a) ? ((t = e).setContent(""), t.selection.setCursorLocation(), !0) : (n = i, r = e.selection, o = r.getRng(), ru([Nf(n, er.fromDom(o.startContainer)), Nf(n, er.fromDom(o.endContainer))], function(e, t) { return !1 === Fr.eq(e, t) && (o.deleteContents(), Kf(n, !0, e, t).each(function(e) { r.setRng(e.toRange()) }), !0) }).getOr(!1)) }, Qf = function(e, t) { return !e.selection.isCollapsed() && Jf(e) }, Zf = function(a) { if (!R(a)) throw new Error("cases must be an array"); if (0 === a.length) throw new Error("there must be at least one case"); var u = [], n = {}; return F(a, function(e, r) { var t = cr(e); if (1 !== t.length) throw new Error("one and only one name per case"); var o = t[0], i = e[o]; if (n[o] !== undefined) throw new Error("duplicate key detected:" + o); if ("cata" === o) throw new Error("cannot have a case named cata (sorry)"); if (!R(i)) throw new Error("case arguments must be an array"); u.push(o), n[o] = function() { var e = arguments.length; if (e !== i.length) throw new Error("Wrong number of arguments to case " + o + ". Expected " + i.length + " (" + i + "), got " + e); for (var n = new Array(e), t = 0; t < n.length; t++) n[t] = arguments[t]; return { fold: function() { if (arguments.length !== a.length) throw new Error("Wrong number of arguments to fold. Expected " + a.length + ", got " + arguments.length); return arguments[r].apply(null, n) }, match: function(e) { var t = cr(e); if (u.length !== t.length) throw new Error("Wrong number of arguments to match. Expected: " + u.join(",") + "\nActual: " + t.join(",")); if (!J(u, function(e) { return I(t, e) })) throw new Error("Not all branches were specified when using match. Specified: " + t.join(", ") + "\nRequired: " + u.join(", ")); return e[o].apply(null, n) }, log: function(e) { console.log(e, { constructors: u, constructor: o, params: n }) } } } }), n }, ed = Zf([{ remove: ["element"] }, { moveToElement: ["element"] }, { moveToPosition: ["position"] }]), td = function(e, t, n, r) { var o = r.getNode(!1 === t); return Nf(er.fromDom(e), er.fromDom(n.getNode())).map(function(e) { return Bf(e) ? ed.remove(e.dom()) : ed.moveToElement(o) }).orThunk(function() { return A.some(ed.moveToElement(o)) }) }, nd = function(u, s, c) { return rl.fromPosition(s, u, c).bind(function(e) { return a = e.getNode(), yo(er.fromDom(a)) || ho(er.fromDom(a)) ? A.none() : (t = u, o = e, i = function(e) { return fo(er.fromDom(e)) && !Ic(r, o, t) }, $c(!(n = s), r = c).fold(function() { return $c(n, o).fold(H(!1), i) }, i) ? A.none() : s && Do.isContentEditableFalse(e.getNode()) ? td(u, s, c, e) : !1 === s && Do.isContentEditableFalse(e.getNode(!0)) ? td(u, s, c, e) : s && Xc(c) ? A.some(ed.moveToPosition(e)) : !1 === s && Kc(c) ? A.some(ed.moveToPosition(e)) : A.none()); var t, n, r, o, i, a }) }, rd = function(r, e, o) { return i = e, a = o.getNode(!1 === i), u = i ? "after" : "before", Do.isElement(a) && a.getAttribute("data-mce-caret") === u ? (t = e, n = o.getNode(!1 === e), t && Do.isContentEditableFalse(n.nextSibling) ? A.some(ed.moveToElement(n.nextSibling)) : !1 === t && Do.isContentEditableFalse(n.previousSibling) ? A.some(ed.moveToElement(n.previousSibling)) : A.none()).fold(function() { return nd(r, e, o) }, A.some) : nd(r, e, o).bind(function(e) { return t = r, n = o, e.fold(function(e) { return A.some(ed.remove(e)) }, function(e) { return A.some(ed.moveToElement(e)) }, function(e) { return Ic(n, e, t) ? A.none() : A.some(ed.moveToPosition(e)) }); var t, n }); var t, n, i, a, u }, od = function(e, t) { return r = e, o = (n = t).container(), i = n.offset(), !1 === Su.isTextPosition(n) && o === r.parentNode && i > Su.before(r).offset() ? Su(t.container(), t.offset() - 1) : t; var n, r, o, i }, id = function(e) { return ja(e.previousSibling) ? A.some((t = e.previousSibling, Do.isText(t) ? Su(t, t.data.length) : Su.after(t))) : e.previousSibling ? rl.lastPositionIn(e.previousSibling) : A.none(); var t }, ad = function(e) { return ja(e.nextSibling) ? A.some((t = e.nextSibling, Do.isText(t) ? Su(t, 0) : Su.before(t))) : e.nextSibling ? rl.firstPositionIn(e.nextSibling) : A.none(); var t }, ud = function(r, o) { return id(o).orThunk(function() { return ad(o) }).orThunk(function() { return e = r, t = o, n = Su.before(t.previousSibling ? t.previousSibling : t.parentNode), rl.prevPosition(e, n).fold(function() { return rl.nextPosition(e, Su.after(t)) }, A.some); var e, t, n }) }, sd = function(n, r) { return ad(r).orThunk(function() { return id(r) }).orThunk(function() { return e = n, t = r, rl.nextPosition(e, Su.after(t)).fold(function() { return rl.prevPosition(e, Su.before(t)) }, A.some); var e, t }) }, cd = function(e, t, n) { return (r = e, o = t, i = n, r ? sd(o, i) : ud(o, i)).map(b(od, n)); var r, o, i }, ld = function(t, n, e) { e.fold(function() { t.focus() }, function(e) { t.selection.setRng(e.toRange(), n) }) }, fd = function(e, t) { return t && e.schema.getBlockElements().hasOwnProperty(sr.name(t)) }, dd = function(e) { if (Bf(e)) { var t = er.fromHtml('
'); return Ri.empty(e), Ti.append(e, t), A.some(Su.before(t.dom())) } return A.none() }, md = function(t, n, e) { var r, a, o, i = cd(n, t.getBody(), e.dom()), u = Zi.ancestor(e, b(fd, t), (r = t.getBody(), function(e) { return e.dom() === r })), s = (a = e, o = i, ru([$r.prevSibling(a), $r.nextSibling(a), o], function(e, t, n) { var r, o = e.dom(), i = t.dom(); return Do.isText(o) && Do.isText(i) ? (r = o.data.length, o.appendData(i.data), Ri.remove(t), Ri.remove(a), n.container() === i ? Su(o, r) : n) : (Ri.remove(a), n) }).orThunk(function() { return Ri.remove(a), o })); t.dom.isEmpty(t.getBody()) ? (t.setContent(""), t.selection.setCursorLocation()) : u.bind(dd).fold(function() { ld(t, n, s) }, function(e) { ld(t, n, A.some(e)) }) }, gd = function(a, u) { var e, t, n, r, o; return (e = a.getBody(), t = u, n = a.selection.getRng(), r = qc(t ? 1 : -1, e, n), o = Su.fromRangeStart(r), !1 === t && Xc(o) ? A.some(ed.remove(o.getNode(!0))) : t && Kc(o) ? A.some(ed.remove(o.getNode())) : rd(e, t, o)).map(function(e) { return e.fold((o = a, i = u, function(e) { return o._selectionOverrides.hideFakeCaret(), md(o, i, er.fromDom(e)), !0 }), (n = a, r = u, function(e) { var t = r ? Su.before(e) : Su.after(e); return n.selection.setRng(t.toRange()), !0 }), (t = a, function(e) { return t.selection.setRng(e.toRange()), !0 })); var t, n, r, o, i }).getOr(!1) }, pd = function(e, t) { var n, r = e.selection.getNode(); return !!Do.isContentEditableFalse(r) && (n = er.fromDom(e.getBody()), F(Ki(n, ".mce-offscreen-selection"), Ri.remove), md(e, t, er.fromDom(e.selection.getNode())), Ef(e), !0) }, hd = function(e, t) { return e.selection.isCollapsed() ? gd(e, t) : pd(e, t) }, vd = function(e) { var t, n = function(e, t) { for (; t && t !== e;) { if (Do.isContentEditableTrue(t) || Do.isContentEditableFalse(t)) return t; t = t.parentNode } return null }(e.getBody(), e.selection.getNode()); return Do.isContentEditableTrue(n) && e.dom.isBlock(n) && e.dom.isEmpty(n) && (t = e.dom.create("br", { "data-mce-bogus": "1" }), e.dom.setHTML(n, ""), n.appendChild(t), e.selection.setRng(Su.before(t).toRange())), !0 }, bd = Do.isText, yd = function(e) { return bd(e) && e.data[0] === wa }, Cd = function(e) { return bd(e) && e.data[e.data.length - 1] === wa }, xd = function(e) { return e.ownerDocument.createTextNode(wa) }, wd = function(e, t) { return e ? function(e) { if (bd(e.previousSibling)) return Cd(e.previousSibling) || e.previousSibling.appendData(wa), e.previousSibling; if (bd(e)) return yd(e) || e.insertData(0, wa), e; var t = xd(e); return e.parentNode.insertBefore(t, e), t }(t) : function(e) { if (bd(e.nextSibling)) return yd(e.nextSibling) || e.nextSibling.insertData(0, wa), e.nextSibling; if (bd(e)) return Cd(e) || e.appendData(wa), e; var t = xd(e); return e.nextSibling ? e.parentNode.insertBefore(t, e.nextSibling) : e.parentNode.appendChild(t), t }(t) }, Nd = b(wd, !0), Ed = b(wd, !1), Sd = function(e, t) { return Do.isText(e.container()) ? wd(t, e.container()) : wd(t, e.getNode()) }, Td = function(e, t) { var n = t.get(); return n && e.container() === n && ka(n) }, kd = function(n, e) { return e.fold(function(e) { os.remove(n.get()); var t = Nd(e); return n.set(t), A.some(Su(t, t.length - 1)) }, function(e) { return rl.firstPositionIn(e).map(function(e) { if (Td(e, n)) return Su(n.get(), 1); os.remove(n.get()); var t = Sd(e, !0); return n.set(t), Su(t, 1) }) }, function(e) { return rl.lastPositionIn(e).map(function(e) { if (Td(e, n)) return Su(n.get(), n.get().length - 1); os.remove(n.get()); var t = Sd(e, !1); return n.set(t), Su(t, t.length - 1) }) }, function(e) { os.remove(n.get()); var t = Ed(e); return n.set(t), A.some(Su(t, 1)) }) }, Ad = function(e, t) { for (var n = 0; n < e.length; n++) { var r = e[n].apply(null, t); if (r.isSome()) return r } return A.none() }, _d = Zf([{ before: ["element"] }, { start: ["element"] }, { end: ["element"] }, { after: ["element"] }]), Rd = function(e, t) { var n = Lc(t, e); return n || e }, Dd = function(e, t, n) { var r = wf.normalizeForwards(n), o = Rd(t, r.container()); return wf.findRootInline(e, o, r).fold(function() { return rl.nextPosition(o, r).bind(b(wf.findRootInline, e, o)).map(function(e) { return _d.before(e) }) }, A.none) }, Bd = function(e, t) { return null === Xu(e, t) }, Od = function(e, t, n) { return wf.findRootInline(e, t, n).filter(b(Bd, t)) }, Pd = function(e, t, n) { var r = wf.normalizeBackwards(n); return Od(e, t, r).bind(function(e) { return rl.prevPosition(e, r).isNone() ? A.some(_d.start(e)) : A.none() }) }, Ld = function(e, t, n) { var r = wf.normalizeForwards(n); return Od(e, t, r).bind(function(e) { return rl.nextPosition(e, r).isNone() ? A.some(_d.end(e)) : A.none() }) }, Id = function(e, t, n) { var r = wf.normalizeBackwards(n), o = Rd(t, r.container()); return wf.findRootInline(e, o, r).fold(function() { return rl.prevPosition(o, r).bind(b(wf.findRootInline, e, o)).map(function(e) { return _d.after(e) }) }, A.none) }, Md = function(e) { return !1 === wf.isRtl(Ud(e)) }, Fd = function(e, t, n) { return Ad([Dd, Pd, Ld, Id], [e, t, n]).filter(Md) }, Ud = function(e) { return e.fold(j, j, j, j) }, zd = function(e) { return e.fold(H("before"), H("start"), H("end"), H("after")) }, Vd = function(e) { return e.fold(_d.before, _d.before, _d.after, _d.after) }, qd = function(n, e, r, t, o, i) { return ru([wf.findRootInline(e, r, t), wf.findRootInline(e, r, o)], function(e, t) { return e !== t && wf.hasSameParentBlock(r, e, t) ? _d.after(n ? e : t) : i }).getOr(i) }, Hd = function(e, r) { return e.fold(H(!0), function(e) { return n = r, !(zd(t = e) === zd(n) && Ud(t) === Ud(n)); var t, n }) }, jd = function(e, t) { return e ? t.fold(q(A.some, _d.start), A.none, q(A.some, _d.after), A.none) : t.fold(A.none, q(A.some, _d.before), A.none, q(A.some, _d.end)) }, $d = function(a, u, s, c) { var e = wf.normalizePosition(a, c), l = Fd(u, s, e); return Fd(u, s, e).bind(b(jd, a)).orThunk(function() { return t = a, n = u, r = s, o = l, e = c, i = wf.normalizePosition(t, e), rl.fromPosition(t, r, i).map(b(wf.normalizePosition, t)).fold(function() { return o.map(Vd) }, function(e) { return Fd(n, r, e).map(b(qd, t, n, r, i, e)).filter(b(Hd, o)) }).filter(Md); var t, n, r, o, e, i }) }, Wd = Fd, Kd = $d, Xd = (b($d, !1), b($d, !0), Vd), Yd = function(e) { return e.fold(_d.start, _d.start, _d.end, _d.end) }, Gd = function(e) { return O(e.selection.getSel().modify) }, Jd = function(e, t, n) { var r = e ? 1 : -1; return t.setRng(Su(n.container(), n.offset() + r).toRange()), t.getSel().modify("move", e ? "forward" : "backward", "word"), !0 }, Qd = function(e, t) { var n = t.selection.getRng(), r = e ? Su.fromRangeEnd(n) : Su.fromRangeStart(n); return !!Gd(t) && (e && Ra(r) ? Jd(!0, t.selection, r) : !(e || !Da(r)) && Jd(!1, t.selection, r)) }, Zd = function(e, t) { var n = e.dom.createRng(); n.setStart(t.container(), t.offset()), n.setEnd(t.container(), t.offset()), e.selection.setRng(n) }, em = function(e) { return !1 !== e.settings.inline_boundaries }, tm = function(e, t) { e ? t.setAttribute("data-mce-selected", "inline-boundary") : t.removeAttribute("data-mce-selected") }, nm = function(t, e, n) { return kd(e, n).map(function(e) { return Zd(t, e), n }) }, rm = function(e, t, n) { return function() { return !!em(t) && Qd(e, t) } }, om = { move: function(a, u, s) { return function() { return !!em(a) && (t = a, n = u, e = s, r = t.getBody(), o = Su.fromRangeStart(t.selection.getRng()), i = b(wf.isInlineTarget, t), Kd(e, i, r, o).bind(function(e) { return nm(t, n, e) })).isSome(); var t, n, e, r, o, i } }, moveNextWord: b(rm, !0), movePrevWord: b(rm, !1), setupSelectedState: function(a) { var u = Bi(null), s = b(wf.isInlineTarget, a); return a.on("NodeChange", function(e) { var t, n, r, o, i; em(a) && (t = s, n = a.dom, r = e.parents, o = U(n.select('*[data-mce-selected="inline-boundary"]'), t), i = U(r, t), F(Z(o, i), b(tm, !1)), F(Z(i, o), b(tm, !0)), function(e, t) { if (e.selection.isCollapsed() && !0 !== e.composing && t.get()) { var n = Su.fromRangeStart(e.selection.getRng()); Su.isTextPosition(n) && !1 === wf.isAtZwsp(n) && (Zd(e, os.removeAndReposition(t.get(), n)), t.set(null)) } }(a, u), function(n, r, o, e) { if (r.selection.isCollapsed()) { var t = U(e, n); F(t, function(e) { var t = Su.fromRangeStart(r.selection.getRng()); Wd(n, r.getBody(), t).bind(function(e) { return nm(r, o, e) }) }) } }(s, a, u, e.parents)) }), u }, setCaretPosition: Zd }, im = function(t, n) { return function(e) { return kd(n, e).map(function(e) { return om.setCaretPosition(t, e), !0 }).getOr(!1) } }, am = function(r, o, i, a) { var u = r.getBody(), s = b(wf.isInlineTarget, r); r.undoManager.ignore(function() { var e, t, n; r.selection.setRng((e = i, t = a, (n = document.createRange()).setStart(e.container(), e.offset()), n.setEnd(t.container(), t.offset()), n)), r.execCommand("Delete"), Wd(s, u, Su.fromRangeStart(r.selection.getRng())).map(Yd).map(im(r, o)) }), r.nodeChanged() }, um = function(n, r, i, o) { var e, t, a = (e = n.getBody(), t = o.container(), Lc(t, e) || e), u = b(wf.isInlineTarget, n), s = Wd(u, a, o); return s.bind(function(e) { return i ? e.fold(H(A.some(Yd(e))), A.none, H(A.some(Xd(e))), A.none) : e.fold(A.none, H(A.some(Xd(e))), A.none, H(A.some(Yd(e)))) }).map(im(n, r)).getOrThunk(function() { var t = rl.navigate(i, a, o), e = t.bind(function(e) { return Wd(u, a, e) }); return s.isSome() && e.isSome() ? wf.findRootInline(u, a, o).map(function(e) { return o = e, !! ru([rl.firstPositionIn(o), rl.lastPositionIn(o)], function(e, t) { var n = wf.normalizePosition(!0, e), r = wf.normalizePosition(!1, t); return rl.nextPosition(o, n).map(function(e) { return e.isEqual(r) }).getOr(!0) }).getOr(!0) && (md(n, i, er.fromDom(e)), !0); var o }).getOr(!1) : e.bind(function(e) { return t.map(function(e) { return i ? am(n, r, o, e) : am(n, r, e, o), !0 }) }).getOr(!1) }) }, sm = function(e, t, n) { if (e.selection.isCollapsed() && !1 !== e.settings.inline_boundaries) { var r = Su.fromRangeStart(e.selection.getRng()); return um(e, t, n, r) } return !1 }, cm = kr("start", "end"), lm = kr("rng", "table", "cells"), fm = Zf([{ removeTable: ["element"] }, { emptyCells: ["cells"] }]), dm = function(e, t) { return ra(er.fromDom(e), "td,th", t) }, mm = function(e, t) { return ta(e, "table", t) }, gm = function(e) { return !1 === Fr.eq(e.start(), e.end()) }, pm = function(e, n) { return mm(e.start(), n).bind(function(t) { return mm(e.end(), n).bind(function(e) { return Fr.eq(t, e) ? A.some(t) : A.none() }) }) }, hm = function(e) { return Ki(e, "td,th") }, vm = function(r, e) { var t = dm(e.startContainer, r), n = dm(e.endContainer, r); return e.collapsed ? A.none() : ru([t, n], cm).fold(function() { return t.fold(function() { return n.bind(function(t) { return mm(t, r).bind(function(e) { return ee(hm(e)).map(function(e) { return cm(e, t) }) }) }) }, function(t) { return mm(t, r).bind(function(e) { return te(hm(e)).map(function(e) { return cm(t, e) }) }) }) }, function(e) { return bm(r, e) ? A.none() : (n = r, mm((t = e).start(), n).bind(function(e) { return te(hm(e)).map(function(e) { return cm(t.start(), e) }) })); var t, n }) }, bm = function(e, t) { return pm(t, e).isSome() }, ym = function(e, t) { var n, r, o, i, a, u = (n = e, b(Fr.eq, n)); return (r = t, o = u, i = dm(r.startContainer, o), a = dm(r.endContainer, o), ru([i, a], cm).filter(gm).filter(function(e) { return bm(o, e) }).orThunk(function() { return vm(o, r) })).bind(function(e) { return pm(t = e, u).map(function(e) { return lm(t, e, hm(e)) }); var t }) }, Cm = function(e, t) { return K(e, function(e) { return Fr.eq(e, t) }) }, xm = function(n) { return (r = n, ru([Cm(r.cells(), r.rng().start()), Cm(r.cells(), r.rng().end())], function(e, t) { return r.cells().slice(e, t + 1) })).map(function(e) { var t = n.cells(); return e.length === t.length ? fm.removeTable(n.table()) : fm.emptyCells(e) }); var r }, wm = function(e, t) { return ym(e, t).bind(xm) }, Nm = function(e) { var t = []; if (e) for (var n = 0; n < e.rangeCount; n++) t.push(e.getRangeAt(n)); return t }, Em = Nm, Sm = function(e) { return G(e, function(e) { var t = Za(e); return t ? [er.fromDom(t)] : [] }) }, Tm = function(e) { return 1 < Nm(e).length }, km = function(e) { return U(Sm(e), yo) }, Am = function(e) { return Ki(e, "td[data-mce-selected],th[data-mce-selected]") }, _m = function(e, t) { var n = Am(t), r = km(e); return 0 < n.length ? n : r }, Rm = _m, Dm = function(e) { return _m(Em(e.selection.getSel()), er.fromDom(e.getBody())) }, Bm = function(e, t) { return F(t, Jl), e.selection.setCursorLocation(t[0].dom(), 0), !0 }, Om = function(e, t) { return md(e, !1, t), !0 }, Pm = function(n, e, r, t) { return Im(e, t).fold(function() { return t = n, wm(e, r).map(function(e) { return e.fold(b(Om, t), b(Bm, t)) }); var t }, function(e) { return Mm(n, e) }).getOr(!1) }, Lm = function(e, t) { return V(Vf(t, e), yo) }, Im = function(e, t) { return V(Vf(t, e), function(e) { return "caption" === sr.name(e) }) }, Mm = function(e, t) { return Jl(t), e.selection.setCursorLocation(t.dom(), 0), A.some(!0) }, Fm = function(u, s, c, l, f) { return rl.navigate(c, u.getBody(), f).bind(function(e) { return r = l, o = c, i = f, a = e, rl.firstPositionIn(r.dom()).bind(function(t) { return rl.lastPositionIn(r.dom()).map(function(e) { return o ? i.isEqual(t) && a.isEqual(e) : i.isEqual(e) && a.isEqual(t) }) }).getOr(!0) ? Mm(u, l) : (t = l, n = e, Im(s, er.fromDom(n.getNode())).map(function(e) { return !1 === Fr.eq(e, t) })); var t, n, r, o, i, a }).or(A.some(!0)) }, Um = function(a, u, s, e) { var c = Su.fromRangeStart(a.selection.getRng()); return Lm(s, e).bind(function(e) { return Bf(e) ? Mm(a, e) : (t = a, n = s, r = u, o = e, i = c, rl.navigate(r, t.getBody(), i).bind(function(e) { return Lm(n, er.fromDom(e.getNode())).map(function(e) { return !1 === Fr.eq(e, o) }) })); var t, n, r, o, i }) }, zm = function(a, u, e) { var s = er.fromDom(a.getBody()); return Im(s, e).fold(function() { return Um(a, u, s, e) }, function(e) { return t = a, n = u, r = s, o = e, i = Su.fromRangeStart(t.selection.getRng()), Bf(o) ? Mm(t, o) : Fm(t, r, n, o, i); var t, n, r, o, i }).getOr(!1) }, Vm = function(e, t) { var n, r, o, i, a, u = er.fromDom(e.selection.getStart(!0)), s = Dm(e); return e.selection.isCollapsed() && 0 === s.length ? zm(e, t, u) : (n = e, r = u, o = er.fromDom(n.getBody()), i = n.selection.getRng(), 0 !== (a = Dm(n)).length ? Bm(n, a) : Pm(n, o, i, r)) }, qm = function(e, t) { e.getDoc().execCommand(t, !1, null) }, Hm = function(e) { hd(e, !1) || sm(e, !1) || Xf(e, !1) || Vm(e) || Qf(e, !1) || (qm(e, "Delete"), Ef(e)) }, jm = function(e) { hd(e, !0) || sm(e, !0) || Xf(e, !0) || Vm(e) || Qf(e, !0) || qm(e, "ForwardDelete") }, $m = function(s) { return function(u, e) { return A.from(e).map(er.fromDom).filter(sr.isElement).bind(function(e) { return (r = s, o = u, i = e.dom(), a = function(e) { return Tr(e, r) }, Zi.closest(er.fromDom(i), function(e) { return a(e).isSome() }, function(e) { return Fr.eq(er.fromDom(o), e) }).bind(a)).or((t = s, n = e.dom(), A.from(pi.DOM.getStyle(n, t, !0)))); var t, n, r, o, i, a }).getOr("") } }, Wm = { getFontSize: $m("font-size"), getFontFamily: q(function(e) { return e.replace(/[\'\"\\]/g, "").replace(/,\s+/g, ",") }, $m("font-family")), toPt: function(e, t) { return /[0-9.]+px$/.test(e) ? (n = 72 * parseInt(e, 10) / 96, r = t || 0, o = Math.pow(10, r), Math.round(n * o) / o + "pt") : e; var n, r, o } }, Km = function(e) { return rl.firstPositionIn(e.getBody()).map(function(e) { var t = e.container(); return Do.isText(t) ? t.parentNode : t }) }, Xm = function(o) { return A.from(o.selection.getRng()).bind(function(e) { var t, n, r = o.getBody(); return n = r, (t = e).startContainer === n && 0 === t.startOffset ? A.none() : A.from(o.selection.getStart(!0)) }) }, Ym = function(e, t) { if (/^[0-9\.]+$/.test(t)) { var n = parseInt(t, 10); if (1 <= n && n <= 7) { var r = ac(e), o = uc(e); return o ? o[n - 1] || t : r[n - 1] || t } return t } return t }, Gm = function(e, t) { return e && t && e.startContainer === t.startContainer && e.startOffset === t.startOffset && e.endContainer === t.endContainer && e.endOffset === t.endOffset }, Jm = function(e, t, n) { return null !== function(e, t, n) { for (; e && e !== t;) { if (n(e)) return e; e = e.parentNode } return null }(e, t, n) }, Qm = function(e, t, n) { return Jm(e, t, function(e) { return e.nodeName === n }) }, Zm = function(e) { return e && "TABLE" === e.nodeName }, eg = function(e, t, n) { for (var r = new oo(t, e.getParent(t.parentNode, e.isBlock) || e.getRoot()); t = r[n ? "prev" : "next"]();) if (Do.isBr(t)) return !0 }, tg = function(e, t, n, r, o) { var i, a, u, s, c, l, f = e.getRoot(), d = e.schema.getNonEmptyElements(); if (u = e.getParent(o.parentNode, e.isBlock) || f, r && Do.isBr(o) && t && e.isEmpty(u)) return A.some(wu(o.parentNode, e.nodeIndex(o))); for (i = new oo(o, u); s = i[r ? "prev" : "next"]();) { if ("false" === e.getContentEditableParent(s) || (l = f, Aa(c = s) && !1 === Jm(c, l, Ku))) return A.none(); if (Do.isText(s) && 0 < s.nodeValue.length) return !1 === Qm(s, f, "A") ? A.some(wu(s, r ? s.nodeValue.length : 0)) : A.none(); if (e.isBlock(s) || d[s.nodeName.toLowerCase()]) return A.none(); a = s } return n && a ? A.some(wu(a, 0)) : A.none() }, ng = function(e, t, n, r) { var o, i, a, u, s, c, l, f, d, m, g = e.getRoot(), p = !1; if (o = r[(n ? "start" : "end") + "Container"], i = r[(n ? "start" : "end") + "Offset"], l = Do.isElement(o) && i === o.childNodes.length, s = e.schema.getNonEmptyElements(), c = n, Aa(o)) return A.none(); if (Do.isElement(o) && i > o.childNodes.length - 1 && (c = !1), Do.isDocument(o) && (o = g, i = 0), o === g) { if (c && (u = o.childNodes[0 < i ? i - 1 : 0])) { if (Aa(u)) return A.none(); if (s[u.nodeName] || Zm(u)) return A.none() } if (o.hasChildNodes()) { if (i = Math.min(!c && 0 < i ? i - 1 : i, o.childNodes.length - 1), o = o.childNodes[i], i = Do.isText(o) && l ? o.data.length : 0, !t && o === g.lastChild && Zm(o)) return A.none(); if (function(e, t) { for (; t && t !== e;) { if (Do.isContentEditableFalse(t)) return !0; t = t.parentNode } return !1 }(g, o) || Aa(o)) return A.none(); if (o.hasChildNodes() && !1 === Zm(o)) { a = new oo(u = o, g); do { if (Do.isContentEditableFalse(u) || Aa(u)) { p = !1; break } if (Do.isText(u) && 0 < u.nodeValue.length) { i = c ? 0 : u.nodeValue.length, o = u, p = !0; break } if (s[u.nodeName.toLowerCase()] && (!(f = u) || !/^(TD|TH|CAPTION)$/.test(f.nodeName))) { i = e.nodeIndex(u), o = u.parentNode, c || i++, p = !0; break } } while (u = c ? a.next() : a.prev()) } } } return t && (Do.isText(o) && 0 === i && tg(e, l, t, !0, o).each(function(e) { o = e.container(), i = e.offset(), p = !0 }), Do.isElement(o) && ((u = o.childNodes[i]) || (u = o.childNodes[i - 1]), !u || !Do.isBr(u) || (m = "A", (d = u).previousSibling && d.previousSibling.nodeName === m) || eg(e, u, !1) || eg(e, u, !0) || tg(e, l, t, !0, u).each(function(e) { o = e.container(), i = e.offset(), p = !0 }))), c && !t && Do.isText(o) && i === o.nodeValue.length && tg(e, l, t, !1, o).each(function(e) { o = e.container(), i = e.offset(), p = !0 }), p ? A.some(wu(o, i)) : A.none() }, rg = function(e, t) { var n = t.collapsed, r = t.cloneRange(), o = wu.fromRangeStart(t); return ng(e, n, !0, r).each(function(e) { n && wu.isAbove(o, e) || r.setStart(e.container(), e.offset()) }), n || ng(e, n, !1, r).each(function(e) { r.setEnd(e.container(), e.offset()) }), n && r.collapse(!0), Gm(t, r) ? A.none() : A.some(r) }, og = function(e, t, n) { var r = e.create("span", {}, " "); n.parentNode.insertBefore(r, n), t.scrollIntoView(r), e.remove(r) }, ig = function(e, t, n, r) { var o = e.createRng(); r ? (o.setStartBefore(n), o.setEndBefore(n)) : (o.setStartAfter(n), o.setEndAfter(n)), t.setRng(o) }, ag = function(e, t) { var n, r, o = e.selection, i = e.dom, a = o.getRng(); rg(i, a).each(function(e) { a.setStart(e.startContainer, e.startOffset), a.setEnd(e.endContainer, e.endOffset) }); var u = a.startOffset, s = a.startContainer; if (1 === s.nodeType && s.hasChildNodes()) { var c = u > s.childNodes.length - 1; s = s.childNodes[Math.min(u, s.childNodes.length - 1)] || s, u = c && 3 === s.nodeType ? s.nodeValue.length : 0 } var l = i.getParent(s, i.isBlock), f = l ? i.getParent(l.parentNode, i.isBlock) : null, d = f ? f.nodeName.toUpperCase() : "", m = t && t.ctrlKey; "LI" !== d || m || (l = f), s && 3 === s.nodeType && u >= s.nodeValue.length && (function(e, t, n) { for (var r, o = new oo(t, n), i = e.getNonEmptyElements(); r = o.next();) if (i[r.nodeName.toLowerCase()] || 0 < r.length) return !0 }(e.schema, s, l) || (n = i.create("br"), a.insertNode(n), a.setStartAfter(n), a.setEndAfter(n), r = !0)), n = i.create("br"), a.insertNode(n), og(i, o, n), ig(i, o, n, r), e.undoManager.add() }, ug = function(e, t) { var n = er.fromTag("br"); Ti.before(er.fromDom(t), n), e.undoManager.add() }, sg = function(e, t) { cg(e.getBody(), t) || Ti.after(er.fromDom(t), er.fromTag("br")); var n = er.fromTag("br"); Ti.after(er.fromDom(t), n), og(e.dom, e.selection, n.dom()), ig(e.dom, e.selection, n.dom(), !1), e.undoManager.add() }, cg = function(e, t) { return n = Su.after(t), !! Do.isBr(n.getNode()) || rl.nextPosition(e, Su.after(t)).map(function(e) { return Do.isBr(e.getNode()) }).getOr(!1); var n }, lg = function(e) { return e && "A" === e.nodeName && "href" in e }, fg = function(e) { return e.fold(H(!1), lg, lg, H(!1)) }, dg = function(e, t) { t.fold(v, b(ug, e), b(sg, e), v) }, mg = function(e, t) { var n, r, o, i = (n = e, r = b(wf.isInlineTarget, n), o = Su.fromRangeStart(n.selection.getRng()), Wd(r, n.getBody(), o).filter(fg)); i.isSome() ? i.each(b(dg, e)) : ag(e, t) }, gg = Zf([{ before: ["element"] }, { on: ["element", "offset"] }, { after: ["element"] }]), pg = (gg.before, gg.on, gg.after, function(e) { return e.fold(j, j, j) }), hg = Zf([{ domRange: ["rng"] }, { relative: ["startSitu", "finishSitu"] }, { exact: ["start", "soffset", "finish", "foffset"] }]), vg = kr("start", "soffset", "finish", "foffset"), bg = { domRange: hg.domRange, relative: hg.relative, exact: hg.exact, exactFromRange: function(e) { return hg.exact(e.start(), e.soffset(), e.finish(), e.foffset()) }, range: vg, getWin: function(e) { var t = e.match({ domRange: function(e) { return er.fromDom(e.startContainer) }, relative: function(e, t) { return pg(e) }, exact: function(e, t, n, r) { return e } }); return $r.defaultView(t) } }, yg = Qn.detect().browser, Cg = function(e, t) { var n = sr.isText(t) ? Ol(t).length : $r.children(t).length + 1; return n < e ? n : e < 0 ? 0 : e }, xg = function(e) { return bg.range(e.start(), Cg(e.soffset(), e.start()), e.finish(), Cg(e.foffset(), e.finish())) }, wg = function(e, t) { return Fr.contains(e, t) || Fr.eq(e, t) }, Ng = function(t) { return function(e) { return wg(t, e.start()) && wg(t, e.finish()) } }, Eg = function(e) { return !0 === e.inline || yg.isIE() }, Sg = function(e) { return bg.range(er.fromDom(e.startContainer), e.startOffset, er.fromDom(e.endContainer), e.endOffset) }, Tg = function(e) { var t = e.getSelection(); return (t && 0 !== t.rangeCount ? A.from(t.getRangeAt(0)) : A.none()).map(Sg) }, kg = function(e) { var t = $r.defaultView(e); return Tg(t.dom()).filter(Ng(e)) }, Ag = function(e, t) { return A.from(t).filter(Ng(e)).map(xg) }, _g = function(e) { var t = document.createRange(); try { return t.setStart(e.start().dom(), e.soffset()), t.setEnd(e.finish().dom(), e.foffset()), A.some(t) } catch (n) { return A.none() } }, Rg = function(e) { return (e.bookmark ? e.bookmark : A.none()).bind(b(Ag, er.fromDom(e.getBody()))).bind(_g) }, Dg = function(e) { var t = Eg(e) ? kg(er.fromDom(e.getBody())) : A.none(); e.bookmark = t.isSome() ? t : e.bookmark }, Bg = function(t) { Rg(t).each(function(e) { t.selection.setRng(e) }) }, Og = Rg, Pg = function(e, t) { var n = e.settings, r = e.dom, o = e.selection, i = e.formatter, a = /[a-z%]+$/i.exec(n.indentation)[0], u = parseInt(n.indentation, 10), s = e.getParam("indent_use_margin", !1); e.queryCommandState("InsertUnorderedList") || e.queryCommandState("InsertOrderedList") || (n.forced_root_block || r.getParent(o.getNode(), r.isBlock) || i.apply("div"), F(o.getSelectedBlocks(), function(e) { return function(e, t, n, r, o, i) { if ("false" !== e.getContentEditable(i) && "LI" !== i.nodeName) { var a = n ? "margin" : "padding"; if (a = "TABLE" === i.nodeName ? "margin" : a, a += "rtl" === e.getStyle(i, "direction", !0) ? "Right" : "Left", "outdent" === t) { var u = Math.max(0, parseInt(i.style[a] || 0, 10) - r); e.setStyle(i, a, u ? u + o : "") } else u = parseInt(i.style[a] || 0, 10) + r + o, e.setStyle(i, a, u) } }(r, t, s, u, a, e) })) }, Lg = Yt.each, Ig = Yt.extend, Mg = Yt.map, Fg = Yt.inArray; function Ug(s) { var o, i, a, t, c = { state: {}, exec: {}, value: {} }, n = s.settings; s.on("PreInit", function() { o = s.dom, i = s.selection, n = s.settings, a = s.formatter }); var r = function(e) { var t; if (!s.quirks.isHidden() && !s.removed) { if (e = e.toLowerCase(), t = c.state[e]) return t(e); try { return s.getDoc().queryCommandState(e) } catch (n) {} return !1 } }, e = function(e, n) { n = n || "exec", Lg(e, function(t, e) { Lg(e.toLowerCase().split(","), function(e) { c[n][e] = t }) }) }, u = function(e, t, n) { e = e.toLowerCase(), c.value[e] = function() { return t.call(n || s) } }; Ig(this, { execCommand: function(t, n, r, e) { var o, i, a = !1; if (!s.removed) { if (/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(t) || e && e.skip_focus ? Bg(s) : s.focus(), (e = s.fire("BeforeExecCommand", { command: t, ui: n, value: r })).isDefaultPrevented()) return !1; if (i = t.toLowerCase(), o = c.exec[i]) return o(i, n, r), s.fire("ExecCommand", { command: t, ui: n, value: r }), !0; if (Lg(s.plugins, function(e) { if (e.execCommand && e.execCommand(t, n, r)) return s.fire("ExecCommand", { command: t, ui: n, value: r }), !(a = !0) }), a) return a; if (s.theme && s.theme.execCommand && s.theme.execCommand(t, n, r)) return s.fire("ExecCommand", { command: t, ui: n, value: r }), !0; try { a = s.getDoc().execCommand(t, n, r) } catch (u) {} return !!a && (s.fire("ExecCommand", { command: t, ui: n, value: r }), !0) } }, queryCommandState: r, queryCommandValue: function(e) { var t; if (!s.quirks.isHidden() && !s.removed) { if (e = e.toLowerCase(), t = c.value[e]) return t(e); try { return s.getDoc().queryCommandValue(e) } catch (n) {} } }, queryCommandSupported: function(e) { if (e = e.toLowerCase(), c.exec[e]) return !0; try { return s.getDoc().queryCommandSupported(e) } catch (t) {} return !1 }, addCommands: e, addCommand: function(e, o, i) { e = e.toLowerCase(), c.exec[e] = function(e, t, n, r) { return o.call(i || s, t, n, r) } }, addQueryStateHandler: function(e, t, n) { e = e.toLowerCase(), c.state[e] = function() { return t.call(n || s) } }, addQueryValueHandler: u, hasCustomCommand: function(e) { return e = e.toLowerCase(), !! c.exec[e] } }); var l = function(e, t, n) { return t === undefined && (t = !1), n === undefined && (n = null), s.getDoc().execCommand(e, t, n) }, f = function(e) { return a.match(e) }, d = function(e, t) { a.toggle(e, t ? { value: t } : undefined), s.nodeChanged() }, m = function(e) { t = i.getBookmark(e) }, g = function() { i.moveToBookmark(t) }; e({ "mceResetDesignMode,mceBeginUndoLevel": function() {}, "mceEndUndoLevel,mceAddUndoLevel": function() { s.undoManager.add() }, "Cut,Copy,Paste": function(e) { var t, n = s.getDoc(); try { l(e) } catch (o) { t = !0 } if ("paste" !== e || n.queryCommandEnabled(e) || (t = !0), t || !n.queryCommandSupported(e)) { var r = s.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead."); Re.mac && (r = r.replace(/Ctrl\+/g, "\u2318+")), s.notificationManager.open({ text: r, type: "error" }) } }, unlink: function() { if (i.isCollapsed()) { var e = s.dom.getParent(s.selection.getStart(), "a"); e && s.dom.remove(e, !0) } else a.remove("link") }, "JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone": function(e) { var t = e.substring(7); "full" === t && (t = "justify"), Lg("left,center,right,justify".split(","), function(e) { t !== e && a.remove("align" + e) }), "none" !== t && d("align" + t) }, "InsertUnorderedList,InsertOrderedList": function(e) { var t, n; l(e), (t = o.getParent(i.getNode(), "ol,ul")) && (n = t.parentNode, /^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName) && (m(), o.split(n, t), g())) }, "Bold,Italic,Underline,Strikethrough,Superscript,Subscript": function(e) { d(e) }, "ForeColor,HiliteColor": function(e, t, n) { d(e, n) }, FontName: function(e, t, n) { var r, o; o = n, (r = s).formatter.toggle("fontname", { value: Ym(r, o) }), r.nodeChanged() }, FontSize: function(e, t, n) { var r, o; o = n, (r = s).formatter.toggle("fontsize", { value: Ym(r, o) }), r.nodeChanged() }, RemoveFormat: function(e) { a.remove(e) }, mceBlockQuote: function() { d("blockquote") }, FormatBlock: function(e, t, n) { return d(n || "p") }, mceCleanup: function() { var e = i.getBookmark(); s.setContent(s.getContent()), i.moveToBookmark(e) }, mceRemoveNode: function(e, t, n) { var r = n || i.getNode(); r !== s.getBody() && (m(), s.dom.remove(r, !0), g()) }, mceSelectNodeDepth: function(e, t, n) { var r = 0; o.getParent(i.getNode(), function(e) { if (1 === e.nodeType && r++ === n) return i.select(e), !1 }, s.getBody()) }, mceSelectNode: function(e, t, n) { i.select(n) }, mceInsertContent: function(e, t, n) { uf(s, n) }, mceInsertRawHTML: function(e, t, n) { var r = s.getContent(); i.setContent("tiny_mce_marker"), s.setContent(r.replace(/tiny_mce_marker/g, function() { return n })) }, mceToggleFormat: function(e, t, n) { d(n) }, mceSetContent: function(e, t, n) { s.setContent(n) }, "Indent,Outdent": function(e) { Pg(s, e) }, mceRepaint: function() {}, InsertHorizontalRule: function() { s.execCommand("mceInsertContent", !1, "
") }, mceToggleVisualAid: function() { s.hasVisual = !s.hasVisual, s.addVisual() }, mceReplaceContent: function(e, t, n) { s.execCommand("mceInsertContent", !1, n.replace(/\{\$selection\}/g, i.getContent({ format: "text" }))) }, mceInsertLink: function(e, t, n) { var r; "string" == typeof n && (n = { href: n }), r = o.getParent(i.getNode(), "a"), n.href = n.href.replace(" ", "%20"), r && n.href || a.remove("link"), n.href && a.apply("link", n, r) }, selectAll: function() { var e = o.getParent(i.getStart(), Do.isContentEditableTrue); if (e) { var t = o.createRng(); t.selectNodeContents(e), i.setRng(t) } }, "delete": function() { Hm(s) }, forwardDelete: function() { jm(s) }, mceNewDocument: function() { s.setContent("") }, InsertLineBreak: function(e, t, n) { return mg(s, n), !0 } }); var p = function(n) { return function() { var e = i.isCollapsed() ? [o.getParent(i.getNode(), o.isBlock)] : i.getSelectedBlocks(), t = Mg(e, function(e) { return !!a.matchNode(e, n) }); return -1 !== Fg(t, !0) } }; e({ JustifyLeft: p("alignleft"), JustifyCenter: p("aligncenter"), JustifyRight: p("alignright"), JustifyFull: p("alignjustify"), "Bold,Italic,Underline,Strikethrough,Superscript,Subscript": function(e) { return f(e) }, mceBlockQuote: function() { return f("blockquote") }, Outdent: function() { var e; if (n.inline_styles) { if ((e = o.getParent(i.getStart(), o.isBlock)) && 0 < parseInt(e.style.paddingLeft, 10)) return !0; if ((e = o.getParent(i.getEnd(), o.isBlock)) && 0 < parseInt(e.style.paddingLeft, 10)) return !0 } return r("InsertUnorderedList") || r("InsertOrderedList") || !n.inline_styles && !! o.getParent(i.getNode(), "BLOCKQUOTE") }, "InsertUnorderedList,InsertOrderedList": function(e) { var t = o.getParent(i.getNode(), "ul,ol"); return t && ("insertunorderedlist" === e && "UL" === t.tagName || "insertorderedlist" === e && "OL" === t.tagName) } }, "state"), e({ Undo: function() { s.undoManager.undo() }, Redo: function() { s.undoManager.redo() } }), u("FontName", function() { return Xm(t = s).fold(function() { return Km(t).map(function(e) { return Wm.getFontFamily(t.getBody(), e) }).getOr("") }, function(e) { return Wm.getFontFamily(t.getBody(), e) }); var t }, this), u("FontSize", function() { return Xm(t = s).fold(function() { return Km(t).map(function(e) { return Wm.getFontSize(t.getBody(), e) }).getOr("") }, function(e) { return Wm.getFontSize(t.getBody(), e) }); var t }, this) } var zg = Yt.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend", " "), Vg = function(a) { var u, s, c = this, l = {}, f = function() { return !1 }, d = function() { return !0 }; u = (a = a || {}).scope || c, s = a.toggleEvent || f; var r = function(e, t, n, r) { var o, i, a; if (!1 === t && (t = f), t) for (t = { func: t }, r && Yt.extend(t, r), a = (i = e.toLowerCase().split(" ")).length; a--;) e = i[a], (o = l[e]) || (o = l[e] = [], s(e, !0)), n ? o.unshift(t) : o.push(t); return c }, m = function(e, t) { var n, r, o, i, a; if (e) for (n = (i = e.toLowerCase().split(" ")).length; n--;) { if (e = i[n], r = l[e], !e) { for (o in l) s(o, !1), delete l[o]; return c } if (r) { if (t) for (a = r.length; a--;) r[a].func === t && (r = r.slice(0, a).concat(r.slice(a + 1)), l[e] = r); else r.length = 0; r.length || (s(e, !1), delete l[e]) } } else { for (e in l) s(e, !1); l = {} } return c }; c.fire = function(e, t) { var n, r, o, i; if (e = e.toLowerCase(), (t = t || {}).type = e, t.target || (t.target = u), t.preventDefault || (t.preventDefault = function() { t.isDefaultPrevented = d }, t.stopPropagation = function() { t.isPropagationStopped = d }, t.stopImmediatePropagation = function() { t.isImmediatePropagationStopped = d }, t.isDefaultPrevented = f, t.isPropagationStopped = f, t.isImmediatePropagationStopped = f), a.beforeFire && a.beforeFire(t), n = l[e]) for (r = 0, o = n.length; r < o; r++) { if ((i = n[r]).once && m(e, i.func), t.isImmediatePropagationStopped()) return t.stopPropagation(), t; if (!1 === i.func.call(u, t)) return t.preventDefault(), t } return t }, c.on = r, c.off = m, c.once = function(e, t, n) { return r(e, t, n, { once: !0 }) }, c.has = function(e) { return e = e.toLowerCase(), !(!l[e] || 0 === l[e].length) } }; Vg.isNative = function(e) { return !!zg[e.toLowerCase()] }; var qg, Hg = function(n) { return n._eventDispatcher || (n._eventDispatcher = new Vg({ scope: n, toggleEvent: function(e, t) { Vg.isNative(e) && n.toggleNativeEvent && n.toggleNativeEvent(e, t) } })), n._eventDispatcher }, jg = { fire: function(e, t, n) { if (this.removed && "remove" !== e) return t; if (t = Hg(this).fire(e, t, n), !1 !== n && this.parent) for (var r = this.parent(); r && !t.isPropagationStopped();) r.fire(e, t, !1), r = r.parent(); return t }, on: function(e, t, n) { return Hg(this).on(e, t, n) }, off: function(e, t) { return Hg(this).off(e, t) }, once: function(e, t) { return Hg(this).once(e, t) }, hasEventListeners: function(e) { return Hg(this).has(e) } }, $g = function(e, t) { return e.fire("PreProcess", t) }, Wg = function(e, t) { return e.fire("PostProcess", t) }, Kg = function(e) { return e.fire("remove") }, Xg = function(e, t) { return e.fire("SwitchMode", { mode: t }) }, Yg = function(e, t, n, r) { e.fire("ObjectResizeStart", { target: t, width: n, height: r }) }, Gg = function(e, t, n, r) { e.fire("ObjectResized", { target: t, width: n, height: r }) }, Jg = function(e, t, n) { try { e.getDoc().execCommand(t, !1, n) } catch (r) {} }, Qg = function(e, t) { var n, r, o; n = er.fromDom(e.getBody()), r = "mce-content-readonly", o = t, Wi.has(n, r) && !1 === o ? Wi.remove(n, r) : o && Wi.add(n, r), t ? (e.selection.controlSelection.hideResizeRect(), e.readonly = !0, e.getBody().contentEditable = "false") : (e.readonly = !1, e.getBody().contentEditable = "true", Jg(e, "StyleWithCSS", !1), Jg(e, "enableInlineTableEditing", !1), Jg(e, "enableObjectResizing", !1), e.focus(), e.nodeChanged()) }, Zg = function(e) { return e.readonly ? "readonly" : "design" }, ep = pi.DOM, tp = function(e, t) { return "selectionchange" === t ? e.getDoc() : !e.inline && /^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(t) ? e.getDoc().documentElement : e.settings.event_root ? (e.eventRoot || (e.eventRoot = ep.select(e.settings.event_root)[0]), e.eventRoot) : e.getBody() }, np = function(e, t, n) { var r; (r = e).hidden || r.readonly ? !0 === e.readonly && n.preventDefault() : e.fire(t, n) }, rp = function(i, a) { var e, t; if (i.delegates || (i.delegates = {}), !i.delegates[a] && !i.removed) if (e = tp(i, a), i.settings.event_root) { if (qg || (qg = {}, i.editorManager.on("removeEditor", function() { var e; if (!i.editorManager.activeEditor && qg) { for (e in qg) i.dom.unbind(tp(i, e)); qg = null } })), qg[a]) return; t = function(e) { for (var t = e.target, n = i.editorManager.get(), r = n.length; r--;) { var o = n[r].getBody(); (o === t || ep.isChildOf(t, o)) && np(n[r], a, e) } }, qg[a] = t, ep.bind(e, a, t) } else t = function(e) { np(i, a, e) }, ep.bind(e, a, t), i.delegates[a] = t }, op = { bindPendingEventDelegates: function() { var t = this; Yt.each(t._pendingNativeEvents, function(e) { rp(t, e) }) }, toggleNativeEvent: function(e, t) { var n = this; "focus" !== e && "blur" !== e && (t ? n.initialized ? rp(n, e) : n._pendingNativeEvents ? n._pendingNativeEvents.push(e) : n._pendingNativeEvents = [e] : n.initialized && (n.dom.unbind(tp(n, e), e, n.delegates[e]), delete n.delegates[e])) }, unbindAllNativeEvents: function() { var e, t = this, n = t.getBody(), r = t.dom; if (t.delegates) { for (e in t.delegates) t.dom.unbind(tp(t, e), e, t.delegates[e]); delete t.delegates }!t.inline && n && r && (n.onload = null, r.unbind(t.getWin()), r.unbind(t.getDoc())), r && (r.unbind(n), r.unbind(t.getContainer())) } }, ip = op = Yt.extend({}, jg, op), ap = Yt.each, up = Yt.explode, sp = { f9: 120, f10: 121, f11: 122 }, cp = Yt.makeMap("alt,ctrl,shift,meta,access"); function lp(i) { var a = {}, r = [], u = function(e) { var t, n, r = {}; for (n in ap(up(e, "+"), function(e) { e in cp ? r[e] = !0 : /^[0-9]{2,}$/.test(e) ? r.keyCode = parseInt(e, 10) : (r.charCode = e.charCodeAt(0), r.keyCode = sp[e] || e.toUpperCase().charCodeAt(0)) }), t = [r.keyCode], cp) r[n] ? t.push(n) : r[n] = !1; return r.id = t.join(","), r.access && (r.alt = !0, Re.mac ? r.ctrl = !0 : r.shift = !0), r.meta && (Re.mac ? r.meta = !0 : (r.ctrl = !0, r.meta = !1)), r }, s = function(e, t, n, r) { var o; return (o = Yt.map(up(e, ">"), u))[o.length - 1] = Yt.extend(o[o.length - 1], { func: n, scope: r || i }), Yt.extend(o[0], { desc: i.translate(t), subpatterns: o.slice(1) }) }, o = function(e, t) { return !!t && t.ctrl === e.ctrlKey && t.meta === e.metaKey && t.alt === e.altKey && t.shift === e.shiftKey && !! (e.keyCode === t.keyCode || e.charCode && e.charCode === t.charCode) && (e.preventDefault(), !0) }, c = function(e) { return e.func ? e.func.call(e.scope) : null }; i.on("keyup keypress keydown", function(t) { var e, n; ((n = t).altKey || n.ctrlKey || n.metaKey || "keydown" === (e = t).type && 112 <= e.keyCode && e.keyCode <= 123) && !t.isDefaultPrevented() && (ap(a, function(e) { if (o(t, e)) return r = e.subpatterns.slice(0), "keydown" === t.type && c(e), !0 }), o(t, r[0]) && (1 === r.length && "keydown" === t.type && c(r[0]), r.shift())) }), this.add = function(e, n, r, o) { var t; return "string" == typeof(t = r) ? r = function() { i.execCommand(t, !1, null) } : Yt.isArray(t) && (r = function() { i.execCommand(t[0], t[1], t[2]) }), ap(up(Yt.trim(e.toLowerCase())), function(e) { var t = s(e, n, r, o); a[t.id] = t }), !0 }, this.remove = function(e) { var t = s(e); return !!a[t.id] && (delete a[t.id], !0) } } var fp = function(e) { var t = e !== undefined ? e.dom() : document; return A.from(t.activeElement).map(er.fromDom) }, dp = function(e) { var t = $r.owner(e).dom(); return e.dom() === t.activeElement }, mp = function(t) { return fp($r.owner(t)).filter(function(e) { return t.dom().contains(e.dom()) }) }, gp = function(t, e) { return (n = e, n.collapsed ? A.from(eu(n.startContainer, n.startOffset)).map(er.fromDom) : A.none()).bind(function(e) { return bo(e) ? A.some(e) : !1 === Fr.contains(t, e) ? A.some(t) : A.none() }); var n }, pp = function(t, e) { gp(er.fromDom(t.getBody()), e).bind(function(e) { return rl.firstPositionIn(e.dom()) }).fold(function() { t.selection.normalize() }, function(e) { return t.selection.setRng(e.toRange()) }) }, hp = function(e) { if (e.setActive) try { e.setActive() } catch (t) { e.focus() } else e.focus() }, vp = function(e) { var t, n = e.getBody(); return n && (t = er.fromDom(n), dp(t) || mp(t).isSome()) }, bp = function(e) { return e.inline ? vp(e) : (t = e).iframeElement && dp(er.fromDom(t.iframeElement)); var t }, yp = function(e) { return e.editorManager.setActive(e) }, Cp = function(e, t) { e.removed || (t ? yp(e) : function(t) { var e = t.selection, n = t.settings.content_editable, r = t.getBody(), o = e.getRng(); t.quirks.refreshContentEditable(); var i, a, u = (i = t, a = e.getNode(), i.dom.getParent(a, function(e) { return "true" === i.dom.getContentEditable(e) })); if (t.$.contains(r, u)) return hp(u), pp(t, o), yp(t); t.bookmark !== undefined && !1 === bp(t) && Og(t).each(function(e) { t.selection.setRng(e), o = e }), n || (Re.opera || hp(r), t.getWin().focus()), (Re.gecko || n) && (hp(r), pp(t, o)), yp(t) }(e)) }, xp = bp, wp = function(e, t) { return t.dom()[e] }, Np = function(e, t) { return parseInt(Sr(t, e), 10) }, Ep = b(wp, "clientWidth"), Sp = b(wp, "clientHeight"), Tp = b(Np, "margin-top"), kp = b(Np, "margin-left"), Ap = function(e, t, n) { var r, o, i, a, u, s, c, l, f, d, m = er.fromDom(e.getBody()), g = e.inline ? m : $r.documentElement(m), p = (r = e.inline, i = t, a = n, u = (o = g).dom().getBoundingClientRect(), { x: i - (r ? u.left + o.dom().clientLeft + kp(o) : 0), y: a - (r ? u.top + o.dom().clientTop + Tp(o) : 0) }); return c = p.x, l = p.y, f = Ep(s = g), d = Sp(s), 0 <= c && 0 <= l && c <= f && l <= d }, _p = function(e) { var t, n = e.inline ? e.getBody() : e.getContentAreaContainer(); return (t = n, A.from(t).map(er.fromDom)).map(function(e) { return Fr.contains($r.owner(e), e) }).getOr(!1) }; function Rp(n) { var t, o = [], i = function() { var e, t = n.theme; return t && t.getNotificationManagerImpl ? t.getNotificationManagerImpl() : { open: e = function() { throw new Error("Theme did not provide a NotificationManager implementation.") }, close: e, reposition: e, getArgs: e } }, a = function() { 0 < o.length && i().reposition(o) }, u = function(t) { K(o, function(e) { return e === t }).each(function(e) { o.splice(e, 1) }) }, r = function(r) { if (!n.removed && _p(n)) return V(o, function(e) { return t = i().getArgs(e), n = r, !(t.type !== n.type || t.text !== n.text || t.progressBar || t.timeout || n.progressBar || n.timeout); var t, n }).getOrThunk(function() { n.editorManager.setActive(n); var e, t = i().open(r, function() { u(t), a() }); return e = t, o.push(e), a(), t }) }; return (t = n).on("SkinLoaded", function() { var e = t.settings.service_message; e && r({ text: e, type: "warning", timeout: 0, icon: "" }) }), t.on("ResizeEditor ResizeWindow", function() { Le.requestAnimationFrame(a) }), t.on("remove", function() { F(o, function(e) { i().close(e) }) }), { open: r, close: function() { A.from(o[0]).each(function(e) { i().close(e), u(e), a() }) }, getNotifications: function() { return o } } } function Dp(r) { var o = [], i = function() { var e, t = r.theme; return t && t.getWindowManagerImpl ? t.getWindowManagerImpl() : { open: e = function() { throw new Error("Theme did not provide a WindowManager implementation.") }, alert: e, confirm: e, close: e, getParams: e, setParams: e } }, a = function(e, t) { return function() { return t ? t.apply(e, arguments) : undefined } }, u = function(e) { var t; o.push(e), t = e, r.fire("OpenWindow", { win: t }) }, s = function(n) { K(o, function(e) { return e === n }).each(function(e) { var t; o.splice(e, 1), t = n, r.fire("CloseWindow", { win: t }), 0 === o.length && r.focus() }) }, e = function() { return A.from(o[o.length - 1]) }; return r.on("remove", function() { F(o.slice(0), function(e) { i().close(e) }) }), { windows: o, open: function(e, t) { r.editorManager.setActive(r), Dg(r); var n = i().open(e, t, s); return u(n), n }, alert: function(e, t, n) { var r = i().alert(e, a(n || this, t), s); u(r) }, confirm: function(e, t, n) { var r = i().confirm(e, a(n || this, t), s); u(r) }, close: function() { e().each(function(e) { i().close(e), s(e) }) }, getParams: function() { return e().map(i().getParams).getOr(null) }, setParams: function(t) { e().each(function(e) { i().setParams(e, t) }) }, getWindows: function() { return o } } } var Bp = Ni.PluginManager, Op = function(e, t) { var n = function(e, t) { for (var n in Bp.urls) if (Bp.urls[n] + "/plugin" + t + ".js" === e) return n; return null }(t, e.suffix); return n ? "Failed to load plugin: " + n + " from url " + t : "Failed to load plugin url: " + t }, Pp = function(e, t) { e.notificationManager.open({ type: "error", text: t }) }, Lp = function(e, t) { e._skinLoaded ? Pp(e, t) : e.on("SkinLoaded", function() { Pp(e, t) }) }, Ip = function(e, t) { Lp(e, Op(e, t)) }, Mp = function(e, t) { Lp(e, "Failed to upload image: " + t) }, Fp = Lp, Up = function(e) { for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; var r = window.console; r && (r.error ? r.error.apply(r, arguments) : r.log.apply(r, arguments)) }, zp = Ni.PluginManager, Vp = Ni.ThemeManager; function qp() { return new(ie.getOrDie("XMLHttpRequest")) } function Hp(u, s) { var r = {}, n = function(e, r, o, t) { var i, n; (i = new qp).open("POST", s.url), i.withCredentials = s.credentials, i.upload.onprogress = function(e) { t(e.loaded / e.total * 100) }, i.onerror = function() { o("Image upload failed due to a XHR Transport error. Code: " + i.status) }, i.onload = function() { var e, t, n; i.status < 200 || 300 <= i.status ? o("HTTP Error: " + i.status) : (e = JSON.parse(i.responseText)) && "string" == typeof e.location ? r((t = s.basePath, n = e.location, t ? t.replace(/\/$/, "") + "/" + n.replace(/^\//, "") : n)) : o("Invalid JSON: " + i.responseText) }, (n = new FormData).append("file", e.blob(), e.filename()), i.send(n) }, c = function(e, t) { return { url: t, blobInfo: e, status: !0 } }, l = function(e, t) { return { url: "", blobInfo: e, status: !1, error: t } }, f = function(e, t) { Yt.each(r[e], function(e) { e(t) }), delete r[e] }, o = function(e, n) { return e = Yt.grep(e, function(e) { return !u.isUploaded(e.blobUri()) }), De.all(Yt.map(e, function(e) { return u.isPending(e.blobUri()) ? (t = e.blobUri(), new De(function(e) { r[t] = r[t] || [], r[t].push(e) })) : (o = e, i = s.handler, a = n, u.markPending(o.blobUri()), new De(function(t) { var n; try { var r = function() { n && n.close() }; i(o, function(e) { r(), u.markUploaded(o.blobUri(), e), f(o.blobUri(), c(o, e)), t(c(o, e)) }, function(e) { r(), u.removeFailed(o.blobUri()), f(o.blobUri(), l(o, e)), t(l(o, e)) }, function(e) { e < 0 || 100 < e || (n || (n = a()), n.progressBar.value(e)) }) } catch (e) { t(l(o, e.message)) } })); var o, i, a, t })) }; return s = Yt.extend({ credentials: !1, handler: n }, s), { upload: function(e, t) { return s.url || s.handler !== n ? o(e, t) : new De(function(e) { e([]) }) } } } function jp(e, t) { return new(ie.getOrDie("Blob"))(e, t) } function $p() { return new(ie.getOrDie("FileReader")) } function Wp(e) { return new(ie.getOrDie("Uint8Array"))(e) } var Kp = function(e) { return ie.getOrDie("atob")(e) }, Xp = function(e) { var t, n; return e = decodeURIComponent(e).split(","), (n = /data:([^;]+)/.exec(e[0])) && (t = n[1]), { type: t, data: e[1] } }, Yp = function(e) { return 0 === e.indexOf("blob:") ? (i = e, new De(function(e, t) { var n = function() { t("Cannot convert " + i + " to Blob. Resource might not exist or is inaccessible.") }; try { var r = new qp; r.open("GET", i, !0), r.responseType = "blob", r.onload = function() { 200 === this.status ? e(this.response) : n() }, r.onerror = n, r.send() } catch (o) { n() } })) : 0 === e.indexOf("data:") ? (o = e, new De(function(e) { var t, n, r; o = Xp(o); try { t = Kp(o.data) } catch (Kw) { return void e(new jp([])) } for (n = new Wp(t.length), r = 0; r < n.length; r++) n[r] = t.charCodeAt(r); e(new jp([n], { type: o.type })) })) : null; var i, o }, Gp = function(n) { return new De(function(e) { var t = new $p; t.onloadend = function() { e(t.result) }, t.readAsDataURL(n) }) }, Jp = Xp, Qp = 0, Zp = function(e) { return (e || "blobid") + Qp++ }, eh = function(n, r, o, t) { var i, a; 0 !== r.src.indexOf("blob:") ? (i = Jp(r.src).data, (a = n.findFirst(function(e) { return e.base64() === i })) ? o({ image: r, blobInfo: a }) : Yp(r.src).then(function(e) { a = n.create(Zp(), e, i), n.add(a), o({ image: r, blobInfo: a }) }, function(e) { t(e) })) : (a = n.getByUri(r.src)) ? o({ image: r, blobInfo: a }) : Yp(r.src).then(function(t) { Gp(t).then(function(e) { i = Jp(e).data, a = n.create(Zp(), t, i), n.add(a), o({ image: r, blobInfo: a }) }) }, function(e) { t(e) }) }, th = function(e) { return e ? e.getElementsByTagName("img") : [] }, nh = 0, rh = { uuid: function(e) { return e + nh+++(t = function() { return Math.round(4294967295 * Math.random()).toString(36) }, "s" + (new Date).getTime().toString(36) + t() + t() + t()); var t } }; function oh(u) { var n, o, i, t, e, a, r, s, c, l, f = (n = [], o = ya.constant, i = function(e) { var t, n, r; if (!e.blob || !e.base64) throw new Error("blob and base64 representations of the image are required for BlobInfo to be created"); return t = e.id || rh.uuid("blobid"), n = e.name || t, { id: o(t), name: o(n), filename: o(n + "." + (r = e.blob.type, { "image/jpeg": "jpg", "image/jpg": "jpg", "image/gif": "gif", "image/png": "png" }[r.toLowerCase()] || "dat")), blob: o(e.blob), base64: o(e.base64), blobUri: o(e.blobUri || ue.createObjectURL(e.blob)), uri: o(e.uri) } }, { create: function(e, t, n, r) { return i("object" == typeof e ? e : { id: e, name: r, blob: t, base64: n }) }, add: function(e) { t(e.id()) || n.push(e) }, get: t = function(t) { return e(function(e) { return e.id() === t }) }, getByUri: function(t) { return e(function(e) { return e.blobUri() === t }) }, findFirst: e = function(e) { return jt.filter(n, e)[0] }, removeByUri: function(t) { n = jt.filter(n, function(e) { return e.blobUri() !== t || (ue.revokeObjectURL(e.blobUri()), !1) }) }, destroy: function() { jt.each(n, function(e) { ue.revokeObjectURL(e.blobUri()) }), n = [] } }), d = u.settings, m = (s = {}, c = function(e, t) { return { status: e, resultUri: t } }, { hasBlobUri: l = function(e) { return e in s }, getResultUri: function(e) { var t = s[e]; return t ? t.resultUri : null }, isPending: function(e) { return !!l(e) && 1 === s[e].status }, isUploaded: function(e) { return !!l(e) && 2 === s[e].status }, markPending: function(e) { s[e] = c(1, null) }, markUploaded: function(e, t) { s[e] = c(2, t) }, removeFailed: function(e) { delete s[e] }, destroy: function() { s = {} } }), g = function(t) { return function(e) { return u.selection ? t(e) : [] } }, p = function(e, t, n) { for (var r = 0; - 1 !== (r = e.indexOf(t, r)) && (e = e.substring(0, r) + n + e.substr(r + t.length), r += n.length - t.length + 1), -1 !== r;); return e }, h = function(e, t, n) { return e = p(e, 'src="' + t + '"', 'src="' + n + '"'), e = p(e, 'data-mce-src="' + t + '"', 'data-mce-src="' + n + '"') }, v = function(t, n) { jt.each(u.undoManager.data, function(e) { "fragmented" === e.type ? e.fragments = jt.map(e.fragments, function(e) { return h(e, t, n) }) : e.content = h(e.content, t, n) }) }, b = function() { return u.notificationManager.open({ text: u.translate("Image uploading..."), type: "info", timeout: -1, progressBar: !0 }) }, y = function(e, t) { f.removeByUri(e.src), v(e.src, t), u.$(e).attr({ src: d.images_reuse_filename ? t + "?" + (new Date).getTime() : t, "data-mce-src": u.convertURL(t, "src") }) }, C = function(n) { return a || (a = Hp(m, { url: d.images_upload_url, basePath: d.images_upload_base_path, credentials: d.images_upload_credentials, handler: d.images_upload_handler })), N().then(g(function(r) { var e; return e = jt.map(r, function(e) { return e.blobInfo }), a.upload(e, b).then(g(function(e) { var t = jt.map(e, function(e, t) { var n = r[t].image; return e.status && !1 !== u.settings.images_replace_blob_uris ? y(n, e.url) : e.error && Mp(u, e.error), { element: n, status: e.status } }); return n && n(t), t })) })) }, x = function(e) { if (!1 !== d.automatic_uploads) return C(e) }, w = function(e) { return !d.images_dataimg_filter || d.images_dataimg_filter(e) }, N = function() { var o, i, a; return r || (o = m, i = f, a = {}, r = { findAll: function(e, n) { var t; n || (n = ya.constant(!0)), t = jt.filter(th(e), function(e) { var t = e.src; return !!Re.fileApi && !e.hasAttribute("data-mce-bogus") && !e.hasAttribute("data-mce-placeholder") && !(!t || t === Re.transparentSrc) && (0 === t.indexOf("blob:") ? !o.isUploaded(t) : 0 === t.indexOf("data:") && n(e)) }); var r = jt.map(t, function(n) { if (a[n.src]) return new De(function(t) { a[n.src].then(function(e) { if ("string" == typeof e) return e; t({ image: n, blobInfo: e.blobInfo }) }) }); var e = new De(function(e, t) { eh(i, n, e, t) }).then(function(e) { return delete a[e.image.src], e })["catch"](function(e) { return delete a[n.src], e }); return a[n.src] = e }); return De.all(r) } }), r.findAll(u.getBody(), w).then(g(function(e) { return e = jt.filter(e, function(e) { return "string" != typeof e || (Fp(u, e), !1) }), jt.each(e, function(e) { v(e.image.src, e.blobInfo.blobUri()), e.image.src = e.blobInfo.blobUri(), e.image.removeAttribute("data-mce-src") }), e })) }, E = function(e) { return e.replace(/src="(blob:[^"]+)"/g, function(e, n) { var t = m.getResultUri(n); if (t) return 'src="' + t + '"'; var r = f.getByUri(n); return r || (r = jt.reduce(u.editorManager.get(), function(e, t) { return e || t.editorUpload && t.editorUpload.blobCache.getByUri(n) }, null)), r ? 'src="data:' + r.blob().type + ";base64," + r.base64() + '"' : e }) }; return u.on("setContent", function() { !1 !== u.settings.automatic_uploads ? x() : N() }), u.on("RawSaveContent", function(e) { e.content = E(e.content) }), u.on("getContent", function(e) { e.source_view || "raw" === e.format || (e.content = E(e.content)) }), u.on("PostRender", function() { u.parser.addNodeFilter("img", function(e) { jt.each(e, function(e) { var t = e.attr("src"); if (!f.getByUri(t)) { var n = m.getResultUri(t); n && e.attr("src", n) } }) }) }), { blobCache: f, uploadImages: C, uploadImagesAuto: x, scanForImages: N, destroy: function() { f.destroy(), m.destroy(), r = a = null } } } var ih = function(e, t) { return e.hasOwnProperty(t.nodeName) }, ah = function(e, t) { if (Do.isText(t)) { if (0 === t.nodeValue.length) return !0; if (/^\s+$/.test(t.nodeValue) && (!t.nextSibling || ih(e, t.nextSibling))) return !0 } return !1 }, uh = function(e) { var t, n, r, o, i, a, u, s, c, l, f, d = e.settings, m = e.dom, g = e.selection, p = e.schema, h = p.getBlockElements(), v = g.getStart(), b = e.getBody(); if (f = d.forced_root_block, v && Do.isElement(v) && f && (l = b.nodeName.toLowerCase(), p.isValidChild(l, f.toLowerCase()) && (y = h, C = b, x = v, !M(zf(er.fromDom(x), er.fromDom(C)), function(e) { return ih(y, e.dom()) })))) { var y, C, x, w, N; for (n = (t = g.getRng()).startContainer, r = t.startOffset, o = t.endContainer, i = t.endOffset, c = xp(e), v = b.firstChild; v;) if (w = h, N = v, Do.isText(N) || Do.isElement(N) && !ih(w, N) && !ml(N)) { if (ah(h, v)) { v = (u = v).nextSibling, m.remove(u); continue } a || (a = m.create(f, e.settings.forced_root_block_attrs), v.parentNode.insertBefore(a, v), s = !0), v = (u = v).nextSibling, a.appendChild(u) } else a = null, v = v.nextSibling; s && c && (t.setStart(n, r), t.setEnd(o, i), g.setRng(t), e.nodeChanged()) } }, sh = function(e) { e.settings.forced_root_block && e.on("NodeChange", b(uh, e)) }, ch = function(t) { return $r.firstChild(t).fold(H([t]), function(e) { return [t].concat(ch(e)) }) }, lh = function(t) { return $r.lastChild(t).fold(H([t]), function(e) { return "br" === sr.name(e) ? $r.prevSibling(e).map(function(e) { return [t].concat(lh(e)) }).getOr([]) : [t].concat(lh(e)) }) }, fh = function(o, e) { return ru([(i = e, a = i.startContainer, u = i.startOffset, Do.isText(a) ? 0 === u ? A.some(er.fromDom(a)) : A.none() : A.from(a.childNodes[u]).map(er.fromDom)), (t = e, n = t.endContainer, r = t.endOffset, Do.isText(n) ? r === n.data.length ? A.some(er.fromDom(n)) : A.none() : A.from(n.childNodes[r - 1]).map(er.fromDom))], function(e, t) { var n = V(ch(o), b(Fr.eq, e)), r = V(lh(o), b(Fr.eq, t)); return n.isSome() && r.isSome() }).getOr(!1); var t, n, r, i, a, u }, dh = function(e, t, n, r) { var o = n, i = new oo(n, o), a = e.schema.getNonEmptyElements(); do { if (3 === n.nodeType && 0 !== Yt.trim(n.nodeValue).length) return void(r ? t.setStart(n, 0) : t.setEnd(n, n.nodeValue.length)); if (a[n.nodeName] && !/^(TD|TH)$/.test(n.nodeName)) return void(r ? t.setStartBefore(n) : "BR" === n.nodeName ? t.setEndBefore(n) : t.setEndAfter(n)); if (Re.ie && Re.ie < 11 && e.isBlock(n) && e.isEmpty(n)) return void(r ? t.setStart(n, 0) : t.setEnd(n, 0)) } while (n = r ? i.next() : i.prev()); "BODY" === o.nodeName && (r ? t.setStart(o, 0) : t.setEnd(o, o.childNodes.length)) }, mh = function(e) { var t = e.selection.getSel(); return t && 0 < t.rangeCount }; function gh(i) { var r, o = []; "onselectionchange" in i.getDoc() || i.on("NodeChange Click MouseUp KeyUp Focus", function(e) { var t, n; n = { startContainer: (t = i.selection.getRng()).startContainer, startOffset: t.startOffset, endContainer: t.endContainer, endOffset: t.endOffset }, "nodechange" !== e.type && Gm(n, r) || i.fire("SelectionChange"), r = n }), i.on("contextmenu", function() { i.fire("SelectionChange") }), i.on("SelectionChange", function() { var e = i.selection.getStart(!0); !e || !Re.range && i.selection.isCollapsed() || mh(i) && ! function(e) { var t, n; if ((n = i.$(e).parentsUntil(i.getBody()).add(e)).length === o.length) { for (t = n.length; 0 <= t && n[t] === o[t]; t--); if (-1 === t) return o = n, !0 } return o = n, !1 }(e) && i.dom.isChildOf(e, i.getBody()) && i.nodeChanged({ selectionChange: !0 }) }), i.on("MouseUp", function(e) { !e.isDefaultPrevented() && mh(i) && ("IMG" === i.selection.getNode().nodeName ? Le.setEditorTimeout(i, function() { i.nodeChanged() }) : i.nodeChanged()) }), this.nodeChanged = function(e) { var t, n, r, o = i.selection; i.initialized && o && !i.settings.disable_nodechange && !i.readonly && (r = i.getBody(), (t = o.getStart(!0) || r).ownerDocument === i.getDoc() && i.dom.isChildOf(t, r) || (t = r), n = [], i.dom.getParent(t, function(e) { if (e === r) return !0; n.push(e) }), (e = e || {}).element = t, e.parents = n, i.fire("NodeChange", e)) } } var ph, hh, vh = function(e) { var t, n, r, o; return o = e.getBoundingClientRect(), n = (t = e.ownerDocument).documentElement, r = t.defaultView, { top: o.top + r.pageYOffset - n.clientTop, left: o.left + r.pageXOffset - n.clientLeft } }, bh = function(e, t) { return n = (u = e).inline ? vh(u.getBody()) : { left: 0, top: 0 }, a = (i = e).getBody(), r = i.inline ? { left: a.scrollLeft, top: a.scrollTop } : { left: 0, top: 0 }, { pageX: (o = function(e, t) { if (t.target.ownerDocument !== e.getDoc()) { var n = vh(e.getContentAreaContainer()), r = (i = (o = e).getBody(), a = o.getDoc().documentElement, u = { left: i.scrollLeft, top: i.scrollTop }, s = { left: i.scrollLeft || a.scrollLeft, top: i.scrollTop || a.scrollTop }, o.inline ? u : s); return { left: t.pageX - n.left + r.left, top: t.pageY - n.top + r.top } } var o, i, a, u, s; return { left: t.pageX, top: t.pageY } }(e, t)).left - n.left + r.left, pageY: o.top - n.top + r.top }; var n, r, o, i, a, u }, yh = Do.isContentEditableFalse, Ch = Do.isContentEditableTrue, xh = function(e) { e && e.parentNode && e.parentNode.removeChild(e) }, wh = function(u, s) { return function(e) { if (0 === e.button) { var t = jt.find(s.dom.getParents(e.target), ya.or(yh, Ch)); if (i = s.getBody(), yh(a = t) && a !== i) { var n = s.dom.getPos(t), r = s.getBody(), o = s.getDoc().documentElement; u.element = t, u.screenX = e.screenX, u.screenY = e.screenY, u.maxX = (s.inline ? r.scrollWidth : o.offsetWidth) - 2, u.maxY = (s.inline ? r.scrollHeight : o.offsetHeight) - 2, u.relX = e.pageX - n.x, u.relY = e.pageY - n.y, u.width = t.offsetWidth, u.height = t.offsetHeight, u.ghost = function(e, t, n, r) { var o = t.cloneNode(!0); e.dom.setStyles(o, { width: n, height: r }), e.dom.setAttrib(o, "data-mce-selected", null); var i = e.dom.create("div", { "class": "mce-drag-container", "data-mce-bogus": "all", unselectable: "on", contenteditable: "false" }); return e.dom.setStyles(i, { position: "absolute", opacity: .5, overflow: "hidden", border: 0, padding: 0, margin: 0, width: n, height: r }), e.dom.setStyles(o, { margin: 0, boxSizing: "border-box" }), i.appendChild(o), i }(s, t, u.width, u.height) } } var i, a } }, Nh = function(l, f) { return function(e) { if (l.dragging && (s = (i = f).selection, c = s.getSel().getRangeAt(0).startContainer, a = 3 === c.nodeType ? c.parentNode : c, u = l.element, a !== u && !i.dom.isChildOf(a, u) && !yh(a))) { var t = (r = l.element, (o = r.cloneNode(!0)).removeAttribute("data-mce-selected"), o), n = f.fire("drop", { targetClone: t, clientX: e.clientX, clientY: e.clientY }); n.isDefaultPrevented() || (t = n.targetClone, f.undoManager.transact(function() { xh(l.element), f.insertContent(f.dom.getOuterHTML(t)), f._selectionOverrides.hideFakeCaret() })) } var r, o, i, a, u, s, c; Eh(l) } }, Eh = function(e) { e.dragging = !1, e.element = null, xh(e.ghost) }, Sh = function(e) { var t, n, r, o, i, a, p, h, v, u, s, c = {}; t = pi.DOM, a = document, n = wh(c, e), p = c, h = e, v = Le.throttle(function(e, t) { h._selectionOverrides.hideFakeCaret(), h.selection.placeCaretAt(e, t) }, 0), r = function(e) { var t, n, r, o, i, a, u, s, c, l, f, d, m = Math.max(Math.abs(e.screenX - p.screenX), Math.abs(e.screenY - p.screenY)); if (p.element && !p.dragging && 10 < m) { if (h.fire("dragstart", { target: p.element }).isDefaultPrevented()) return; p.dragging = !0, h.focus() } if (p.dragging) { var g = (f = p, { pageX: (d = bh(h, e)).pageX - f.relX, pageY: d.pageY + 5 }); c = p.ghost, l = h.getBody(), c.parentNode !== l && l.appendChild(c), t = p.ghost, n = g, r = p.width, o = p.height, i = p.maxX, a = p.maxY, s = u = 0, t.style.left = n.pageX + "px", t.style.top = n.pageY + "px", n.pageX + r > i && (u = n.pageX + r - i), n.pageY + o > a && (s = n.pageY + o - a), t.style.width = r - u + "px", t.style.height = o - s + "px", v(e.clientX, e.clientY) } }, o = Nh(c, e), u = c, i = function() { u.dragging && s.fire("dragend"), Eh(u) }, (s = e).on("mousedown", n), e.on("mousemove", r), e.on("mouseup", o), t.bind(a, "mousemove", r), t.bind(a, "mouseup", i), e.on("remove", function() { t.unbind(a, "mousemove", r), t.unbind(a, "mouseup", i) }) }, Th = function(e) { var n; Sh(e), (n = e).on("drop", function(e) { var t = "undefined" != typeof e.clientX ? n.getDoc().elementFromPoint(e.clientX, e.clientY) : null; (yh(t) || yh(n.dom.getContentEditableParent(t))) && e.preventDefault() }) }, kh = function(e) { return jt.reduce(e, function(e, t) { return e.concat(function(t) { var e = function(e) { return jt.map(e, function(e) { return (e = Xa(e)).node = t, e }) }; if (Do.isElement(t)) return e(t.getClientRects()); if (Do.isText(t)) { var n = t.ownerDocument.createRange(); return n.setStart(t, 0), n.setEnd(t, t.data.length), e(n.getClientRects()) } }(t)) }, []) }; (hh = ph || (ph = {}))[hh.Up = -1] = "Up", hh[hh.Down = 1] = "Down"; var Ah = function(o, i, a, e, u, t) { var n, s, c = 0, l = [], r = function(e) { var t, n, r; for (r = kh([e]), -1 === o && (r = r.reverse()), t = 0; t < r.length; t++) if (n = r[t], !a(n, s)) { if (0 < l.length && i(n, jt.last(l)) && c++, n.line = c, u(n)) return !0; l.push(n) } }; return (s = jt.last(t.getClientRects())) && (r(n = t.getNode()), function(e, t, n, r) { for (; r = Pc(r, e, Wa, t);) if (n(r)) return }(o, e, r, n)), l }, _h = b(Ah, ph.Up, Ja, Qa), Rh = b(Ah, ph.Down, Qa, Ja), Dh = function(n) { return function(e) { return t = n, e.line > t; var t } }, Bh = function(n) { return function(e) { return t = n, e.line === t; var t } }, Oh = Do.isContentEditableFalse, Ph = Pc, Lh = function(e, t) { return Math.abs(e.left - t) }, Ih = function(e, t) { return Math.abs(e.right - t) }, Mh = function(e, t) { return e >= t.left && e <= t.right }, Fh = function(e, o) { return jt.reduce(e, function(e, t) { var n, r; return n = Math.min(Lh(e, o), Ih(e, o)), r = Math.min(Lh(t, o), Ih(t, o)), Mh(o, t) ? t : Mh(o, e) ? e : r === n && Oh(t.node) ? t : r < n ? t : e }) }, Uh = function(e, t, n, r) { for (; r = Ph(r, e, Wa, t);) if (n(r)) return }, zh = function(e, t, n) { var r, o, i, a, u, s, c, l, f = kh((o = e, jt.filter(jt.toArray(o.getElementsByTagName("*")), Nc))), d = jt.filter(f, function(e) { return n >= e.top && n <= e.bottom }); return (r = Fh(d, t)) && (r = Fh((u = e, l = function(t, e) { var n; return n = jt.filter(kh([e]), function(e) { return !t(e, s) }), c = c.concat(n), 0 === n.length }, (c = []).push(s = r), Uh(ph.Up, u, b(l, Ja), s.node), Uh(ph.Down, u, b(l, Qa), s.node), c), t)) && Nc(r.node) ? (a = t, { node: (i = r).node, before: Lh(i, a) < Ih(i, a) }) : null }, Vh = function(i, a, e) { return !e.collapsed && z(e.getClientRects(), function(e, t) { return e || (o = a, (r = i) >= (n = t).left && r <= n.right && o >= n.top && o <= n.bottom); var n, r, o }, !1) }, qh = function(t) { var e = Di(function() { if (!t.removed && t.selection.getRng().collapsed) { var e = ls(t, t.selection.getRng(), !1); t.selection.setRng(e) } }, 0); t.on("focus", function() { e.throttle() }), t.on("blur", function() { e.cancel() }) }, Hh = { BACKSPACE: 8, DELETE: 46, DOWN: 40, ENTER: 13, LEFT: 37, RIGHT: 39, SPACEBAR: 32, TAB: 9, UP: 38, modifierPressed: function(e) { return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e) }, metaKeyPressed: function(e) { return Re.mac ? e.metaKey : e.ctrlKey && !e.altKey } }, jh = Do.isContentEditableTrue, $h = Do.isContentEditableFalse, Wh = Xc, Kh = Kc, Xh = function(e, t) { for (var n = e.getBody(); t && t !== n;) { if (jh(t) || $h(t)) return t; t = t.parentNode } return null }, Yh = function(g) { var p, e, t, a = g.getBody(), o = wc(g.getBody(), function(e) { return g.dom.isBlock(e) }, function() { return xp(g) }), h = "sel-" + g.dom.uniqueId(), u = function(e) { e && g.selection.setRng(e) }, s = function() { return g.selection.getRng() }, v = function(e, t, n, r) { return void 0 === r && (r = !0), g.fire("ShowCaret", { target: t, direction: e, before: n }).isDefaultPrevented() ? null : (r && g.selection.scrollIntoView(t, -1 === e), o.show(n, t)) }, b = function(e, t) { return t = qc(e, a, t), -1 === e ? Su.fromRangeStart(t) : Su.fromRangeEnd(t) }, n = function(e) { return Aa(e) || Oa(e) || Pa(e) }, y = function(e) { return n(e.startContainer) || n(e.endContainer) }, c = function(e, t) { var n, r, o, i, a, u, s, c, l, f, d = g.$, m = g.dom; if (!e) return null; if (e.collapsed) { if (!y(e)) if (!1 === t) { if (c = b(-1, e), Nc(c.getNode(!0))) return v(-1, c.getNode(!0), !1, !1); if (Nc(c.getNode())) return v(-1, c.getNode(), !c.isAtEnd(), !1) } else { if (c = b(1, e), Nc(c.getNode())) return v(1, c.getNode(), !c.isAtEnd(), !1); if (Nc(c.getNode(!0))) return v(1, c.getNode(!0), !1, !1) } return null } return i = e.startContainer, a = e.startOffset, u = e.endOffset, 3 === i.nodeType && 0 === a && $h(i.parentNode) && (i = i.parentNode, a = m.nodeIndex(i), i = i.parentNode), 1 !== i.nodeType ? null : (u === a + 1 && (n = i.childNodes[a]), $h(n) ? (l = f = n.cloneNode(!0), (s = g.fire("ObjectSelected", { target: n, targetClone: l })).isDefaultPrevented() ? null : (r = na(er.fromDom(g.getBody()), "#" + h).fold(function() { return d([]) }, function(e) { return d([e.dom()]) }), l = s.targetClone, 0 === r.length && (r = d('
').attr("id", h)).appendTo(g.getBody()), e = g.dom.createRng(), l === f && Re.ie ? (r.empty().append('

\xa0

').append(l), e.setStartAfter(r[0].firstChild.firstChild), e.setEndAfter(l)) : (r.empty().append("\xa0").append(l).append("\xa0"), e.setStart(r[0].firstChild, 1), e.setEnd(r[0].lastChild, 0)), r.css({ top: m.getPos(n, g.getBody()).y }), r[0].focus(), (o = g.selection.getSel()).removeAllRanges(), o.addRange(e), F(Ki(er.fromDom(g.getBody()), "*[data-mce-selected]"), function(e) { hr.remove(e, "data-mce-selected") }), n.setAttribute("data-mce-selected", "1"), p = n, C(), e)) : null) }, l = function() { p && (p.removeAttribute("data-mce-selected"), na(er.fromDom(g.getBody()), "#" + h).each(Ri.remove), p = null), na(er.fromDom(g.getBody()), "#" + h).each(Ri.remove), p = null }, C = function() { o.hide() }; return Re.ceFalse && (function() { g.on("mouseup", function(e) { var t = s(); t.collapsed && Ap(g, e.clientX, e.clientY) && u(cs(g, t, !1)) }), g.on("click", function(e) { var t; (t = Xh(g, e.target)) && ($h(t) && (e.preventDefault(), g.focus()), jh(t) && g.dom.isChildOf(t, g.selection.getNode()) && l()) }), g.on("blur NewBlock", function() { l() }), g.on("ResizeWindow FullscreenStateChanged", function() { return o.reposition() }); var n, r, i = function(e, t) { var n, r, o = g.dom.getParent(e, g.dom.isBlock), i = g.dom.getParent(t, g.dom.isBlock); return !(!o || !g.dom.isChildOf(o, i) || !1 !== $h(Xh(g, o))) || o && (n = o, r = i, !(g.dom.getParent(n, g.dom.isBlock) === g.dom.getParent(r, g.dom.isBlock))) && function(e) { var t = Ns(e); if (!e.firstChild) return !1; var n = Su.before(e.firstChild), r = t.next(n); return r && !Kh(r) && !Wh(r) }(o) }; r = !1, (n = g).on("touchstart", function() { r = !1 }), n.on("touchmove", function() { r = !0 }), n.on("touchend", function(e) { var t = Xh(n, e.target); $h(t) && (r || (e.preventDefault(), c(ss(n, t)))) }), g.on("mousedown", function(e) { var t, n = e.target; if ((n === a || "HTML" === n.nodeName || g.dom.isChildOf(n, a)) && !1 !== Ap(g, e.clientX, e.clientY)) if (t = Xh(g, n)) $h(t) ? (e.preventDefault(), c(ss(g, t))) : (l(), jh(t) && e.shiftKey || Vh(e.clientX, e.clientY, g.selection.getRng()) || (C(), g.selection.placeCaretAt(e.clientX, e.clientY))); else if (!1 === Nc(n)) { l(), C(); var r = zh(a, e.clientX, e.clientY); if (r && !i(e.target, r.node)) { e.preventDefault(); var o = v(1, r.node, r.before, !1); g.getBody().focus(), u(o) } } }), g.on("keypress", function(e) { Hh.modifierPressed(e) || (e.keyCode, $h(g.selection.getNode()) && e.preventDefault()) }), g.on("getSelectionRange", function(e) { var t = e.range; if (p) { if (!p.parentNode) return void(p = null); (t = t.cloneRange()).selectNode(p), e.range = t } }), g.on("setSelectionRange", function(e) { var t; (t = c(e.range, e.forward)) && (e.range = t) }), g.on("AfterSetSelectionRange", function(e) { var t, n = e.range; y(n) || "mcepastebin" === n.startContainer.parentNode.id || C(), t = n.startContainer.parentNode, g.dom.hasClass(t, "mce-offscreen-selection") || l() }), g.on("copy", function(e) { var t, n = e.clipboardData; if (!e.isDefaultPrevented() && e.clipboardData && !Re.ie) { var r = (t = g.dom.get(h)) ? t.getElementsByTagName("*")[0] : t; r && (e.preventDefault(), n.clearData(), n.setData("text/html", r.outerHTML), n.setData("text/plain", r.outerText)) } }), Th(g), qh(g) }(), e = g.contentStyles, t = ".mce-content-body", e.push(o.getCss()), e.push(t + " .mce-offscreen-selection {position: absolute;left: -9999999999px;max-width: 1000000px;}" + t + " *[contentEditable=false] {cursor: default;}" + t + " *[contentEditable=true] {cursor: text;}")), { showCaret: v, showBlockCaretContainer: function(e) { e.hasAttribute("data-mce-caret") && (La(e), u(s()), g.selection.scrollIntoView(e[0])) }, hideFakeCaret: C, destroy: function() { o.destroy(), p = null } } }, Gh = function(e, t, n) { var r, o, i, a, u = 1; for (a = e.getShortEndedElements(), (i = /<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g).lastIndex = r = n; o = i.exec(t);) { if (r = i.lastIndex, "/" === o[1]) u--; else if (!o[1]) { if (o[2] in a) continue; u++ } if (0 === u) break } return r }; function Jh(F, U) { void 0 === U && (U = ni()); var e = function() {}; !1 !== (F = F || {}).fix_self_closing && (F.fix_self_closing = !0); var z = F.comment ? F.comment : e, V = F.cdata ? F.cdata : e, q = F.text ? F.text : e, H = F.start ? F.start : e, j = F.end ? F.end : e, $ = F.pi ? F.pi : e, W = F.doctype ? F.doctype : e; return { parse: function(e) { var t, n, r, d, o, i, a, m, u, s, g, c, p, l, f, h, v, b, y, C, x, w, N, E, S, T, k, A, _, R = 0, D = [], B = 0, O = $o.decode, P = Yt.makeMap("src,href,data,background,formaction,poster,xlink:href"), L = /((java|vb)script|mhtml):/i, I = function(e) { var t, n; for (t = D.length; t-- && D[t].name !== e;); if (0 <= t) { for (n = D.length - 1; t <= n; n--)(e = D[n]).valid && j(e.name); D.length = t } }, M = function(e, t, n, r, o) { var i, a, u, s, c; if (n = (t = t.toLowerCase()) in g ? t : O(n || r || o || ""), p && !m && 0 == (0 === (u = t).indexOf("data-") || 0 === u.indexOf("aria-"))) { if (!(i = b[t]) && y) { for (a = y.length; a-- && !(i = y[a]).pattern.test(t);); - 1 === a && (i = null) } if (!i) return; if (i.validValues && !(n in i.validValues)) return } if (P[t] && !F.allow_script_urls) { var l = n.replace(/[\s\u0000-\u001F]+/g, ""); try { l = decodeURIComponent(l) } catch (f) { l = unescape(l) } if (L.test(l)) return; if (c = l, !(s = F).allow_html_data_urls && (/^data:image\//i.test(c) ? !1 === s.allow_svg_data_urls && /^data:image\/svg\+xml/i.test(c) : /^data:/i.test(c))) return } m && (t in P || 0 === t.indexOf("on")) || (d.map[t] = n, d.push({ name: t, value: n })) }; for (S = new RegExp("<(?:(?:!--([\\w\\W]*?)--\x3e)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))", "g"), T = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g, s = U.getShortEndedElements(), E = F.self_closing_elements || U.getSelfClosingElements(), g = U.getBoolAttrs(), p = F.validate, u = F.remove_internals, _ = F.fix_self_closing, k = U.getSpecialElements(), N = e + ">"; t = S.exec(N);) { if (R < t.index && q(O(e.substr(R, t.index - R))), n = t[6])":" === (n = n.toLowerCase()).charAt(0) && (n = n.substr(1)), I(n); else if (n = t[7]) { if (t.index + t[0].length > e.length) { q(O(e.substr(t.index))), R = t.index + t[0].length; continue } if (":" === (n = n.toLowerCase()).charAt(0) && (n = n.substr(1)), c = n in s, _ && E[n] && 0 < D.length && D[D.length - 1].name === n && I(n), !p || (l = U.getElementRule(n))) { if (f = !0, p && (b = l.attributes, y = l.attributePatterns), (v = t[8]) ? ((m = -1 !== v.indexOf("data-mce-type")) && u && (f = !1), (d = []).map = {}, v.replace(T, M)) : (d = []).map = {}, p && !m) { if (C = l.attributesRequired, x = l.attributesDefault, w = l.attributesForced, l.removeEmptyAttrs && !d.length && (f = !1), w) for (o = w.length; o--;) a = (h = w[o]).name, "{$uid}" === (A = h.value) && (A = "mce_" + B++), d.map[a] = A, d.push({ name: a, value: A }); if (x) for (o = x.length; o--;)(a = (h = x[o]).name) in d.map || ("{$uid}" === (A = h.value) && (A = "mce_" + B++), d.map[a] = A, d.push({ name: a, value: A })); if (C) { for (o = C.length; o-- && !(C[o] in d.map);); - 1 === o && (f = !1) } if (h = d.map["data-mce-bogus"]) { if ("all" === h) { R = Gh(U, e, S.lastIndex), S.lastIndex = R; continue } f = !1 } } f && H(n, d, c) } else f = !1; if (r = k[n]) { r.lastIndex = R = t.index + t[0].length, (t = r.exec(e)) ? (f && (i = e.substr(R, t.index - R)), R = t.index + t[0].length) : (i = e.substr(R), R = e.length), f && (0 < i.length && q(i, !0), j(n)), S.lastIndex = R; continue } c || (v && v.indexOf("/") === v.length - 1 ? f && j(n) : D.push({ name: n, valid: f })) } else(n = t[1]) ? (">" === n.charAt(0) && (n = " " + n), F.allow_conditional_comments || "[if" !== n.substr(0, 3).toLowerCase() || (n = " " + n), z(n)) : (n = t[2]) ? V(n.replace(//g, "")) : (n = t[3]) ? W(n) : (n = t[4]) && $(n, t[5]); R = t.index + t[0].length } for (R < e.length && q(O(e.substr(R))), o = D.length - 1; 0 <= o; o--)(n = D[o]).valid && j(n.name) } } }(Jh || (Jh = {})).findEndTag = Gh; var Qh = Jh, Zh = function(e, t) { var n, r, o, i, a, u, s, c, l = t, f = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g, d = e.schema; for (u = e.getTempAttrs(), s = l, c = new RegExp(["\\s?(" + u.join("|") + ')="[^"]+"'].join("|"), "gi"), l = s.replace(c, ""), a = d.getShortEndedElements(); i = f.exec(l);) r = f.lastIndex, o = i[0].length, n = a[i[1]] ? r : Qh.findEndTag(d, l, r), l = l.substring(0, r - o) + l.substring(n), f.lastIndex = r - o; return Na(l) }, ev = { trimExternal: Zh, trimInternal: Zh }, tv = 0, nv = 2, rv = 1, ov = function(g, p) { var e = g.length + p.length + 2, h = new Array(e), v = new Array(e), c = function(e, t, n, r, o) { var i = l(e, t, n, r); if (null === i || i.start === t && i.diag === t - r || i.end === e && i.diag === e - n) for (var a = e, u = n; a < t || u < r;) a < t && u < r && g[a] === p[u] ? (o.push([0, g[a]]), ++a, ++u) : r - n < t - e ? (o.push([2, g[a]]), ++a) : (o.push([1, p[u]]), ++u); else { c(e, i.start, n, i.start - i.diag, o); for (var s = i.start; s < i.end; ++s) o.push([0, g[s]]); c(i.end, t, i.end - i.diag, r, o) } }, b = function(e, t, n, r) { for (var o = e; o - t < r && o < n && g[o] === p[o - t];)++o; return { start: e, end: o, diag: t } }, l = function(e, t, n, r) { var o = t - e, i = r - n; if (0 === o || 0 === i) return null; var a, u, s, c, l, f = o - i, d = i + o, m = (d % 2 == 0 ? d : d + 1) / 2; for (h[1 + m] = e, v[1 + m] = t + 1, a = 0; a <= m; ++a) { for (u = -a; u <= a; u += 2) { for (s = u + m, u === -a || u !== a && h[s - 1] < h[s + 1] ? h[s] = h[s + 1] : h[s] = h[s - 1] + 1, l = (c = h[s]) - e + n - u; c < t && l < r && g[c] === p[l];) h[s] = ++c, ++l; if (f % 2 != 0 && f - a <= u && u <= f + a && v[s - f] <= h[s]) return b(v[s - f], u + e - n, t, r) } for (u = f - a; u <= f + a; u += 2) { for (s = u + m - f, u === f - a || u !== f + a && v[s + 1] <= v[s - 1] ? v[s] = v[s + 1] - 1 : v[s] = v[s - 1], l = (c = v[s] - 1) - e + n - u; e <= c && n <= l && g[c] === p[l];) v[s] = c--, l--; if (f % 2 == 0 && -a <= u && u <= a && v[s] <= h[s + f]) return b(v[s], u + e - n, t, r) } } }, t = []; return c(0, g.length, 0, p.length, t), t }, iv = function(e) { return Do.isElement(e) ? e.outerHTML : Do.isText(e) ? $o.encodeRaw(e.data, !1) : Do.isComment(e) ? "\x3c!--" + e.data + "--\x3e" : "" }, av = function(e, t, n) { var r = function(e) { var t, n, r; for (r = document.createElement("div"), t = document.createDocumentFragment(), e && (r.innerHTML = e); n = r.firstChild;) t.appendChild(n); return t }(t); if (e.hasChildNodes() && n < e.childNodes.length) { var o = e.childNodes[n]; o.parentNode.insertBefore(r, o) } else e.appendChild(r) }, uv = function(e) { return jt.filter(jt.map(e.childNodes, iv), function(e) { return 0 < e.length }) }, sv = function(e, t) { var n, r, o, i = jt.map(t.childNodes, iv); return n = ov(i, e), r = t, o = 0, jt.each(n, function(e) { e[0] === tv ? o++ : e[0] === rv ? (av(r, e[1], o), o++) : e[0] === nv && function(e, t) { if (e.hasChildNodes() && t < e.childNodes.length) { var n = e.childNodes[t]; n.parentNode.removeChild(n) } }(r, o) }), t }, cv = function(e, t) { var n = (t || document).createElement("div"); return n.innerHTML = e, $r.children(er.fromDom(n)) }, lv = function(e) { return e.dom().innerHTML }, fv = lv, dv = function(e, t) { var n = $r.owner(e).dom(), r = er.fromDom(n.createDocumentFragment()), o = cv(t, n); Ai(r, o), Ri.empty(e), Ti.append(e, r) }, mv = Bi(A.none()), gv = function(e) { return { type: "fragmented", fragments: e, content: "", bookmark: null, beforeBookmark: null } }, pv = function(e) { return { type: "complete", fragments: null, content: e, bookmark: null, beforeBookmark: null } }, hv = function(e) { return "fragmented" === e.type ? e.fragments.join("") : e.content }, vv = function(e) { var t = er.fromTag("body", mv.get().getOrThunk(function() { var e = document.implementation.createHTMLDocument("undo"); return mv.set(A.some(e)), e })); return dv(t, hv(e)), F(Ki(t, "*[data-mce-bogus]"), Ri.unwrap), fv(t) }, bv = function(n) { var e, t, r; return e = uv(n.getBody()), -1 !== (t = (r = G(e, function(e) { var t = ev.trimInternal(n.serializer, e); return 0 < t.length ? [t] : [] })).join("")).indexOf("") ? gv(r) : pv(t) }, yv = function(e, t, n) { "fragmented" === t.type ? sv(t.fragments, e.getBody()) : e.setContent(t.content, { format: "raw" }), e.selection.moveToBookmark(n ? t.beforeBookmark : t.bookmark) }, Cv = function(e, t) { return !(!e || !t) && (r = t, hv(e) === hv(r) || (n = t, vv(e) === vv(n))); var n, r }; function xv(u) { var s, r, o = this, c = 0, l = [], t = 0, f = function() { return 0 === t }, i = function(e) { f() && (o.typing = e) }, d = function(e) { u.setDirty(e) }, a = function(e) { i(!1), o.add({}, e) }, n = function() { o.typing && (i(!1), o.add()) }; return u.on("init", function() { o.add() }), u.on("BeforeExecCommand", function(e) { var t = e.command; "Undo" !== t && "Redo" !== t && "mceRepaint" !== t && (n(), o.beforeChange()) }), u.on("ExecCommand", function(e) { var t = e.command; "Undo" !== t && "Redo" !== t && "mceRepaint" !== t && a(e) }), u.on("ObjectResizeStart Cut", function() { o.beforeChange() }), u.on("SaveContent ObjectResized blur", a), u.on("DragEnd", a), u.on("KeyUp", function(e) { var t = e.keyCode; e.isDefaultPrevented() || ((33 <= t && t <= 36 || 37 <= t && t <= 40 || 45 === t || e.ctrlKey) && (a(), u.nodeChanged()), 46 !== t && 8 !== t || u.nodeChanged(), r && o.typing && !1 === Cv(bv(u), l[0]) && (!1 === u.isDirty() && (d(!0), u.fire("change", { level: l[0], lastLevel: null })), u.fire("TypingUndo"), r = !1, u.nodeChanged())) }), u.on("KeyDown", function(e) { var t = e.keyCode; if (!e.isDefaultPrevented()) if (33 <= t && t <= 36 || 37 <= t && t <= 40 || 45 === t) o.typing && a(e); else { var n = e.ctrlKey && !e.altKey || e.metaKey; !(t < 16 || 20 < t) || 224 === t || 91 === t || o.typing || n || (o.beforeChange(), i(!0), o.add({}, e), r = !0) } }), u.on("MouseDown", function(e) { o.typing && a(e) }), u.on("input", function(e) { var t; e.inputType && ("insertReplacementText" === e.inputType || "insertText" === (t = e).inputType && null === t.data) && a(e) }), u.addShortcut("meta+z", "", "Undo"), u.addShortcut("meta+y,meta+shift+z", "", "Redo"), u.on("AddUndo Undo Redo ClearUndos", function(e) { e.isDefaultPrevented() || u.nodeChanged() }), o = { data: l, typing: !1, beforeChange: function() { f() && (s = $u.getUndoBookmark(u.selection)) }, add: function(e, t) { var n, r, o, i = u.settings; if (o = bv(u), e = e || {}, e = Yt.extend(e, o), !1 === f() || u.removed) return null; if (r = l[c], u.fire("BeforeAddUndo", { level: e, lastLevel: r, originalEvent: t }).isDefaultPrevented()) return null; if (r && Cv(r, e)) return null; if (l[c] && (l[c].beforeBookmark = s), i.custom_undo_redo_levels && l.length > i.custom_undo_redo_levels) { for (n = 0; n < l.length - 1; n++) l[n] = l[n + 1]; l.length--, c = l.length } e.bookmark = $u.getUndoBookmark(u.selection), c < l.length - 1 && (l.length = c + 1), l.push(e), c = l.length - 1; var a = { level: e, lastLevel: r, originalEvent: t }; return u.fire("AddUndo", a), 0 < c && (d(!0), u.fire("change", a)), e }, undo: function() { var e; return o.typing && (o.add(), o.typing = !1, i(!1)), 0 < c && (e = l[--c], yv(u, e, !0), d(!0), u.fire("undo", { level: e })), e }, redo: function() { var e; return c < l.length - 1 && (e = l[++c], yv(u, e, !1), d(!0), u.fire("redo", { level: e })), e }, clear: function() { l = [], c = 0, o.typing = !1, o.data = l, u.fire("ClearUndos") }, hasUndo: function() { return 0 < c || o.typing && l[0] && !Cv(bv(u), l[0]) }, hasRedo: function() { return c < l.length - 1 && !o.typing }, transact: function(e) { return n(), o.beforeChange(), o.ignore(e), o.add() }, ignore: function(e) { try { t++, e() } finally { t-- } }, extra: function(e, t) { var n, r; o.transact(e) && (r = l[c].bookmark, n = l[c - 1], yv(u, n, !0), o.transact(t) && (l[c - 1].beforeBookmark = r)) } } } var wv, Nv, Ev = vl.isEq, Sv = function(e, t, n) { var r = e.formatter.get(n); if (r) for (var o = 0; o < r.length; o++) if (!1 === r[o].inherit && e.dom.is(t, r[o].selector)) return !0; return !1 }, Tv = function(t, e, n, r) { var o = t.dom.getRoot(); return e !== o && (e = t.dom.getParent(e, function(e) { return !!Sv(t, e, n) || e.parentNode === o || !! _v(t, e, n, r, !0) }), _v(t, e, n, r)) }, kv = function(e, t, n) { return !!Ev(t, n.inline) || !! Ev(t, n.block) || (n.selector ? 1 === t.nodeType && e.is(t, n.selector) : void 0) }, Av = function(e, t, n, r, o, i) { var a, u, s, c = n[r]; if (n.onmatch) return n.onmatch(t, n, r); if (c) if ("undefined" == typeof c.length) { for (a in c) if (c.hasOwnProperty(a)) { if (u = "attributes" === r ? e.getAttrib(t, a) : vl.getStyle(e, t, a), o && !u && !n.exact) return; if ((!o || n.exact) && !Ev(u, vl.normalizeStyleValue(e, vl.replaceVars(c[a], i), a))) return } } else for (s = 0; s < c.length; s++) if ("attributes" === r ? e.getAttrib(t, c[s]) : vl.getStyle(e, t, c[s])) return n; return n }, _v = function(e, t, n, r, o) { var i, a, u, s, c = e.formatter.get(n), l = e.dom; if (c && t) for (a = 0; a < c.length; a++) if (i = c[a], kv(e.dom, t, i) && Av(l, t, i, "attributes", o, r) && Av(l, t, i, "styles", o, r)) { if (s = i.classes) for (u = 0; u < s.length; u++) if (!e.dom.hasClass(t, s[u])) return; return i } }, Rv = { matchNode: _v, matchName: kv, match: function(e, t, n, r) { var o; return r ? Tv(e, r, t, n) : (r = e.selection.getNode(), !! Tv(e, r, t, n) || !((o = e.selection.getStart()) === r || !Tv(e, o, t, n))) }, matchAll: function(r, o, i) { var e, a = [], u = {}; return e = r.selection.getStart(), r.dom.getParent(e, function(e) { var t, n; for (t = 0; t < o.length; t++) n = o[t], !u[n] && _v(r, e, n, i) && (u[n] = !0, a.push(n)) }, r.dom.getRoot()), a }, canApply: function(e, t) { var n, r, o, i, a, u = e.formatter.get(t), s = e.dom; if (u) for (n = e.selection.getStart(), r = vl.getParents(s, n), i = u.length - 1; 0 <= i; i--) { if (!(a = u[i].selector) || u[i].defaultBlock) return !0; for (o = r.length - 1; 0 <= o; o--) if (s.is(r[o], a)) return !0 } return !1 }, matchesUnInheritedFormatSelector: Sv }, Dv = function(e, t) { return e.splitText(t) }, Bv = function(e) { var t = e.startContainer, n = e.startOffset, r = e.endContainer, o = e.endOffset; return t === r && Do.isText(t) ? 0 < n && n < t.nodeValue.length && (t = (r = Dv(t, n)).previousSibling, n < o ? (t = r = Dv(r, o -= n).previousSibling, o = r.nodeValue.length, n = 0) : o = 0) : (Do.isText(t) && 0 < n && n < t.nodeValue.length && (t = Dv(t, n), n = 0), Do.isText(r) && 0 < o && o < r.nodeValue.length && (o = (r = Dv(r, o).previousSibling).nodeValue.length)), { startContainer: t, startOffset: n, endContainer: r, endOffset: o } }, Ov = wa, Pv = "_mce_caret", Lv = function(e) { return 0 < function(e) { for (var t = []; e;) { if (3 === e.nodeType && e.nodeValue !== Ov || 1 < e.childNodes.length) return []; 1 === e.nodeType && t.push(e), e = e.firstChild } return t }(e).length }, Iv = function(e) { var t; if (e) for (e = (t = new oo(e, e)).current(); e; e = t.next()) if (3 === e.nodeType) return e; return null }, Mv = function(e) { var t = er.fromTag("span"); return hr.setAll(t, { id: Pv, "data-mce-bogus": "1", "data-mce-type": "format-caret" }), e && Ti.append(t, er.fromText(Ov)), t }, Fv = function(e, t, n, r) { var o, i, a, u; o = t.getRng(!0), i = e.getParent(n, e.isBlock), Lv(n) ? (!1 !== r && (o.setStartBefore(n), o.setEndBefore(n)), e.remove(n)) : ((u = Iv(n)) && u.nodeValue.charAt(0) === Ov && u.deleteData(0, 1), a = u, o.startContainer === a && 0 < o.startOffset && o.setStart(a, o.startOffset - 1), o.endContainer === a && 0 < o.endOffset && o.setEnd(a, o.endOffset - 1), e.remove(n, !0)), i && e.isEmpty(i) && Jl(er.fromDom(i)), t.setRng(o) }, Uv = function(e, t, n, r, o) { if (r) Fv(t, n, r, o); else if (!(r = Xu(e, n.getStart()))) for (; r = t.get(Pv);) Fv(t, n, r, !1) }, zv = function(e, t, n) { var r = e.dom, o = r.getParent(n, ya.curry(vl.isTextBlock, e)); o && r.isEmpty(o) ? n.parentNode.replaceChild(t, n) : (Gl(er.fromDom(n)), r.isEmpty(n) ? n.parentNode.replaceChild(t, n) : r.insertAfter(t, n)) }, Vv = function(e, t) { return e.appendChild(t), t }, qv = function(e, t) { var n, r, o = (n = function(e, t) { return Vv(e, t.cloneNode(!1)) }, r = t, function(e, t) { for (var n = e.length - 1; 0 <= n; n--) t(e[n], n, e) }(e, function(e) { r = n(r, e) }), r); return Vv(o, o.ownerDocument.createTextNode(Ov)) }, Hv = function(e) { var i = e.dom, a = e.selection, u = e.getBody(); e.on("mouseup keydown", function(e) { var t, n, r, o; t = u, n = i, r = a, o = e.keyCode, Uv(t, n, r, null, !1), 8 === o && r.isCollapsed() && r.getStart().innerHTML === Ov && Uv(t, n, r, Xu(t, r.getStart())), 37 !== o && 39 !== o || Uv(t, n, r, Xu(t, r.getStart())) }) }, jv = function(e, t) { return e.schema.getTextInlineElements().hasOwnProperty(sr.name(t)) && !Ku(t.dom()) && !Do.isBogus(t.dom()) }, $v = {}, Wv = jt.filter, Kv = jt.each; Nv = function(e) { var t, n, r = e.selection.getRng(); t = Do.matchNodeNames("pre"), r.collapsed || (n = e.selection.getSelectedBlocks(), Kv(Wv(Wv(n, t), function(e) { return t(e.previousSibling) && -1 !== jt.indexOf(n, e.previousSibling) }), function(e) { var t, n; t = e.previousSibling, pn(n = e).remove(), pn(t).append("

").append(n.childNodes) })) }, $v[wv = "pre"] || ($v[wv] = []), $v[wv].push(Nv); var Xv = function(e, t) { Kv($v[e], function(e) { e(t) }) }, Yv = /^(src|href|style)$/, Gv = Yt.each, Jv = vl.isEq, Qv = function(e) { return /^(TH|TD)$/.test(e.nodeName) }, Zv = function(e, t, n) { var r, o, i; return r = t[n ? "startContainer" : "endContainer"], o = t[n ? "startOffset" : "endOffset"], Do.isElement(r) && (i = r.childNodes.length - 1, !n && o && o--, r = r.childNodes[i < o ? i : o]), Do.isText(r) && n && o >= r.nodeValue.length && (r = new oo(r, e.getBody()).next() || r), Do.isText(r) && !n && 0 === o && (r = new oo(r, e.getBody()).prev() || r), r }, eb = function(e, t, n, r) { var o = e.create(n, r); return t.parentNode.insertBefore(o, t), o.appendChild(t), o }, tb = function(e, t, n, r) { return !(t = vl.getNonWhiteSpaceSibling(t, n, r)) || "BR" === t.nodeName || e.isBlock(t) }, nb = function(e, n, r, o, i) { var t, a, u, s, c, l, f, d, m, g, p, h, v, b, y = e.dom; if (c = y, !(Jv(l = o, (f = n).inline) || Jv(l, f.block) || (f.selector ? Do.isElement(l) && c.is(l, f.selector) : void 0) || (s = o, n.links && "A" === s.tagName))) return !1; if ("all" !== n.remove) for (Gv(n.styles, function(e, t) { e = vl.normalizeStyleValue(y, vl.replaceVars(e, r), t), "number" == typeof t && (t = e, i = 0), (n.remove_similar || !i || Jv(vl.getStyle(y, i, t), e)) && y.setStyle(o, t, ""), u = 1 }), u && "" === y.getAttrib(o, "style") && (o.removeAttribute("style"), o.removeAttribute("data-mce-style")), Gv(n.attributes, function(e, t) { var n; if (e = vl.replaceVars(e, r), "number" == typeof t && (t = e, i = 0), !i || Jv(y.getAttrib(i, t), e)) { if ("class" === t && (e = y.getAttrib(o, t)) && (n = "", Gv(e.split(/\s+/), function(e) { /mce\-\w+/.test(e) && (n += (n ? " " : "") + e) }), n)) return void y.setAttrib(o, t, n); "class" === t && o.removeAttribute("className"), Yv.test(t) && o.removeAttribute("data-mce-" + t), o.removeAttribute(t) } }), Gv(n.classes, function(e) { e = vl.replaceVars(e, r), i && !y.hasClass(i, e) || y.removeClass(o, e) }), a = y.getAttribs(o), t = 0; t < a.length; t++) { var C = a[t].nodeName; if (0 !== C.indexOf("_") && 0 !== C.indexOf("data-")) return !1 } return "none" !== n.remove ? (d = e, g = n, h = (m = o).parentNode, v = d.dom, b = d.settings.forced_root_block, g.block && (b ? h === v.getRoot() && (g.list_block && Jv(m, g.list_block) || Gv(Yt.grep(m.childNodes), function(e) { vl.isValid(d, b, e.nodeName.toLowerCase()) ? p ? p.appendChild(e) : (p = eb(v, e, b), v.setAttribs(p, d.settings.forced_root_block_attrs)) : p = 0 })) : v.isBlock(m) && !v.isBlock(h) && (tb(v, m, !1) || tb(v, m.firstChild, !0, 1) || m.insertBefore(v.create("br"), m.firstChild), tb(v, m, !0) || tb(v, m.lastChild, !1, 1) || m.appendChild(v.create("br")))), g.selector && g.inline && !Jv(g.inline, m) || v.remove(m, 1), !0) : void 0 }, rb = nb, ob = function(s, c, l, e, f) { var t, n, d = s.formatter.get(c), m = d[0], a = !0, u = s.dom, r = s.selection, o = function(e) { var n, t, r, o, i, a, u = (n = s, t = e, r = c, o = l, i = f, Gv(vl.getParents(n.dom, t.parentNode).reverse(), function(e) { var t; a || "_start" === e.id || "_end" === e.id || (t = Rv.matchNode(n, e, r, o, i)) && !1 !== t.split && (a = e) }), a); return function(e, t, n, r, o, i, a, u) { var s, c, l, f, d, m, g = e.dom; if (n) { for (m = n.parentNode, s = r.parentNode; s && s !== m; s = s.parentNode) { for (c = g.clone(s, !1), d = 0; d < t.length; d++) if (nb(e, t[d], u, c, c)) { c = 0; break } c && (l && c.appendChild(l), f || (f = c), l = c) }!i || a.mixed && g.isBlock(n) || (r = g.split(n, r)), l && (o.parentNode.insertBefore(l, o), f.appendChild(o)) } return r }(s, d, u, e, e, !0, m, l) }, g = function(e) { var t, n, r, o, i; if (Do.isElement(e) && u.getContentEditable(e) && (o = a, a = "true" === u.getContentEditable(e), i = !0), t = Yt.grep(e.childNodes), a && !i) for (n = 0, r = d.length; n < r && !nb(s, d[n], l, e, e); n++); if (m.deep && t.length) { for (n = 0, r = t.length; n < r; n++) g(t[n]); i && (a = o) } }, i = function(e) { var t = u.get(e ? "_start" : "_end"), n = t[e ? "firstChild" : "lastChild"]; return ml(n) && (n = n[e ? "firstChild" : "lastChild"]), Do.isText(n) && 0 === n.data.length && (n = e ? t.previousSibling || t.nextSibling : t.nextSibling || t.previousSibling), u.remove(t, !0), n }, p = function(e) { var t, n, r = e.commonAncestorContainer; if (e = _l(s, e, d, !0), m.split) { if ((t = Zv(s, e, !0)) !== (n = Zv(s, e))) { if (/^(TR|TH|TD)$/.test(t.nodeName) && t.firstChild && (t = "TR" === t.nodeName ? t.firstChild.firstChild || t : t.firstChild || t), r && /^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName) && Qv(n) && n.firstChild && (n = n.firstChild || n), u.isChildOf(t, n) && t !== n && !u.isBlock(n) && !Qv(t) && !Qv(n)) return t = eb(u, t, "span", { id: "_start", "data-mce-type": "bookmark" }), o(t), void(t = i(!0)); t = eb(u, t, "span", { id: "_start", "data-mce-type": "bookmark" }), n = eb(u, n, "span", { id: "_end", "data-mce-type": "bookmark" }), o(t), o(n), t = i(!0), n = i() } else t = n = o(t); e.startContainer = t.parentNode ? t.parentNode : t, e.startOffset = u.nodeIndex(t), e.endContainer = n.parentNode ? n.parentNode : n, e.endOffset = u.nodeIndex(n) + 1 } Dl(u, e, function(e) { Gv(e, function(e) { g(e), Do.isElement(e) && "underline" === s.dom.getStyle(e, "text-decoration") && e.parentNode && "underline" === vl.getTextDecoration(u, e.parentNode) && nb(s, { deep: !1, exact: !0, inline: "span", styles: { textDecoration: "underline" } }, null, e) }) }) }; if (e) e.nodeType ? ((n = u.createRng()).setStartBefore(e), n.setEndAfter(e), p(n)) : p(e); else if ("false" !== u.getContentEditable(r.getNode())) r.isCollapsed() && m.inline && !u.select("td[data-mce-selected],th[data-mce-selected]").length ? function(e, t, n, r) { var o, i, a, u, s, c, l, f = e.dom, d = e.selection, m = [], g = d.getRng(); for (o = g.startContainer, i = g.startOffset, 3 === (s = o).nodeType && (i !== o.nodeValue.length && (u = !0), s = s.parentNode); s;) { if (Rv.matchNode(e, s, t, n, r)) { c = s; break } s.nextSibling && (u = !0), m.push(s), s = s.parentNode } if (c) if (u) { a = d.getBookmark(), g.collapse(!0); var p = _l(e, g, e.formatter.get(t), !0); p = Bv(p), e.formatter.remove(t, n, p), d.moveToBookmark(a) } else { l = Xu(e.getBody(), c); var h = Mv(!1).dom(), v = qv(m, h); zv(e, h, l || c), Fv(f, d, l, !1), d.setCursorLocation(v, 1), f.isEmpty(c) && f.remove(c) } }(s, c, l, f) : (t = $u.getPersistentBookmark(s.selection, !0), p(r.getRng()), r.moveToBookmark(t), m.inline && Rv.match(s, c, l, r.getStart()) && vl.moveStart(u, r, r.getRng()), s.nodeChanged()); else { e = r.getNode(); for (var h = 0, v = d.length; h < v && (!d[h].ceFalseOverride || !nb(s, d[h], l, e, e)); h++); } }, ib = Yt.each, ab = function(e) { return e && 1 === e.nodeType && !ml(e) && !Ku(e) && !Do.isBogus(e) }, ub = function(e, t) { var n; for (n = e; n; n = n[t]) { if (3 === n.nodeType && 0 !== n.nodeValue.length) return e; if (1 === n.nodeType && !ml(n)) return n } return e }, sb = function(e, t, n) { var r, o, i = new Yl(e); if (t && n && (t = ub(t, "previousSibling"), n = ub(n, "nextSibling"), i.compare(t, n))) { for (r = t.nextSibling; r && r !== n;) r = (o = r).nextSibling, t.appendChild(o); return e.remove(n), Yt.each(Yt.grep(n.childNodes), function(e) { t.appendChild(e) }), t } return n }, cb = function(e, t, n) { ib(e.childNodes, function(e) { ab(e) && (t(e) && n(e), e.hasChildNodes() && cb(e, t, n)) }) }, lb = function(n, e) { return b(function(e, t) { return !(!t || !vl.getStyle(n, t, e)) }, e) }, fb = function(r, e, t) { return b(function(e, t, n) { r.setStyle(n, e, t), "" === n.getAttribute("style") && n.removeAttribute("style"), db(r, n) }, e, t) }, db = function(e, t) { "SPAN" === t.nodeName && 0 === e.getAttribs(t).length && e.remove(t, !0) }, mb = function(e, t) { var n; 1 === t.nodeType && t.parentNode && 1 === t.parentNode.nodeType && (n = vl.getTextDecoration(e, t.parentNode), e.getStyle(t, "color") && n ? e.setStyle(t, "text-decoration", n) : e.getStyle(t, "text-decoration") === n && e.setStyle(t, "text-decoration", null)) }, gb = function(n, e, r, o) { ib(e, function(t) { ib(n.dom.select(t.inline, o), function(e) { ab(e) && rb(n, t, r, e, t.exact ? e : null) }), function(r, e, t) { if (e.clear_child_styles) { var n = e.links ? "*:not(a)" : "*"; ib(r.select(n, t), function(n) { ab(n) && ib(e.styles, function(e, t) { r.setStyle(n, t, "") }) }) } }(n.dom, t, o) }) }, pb = function(e, t, n, r) { (t.styles.color || t.styles.textDecoration) && (Yt.walk(r, b(mb, e), "childNodes"), mb(e, r)) }, hb = function(e, t, n, r) { t.styles && t.styles.backgroundColor && cb(r, lb(e, "fontSize"), fb(e, "backgroundColor", vl.replaceVars(t.styles.backgroundColor, n))) }, vb = function(e, t, n, r) { "sub" !== t.inline && "sup" !== t.inline || (cb(r, lb(e, "fontSize"), fb(e, "fontSize", "")), e.remove(e.select("sup" === t.inline ? "sub" : "sup", r), !0)) }, bb = function(e, t, n, r) { r && !1 !== t.merge_siblings && (r = sb(e, vl.getNonWhiteSpaceSibling(r), r), r = sb(e, r, vl.getNonWhiteSpaceSibling(r, !0))) }, yb = function(t, n, r, o, i) { Rv.matchNode(t, i.parentNode, r, o) && rb(t, n, o, i) || n.merge_with_parents && t.dom.getParent(i.parentNode, function(e) { if (Rv.matchNode(t, e, r, o)) return rb(t, n, o, i), !0 }) }, Cb = Yt.each, xb = function(g, p, h, r) { var e, t, v = g.formatter.get(p), b = v[0], o = !r && g.selection.isCollapsed(), i = g.dom, n = g.selection, y = function(n, e) { if (e = e || b, n) { if (e.onformat && e.onformat(n, e, h, r), Cb(e.styles, function(e, t) { i.setStyle(n, t, vl.replaceVars(e, h)) }), e.styles) { var t = i.getAttrib(n, "style"); t && n.setAttribute("data-mce-style", t) } Cb(e.attributes, function(e, t) { i.setAttrib(n, t, vl.replaceVars(e, h)) }), Cb(e.classes, function(e) { e = vl.replaceVars(e, h), i.hasClass(n, e) || i.addClass(n, e) }) } }, C = function(e, t) { var n = !1; return !!b.selector && (Cb(e, function(e) { if (!("collapsed" in e && e.collapsed !== o)) return i.is(t, e.selector) && !Ku(t) ? (y(t, e), !(n = !0)) : void 0 }), n) }, a = function(s, e, t, c) { var l, f, d = [], m = !0; l = b.inline || b.block, f = s.create(l), y(f), Dl(s, e, function(e) { var a, u = function(e) { var t, n, r, o; if (o = m, t = e.nodeName.toLowerCase(), n = e.parentNode.nodeName.toLowerCase(), 1 === e.nodeType && s.getContentEditable(e) && (o = m, m = "true" === s.getContentEditable(e), r = !0), vl.isEq(t, "br")) return a = 0, void(b.block && s.remove(e)); if (b.wrapper && Rv.matchNode(g, e, p, h)) a = 0; else { if (m && !r && b.block && !b.wrapper && vl.isTextBlock(g, t) && vl.isValid(g, n, l)) return e = s.rename(e, l), y(e), d.push(e), void(a = 0); if (b.selector) { var i = C(v, e); if (!b.inline || i) return void(a = 0) }!m || r || !vl.isValid(g, l, t) || !vl.isValid(g, n, l) || !c && 3 === e.nodeType && 1 === e.nodeValue.length && 65279 === e.nodeValue.charCodeAt(0) || Ku(e) || b.inline && s.isBlock(e) ? (a = 0, Cb(Yt.grep(e.childNodes), u), r && (m = o), a = 0) : (a || (a = s.clone(f, !1), e.parentNode.insertBefore(a, e), d.push(a)), a.appendChild(e)) } }; Cb(e, u) }), !0 === b.links && Cb(d, function(e) { var t = function(e) { "A" === e.nodeName && y(e, b), Cb(Yt.grep(e.childNodes), t) }; t(e) }), Cb(d, function(e) { var t, n, r, o, i, a = function(e) { var n = !1; return Cb(e.childNodes, function(e) { if ((t = e) && 1 === t.nodeType && !ml(t) && !Ku(t) && !Do.isBogus(t)) return n = e, !1; var t }), n }; n = 0, Cb(e.childNodes, function(e) { vl.isWhiteSpaceNode(e) || ml(e) || n++ }), t = n, !(1 < d.length) && s.isBlock(e) || 0 !== t ? (b.inline || b.wrapper) && (b.exact || 1 !== t || ((o = a(r = e)) && !ml(o) && Rv.matchName(s, o, b) && (i = s.clone(o, !1), y(i), s.replace(i, r, !0), s.remove(o, 1)), e = i || r), gb(g, v, h, e), yb(g, b, p, h, e), hb(s, b, h, e), vb(s, b, h, e), bb(s, b, h, e)) : s.remove(e, 1) }) }; if ("false" !== i.getContentEditable(n.getNode())) { if (b) { if (r) r.nodeType ? C(v, r) || ((t = i.createRng()).setStartBefore(r), t.setEndAfter(r), a(i, _l(g, t, v), 0, !0)) : a(i, r, 0, !0); else if (o && b.inline && !i.select("td[data-mce-selected],th[data-mce-selected]").length)! function(e, t, n) { var r, o, i, a, u, s, c = e.selection; a = (r = c.getRng(!0)).startOffset, s = r.startContainer.nodeValue, (o = Xu(e.getBody(), c.getStart())) && (i = Iv(o)); var l, f, d = /[^\s\u00a0\u00ad\u200b\ufeff]/; s && 0 < a && a < s.length && d.test(s.charAt(a)) && d.test(s.charAt(a - 1)) ? (u = c.getBookmark(), r.collapse(!0), r = _l(e, r, e.formatter.get(t)), r = Bv(r), e.formatter.apply(t, n, r), c.moveToBookmark(u)) : (o && i.nodeValue === Ov || (l = e.getDoc(), f = Mv(!0).dom(), i = (o = l.importNode(f, !0)).firstChild, r.insertNode(o), a = 1), e.formatter.apply(t, n, o), c.setCursorLocation(i, a)) }(g, p, h); else { var u = g.selection.getNode(); g.settings.forced_root_block || !v[0].defaultBlock || i.getParent(u, i.isBlock) || xb(g, v[0].defaultBlock), g.selection.setRng(rf(g.selection.getRng())), e = $u.getPersistentBookmark(g.selection, !0), a(i, _l(g, n.getRng(), v)), b.styles && pb(i, b, h, u), n.moveToBookmark(e), vl.moveStart(i, n, n.getRng()), g.nodeChanged() } Xv(p, g) } } else { r = n.getNode(); for (var s = 0, c = v.length; s < c; s++) if (v[s].ceFalseOverride && i.is(r, v[s].selector)) return void y(r, v[s]) } }, wb = { applyFormat: xb }, Nb = Yt.each, Eb = function(e, t, n, r, o) { var i, a, u, s, c, l, f, d; null === t.get() && (a = e, u = {}, (i = t).set({}), a.on("NodeChange", function(n) { var r = vl.getParents(a.dom, n.element), o = {}; r = Yt.grep(r, function(e) { return 1 === e.nodeType && !e.getAttribute("data-mce-bogus") }), Nb(i.get(), function(e, n) { Nb(r, function(t) { return a.formatter.matchNode(t, n, {}, e.similar) ? (u[n] || (Nb(e, function(e) { e(!0, { node: t, format: n, parents: r }) }), u[n] = e), o[n] = e, !1) : !Rv.matchesUnInheritedFormatSelector(a, t, n) && void 0 }) }), Nb(u, function(e, t) { o[t] || (delete u[t], Nb(e, function(e) { e(!1, { node: n.element, format: t, parents: r }) })) }) })), c = n, l = r, f = o, d = (s = t).get(), Nb(c.split(","), function(e) { d[e] || (d[e] = [], d[e].similar = f), d[e].push(l) }), s.set(d) }, Sb = { get: function(r) { var t = { valigntop: [{ selector: "td,th", styles: { verticalAlign: "top" } }], valignmiddle: [{ selector: "td,th", styles: { verticalAlign: "middle" } }], valignbottom: [{ selector: "td,th", styles: { verticalAlign: "bottom" } }], alignleft: [{ selector: "figure.image", collapsed: !1, classes: "align-left", ceFalseOverride: !0, preview: "font-family font-size" }, { selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li", styles: { textAlign: "left" }, inherit: !1, preview: !1, defaultBlock: "div" }, { selector: "img,table", collapsed: !1, styles: { "float": "left" }, preview: "font-family font-size" }], aligncenter: [{ selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li", styles: { textAlign: "center" }, inherit: !1, preview: "font-family font-size", defaultBlock: "div" }, { selector: "figure.image", collapsed: !1, classes: "align-center", ceFalseOverride: !0, preview: "font-family font-size" }, { selector: "img", collapsed: !1, styles: { display: "block", marginLeft: "auto", marginRight: "auto" }, preview: !1 }, { selector: "table", collapsed: !1, styles: { marginLeft: "auto", marginRight: "auto" }, preview: "font-family font-size" }], alignright: [{ selector: "figure.image", collapsed: !1, classes: "align-right", ceFalseOverride: !0, preview: "font-family font-size" }, { selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li", styles: { textAlign: "right" }, inherit: !1, preview: "font-family font-size", defaultBlock: "div" }, { selector: "img,table", collapsed: !1, styles: { "float": "right" }, preview: "font-family font-size" }], alignjustify: [{ selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li", styles: { textAlign: "justify" }, inherit: !1, defaultBlock: "div", preview: "font-family font-size" }], bold: [{ inline: "strong", remove: "all" }, { inline: "span", styles: { fontWeight: "bold" } }, { inline: "b", remove: "all" }], italic: [{ inline: "em", remove: "all" }, { inline: "span", styles: { fontStyle: "italic" } }, { inline: "i", remove: "all" }], underline: [{ inline: "span", styles: { textDecoration: "underline" }, exact: !0 }, { inline: "u", remove: "all" }], strikethrough: [{ inline: "span", styles: { textDecoration: "line-through" }, exact: !0 }, { inline: "strike", remove: "all" }], forecolor: { inline: "span", styles: { color: "%value" }, links: !0, remove_similar: !0, clear_child_styles: !0 }, hilitecolor: { inline: "span", styles: { backgroundColor: "%value" }, links: !0, remove_similar: !0, clear_child_styles: !0 }, fontname: { inline: "span", toggle: !1, styles: { fontFamily: "%value" }, clear_child_styles: !0 }, fontsize: { inline: "span", toggle: !1, styles: { fontSize: "%value" }, clear_child_styles: !0 }, fontsize_class: { inline: "span", attributes: { "class": "%value" } }, blockquote: { block: "blockquote", wrapper: 1, remove: "all" }, subscript: { inline: "sub" }, superscript: { inline: "sup" }, code: { inline: "code" }, link: { inline: "a", selector: "a", remove: "all", split: !0, deep: !0, onmatch: function() { return !0 }, onformat: function(n, e, t) { Yt.each(t, function(e, t) { r.setAttrib(n, t, e) }) } }, removeformat: [{ selector: "b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins", remove: "all", split: !0, expand: !1, block_expand: !0, deep: !0 }, { selector: "span", attributes: ["style", "class"], remove: "empty", split: !0, expand: !1, deep: !0 }, { selector: "*", attributes: ["style", "class"], split: !1, expand: !1, deep: !0 }] }; return Yt.each("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/), function(e) { t[e] = { block: e, remove: "all" } }), t } }, Tb = Yt.each, kb = pi.DOM, Ab = function(e, t) { var n, o, r, m = t && t.schema || ni({}), g = function(e) { var t, n, r; return o = "string" == typeof e ? { name: e, classes: [], attrs: {} } : e, t = kb.create(o.name), n = t, (r = o).classes.length && kb.addClass(n, r.classes.join(" ")), kb.setAttribs(n, r.attrs), t }, p = function(n, e, t) { var r, o, i, a, u, s, c, l, f = 0 < e.length && e[0], d = f && f.name; if (u = d, s = "string" != typeof(a = n) ? a.nodeName.toLowerCase() : a, c = m.getElementRule(s), i = !(!(l = c && c.parentsRequired) || !l.length) && (u && -1 !== Yt.inArray(l, u) ? u : l[0])) d === i ? (o = e[0], e = e.slice(1)) : o = i; else if (f) o = e[0], e = e.slice(1); else if (!t) return n; return o && (r = g(o)).appendChild(n), t && (r || (r = kb.create("div")).appendChild(n), Yt.each(t, function(e) { var t = g(e); r.insertBefore(t, n) })), p(r, e, o && o.siblings) }; return e && e.length ? (o = e[0], n = g(o), (r = kb.create("div")).appendChild(p(n, e.slice(1), o.siblings)), r) : "" }, _b = function(e) { var t, a = { classes: [], attrs: {} }; return "*" !== (e = a.selector = Yt.trim(e)) && (t = e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g, function(e, t, n, r, o) { switch (t) { case "#": a.attrs.id = n; break; case ".": a.classes.push(n); break; case ":": -1 !== Yt.inArray("checked disabled enabled read-only required".split(" "), n) && (a.attrs[n] = n) } if ("[" === r) { var i = o.match(/([\w\-]+)(?:\=\"([^\"]+))?/); i && (a.attrs[i[1]] = i[2]) } return "" })), a.name = t || "div", a }, Rb = function(e) { return e && "string" == typeof e ? (e = (e = e.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g, "$1"), Yt.map(e.split(/(?:>|\s+(?![^\[\]]+\]))/), function(e) { var t = Yt.map(e.split(/(?:~\+|~|\+)/), _b), n = t.pop(); return t.length && (n.siblings = t), n }).reverse()) : [] }, Db = function(n, e) { var t, r, o, i, a, u, s = ""; if (!1 === (u = n.settings.preview_styles)) return ""; "string" != typeof u && (u = "font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"); var c = function(e) { return e.replace(/%(\w+)/g, "") }; if ("string" == typeof e) { if (!(e = n.formatter.get(e))) return; e = e[0] } return "preview" in e && !1 === (u = e.preview) ? "" : (t = e.block || e.inline || "span", (i = Rb(e.selector)).length ? (i[0].name || (i[0].name = t), t = e.selector, r = Ab(i, n)) : r = Ab([t], n), o = kb.select(t, r)[0] || r.firstChild, Tb(e.styles, function(e, t) { (e = c(e)) && kb.setStyle(o, t, e) }), Tb(e.attributes, function(e, t) { (e = c(e)) && kb.setAttrib(o, t, e) }), Tb(e.classes, function(e) { e = c(e), kb.hasClass(o, e) || kb.addClass(o, e) }), n.fire("PreviewFormats"), kb.setStyles(r, { position: "absolute", left: -65535 }), n.getBody().appendChild(r), a = kb.getStyle(n.getBody(), "fontSize", !0), a = /px$/.test(a) ? parseInt(a, 10) : 0, Tb(u.split(" "), function(e) { var t = kb.getStyle(o, e, !0); if (!("background-color" === e && /transparent|rgba\s*\([^)]+,\s*0\)/.test(t) && (t = kb.getStyle(n.getBody(), e, !0), "#ffffff" === kb.toHex(t).toLowerCase()) || "color" === e && "#000000" === kb.toHex(t).toLowerCase())) { if ("font-size" === e && /em|%$/.test(t)) { if (0 === a) return; t = parseFloat(t) / (/%$/.test(t) ? 100 : 1) * a + "px" } "border" === e && t && (s += "padding:0 2px;"), s += e + ":" + t + ";" } }), n.fire("AfterPreviewFormats"), kb.remove(r), s) }, Bb = function(e, t, n, r, o) { var i = t.get(n); !Rv.match(e, n, r, o) || "toggle" in i[0] && !i[0].toggle ? wb.applyFormat(e, n, r, o) : ob(e, n, r, o) }, Ob = function(e) { e.addShortcut("meta+b", "", "Bold"), e.addShortcut("meta+i", "", "Italic"), e.addShortcut("meta+u", "", "Underline"); for (var t = 1; t <= 6; t++) e.addShortcut("access+" + t, "", ["FormatBlock", !1, "h" + t]); e.addShortcut("access+7", "", ["FormatBlock", !1, "p"]), e.addShortcut("access+8", "", ["FormatBlock", !1, "div"]), e.addShortcut("access+9", "", ["FormatBlock", !1, "address"]) }; function Pb(e) { var t, n, r, o = (t = e, n = {}, (r = function(e, t) { e && ("string" != typeof e ? Yt.each(e, function(e, t) { r(t, e) }) : (t = t.length ? t : [t], Yt.each(t, function(e) { "undefined" == typeof e.deep && (e.deep = !e.selector), "undefined" == typeof e.split && (e.split = !e.selector || e.inline), "undefined" == typeof e.remove && e.selector && !e.inline && (e.remove = "none"), e.selector && e.inline && (e.mixed = !0, e.block_expand = !0), "string" == typeof e.classes && (e.classes = e.classes.split(/\s+/)) }), n[e] = t)) })(Sb.get(t.dom)), r(t.settings.formats), { get: function(e) { return e ? n[e] : n }, register: r, unregister: function(e) { return e && n[e] && delete n[e], n } }), i = Bi(null); return Ob(e), Hv(e), { get: o.get, register: o.register, unregister: o.unregister, apply: b(wb.applyFormat, e), remove: b(ob, e), toggle: b(Bb, e, o), match: b(Rv.match, e), matchAll: b(Rv.matchAll, e), matchNode: b(Rv.matchNode, e), canApply: b(Rv.canApply, e), formatChanged: b(Eb, e, i), getCssText: b(Db, e) } } var Lb, Ib = Object.prototype.hasOwnProperty, Mb = (Lb = function(e, t) { return t }, function() { for (var e = new Array(arguments.length), t = 0; t < e.length; t++) e[t] = arguments[t]; if (0 === e.length) throw new Error("Can't merge zero objects"); for (var n = {}, r = 0; r < e.length; r++) { var o = e[r]; for (var i in o) Ib.call(o, i) && (n[i] = Lb(n[i], o[i])) } return n }), Fb = { register: function(t, s, c) { t.addAttributeFilter("data-mce-tabindex", function(e, t) { for (var n, r = e.length; r--;)(n = e[r]).attr("tabindex", n.attributes.map["data-mce-tabindex"]), n.attr(t, null) }), t.addAttributeFilter("src,href,style", function(e, t) { for (var n, r, o = e.length, i = "data-mce-" + t, a = s.url_converter, u = s.url_converter_scope; o--;)(r = (n = e[o]).attributes.map[i]) !== undefined ? (n.attr(t, 0 < r.length ? r : null), n.attr(i, null)) : (r = n.attributes.map[t], "style" === t ? r = c.serializeStyle(c.parseStyle(r), n.name) : a && (r = a.call(u, r, t, n.name)), n.attr(t, 0 < r.length ? r : null)) }), t.addAttributeFilter("class", function(e) { for (var t, n, r = e.length; r--;)(n = (t = e[r]).attr("class")) && (n = t.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g, ""), t.attr("class", 0 < n.length ? n : null)) }), t.addAttributeFilter("data-mce-type", function(e, t, n) { for (var r, o = e.length; o--;)"bookmark" !== (r = e[o]).attributes.map["data-mce-type"] || n.cleanup || r.remove() }), t.addNodeFilter("noscript", function(e) { for (var t, n = e.length; n--;)(t = e[n].firstChild) && (t.value = $o.decode(t.value)) }), t.addNodeFilter("script,style", function(e, t) { for (var n, r, o, i = e.length, a = function(e) { return e.replace(/()/g, "\n").replace(/^[\r\n]*|[\r\n]*$/g, "").replace(/^\s*(()?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, "") }; i--;) r = (n = e[i]).firstChild ? n.firstChild.value : "", "script" === t ? ((o = n.attr("type")) && n.attr("type", "mce-no/type" === o ? null : o.replace(/^mce\-/, "")), "xhtml" === s.element_format && 0 < r.length && (n.firstChild.value = "// ")) : "xhtml" === s.element_format && 0 < r.length && (n.firstChild.value = "\x3c!--\n" + a(r) + "\n--\x3e") }), t.addNodeFilter("#comment", function(e) { for (var t, n = e.length; n--;) 0 === (t = e[n]).value.indexOf("[CDATA[") ? (t.name = "#cdata", t.type = 4, t.value = t.value.replace(/^\[CDATA\[|\]\]$/g, "")) : 0 === t.value.indexOf("mce:protected ") && (t.name = "#text", t.type = 3, t.raw = !0, t.value = unescape(t.value).substr(14)) }), t.addNodeFilter("xml:namespace,input", function(e, t) { for (var n, r = e.length; r--;) 7 === (n = e[r]).type ? n.remove() : 1 === n.type && ("input" !== t || "type" in n.attributes.map || n.attr("type", "text")) }), t.addAttributeFilter("data-mce-type", function(e) { F(e, function(e) { "format-caret" === e.attr("data-mce-type") && (e.isEmpty(t.schema.getNonEmptyElements()) ? e.remove() : e.unwrap()) }) }), t.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize", function(e, t) { for (var n = e.length; n--;) e[n].attr(t, null) }) }, trimTrailingBr: function(e) { var t, n, r = function(e) { return e && "br" === e.name }; r(t = e.lastChild) && r(n = t.prev) && (t.remove(), n.remove()) } }, Ub = { process: function(e, t, n) { return f = n, (l = e) && l.hasEventListeners("PreProcess") && !f.no_events ? (o = t, i = n, c = (r = e).dom, o = o.cloneNode(!0), (a = document.implementation).createHTMLDocument && (u = a.createHTMLDocument(""), Yt.each("BODY" === o.nodeName ? o.childNodes : [o], function(e) { u.body.appendChild(u.importNode(e, !0)) }), o = "BODY" !== o.nodeName ? u.body.firstChild : u.body, s = c.doc, c.doc = u), $g(r, Mb(i, { node: o })), s && (c.doc = s), o) : t; var r, o, i, a, u, s, c, l, f } }, zb = function(e, a, u) { e.addNodeFilter("font", function(e) { F(e, function(e) { var t, n = a.parse(e.attr("style")), r = e.attr("color"), o = e.attr("face"), i = e.attr("size"); r && (n.color = r), o && (n["font-family"] = o), i && (n["font-size"] = u[parseInt(e.attr("size"), 10) - 1]), e.name = "span", e.attr("style", a.serialize(n)), t = e, F(["color", "face", "size"], function(e) { t.attr(e, null) }) }) }) }, Vb = function(e, t) { var n, r = oi(); t.convert_fonts_to_spans && zb(e, r, Yt.explode(t.font_size_legacy_values)), n = r, e.addNodeFilter("strike", function(e) { F(e, function(e) { var t = n.parse(e.attr("style")); t["text-decoration"] = "line-through", e.name = "span", e.attr("style", n.serialize(t)) }) }) }, qb = { register: function(e, t) { t.inline_styles && Vb(e, t) } }, Hb = /^[ \t\r\n]*$/, jb = { "#text": 3, "#comment": 8, "#cdata": 4, "#pi": 7, "#doctype": 10, "#document-fragment": 11 }, $b = function(e, t, n) { var r, o, i = n ? "lastChild" : "firstChild", a = n ? "prev" : "next"; if (e[i]) return e[i]; if (e !== t) { if (r = e[a]) return r; for (o = e.parent; o && o !== t; o = o.parent) if (r = o[a]) return r } }, Wb = function() { function a(e, t) { this.name = e, 1 === (this.type = t) && (this.attributes = [], this.attributes.map = {}) } return a.create = function(e, t) { var n, r; if (n = new a(e, jb[e] || 1), t) for (r in t) n.attr(r, t[r]); return n }, a.prototype.replace = function(e) { return e.parent && e.remove(), this.insert(e, this), this.remove(), this }, a.prototype.attr = function(e, t) { var n, r; if ("string" != typeof e) { for (r in e) this.attr(r, e[r]); return this } if (n = this.attributes) { if (t !== undefined) { if (null === t) { if (e in n.map) for (delete n.map[e], r = n.length; r--;) if (n[r].name === e) return n = n.splice(r, 1), this; return this } if (e in n.map) { for (r = n.length; r--;) if (n[r].name === e) { n[r].value = t; break } } else n.push({ name: e, value: t }); return n.map[e] = t, this } return n.map[e] } }, a.prototype.clone = function() { var e, t, n, r, o, i = new a(this.name, this.type); if (n = this.attributes) { for ((o = []).map = {}, e = 0, t = n.length; e < t; e++)"id" !== (r = n[e]).name && (o[o.length] = { name: r.name, value: r.value }, o.map[r.name] = r.value); i.attributes = o } return i.value = this.value, i.shortEnded = this.shortEnded, i }, a.prototype.wrap = function(e) { return this.parent.insert(e, this), e.append(this), this }, a.prototype.unwrap = function() { var e, t; for (e = this.firstChild; e;) t = e.next, this.insert(e, this, !0), e = t; this.remove() }, a.prototype.remove = function() { var e = this.parent, t = this.next, n = this.prev; return e && (e.firstChild === this ? (e.firstChild = t) && (t.prev = null) : n.next = t, e.lastChild === this ? (e.lastChild = n) && (n.next = null) : t.prev = n, this.parent = this.next = this.prev = null), this }, a.prototype.append = function(e) { var t; return e.parent && e.remove(), (t = this.lastChild) ? ((t.next = e).prev = t, this.lastChild = e) : this.lastChild = this.firstChild = e, e.parent = this, e }, a.prototype.insert = function(e, t, n) { var r; return e.parent && e.remove(), r = t.parent || this, n ? (t === r.firstChild ? r.firstChild = e : t.prev.next = e, e.prev = t.prev, (e.next = t).prev = e) : (t === r.lastChild ? r.lastChild = e : t.next.prev = e, e.next = t.next, (e.prev = t).next = e), e.parent = r, e }, a.prototype.getAll = function(e) { var t, n = []; for (t = this.firstChild; t; t = $b(t, this)) t.name === e && n.push(t); return n }, a.prototype.empty = function() { var e, t, n; if (this.firstChild) { for (e = [], n = this.firstChild; n; n = $b(n, this)) e.push(n); for (t = e.length; t--;)(n = e[t]).parent = n.firstChild = n.lastChild = n.next = n.prev = null } return this.firstChild = this.lastChild = null, this }, a.prototype.isEmpty = function(e, t, n) { var r, o, i = this.firstChild; if (t = t || {}, i) do { if (1 === i.type) { if (i.attributes.map["data-mce-bogus"]) continue; if (e[i.name]) return !1; for (r = i.attributes.length; r--;) if ("name" === (o = i.attributes[r].name) || 0 === o.indexOf("data-mce-bookmark")) return !1 } if (8 === i.type) return !1; if (3 === i.type && !Hb.test(i.value)) return !1; if (3 === i.type && i.parent && t[i.parent.name] && Hb.test(i.value)) return !1; if (n && n(i)) return !1 } while (i = $b(i, this)); return !0 }, a.prototype.walk = function(e) { return $b(this, null, e) }, a }(), Kb = function(e, t, n, r) { (e.padd_empty_with_br || t.insert) && n[r.name] ? r.empty().append(new Wb("br", 1)).shortEnded = !0 : r.empty().append(new Wb("#text", 3)).value = "\xa0" }, Xb = function(e) { return Yb(e, "#text") && "\xa0" === e.firstChild.value }, Yb = function(e, t) { return e && e.firstChild && e.firstChild === e.lastChild && e.firstChild.name === t }, Gb = function(r, e, t, n) { return n.isEmpty(e, t, function(e) { return t = e, (n = r.getElementRule(t.name)) && n.paddEmpty; var t, n }) }, Jb = function(e, t) { return e && (t[e.name] || "br" === e.name) }, Qb = function(e, p) { var h = e.schema; p.remove_trailing_brs && e.addNodeFilter("br", function(e, t, n) { var r, o, i, a, u, s, c, l, f = e.length, d = Yt.extend({}, h.getBlockElements()), m = h.getNonEmptyElements(), g = h.getNonEmptyElements(); for (d.body = 1, r = 0; r < f; r++) if (i = (o = e[r]).parent, d[o.parent.name] && o === i.lastChild) { for (u = o.prev; u;) { if ("span" !== (s = u.name) || "bookmark" !== u.attr("data-mce-type")) { if ("br" !== s) break; if ("br" === s) { o = null; break } } u = u.prev } o && (o.remove(), Gb(h, m, g, i) && (c = h.getElementRule(i.name)) && (c.removeEmpty ? i.remove() : c.paddEmpty && Kb(p, n, d, i))) } else { for (a = o; i && i.firstChild === a && i.lastChild === a && !d[(a = i).name];) i = i.parent; a === i && !0 !== p.padd_empty_with_br && ((l = new Wb("#text", 3)).value = "\xa0", o.replace(l)) } }), e.addAttributeFilter("href", function(e) { var t, n, r, o = e.length; if (!p.allow_unsafe_link_target) for (; o--;)"a" === (t = e[o]).name && "_blank" === t.attr("target") && t.attr("rel", (n = t.attr("rel"), r = n ? Yt.trim(n) : "", /\b(noopener)\b/g.test(r) ? r : r.split(" ").filter(function(e) { return 0 < e.length }).concat(["noopener"]).sort().join(" "))) }), p.allow_html_in_named_anchor || e.addAttributeFilter("id,name", function(e) { for (var t, n, r, o, i = e.length; i--;) if ("a" === (o = e[i]).name && o.firstChild && !o.attr("href")) for (r = o.parent, t = o.lastChild; n = t.prev, r.insert(t, o), t = n;); }), p.fix_list_elements && e.addNodeFilter("ul,ol", function(e) { for (var t, n, r = e.length; r--;) if ("ul" === (n = (t = e[r]).parent).name || "ol" === n.name) if (t.prev && "li" === t.prev.name) t.prev.append(t); else { var o = new Wb("li", 1); o.attr("style", "list-style-type: none"), t.wrap(o) } }), p.validate && h.getValidClasses() && e.addAttributeFilter("class", function(e) { for (var t, n, r, o, i, a, u, s = e.length, c = h.getValidClasses(); s--;) { for (n = (t = e[s]).attr("class").split(" "), i = "", r = 0; r < n.length; r++) o = n[r], u = !1, (a = c["*"]) && a[o] && (u = !0), a = c[t.name], !u && a && a[o] && (u = !0), u && (i && (i += " "), i += o); i.length || (i = null), t.attr("class", i) } }) }, Zb = Yt.makeMap, ey = Yt.each, ty = Yt.explode, ny = Yt.extend; function ry(T, k) { void 0 === k && (k = ni()); var A = {}, _ = [], R = {}, D = {}; (T = T || {}).validate = !("validate" in T) || T.validate, T.root_name = T.root_name || "body"; var B = function(e) { var t, n, r; n in A && ((r = R[n]) ? r.push(e) : R[n] = [e]), t = _.length; for (; t--;)(n = _[t].name) in e.attributes.map && ((r = D[n]) ? r.push(e) : D[n] = [e]); return e }, e = { schema: k, addAttributeFilter: function(e, n) { ey(ty(e), function(e) { var t; for (t = 0; t < _.length; t++) if (_[t].name === e) return void _[t].callbacks.push(n); _.push({ name: e, callbacks: [n] }) }) }, getAttributeFilters: function() { return [].concat(_) }, addNodeFilter: function(e, n) { ey(ty(e), function(e) { var t = A[e]; t || (A[e] = t = []), t.push(n) }) }, getNodeFilters: function() { var e = []; for (var t in A) A.hasOwnProperty(t) && e.push({ name: t, callbacks: A[t] }); return e }, filterNode: B, parse: function(e, a) { var t, n, r, o, i, u, s, c, l, f, d, m = []; a = a || {}, R = {}, D = {}, l = ny(Zb("script,style,head,html,body,title,meta,param"), k.getBlockElements()); var g = k.getNonEmptyElements(), p = k.children, h = T.validate, v = "forced_root_block" in a ? a.forced_root_block : T.forced_root_block, b = k.getWhiteSpaceElements(), y = /^[ \t\r\n]+/, C = /[ \t\r\n]+$/, x = /[ \t\r\n]+/g, w = /^[ \t\r\n]+$/; f = b.hasOwnProperty(a.context) || b.hasOwnProperty(T.root_name); var N = function(e, t) { var n, r = new Wb(e, t); return e in A && ((n = R[e]) ? n.push(r) : R[e] = [r]), r }, E = function(e) { var t, n, r, o, i = k.getBlockElements(); for (t = e.prev; t && 3 === t.type;) { if (0 < (r = t.value.replace(C, "")).length) return void(t.value = r); if (n = t.next) { if (3 === n.type && n.value.length) { t = t.prev; continue } if (!i[n.name] && "script" !== n.name && "style" !== n.name) { t = t.prev; continue } } o = t.prev, t.remove(), t = o } }; t = Qh({ validate: h, allow_script_urls: T.allow_script_urls, allow_conditional_comments: T.allow_conditional_comments, self_closing_elements: function(e) { var t, n = {}; for (t in e)"li" !== t && "p" !== t && (n[t] = e[t]); return n }(k.getSelfClosingElements()), cdata: function(e) { d.append(N("#cdata", 4)).value = e }, text: function(e, t) { var n; f || (e = e.replace(x, " "), Jb(d.lastChild, l) && (e = e.replace(y, ""))), 0 !== e.length && ((n = N("#text", 3)).raw = !! t, d.append(n).value = e) }, comment: function(e) { d.append(N("#comment", 8)).value = e }, pi: function(e, t) { d.append(N(e, 7)).value = t, E(d) }, doctype: function(e) { d.append(N("#doctype", 10)).value = e, E(d) }, start: function(e, t, n) { var r, o, i, a, u; if (i = h ? k.getElementRule(e) : {}) { for ((r = N(i.outputName || e, 1)).attributes = t, r.shortEnded = n, d.append(r), (u = p[d.name]) && p[r.name] && !u[r.name] && m.push(r), o = _.length; o--;)(a = _[o].name) in t.map && ((s = D[a]) ? s.push(r) : D[a] = [r]); l[e] && E(r), n || (d = r), !f && b[e] && (f = !0) } }, end: function(e) { var t, n, r, o, i; if (n = h ? k.getElementRule(e) : {}) { if (l[e] && !f) { if ((t = d.firstChild) && 3 === t.type) if (0 < (r = t.value.replace(y, "")).length) t.value = r, t = t.next; else for (o = t.next, t.remove(), t = o; t && 3 === t.type;) r = t.value, o = t.next, (0 === r.length || w.test(r)) && (t.remove(), t = o), t = o; if ((t = d.lastChild) && 3 === t.type) if (0 < (r = t.value.replace(C, "")).length) t.value = r, t = t.prev; else for (o = t.prev, t.remove(), t = o; t && 3 === t.type;) r = t.value, o = t.prev, (0 === r.length || w.test(r)) && (t.remove(), t = o), t = o } if (f && b[e] && (f = !1), n.removeEmpty && Gb(k, g, b, d) && !d.attributes.map.name && !d.attr("id")) return i = d.parent, l[d.name] ? d.empty().remove() : d.unwrap(), void(d = i); n.paddEmpty && (Xb(d) || Gb(k, g, b, d)) && Kb(T, a, l, d), d = d.parent } } }, k); var S = d = new Wb(a.context || T.root_name, 11); if (t.parse(e), h && m.length && (a.context ? a.invalid = !0 : function(e) { var t, n, r, o, i, a, u, s, c, l, f, d, m, g, p, h; for (d = Zb("tr,td,th,tbody,thead,tfoot,table"), l = k.getNonEmptyElements(), f = k.getWhiteSpaceElements(), m = k.getTextBlockElements(), g = k.getSpecialElements(), t = 0; t < e.length; t++) if ((n = e[t]).parent && !n.fixed) if (m[n.name] && "li" === n.parent.name) { for (p = n.next; p && m[p.name];) p.name = "li", p.fixed = !0, n.parent.insert(p, n.parent), p = p.next; n.unwrap(n) } else { for (o = [n], r = n.parent; r && !k.isValidChild(r.name, n.name) && !d[r.name]; r = r.parent) o.push(r); if (r && 1 < o.length) { for (o.reverse(), i = a = B(o[0].clone()), c = 0; c < o.length - 1; c++) { for (k.isValidChild(a.name, o[c].name) ? (u = B(o[c].clone()), a.append(u)) : u = a, s = o[c].firstChild; s && s !== o[c + 1];) h = s.next, u.append(s), s = h; a = u } Gb(k, l, f, i) ? r.insert(n, o[0], !0) : (r.insert(i, o[0], !0), r.insert(n, i)), r = o[0], (Gb(k, l, f, r) || Yb(r, "br")) && r.empty().remove() } else if (n.parent) { if ("li" === n.name) { if ((p = n.prev) && ("ul" === p.name || "ul" === p.name)) { p.append(n); continue } if ((p = n.next) && ("ul" === p.name || "ul" === p.name)) { p.insert(n, p.firstChild, !0); continue } n.wrap(B(new Wb("ul", 1))); continue } k.isValidChild(n.parent.name, "div") && k.isValidChild("div", n.name) ? n.wrap(B(new Wb("div", 1))) : g[n.name] ? n.empty().remove() : n.unwrap() } } }(m)), v && ("body" === S.name || a.isRootContent) && function() { var e, t, n = S.firstChild, r = function(e) { e && ((n = e.firstChild) && 3 === n.type && (n.value = n.value.replace(y, "")), (n = e.lastChild) && 3 === n.type && (n.value = n.value.replace(C, ""))) }; if (k.isValidChild(S.name, v.toLowerCase())) { for (; n;) e = n.next, 3 === n.type || 1 === n.type && "p" !== n.name && !l[n.name] && !n.attr("data-mce-type") ? (t || ((t = N(v, 1)).attr(T.forced_root_block_attrs), S.insert(t, n)), t.append(n)) : (r(t), t = null), n = e; r(t) } }(), !a.invalid) { for (c in R) { for (s = A[c], i = (n = R[c]).length; i--;) n[i].parent || n.splice(i, 1); for (r = 0, o = s.length; r < o; r++) s[r](n, c, a) } for (r = 0, o = _.length; r < o; r++) if ((s = _[r]).name in D) { for (i = (n = D[s.name]).length; i--;) n[i].parent || n.splice(i, 1); for (i = 0, u = s.callbacks.length; i < u; i++) s.callbacks[i](n, s.name, a) } } return S } }; return Qb(e, T), qb.register(e, T), e } var oy = function(e, t, n) { -1 === Yt.inArray(t, n) && (e.addAttributeFilter(n, function(e, t) { for (var n = e.length; n--;) e[n].attr(t, null) }), t.push(n)) }, iy = function(e, t, n) { var r = Na(n.getInner ? t.innerHTML : e.getOuterHTML(t)); return n.selection || Co(er.fromDom(t)) ? r : Yt.trim(r) }, ay = function(e, t, n) { var r = n.selection ? Mb({ forced_root_block: !1 }, n) : n, o = e.parse(t, r); return Fb.trimTrailingBr(o), o }, uy = function(e, t, n, r, o) { var i, a, u, s, c = (i = r, tf(t, n).serialize(i)); return a = e, s = c, !(u = o).no_events && a ? Wg(a, Mb(u, { content: s })).content : s }; function sy(e, t) { var a, u, s, c, l, n, r = (a = e, n = ["data-mce-selected"], s = (u = t) && u.dom ? u.dom : pi.DOM, c = u && u.schema ? u.schema : ni(a), a.entity_encoding = a.entity_encoding || "named", a.remove_trailing_brs = !("remove_trailing_brs" in a) || a.remove_trailing_brs, l = ry(a, c), Fb.register(l, a, s), { schema: c, addNodeFilter: l.addNodeFilter, addAttributeFilter: l.addAttributeFilter, serialize: function(e, t) { var n = Mb({ format: "html" }, t || {}), r = Ub.process(u, e, n), o = iy(s, r, n), i = ay(l, o, n); return "tree" === n.format ? i : uy(u, a, c, i, n) }, addRules: function(e) { c.addValidElements(e) }, setRules: function(e) { c.setValidElements(e) }, addTempAttr: b(oy, l, n), getTempAttrs: function() { return n } }); return { schema: r.schema, addNodeFilter: r.addNodeFilter, addAttributeFilter: r.addAttributeFilter, serialize: r.serialize, addRules: r.addRules, setRules: r.setRules, addTempAttr: r.addTempAttr, getTempAttrs: r.getTempAttrs } } function cy(e) { return { getBookmark: b(fl, e), moveToBookmark: b(dl, e) } }(cy || (cy = {})).isBookmarkNode = ml; var ly = cy, fy = Do.isContentEditableFalse, dy = Do.isContentEditableTrue, my = function(r, a) { var u, s, c, l, f, d, m, g, p, h, v, b, i, y, C, x, w, N = a.dom, E = Yt.each, S = a.getDoc(), T = document, k = Math.abs, A = Math.round, _ = a.getBody(); l = { nw: [0, 0, -1, -1], ne: [1, 0, 1, -1], se: [1, 1, 1, 1], sw: [0, 1, -1, 1] }; var e = ".mce-content-body"; a.contentStyles.push(e + " div.mce-resizehandle {position: absolute;border: 1px solid black;box-sizing: content-box;background: #FFF;width: 7px;height: 7px;z-index: 10000}" + e + " .mce-resizehandle:hover {background: #000}" + e + " img[data-mce-selected]," + e + " hr[data-mce-selected] {outline: 1px solid black;resize: none}" + e + " .mce-clonedresizable {position: absolute;" + (Re.gecko ? "" : "outline: 1px dashed black;") + "opacity: .5;filter: alpha(opacity=50);z-index: 10000}" + e + " .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}"); var R = function(e) { return e && ("IMG" === e.nodeName || a.dom.is(e, "figure.image")) }, n = function(e) { var t, n, r = e.target; t = e, n = a.selection.getRng(), !R(t.target) || Vh(t.clientX, t.clientY, n) || e.isDefaultPrevented() || (e.preventDefault(), a.selection.select(r)) }, D = function(e) { return a.dom.is(e, "figure.image") ? e.querySelector("img") : e }, B = function(e) { var t = a.settings.object_resizing; return !1 !== t && !Re.iOS && ("string" != typeof t && (t = "table,img,figure.image,div"), "false" !== e.getAttribute("data-mce-resize") && e !== a.getBody() && Lr.is(er.fromDom(e), t)) }, O = function(e) { var t, n, r, o; t = e.screenX - d, n = e.screenY - m, y = t * f[2] + h, C = n * f[3] + v, y = y < 5 ? 5 : y, C = C < 5 ? 5 : C, (R(u) && !1 !== a.settings.resize_img_proportional ? !Hh.modifierPressed(e) : Hh.modifierPressed(e) || R(u) && f[2] * f[3] != 0) && (k(t) > k(n) ? (C = A(y * b), y = A(C / b)) : (y = A(C / b), C = A(y * b))), N.setStyles(D(s), { width: y, height: C }), r = 0 < (r = f.startPos.x + t) ? r : 0, o = 0 < (o = f.startPos.y + n) ? o : 0, N.setStyles(c, { left: r, top: o, display: "block" }), c.innerHTML = y + " × " + C, f[2] < 0 && s.clientWidth <= y && N.setStyle(s, "left", g + (h - y)), f[3] < 0 && s.clientHeight <= C && N.setStyle(s, "top", p + (v - C)), (t = _.scrollWidth - x) + (n = _.scrollHeight - w) != 0 && N.setStyles(c, { left: r - t, top: o - n }), i || (Yg(a, u, h, v), i = !0) }, P = function() { i = !1; var e = function(e, t) { t && (u.style[e] || !a.schema.isValid(u.nodeName.toLowerCase(), e) ? N.setStyle(D(u), e, t) : N.setAttrib(D(u), e, t)) }; e("width", y), e("height", C), N.unbind(S, "mousemove", O), N.unbind(S, "mouseup", P), T !== S && (N.unbind(T, "mousemove", O), N.unbind(T, "mouseup", P)), N.remove(s), N.remove(c), o(u), Gg(a, u, y, C), N.setAttrib(u, "style", N.getAttrib(u, "style")), a.nodeChanged() }, o = function(e) { var t, r, o, n, i; L(), F(), t = N.getPos(e, _), g = t.x, p = t.y, i = e.getBoundingClientRect(), r = i.width || i.right - i.left, o = i.height || i.bottom - i.top, u !== e && (u = e, y = C = 0), n = a.fire("ObjectSelected", { target: e }), B(e) && !n.isDefaultPrevented() ? E(l, function(n, e) { var t; (t = N.get("mceResizeHandle" + e)) && N.remove(t), t = N.add(_, "div", { id: "mceResizeHandle" + e, "data-mce-bogus": "all", "class": "mce-resizehandle", unselectable: !0, style: "cursor:" + e + "-resize; margin:0; padding:0" }), 11 === Re.ie && (t.contentEditable = !1), N.bind(t, "mousedown", function(e) { var t; e.stopImmediatePropagation(), e.preventDefault(), d = (t = e).screenX, m = t.screenY, h = D(u).clientWidth, v = D(u).clientHeight, b = v / h, (f = n).startPos = { x: r * n[0] + g, y: o * n[1] + p }, x = _.scrollWidth, w = _.scrollHeight, s = u.cloneNode(!0), N.addClass(s, "mce-clonedresizable"), N.setAttrib(s, "data-mce-bogus", "all"), s.contentEditable = !1, s.unSelectabe = !0, N.setStyles(s, { left: g, top: p, margin: 0 }), s.removeAttribute("data-mce-selected"), _.appendChild(s), N.bind(S, "mousemove", O), N.bind(S, "mouseup", P), T !== S && (N.bind(T, "mousemove", O), N.bind(T, "mouseup", P)), c = N.add(_, "div", { "class": "mce-resize-helper", "data-mce-bogus": "all" }, h + " × " + v) }), n.elm = t, N.setStyles(t, { left: r * n[0] + g - t.offsetWidth / 2, top: o * n[1] + p - t.offsetHeight / 2 }) }) : L(), u.setAttribute("data-mce-selected", "1") }, L = function() { var e, t; for (e in F(), u && u.removeAttribute("data-mce-selected"), l)(t = N.get("mceResizeHandle" + e)) && (N.unbind(t), N.remove(t)) }, I = function(e) { var t, n = function(e, t) { if (e) do { if (e === t) return !0 } while (e = e.parentNode) }; i || a.removed || (E(N.select("img[data-mce-selected],hr[data-mce-selected]"), function(e) { e.removeAttribute("data-mce-selected") }), t = "mousedown" === e.type ? e.target : r.getNode(), n(t = N.$(t).closest("table,img,figure.image,hr")[0], _) && (U(), n(r.getStart(!0), t) && n(r.getEnd(!0), t)) ? o(t) : L()) }, M = function(e) { return fy(function(e, t) { for (; t && t !== e;) { if (dy(t) || fy(t)) return t; t = t.parentNode } return null }(a.getBody(), e)) }, F = function() { for (var e in l) { var t = l[e]; t.elm && (N.unbind(t.elm), delete t.elm) } }, U = function() { try { a.getDoc().execCommand("enableObjectResizing", !1, !1) } catch (e) {} }; return a.on("init", function() { U(), Re.ie && 11 <= Re.ie && (a.on("mousedown click", function(e) { var t = e.target, n = t.nodeName; i || !/^(TABLE|IMG|HR)$/.test(n) || M(t) || (2 !== e.button && a.selection.select(t, "TABLE" === n), "mousedown" === e.type && a.nodeChanged()) }), a.dom.bind(_, "mscontrolselect", function(e) { var t = function(e) { Le.setEditorTimeout(a, function() { a.selection.select(e) }) }; if (M(e.target)) return e.preventDefault(), void t(e.target); /^(TABLE|IMG|HR)$/.test(e.target.nodeName) && (e.preventDefault(), "IMG" === e.target.tagName && t(e.target)) })); var t = Le.throttle(function(e) { a.composing || I(e) }); a.on("nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged", t), a.on("keyup compositionend", function(e) { u && "TABLE" === u.nodeName && t(e) }), a.on("hide blur", L), a.on("contextmenu", n) }), a.on("remove", F), { isResizable: B, showResizeRect: o, hideResizeRect: L, updateResizeRect: I, destroy: function() { u = s = null } } }, gy = function(e) { return Do.isContentEditableTrue(e) || Do.isContentEditableFalse(e) }, py = function(e, t, n) { var r, o, i, a, u, s = n; if (s.caretPositionFromPoint)(o = s.caretPositionFromPoint(e, t)) && ((r = n.createRange()).setStart(o.offsetNode, o.offset), r.collapse(!0)); else if (n.caretRangeFromPoint) r = n.caretRangeFromPoint(e, t); else if (s.body.createTextRange) { r = s.body.createTextRange(); try { r.moveToPoint(e, t), r.collapse(!0) } catch (c) { r = function(e, n, t) { var r, o, i; if (r = t.elementFromPoint(e, n), o = t.body.createTextRange(), r && "HTML" !== r.tagName || (r = t.body), o.moveToElementText(r), 0 < (i = (i = Yt.toArray(o.getClientRects())).sort(function(e, t) { return (e = Math.abs(Math.max(e.top - n, e.bottom - n))) - (t = Math.abs(Math.max(t.top - n, t.bottom - n))) })).length) { n = (i[0].bottom + i[0].top) / 2; try { return o.moveToPoint(e, n), o.collapse(!0), o } catch (a) {} } return null }(e, t, n) } return i = r, a = n.body, u = i && i.parentElement ? i.parentElement() : null, Do.isContentEditableFalse(function(e, t, n) { for (; e && e !== t;) { if (n(e)) return e; e = e.parentNode } return null }(u, a, gy)) ? null : i } return r }, hy = function(n, e) { return $(e, function(e) { var t = n.fire("GetSelectionRange", { range: e }); return t.range !== e ? t.range : e }) }, vy = function(e, t) { var n = (t || document).createDocumentFragment(); return F(e, function(e) { n.appendChild(e.dom()) }), er.fromDom(n) }, by = kr("element", "width", "rows"), yy = kr("element", "cells"), Cy = kr("x", "y"), xy = function(e, t) { var n = parseInt(hr.get(e, t), 10); return isNaN(n) ? 1 : n }, wy = function(e) { return z(e, function(e, t) { return t.cells().length > e ? t.cells().length : e }, 0) }, Ny = function(e, t) { for (var n = e.rows(), r = 0; r < n.length; r++) for (var o = n[r].cells(), i = 0; i < o.length; i++) if (Fr.eq(o[i], t)) return A.some(Cy(i, r)); return A.none() }, Ey = function(e, t, n, r, o) { for (var i = [], a = e.rows(), u = n; u <= o; u++) { var s = a[u].cells(), c = t < r ? s.slice(t, r + 1) : s.slice(r, t + 1); i.push(yy(a[u].element(), c)) } return i }, Sy = function(e) { var o = by(pa(e), 0, []); return F(Ki(e, "tr"), function(n, r) { F(Ki(n, "td,th"), function(e, t) { ! function(e, t, n, r, o) { for (var i = xy(o, "rowspan"), a = xy(o, "colspan"), u = e.rows(), s = n; s < n + i; s++) { u[s] || (u[s] = yy(ha(r), [])); for (var c = t; c < t + a; c++) u[s].cells()[c] = s === n && c === t ? o : pa(o) } }(o, function(e, t, n) { for (; r = t, o = n, i = void 0, ((i = e.rows())[o] ? i[o].cells() : [])[r];) t++; var r, o, i; return t }(o, t, r), r, n, e) }) }), by(o.element(), wy(o.rows()), o.rows()) }, Ty = function(e) { return n = $((t = e).rows(), function(e) { var t = $(e.cells(), function(e) { var t = ha(e); return hr.remove(t, "colspan"), hr.remove(t, "rowspan"), t }), n = pa(e.element()); return Ai(n, t), n }), r = pa(t.element()), o = er.fromTag("tbody"), Ai(o, n), Ti.append(r, o), r; var t, n, r, o }, ky = function(l, e, t) { return Ny(l, e).bind(function(c) { return Ny(l, t).map(function(e) { return t = l, r = e, o = (n = c).x(), i = n.y(), a = r.x(), u = r.y(), s = i < u ? Ey(t, o, i, a, u) : Ey(t, o, u, a, i), by(t.element(), wy(s), s); var t, n, r, o, i, a, u, s }) }) }, Ay = function(n, t) { return V(n, function(e) { return "li" === sr.name(e) && fh(e, t) }).fold(H([]), function(e) { return (t = n, V(t, function(e) { return "ul" === sr.name(e) || "ol" === sr.name(e) })).map(function(e) { return [er.fromTag("li"), er.fromTag(sr.name(e))] }).getOr([]); var t }) }, _y = function(e, t) { var n, r = er.fromDom(t.commonAncestorContainer), o = Vf(r, e), i = U(o, function(e) { return fo(e) || co(e) }), a = Ay(o, t), u = i.concat(a.length ? a : ho(n = r) ? $r.parent(n).filter(po).fold(H([]), function(e) { return [n, e] }) : po(n) ? [n] : []); return $(u, pa) }, Ry = function() { return vy([]) }, Dy = function(e, t) { return n = er.fromDom(t.cloneContents()), r = _y(e, t), o = z(r, function(e, t) { return Ti.append(t, e), t }, n), 0 < r.length ? vy([o]) : o; var n, r, o }, By = function(e, o) { return (t = e, n = o[0], ta(n, "table", b(Fr.eq, t))).bind(function(e) { var t = o[0], n = o[o.length - 1], r = Sy(e); return ky(r, t, n).map(function(e) { return vy([Ty(e)]) }) }).getOrThunk(Ry); var t, n }, Oy = function(e, t) { var n, r, o = Rm(t, e); return 0 < o.length ? By(e, o) : (n = e, 0 < (r = t).length && r[0].collapsed ? Ry() : Dy(n, r[0])) }, Py = function(e, t) { var n, r = e.selection.getRng(), o = e.dom.create("body"), i = e.selection.getSel(), a = hy(e, Em(i)); if ((t = t || {}).get = !0, t.format = t.format || "html", t.selection = !0, (t = e.fire("BeforeGetContent", t)).isDefaultPrevented()) return e.fire("GetContent", t), t.content; if ("text" === t.format) return e.selection.isCollapsed() ? "" : Na(r.text || (i.toString ? i.toString() : "")); r.cloneContents ? (n = t.contextual ? Oy(er.fromDom(e.getBody()), a).dom() : r.cloneContents()) && o.appendChild(n) : r.item !== undefined || r.htmlText !== undefined ? (o.innerHTML = "
" + (r.item ? r.item(0).outerHTML : r.htmlText), o.removeChild(o.firstChild)) : o.innerHTML = r.toString(), t.getInner = !0; var u = e.selection.serializer.serialize(o, t); return "tree" === t.format ? u : (t.content = e.selection.isCollapsed() ? "" : u, e.fire("GetContent", t), t.content) }, Ly = function(e, t, n) { var r, o, i, a = e.selection.getRng(), u = e.getDoc(); if ((n = n || { format: "html" }).set = !0, n.selection = !0, n.content = t, n.no_events || !(n = e.fire("BeforeSetContent", n)).isDefaultPrevented()) { if (t = n.content, a.insertNode) { t += '_', a.startContainer === u && a.endContainer === u ? u.body.innerHTML = t : (a.deleteContents(), 0 === u.body.childNodes.length ? u.body.innerHTML = t : a.createContextualFragment ? a.insertNode(a.createContextualFragment(t)) : (o = u.createDocumentFragment(), i = u.createElement("div"), o.appendChild(i), i.outerHTML = t, a.insertNode(o))), r = e.dom.get("__caret"), (a = u.createRange()).setStartBefore(r), a.setEndBefore(r), e.selection.setRng(a), e.dom.remove("__caret"); try { e.selection.setRng(a) } catch (s) {} } else a.item && (u.execCommand("Delete", !1, null), a = e.getRng()), /^\s+/.test(t) ? (a.pasteHTML('_' + t), e.dom.remove("__mce_tmp")) : a.pasteHTML(t); n.no_events || e.fire("SetContent", n) } else e.fire("SetContent", n) }, Iy = function(e, t, n, r, o) { var i = n ? t.startContainer : t.endContainer, a = n ? t.startOffset : t.endOffset; return A.from(i).map(er.fromDom).map(function(e) { return r && t.collapsed ? e : $r.child(e, o(e, a)).getOr(e) }).bind(function(e) { return sr.isElement(e) ? A.some(e) : $r.parent(e) }).map(function(e) { return e.dom() }).getOr(e) }, My = function(e, t, n) { return Iy(e, t, !0, n, function(e, t) { return Math.min($r.childNodesCount(e), t) }) }, Fy = function(e, t, n) { return Iy(e, t, !1, n, function(e, t) { return 0 < t ? t - 1 : t }) }, Uy = function(e, t) { for (var n = e; e && Do.isText(e) && 0 === e.length;) e = t ? e.nextSibling : e.previousSibling; return e || n }, zy = Yt.each, Vy = function(e) { return !!e.select }, qy = function(e) { return !(!e || !e.ownerDocument) && Fr.contains(er.fromDom(e.ownerDocument), er.fromDom(e)) }, Hy = function(u, s, e, c) { var n, t, l, f, a, r = function(e, t) { return Ly(c, e, t) }, o = function(e) { var t = m(); t.collapse( !! e), i(t) }, d = function() { return s.getSelection ? s.getSelection() : s.document.selection }, m = function() { var e, t, n, r, o = function(e, t, n) { try { return t.compareBoundaryPoints(e, n) } catch (r) { return -1 } }; if (!s) return null; if (null == (r = s.document)) return null; if (c.bookmark !== undefined && !1 === xp(c)) { var i = Og(c); if (i.isSome()) return i.map(function(e) { return hy(c, [e])[0] }).getOr(r.createRange()) } try { (e = d()) && (t = 0 < e.rangeCount ? e.getRangeAt(0) : e.createRange ? e.createRange() : r.createRange()) } catch (a) {} return (t = hy(c, [t])[0]) || (t = r.createRange ? r.createRange() : r.body.createTextRange()), t.setStart && 9 === t.startContainer.nodeType && t.collapsed && (n = u.getRoot(), t.setStart(n, 0), t.setEnd(n, 0)), l && f && (0 === o(t.START_TO_START, t, l) && 0 === o(t.END_TO_END, t, l) ? t = f : f = l = null), t }, i = function(e, t) { var n, r; if ((o = e) && (Vy(o) || qy(o.startContainer) && qy(o.endContainer))) { var o, i = Vy(e) ? e : null; if (i) { f = null; try { i.select() } catch (a) {} } else { if (n = d(), e = c.fire("SetSelectionRange", { range: e, forward: t }).range, n) { f = e; try { n.removeAllRanges(), n.addRange(e) } catch (a) {}!1 === t && n.extend && (n.collapse(e.endContainer, e.endOffset), n.extend(e.startContainer, e.startOffset)), l = 0 < n.rangeCount ? n.getRangeAt(0) : null } e.collapsed || e.startContainer !== e.endContainer || !n.setBaseAndExtent || Re.ie || e.endOffset - e.startOffset < 2 && e.startContainer.hasChildNodes() && (r = e.startContainer.childNodes[e.startOffset]) && "IMG" === r.tagName && (n.setBaseAndExtent(e.startContainer, e.startOffset, e.endContainer, e.endOffset), n.anchorNode === e.startContainer && n.focusNode === e.endContainer || n.setBaseAndExtent(r, 0, r, 1)), c.fire("AfterSetSelectionRange", { range: e, forward: t }) } } }, g = function() { var e, t, n = d(); return !(n && n.anchorNode && n.focusNode) || ((e = u.createRng()).setStart(n.anchorNode, n.anchorOffset), e.collapse(!0), (t = u.createRng()).setStart(n.focusNode, n.focusOffset), t.collapse(!0), e.compareBoundaryPoints(e.START_TO_START, t) <= 0) }, p = { bookmarkManager: null, controlSelection: null, dom: u, win: s, serializer: e, editor: c, collapse: o, setCursorLocation: function(e, t) { var n = u.createRng(); e ? (n.setStart(e, t), n.setEnd(e, t), i(n), o(!1)) : (dh(u, n, c.getBody(), !0), i(n)) }, getContent: function(e) { return Py(c, e) }, setContent: r, getBookmark: function(e, t) { return n.getBookmark(e, t) }, moveToBookmark: function(e) { return n.moveToBookmark(e) }, select: function(e, t) { var r, n, o; return (r = u, n = e, o = t, A.from(n).map(function(e) { var t = r.nodeIndex(e), n = r.createRng(); return n.setStart(e.parentNode, t), n.setEnd(e.parentNode, t + 1), o && (dh(r, n, e, !0), dh(r, n, e, !1)), n })).each(i), e }, isCollapsed: function() { var e = m(), t = d(); return !(!e || e.item) && (e.compareEndPoints ? 0 === e.compareEndPoints("StartToEnd", e) : !t || e.collapsed) }, isForward: g, setNode: function(e) { return r(u.getOuterHTML(e)), e }, getNode: function() { return e = c.getBody(), (t = m()) ? (r = t.startContainer, o = t.endContainer, i = t.startOffset, a = t.endOffset, n = t.commonAncestorContainer, !t.collapsed && (r === o && a - i < 2 && r.hasChildNodes() && (n = r.childNodes[i]), 3 === r.nodeType && 3 === o.nodeType && (r = r.length === i ? Uy(r.nextSibling, !0) : r.parentNode, o = 0 === a ? Uy(o.previousSibling, !1) : o.parentNode, r && r === o)) ? r : n && 3 === n.nodeType ? n.parentNode : n) : e; var e, t, n, r, o, i, a }, getSel: d, setRng: i, getRng: m, getStart: function(e) { return My(c.getBody(), m(), e) }, getEnd: function(e) { return Fy(c.getBody(), m(), e) }, getSelectedBlocks: function(e, t) { return function(e, t, n, r) { var o, i, a = []; if (i = e.getRoot(), n = e.getParent(n || My(i, t, t.collapsed), e.isBlock), r = e.getParent(r || Fy(i, t, t.collapsed), e.isBlock), n && n !== i && a.push(n), n && r && n !== r) for (var u = new oo(o = n, i); (o = u.next()) && o !== r;) e.isBlock(o) && a.push(o); return r && n !== r && r !== i && a.push(r), a }(u, m(), e, t) }, normalize: function() { var e = m(), t = d(); if (!Tm(t) && mh(c)) { var n = rg(u, e); return n.each(function(e) { i(e, g()) }), n.getOr(e) } return e }, selectorChanged: function(e, t) { var i; return a || (a = {}, i = {}, c.on("NodeChange", function(e) { var n = e.element, r = u.getParents(n, null, u.getRoot()), o = {}; zy(a, function(e, n) { zy(r, function(t) { if (u.is(t, n)) return i[n] || (zy(e, function(e) { e(!0, { node: t, selector: n, parents: r }) }), i[n] = e), o[n] = e, !1 }) }), zy(i, function(e, t) { o[t] || (delete i[t], zy(e, function(e) { e(!1, { node: n, selector: t, parents: r }) })) }) })), a[e] || (a[e] = []), a[e].push(t), p }, getScrollContainer: function() { for (var e, t = u.getRoot(); t && "BODY" !== t.nodeName;) { if (t.scrollHeight > t.clientHeight) { e = t; break } t = t.parentNode } return e }, scrollIntoView: function(e, t) { return js(c, e, t) }, placeCaretAt: function(e, t) { return i(py(e, t, c.getDoc())) }, getBoundingClientRect: function() { var e = m(); return e.collapsed ? Su.fromRangeStart(e).getClientRects()[0] : e.getBoundingClientRect() }, destroy: function() { s = l = f = null, t.destroy() } }; return n = ly(p), t = my(p, c), p.bookmarkManager = n, p.controlSelection = t, p }, jy = Do.isContentEditableFalse, $y = Za, Wy = Xc, Ky = Kc, Xy = function(e, t) { for (; t = e(t);) if (t.isVisible()) return t; return t }, Yy = function(e, t, n, r) { var o, i, a, u, s, c, l = e === Nu.Forwards, f = l ? Ky : Wy; return !r.collapsed && (o = $y(r), jy(o)) ? us(e, t, o, e === Nu.Backwards, !0) : (u = Ta(r.startContainer), f(i = Wc(e, t.getBody(), r)) ? ss(t, i.getNode(!l)) : (i = n(i)) ? f(i) ? us(e, t, i.getNode(!l), l, !0) : f(a = n(i)) && (!(c = Ic(s = i, a)) && Do.isBr(s.getNode()) || c) ? us(e, t, a.getNode(!l), l, !0) : u ? ls(t, i.toRange(), !0) : null : u ? r : null) }, Gy = function(e, t, n, r) { var o, i, a, u, s, c, l, f, d; if (d = $y(r), o = Wc(e, t.getBody(), r), i = n(t.getBody(), Dh(1), o), a = jt.filter(i, Bh(1)), s = jt.last(o.getClientRects()), (Ky(o) || Yc(o)) && (d = o.getNode()), (Wy(o) || Gc(o)) && (d = o.getNode(!0)), !s) return null; if (c = s.left, (u = Fh(a, c)) && jy(u.node)) return l = Math.abs(c - u.left), f = Math.abs(c - u.right), us(e, t, u.node, l < f, !0); if (d) { var m = function(e, t, n, r) { var o, i, a, u, s, c, l = Ns(t), f = [], d = 0, m = function(e) { return jt.last(e.getClientRects()) }; 1 === e ? (o = l.next, i = Qa, a = Ja, u = Su.after(r)) : (o = l.prev, i = Ja, a = Qa, u = Su.before(r)), c = m(u); do { if (u.isVisible() && !a(s = m(u), c)) { if (0 < f.length && i(s, jt.last(f)) && d++, (s = Xa(s)).position = u, s.line = d, n(s)) return f; f.push(s) } } while (u = o(u)); return f }(e, t.getBody(), Dh(1), d); if (u = Fh(jt.filter(m, Bh(1)), c)) return ls(t, u.position.toRange(), !0); if (u = jt.last(jt.filter(m, Bh(0)))) return ls(t, u.position.toRange(), !0) } }, Jy = function(e, t, n) { var r, o, i, a, u = Ns(e.getBody()), s = ya.curry(Xy, u.next), c = ya.curry(Xy, u.prev); if (n.collapsed && e.settings.forced_root_block) { if (!(r = e.dom.getParent(n.startContainer, "PRE"))) return; (1 === t ? s(Su.fromRangeStart(n)) : c(Su.fromRangeStart(n))) || (a = (i = e).dom.create(i.settings.forced_root_block), (!Re.ie || 11 <= Re.ie) && (a.innerHTML = '
'), o = a, 1 === t ? e.$(r).after(o) : e.$(r).before(o), e.selection.select(o, !0), e.selection.collapse()) } }, Qy = function(l, f) { return function() { var e, t, n, r, o, i, a, u, s, c = (t = f, r = Ns((e = l).getBody()), o = ya.curry(Xy, r.next), i = ya.curry(Xy, r.prev), a = t ? Nu.Forwards : Nu.Backwards, u = t ? o : i, s = e.selection.getRng(), (n = Yy(a, e, u, s)) ? n : (n = Jy(e, a, s)) || null); return !!c && (l.selection.setRng(c), !0) } }, Zy = function(u, s) { return function() { var e, t, n, r, o, i, a = (r = (t = s) ? 1 : -1, o = t ? Rh : _h, i = (e = u).selection.getRng(), (n = Gy(r, e, o, i)) ? n : (n = Jy(e, r, i)) || null); return !!a && (u.selection.setRng(a), !0) } }, eC = function(e, r) { return G($(e, function(e) { return Mb({ shiftKey: !1, altKey: !1, ctrlKey: !1, metaKey: !1, keyCode: 0, action: v }, e) }), function(e) { return t = e, (n = r).keyCode === t.keyCode && n.shiftKey === t.shiftKey && n.altKey === t.altKey && n.ctrlKey === t.ctrlKey && n.metaKey === t.metaKey ? [e] : []; var t, n }) }, tC = function(e) { for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; var r = Array.prototype.slice.call(arguments, 1); return function() { return e.apply(null, r) } }, nC = function(e, t) { return V(eC(e, t), function(e) { return e.action() }) }, rC = function(i, a) { i.on("keydown", function(e) { var t, n, r, o; !1 === e.isDefaultPrevented() && (t = i, n = a, r = e, o = Qn.detect().os, nC([{ keyCode: Hh.RIGHT, action: Qy(t, !0) }, { keyCode: Hh.LEFT, action: Qy(t, !1) }, { keyCode: Hh.UP, action: Zy(t, !1) }, { keyCode: Hh.DOWN, action: Zy(t, !0) }, { keyCode: Hh.RIGHT, action: bc(t, !0) }, { keyCode: Hh.LEFT, action: bc(t, !1) }, { keyCode: Hh.UP, action: yc(t, !1) }, { keyCode: Hh.DOWN, action: yc(t, !0) }, { keyCode: Hh.RIGHT, action: om.move(t, n, !0) }, { keyCode: Hh.LEFT, action: om.move(t, n, !1) }, { keyCode: Hh.RIGHT, ctrlKey: !o.isOSX(), altKey: o.isOSX(), action: om.moveNextWord(t, n) }, { keyCode: Hh.LEFT, ctrlKey: !o.isOSX(), altKey: o.isOSX(), action: om.movePrevWord(t, n) }], r).each(function(e) { r.preventDefault() })) }) }, oC = function(e) { return 1 === $r.children(e).length }, iC = function(e, t, n, r) { var o, i, a, u, s = b(jv, t), c = $(U(r, s), function(e) { return e.dom() }); if (0 === c.length) md(t, e, n); else { var l = (o = n.dom(), i = c, a = Mv(!1), u = qv(i, a.dom()), Ti.before(er.fromDom(o), a), Ri.remove(er.fromDom(o)), Su(u, 0)); t.selection.setRng(l.toRange()) } }, aC = function(n, r) { var t, e = er.fromDom(n.getBody()), o = er.fromDom(n.selection.getStart()), i = U((t = Vf(o, e), K(t, lo).fold(H(t), function(e) { return t.slice(0, e) })), oC); return te(i).map(function(e) { var t = Su.fromRangeStart(n.selection.getRng()); return !!Sf(r, t, e.dom()) && (iC(r, n, e, i), !0) }).getOr(!1) }, uC = function(e, t) { return !!e.selection.isCollapsed() && aC(e, t) }, sC = function(o, i) { o.on("keydown", function(e) { var t, n, r; !1 === e.isDefaultPrevented() && (t = o, n = i, r = e, nC([{ keyCode: Hh.BACKSPACE, action: tC(hd, t, !1) }, { keyCode: Hh.DELETE, action: tC(hd, t, !0) }, { keyCode: Hh.BACKSPACE, action: tC(sm, t, n, !1) }, { keyCode: Hh.DELETE, action: tC(sm, t, n, !0) }, { keyCode: Hh.BACKSPACE, action: tC(Vm, t, !1) }, { keyCode: Hh.DELETE, action: tC(Vm, t, !0) }, { keyCode: Hh.BACKSPACE, action: tC(Qf, t, !1) }, { keyCode: Hh.DELETE, action: tC(Qf, t, !0) }, { keyCode: Hh.BACKSPACE, action: tC(Xf, t, !1) }, { keyCode: Hh.DELETE, action: tC(Xf, t, !0) }, { keyCode: Hh.BACKSPACE, action: tC(uC, t, !1) }, { keyCode: Hh.DELETE, action: tC(uC, t, !0) }], r).each(function(e) { r.preventDefault() })) }), o.on("keyup", function(e) { var t, n; !1 === e.isDefaultPrevented() && (t = o, n = e, nC([{ keyCode: Hh.BACKSPACE, action: tC(vd, t) }, { keyCode: Hh.DELETE, action: tC(vd, t) }], n)) }) }, cC = function(e) { return A.from(e.dom.getParent(e.selection.getStart(!0), e.dom.isBlock)) }, lC = function(e, t) { var n, r, o, i = t, a = e.dom, u = e.schema.getMoveCaretBeforeOnEnterElements(); if (t) { if (/^(LI|DT|DD)$/.test(t.nodeName)) { var s = function(e) { for (; e;) { if (1 === e.nodeType || 3 === e.nodeType && e.data && /[\r\n\s]/.test(e.data)) return e; e = e.nextSibling } }(t.firstChild); s && /^(UL|OL|DL)$/.test(s.nodeName) && t.insertBefore(a.doc.createTextNode("\xa0"), t.firstChild) } if (o = a.createRng(), t.normalize(), t.hasChildNodes()) { for (n = new oo(t, t); r = n.current();) { if (Do.isText(r)) { o.setStart(r, 0), o.setEnd(r, 0); break } if (u[r.nodeName.toLowerCase()]) { o.setStartBefore(r), o.setEndBefore(r); break } i = r, r = n.next() } r || (o.setStart(i, 0), o.setEnd(i, 0)) } else Do.isBr(t) ? t.nextSibling && a.isBlock(t.nextSibling) ? (o.setStartBefore(t), o.setEndBefore(t)) : (o.setStartAfter(t), o.setEndAfter(t)) : (o.setStart(t, 0), o.setEnd(t, 0)); e.selection.setRng(o), a.remove(void 0), e.selection.scrollIntoView(t) } }, fC = function(e, t) { var n, r, o = e.getRoot(); for (n = t; n !== o && "false" !== e.getContentEditable(n);)"true" === e.getContentEditable(n) && (r = n), n = n.parentNode; return n !== o ? r : o }, dC = cC, mC = function(e) { return cC(e).fold(H(""), function(e) { return e.nodeName.toUpperCase() }) }, gC = function(e) { return cC(e).filter(function(e) { return ho(er.fromDom(e)) }).isSome() }, pC = function(e, t) { return e && e.parentNode && e.parentNode.nodeName === t }, hC = function(e) { return e && /^(OL|UL|LI)$/.test(e.nodeName) }, vC = function(e) { var t = e.parentNode; return /^(LI|DT|DD)$/.test(t.nodeName) ? t : e }, bC = function(e, t, n) { for (var r = e[n ? "firstChild" : "lastChild"]; r && !Do.isElement(r);) r = r[n ? "nextSibling" : "previousSibling"]; return r === t }, yC = function(e, t, n, r, o) { var i = e.dom, a = e.selection.getRng(); if (n !== e.getBody()) { var u; hC(u = n) && hC(u.parentNode) && (o = "LI"); var s, c, l = o ? t(o) : i.create("BR"); if (bC(n, r, !0) && bC(n, r, !1)) pC(n, "LI") ? i.insertAfter(l, vC(n)) : i.replace(l, n); else if (bC(n, r, !0)) pC(n, "LI") ? (i.insertAfter(l, vC(n)), l.appendChild(i.doc.createTextNode(" ")), l.appendChild(n)) : n.parentNode.insertBefore(l, n); else if (bC(n, r, !1)) i.insertAfter(l, vC(n)); else { n = vC(n); var f = a.cloneRange(); f.setStartAfter(r), f.setEndAfter(n); var d = f.extractContents(); "LI" === o && (c = "LI", (s = d).firstChild && s.firstChild.nodeName === c) ? (l = d.firstChild, i.insertAfter(d, n)) : (i.insertAfter(d, n), i.insertAfter(l, n)) } i.remove(r), lC(e, l) } }, CC = function(e) { e.innerHTML = '
' }, xC = function(e, t) { return e.nodeName === t || e.previousSibling && e.previousSibling.nodeName === t }, wC = function(e, t) { return t && e.isBlock(t) && !/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName) && !/^(fixed|absolute)/i.test(t.style.position) && "true" !== e.getContentEditable(t) }, NC = function(e, t, n) { return !1 === Do.isText(t) ? n : e ? 1 === n && t.data.charAt(n - 1) === wa ? 0 : n : n === t.data.length - 1 && t.data.charAt(n) === wa ? t.data.length : n }, EC = function(e, t) { var n, r, o = e.getRoot(); for (n = t; n !== o && "false" !== e.getContentEditable(n);)"true" === e.getContentEditable(n) && (r = n), n = n.parentNode; return n !== o ? r : o }, SC = function(e, t) { var n = ec(e); n && n.toLowerCase() === t.tagName.toLowerCase() && e.dom.setAttribs(t, tc(e)) }, TC = function(a, e) { var t, u, s, i, c, n, r, o, l, f, d, m, g, p, h, v, b, y, C = a.dom, x = a.schema, w = x.getNonEmptyElements(), N = a.selection.getRng(), E = function(e) { var t, n, r, o = s, i = x.getTextInlineElements(); if (e || "TABLE" === f || "HR" === f ? (t = C.create(e || m), SC(a, t)) : t = c.cloneNode(!1), r = t, !1 === oc(a)) C.setAttrib(t, "style", null), C.setAttrib(t, "class", null); else do { if (i[o.nodeName]) { if (Ku(o)) continue; n = o.cloneNode(!1), C.setAttrib(n, "id", ""), t.hasChildNodes() ? n.appendChild(t.firstChild) : r = n, t.appendChild(n) } } while ((o = o.parentNode) && o !== u); return CC(r), t }, S = function(e) { var t, n, r, o; if (o = NC(e, s, i), Do.isText(s) && (e ? 0 < o : o < s.nodeValue.length)) return !1; if (s.parentNode === c && g && !e) return !0; if (e && Do.isElement(s) && s === c.firstChild) return !0; if (xC(s, "TABLE") || xC(s, "HR")) return g && !e || !g && e; for (t = new oo(s, c), Do.isText(s) && (e && 0 === o ? t.prev() : e || o !== s.nodeValue.length || t.next()); n = t.current();) { if (Do.isElement(n)) { if (!n.getAttribute("data-mce-bogus") && (r = n.nodeName.toLowerCase(), w[r] && "br" !== r)) return !1 } else if (Do.isText(n) && !/^[ \t\r\n]*$/.test(n.nodeValue)) return !1; e ? t.prev() : t.next() } return !0 }, T = function() { r = /^(H[1-6]|PRE|FIGURE)$/.test(f) && "HGROUP" !== d ? E(m) : E(), ic(a) && wC(C, l) && C.isEmpty(c) ? r = C.split(l, c) : C.insertAfter(r, c), lC(a, r) }; rg(C, N).each(function(e) { N.setStart(e.startContainer, e.startOffset), N.setEnd(e.endContainer, e.endOffset) }), s = N.startContainer, i = N.startOffset, m = ec(a), n = e.shiftKey, Do.isElement(s) && s.hasChildNodes() && (g = i > s.childNodes.length - 1, s = s.childNodes[Math.min(i, s.childNodes.length - 1)] || s, i = g && Do.isText(s) ? s.nodeValue.length : 0), (u = EC(C, s)) && ((m && !n || !m && n) && (s = function(e, t, n, r, o) { var i, a, u, s, c, l, f, d = t || "P", m = e.dom, g = EC(m, r); if (!(a = m.getParent(r, m.isBlock)) || !wC(m, a)) { if (l = (a = a || g) === e.getBody() || (f = a) && /^(TD|TH|CAPTION)$/.test(f.nodeName) ? a.nodeName.toLowerCase() : a.parentNode.nodeName.toLowerCase(), !a.hasChildNodes()) return i = m.create(d), SC(e, i), a.appendChild(i), n.setStart(i, 0), n.setEnd(i, 0), i; for (s = r; s.parentNode !== a;) s = s.parentNode; for (; s && !m.isBlock(s);) s = (u = s).previousSibling; if (u && e.schema.isValidChild(l, d.toLowerCase())) { for (i = m.create(d), SC(e, i), u.parentNode.insertBefore(i, u), s = u; s && !m.isBlock(s);) c = s.nextSibling, i.appendChild(s), s = c; n.setStart(r, o), n.setEnd(r, o) } } return r }(a, m, N, s, i)), c = C.getParent(s, C.isBlock), l = c ? C.getParent(c.parentNode, C.isBlock) : null, f = c ? c.nodeName.toUpperCase() : "", "LI" !== (d = l ? l.nodeName.toUpperCase() : "") || e.ctrlKey || (l = (c = l).parentNode, f = d), /^(LI|DT|DD)$/.test(f) && C.isEmpty(c) ? yC(a, E, l, c, m) : m && c === a.getBody() || (m = m || "P", Ta(c) ? (r = La(c), C.isEmpty(c) && CC(c), lC(a, r)) : S() ? T() : S(!0) ? (r = c.parentNode.insertBefore(E(), c), lC(a, xC(c, "HR") ? r : c)) : ((t = (b = N, y = b.cloneRange(), y.setStart(b.startContainer, NC(!0, b.startContainer, b.startOffset)), y.setEnd(b.endContainer, NC(!1, b.endContainer, b.endOffset)), y).cloneRange()).setEndAfter(c), function(e) { for (; Do.isText(e) && (e.nodeValue = e.nodeValue.replace(/^[\r\n]+/, "")), e = e.firstChild;); }(o = t.extractContents()), r = o.firstChild, C.insertAfter(o, c), function(e, t, n) { var r, o = n, i = []; if (o) { for (; o = o.firstChild;) { if (e.isBlock(o)) return; Do.isElement(o) && !t[o.nodeName.toLowerCase()] && i.push(o) } for (r = i.length; r--;)!(o = i[r]).hasChildNodes() || o.firstChild === o.lastChild && "" === o.firstChild.nodeValue ? e.remove(o) : (a = o) && "A" === a.nodeName && 0 === Yt.trim(Na(a.innerText || a.textContent)).length && e.remove(o); var a } }(C, w, r), p = C, (h = c).normalize(), (v = h.lastChild) && !/^(left|right)$/gi.test(p.getStyle(v, "float", !0)) || p.add(h, "br"), C.isEmpty(c) && CC(c), r.normalize(), C.isEmpty(r) ? (C.remove(r), T()) : lC(a, r)), C.setAttrib(r, "id", ""), a.fire("NewBlock", { newBlock: r }))) }, kC = function(e, t) { return dC(e).filter(function(e) { return 0 < t.length && Lr.is(er.fromDom(e), t) }).isSome() }, AC = function(e) { return kC(e, nc(e)) }, _C = function(e) { return kC(e, rc(e)) }, RC = Zf([{ br: [] }, { block: [] }, { none: [] }]), DC = function(e, t) { return _C(e) }, BC = function(n) { return function(e, t) { return "" === ec(e) === n } }, OC = function(n) { return function(e, t) { return gC(e) === n } }, PC = function(n, r) { return function(e, t) { return mC(e) === n.toUpperCase() === r } }, LC = function(e) { return PC("pre", e) }, IC = function(n) { return function(e, t) { return Zs(e) === n } }, MC = function(e, t) { return AC(e) }, FC = function(e, t) { return t }, UC = function(e) { var t = ec(e), n = fC(e.dom, e.selection.getStart()); return n && e.schema.isValidChild(n.nodeName, t || "P") }, zC = function(e, t) { return function(n, r) { return z(e, function(e, t) { return e && t(n, r) }, !0) ? A.some(t) : A.none() } }, VC = function(e, t) { return Ad([zC([DC], RC.none()), zC([PC("summary", !0)], RC.br()), zC([LC(!0), IC(!1), FC], RC.br()), zC([LC(!0), IC(!1)], RC.block()), zC([LC(!0), IC(!0), FC], RC.block()), zC([LC(!0), IC(!0)], RC.br()), zC([OC(!0), FC], RC.br()), zC([OC(!0)], RC.block()), zC([BC(!0), FC, UC], RC.block()), zC([BC(!0)], RC.br()), zC([MC], RC.br()), zC([BC(!1), FC], RC.br()), zC([UC], RC.block())], [e, t.shiftKey]).getOr(RC.none()) }, qC = function(e, t) { VC(e, t).fold(function() { mg(e, t) }, function() { TC(e, t) }, v) }, HC = function(o) { o.on("keydown", function(e) { var t, n, r; e.keyCode === Hh.ENTER && (t = o, (n = e).isDefaultPrevented() || (n.preventDefault(), (r = t.undoManager).typing && (r.typing = !1, r.add()), t.undoManager.transact(function() { !1 === t.selection.isCollapsed() && t.execCommand("Delete"), qC(t, n) }))) }) }, jC = function(e, t, n) { return u = t, !(!$C(n) || !Do.isText(u.container()) || (r = e, i = (o = t).container(), a = o.offset(), i.insertData(a, "\xa0"), r.selection.setCursorLocation(i, a + 1), 0)); var r, o, i, a, u }, $C = function(e) { return e.fold(H(!1), H(!0), H(!0), H(!1)) }, WC = function(e) { return !!e.selection.isCollapsed() && (t = e, n = b(wf.isInlineTarget, t), r = Su.fromRangeStart(t.selection.getRng()), Wd(n, t.getBody(), r).map(b(jC, t, r)).getOr(!1)); var t, n, r }, KC = function(r) { r.on("keydown", function(e) { var t, n; !1 === e.isDefaultPrevented() && (t = r, n = e, nC([{ keyCode: Hh.SPACEBAR, action: tC(WC, t) }], n).each(function(e) { n.preventDefault() })) }) }, XC = function(e, t) { var n; t.hasAttribute("data-mce-caret") && (La(t), (n = e).selection.setRng(n.selection.getRng()), e.selection.scrollIntoView(t)) }, YC = function(e, t) { var n, r = (n = e, na(er.fromDom(n.getBody()), "*[data-mce-caret]").fold(H(null), function(e) { return e.dom() })); if (r) return "compositionstart" === t.type ? (t.preventDefault(), t.stopPropagation(), void XC(e, r)) : void(_a(r) && (XC(e, r), e.undoManager.add())) }, GC = function(e) { e.on("keyup compositionstart", b(YC, e)) }, JC = function(e) { var t = om.setupSelectedState(e); GC(e), rC(e, t), sC(e, t), HC(e), KC(e) }; function QC(u) { var s, n, r, o = Yt.each, c = Hh.BACKSPACE, l = Hh.DELETE, f = u.dom, d = u.selection, e = u.settings, t = u.parser, i = Re.gecko, a = Re.ie, m = Re.webkit, g = "data:text/mce-internal,", p = a ? "Text" : "URL", h = function(e, t) { try { u.getDoc().execCommand(e, !1, t) } catch (n) {} }, v = function(e) { return e.isDefaultPrevented() }, b = function() { u.shortcuts.add("meta+a", null, "SelectAll") }, y = function() { u.on("keydown", function(e) { if (!v(e) && e.keyCode === c && d.isCollapsed() && 0 === d.getRng().startOffset) { var t = d.getNode().previousSibling; if (t && t.nodeName && "table" === t.nodeName.toLowerCase()) return e.preventDefault(), !1 } }) }, C = function() { u.inline || (u.contentStyles.push("body {min-height: 150px}"), u.on("click", function(e) { var t; if ("HTML" === e.target.nodeName) { if (11 < Re.ie) return void u.getBody().focus(); t = u.selection.getRng(), u.getBody().focus(), u.selection.setRng(t), u.selection.normalize(), u.nodeChanged() } })) }; return u.on("keydown", function(e) { var t, n, r, o, i; if (!v(e) && e.keyCode === Hh.BACKSPACE && (n = (t = d.getRng()).startContainer, r = t.startOffset, o = f.getRoot(), i = n, t.collapsed && 0 === r)) { for (; i && i.parentNode && i.parentNode.firstChild === i && i.parentNode !== o;) i = i.parentNode; "BLOCKQUOTE" === i.tagName && (u.formatter.toggle("blockquote", null, i), (t = f.createRng()).setStart(n, 0), t.setEnd(n, 0), d.setRng(t)) } }), s = function(e) { var t = f.create("body"), n = e.cloneContents(); return t.appendChild(n), d.serializer.serialize(t, { format: "html" }) }, u.on("keydown", function(e) { var t, n, r, o, i, a = e.keyCode; if (!v(e) && (a === l || a === c)) { if (t = u.selection.isCollapsed(), n = u.getBody(), t && !f.isEmpty(n)) return; if (!t && (r = u.selection.getRng(), o = s(r), (i = f.createRng()).selectNode(u.getBody()), o !== s(i))) return; e.preventDefault(), u.setContent(""), n.firstChild && f.isBlock(n.firstChild) ? u.selection.setCursorLocation(n.firstChild, 0) : u.selection.setCursorLocation(n, 0), u.nodeChanged() } }), Re.windowsPhone || u.on("keyup focusin mouseup", function(e) { Hh.modifierPressed(e) || d.normalize() }, !0), m && (u.settings.content_editable || f.bind(u.getDoc(), "mousedown mouseup", function(e) { var t; if (e.target === u.getDoc().documentElement) if (t = d.getRng(), u.getBody().focus(), "mousedown" === e.type) { if (Aa(t.startContainer)) return; d.placeCaretAt(e.clientX, e.clientY) } else d.setRng(t) }), u.on("click", function(e) { var t = e.target; /^(IMG|HR)$/.test(t.nodeName) && "false" !== f.getContentEditableParent(t) && (e.preventDefault(), u.selection.select(t), u.nodeChanged()), "A" === t.nodeName && f.hasClass(t, "mce-item-anchor") && (e.preventDefault(), d.select(t)) }), e.forced_root_block && u.on("init", function() { h("DefaultParagraphSeparator", e.forced_root_block) }), u.on("init", function() { u.dom.bind(u.getBody(), "submit", function(e) { e.preventDefault() }) }), y(), t.addNodeFilter("br", function(e) { for (var t = e.length; t--;)"Apple-interchange-newline" === e[t].attr("class") && e[t].remove() }), Re.iOS ? (u.inline || u.on("keydown", function() { document.activeElement === document.body && u.getWin().focus() }), C(), u.on("click", function(e) { var t = e.target; do { if ("A" === t.tagName) return void e.preventDefault() } while (t = t.parentNode) }), u.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")) : b()), 11 <= Re.ie && (C(), y()), Re.ie && (b(), h("AutoUrlDetect", !1), u.on("dragstart", function(e) { var t, n, r; (t = e).dataTransfer && (u.selection.isCollapsed() && "IMG" === t.target.tagName && d.select(t.target), 0 < (n = u.selection.getContent()).length && (r = g + escape(u.id) + "," + escape(n), t.dataTransfer.setData(p, r))) }), u.on("drop", function(e) { if (!v(e)) { var t = (i = e).dataTransfer && (a = i.dataTransfer.getData(p)) && 0 <= a.indexOf(g) ? (a = a.substr(g.length).split(","), { id: unescape(a[0]), html: unescape(a[1]) }) : null; if (t && t.id !== u.id) { e.preventDefault(); var n = py(e.x, e.y, u.getDoc()); d.setRng(n), r = t.html, o = !0, u.queryCommandSupported("mceInsertClipboardContent") ? u.execCommand("mceInsertClipboardContent", !1, { content: r, internal: o }) : u.execCommand("mceInsertContent", !1, r) } } var r, o, i, a })), i && (u.on("keydown", function(e) { if (!v(e) && e.keyCode === c) { if (!u.getBody().getElementsByTagName("hr").length) return; if (d.isCollapsed() && 0 === d.getRng().startOffset) { var t = d.getNode(), n = t.previousSibling; if ("HR" === t.nodeName) return f.remove(t), void e.preventDefault(); n && n.nodeName && "hr" === n.nodeName.toLowerCase() && (f.remove(n), e.preventDefault()) } } }), Range.prototype.getClientRects || u.on("mousedown", function(e) { if (!v(e) && "HTML" === e.target.nodeName) { var t = u.getBody(); t.blur(), Le.setEditorTimeout(u, function() { t.focus() }) } }), n = function() { var e = f.getAttribs(d.getStart().cloneNode(!1)); return function() { var t = d.getStart(); t !== u.getBody() && (f.setAttrib(t, "style", null), o(e, function(e) { t.setAttributeNode(e.cloneNode(!0)) })) } }, r = function() { return !d.isCollapsed() && f.getParent(d.getStart(), f.isBlock) !== f.getParent(d.getEnd(), f.isBlock) }, u.on("keypress", function(e) { var t; if (!v(e) && (8 === e.keyCode || 46 === e.keyCode) && r()) return t = n(), u.getDoc().execCommand("delete", !1, null), t(), e.preventDefault(), !1 }), f.bind(u.getDoc(), "cut", function(e) { var t; !v(e) && r() && (t = n(), Le.setEditorTimeout(u, function() { t() })) }), e.readonly || u.on("BeforeExecCommand MouseDown", function() { h("StyleWithCSS", !1), h("enableInlineTableEditing", !1), e.object_resizing || h("enableObjectResizing", !1) }), u.on("SetContent ExecCommand", function(e) { "setcontent" !== e.type && "mceInsertLink" !== e.command || o(f.select("a"), function(e) { var t = e.parentNode, n = f.getRoot(); if (t.lastChild === e) { for (; t && !f.isBlock(t);) { if (t.parentNode.lastChild !== t || t === n) return; t = t.parentNode } f.add(t, "br", { "data-mce-bogus": 1 }) } }) }), u.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"), Re.mac && u.on("keydown", function(e) { !Hh.metaKeyPressed(e) || e.shiftKey || 37 !== e.keyCode && 39 !== e.keyCode || (e.preventDefault(), u.selection.getSel().modify("move", 37 === e.keyCode ? "backward" : "forward", "lineboundary")) }), y()), { refreshContentEditable: function() {}, isHidden: function() { var e; return !i || u.removed ? 0 : !(e = u.selection.getSel()) || !e.rangeCount || 0 === e.rangeCount } } } var ZC = function(e) { return Do.isElement(e) && go(er.fromDom(e)) }, ex = function(t) { t.on("click", function(e) { 3 <= e.detail && function(e) { var t = e.selection.getRng(), n = wu.fromRangeStart(t), r = wu.fromRangeEnd(t); if (wu.isElementPosition(n)) { var o = n.container(); ZC(o) && rl.firstPositionIn(o).each(function(e) { return t.setStart(e.container(), e.offset()) }) } wu.isElementPosition(r) && (o = n.container(), ZC(o) && rl.lastPositionIn(o).each(function(e) { return t.setEnd(e.container(), e.offset()) })), e.selection.setRng(rf(t)) }(t) }) }, tx = function(e) { var t, n; (t = e).on("click", function(e) { t.dom.getParent(e.target, "details") && e.preventDefault() }), (n = e).parser.addNodeFilter("details", function(e) { F(e, function(e) { e.attr("data-mce-open", e.attr("open")), e.attr("open", "open") }) }), n.serializer.addNodeFilter("details", function(e) { F(e, function(e) { var t = e.attr("data-mce-open"); e.attr("open", k(t) ? t : null), e.attr("data-mce-open", null) }) }) }, nx = pi.DOM, rx = function(e) { var t; e.bindPendingEventDelegates(), e.initialized = !0, e.fire("init"), e.focus(!0), e.nodeChanged({ initial: !0 }), e.execCallback("init_instance_callback", e), (t = e).settings.auto_focus && Le.setEditorTimeout(t, function() { var e; (e = !0 === t.settings.auto_focus ? t : t.editorManager.get(t.settings.auto_focus)).destroyed || e.focus() }, 100) }, ox = function(t, e) { var n, r, u, o, i, a, s, c, l, f = t.settings, d = t.getElement(), m = t.getDoc(); f.inline || (t.getElement().style.visibility = t.orgVisibility), e || f.content_editable || (m.open(), m.write(t.iframeHTML), m.close()), f.content_editable && (t.on("remove", function() { var e = this.getBody(); nx.removeClass(e, "mce-content-body"), nx.removeClass(e, "mce-edit-focus"), nx.setAttrib(e, "contentEditable", null) }), nx.addClass(d, "mce-content-body"), t.contentDocument = m = f.content_document || document, t.contentWindow = f.content_window || window, t.bodyElement = d, f.content_document = f.content_window = null, f.root_name = d.nodeName.toLowerCase()), (n = t.getBody()).disabled = !0, t.readonly = f.readonly, t.readonly || (t.inline && "static" === nx.getStyle(n, "position", !0) && (n.style.position = "relative"), n.contentEditable = t.getParam("content_editable_state", !0)), n.disabled = !1, t.editorUpload = oh(t), t.schema = ni(f), t.dom = pi(m, { keep_values: !0, url_converter: t.convertURL, url_converter_scope: t, hex_colors: f.force_hex_style_colors, class_filter: f.class_filter, update_styles: !0, root_element: t.inline ? t.getBody() : null, collect: f.content_editable, schema: t.schema, onSetAttrib: function(e) { t.fire("SetAttrib", e) } }), t.parser = ((o = ry((u = t).settings, u.schema)).addAttributeFilter("src,href,style,tabindex", function(e, t) { for (var n, r, o, i = e.length, a = u.dom; i--;) if (r = (n = e[i]).attr(t), o = "data-mce-" + t, !n.attributes.map[o]) { if (0 === r.indexOf("data:") || 0 === r.indexOf("blob:")) continue; "style" === t ? ((r = a.serializeStyle(a.parseStyle(r), n.name)).length || (r = null), n.attr(o, r), n.attr(t, r)) : "tabindex" === t ? (n.attr(o, r), n.attr(t, null)) : n.attr(o, u.convertURL(r, t, n.name)) } }), o.addNodeFilter("script", function(e) { for (var t, n, r = e.length; r--;) 0 !== (n = (t = e[r]).attr("type") || "no/type").indexOf("mce-") && t.attr("type", "mce-" + n) }), o.addNodeFilter("#cdata", function(e) { for (var t, n = e.length; n--;)(t = e[n]).type = 8, t.name = "#comment", t.value = "[CDATA[" + t.value + "]]" }), o.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div", function(e) { for (var t, n = e.length, r = u.schema.getNonEmptyElements(); n--;)(t = e[n]).isEmpty(r) && 0 === t.getAll("br").length && (t.append(new Wb("br", 1)).shortEnded = !0) }), o), t.serializer = sy(f, t), t.selection = Hy(t.dom, t.getWin(), t.serializer, t), t.annotator = Fl(t), t.formatter = Pb(t), t.undoManager = xv(t), t._nodeChangeDispatcher = new gh(t), t._selectionOverrides = Yh(t), tx(t), ex(t), JC(t), sh(t), t.fire("PreInit"), f.browser_spellcheck || f.gecko_spellcheck || (m.body.spellcheck = !1, nx.setAttrib(n, "spellcheck", "false")), t.quirks = QC(t), t.fire("PostRender"), f.directionality && (n.dir = f.directionality), f.nowrap && (n.style.whiteSpace = "nowrap"), f.protect && t.on("BeforeSetContent", function(t) { Yt.each(f.protect, function(e) { t.content = t.content.replace(e, function(e) { return "\x3c!--mce:protected " + escape(e) + "--\x3e" }) }) }), t.on("SetContent", function() { t.addVisual(t.getBody()) }), t.load({ initial: !0, format: "html" }), t.startContent = t.getContent({ format: "raw" }), t.on("compositionstart compositionend", function(e) { t.composing = "compositionstart" === e.type }), 0 < t.contentStyles.length && (r = "", Yt.each(t.contentStyles, function(e) { r += e + "\r\n" }), t.dom.addStyle(r)), (i = t, i.inline ? nx.styleSheetLoader : i.dom.styleSheetLoader).loadAll(t.contentCSS, function(e) { rx(t) }, function(e) { rx(t) }), f.content_style && (a = t, s = f.content_style, c = er.fromDom(a.getDoc().head), l = er.fromTag("style"), hr.set(l, "type", "text/css"), Ti.append(l, er.fromText(s)), Ti.append(c, l)) }, ix = pi.DOM, ax = function(e, t) { var n, r, o, i, a, u, s, c = e.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"), l = (n = e.id, r = c, o = t.height, i = Ks(e), s = er.fromTag("iframe"), hr.setAll(s, i), hr.setAll(s, { id: n + "_ifr", frameBorder: "0", allowTransparency: "true", title: r }), Er(s, { width: "100%", height: (a = o, u = "number" == typeof a ? a + "px" : a, u || ""), display: "block" }), s).dom(); l.onload = function() { l.onload = null, e.fire("load") }; var f, d, m, g, p = function(e, t) { if (document.domain !== window.location.hostname && Re.ie && Re.ie < 12) { var n = rh.uuid("mce"); e[n] = function() { ox(e) }; var r = 'javascript:(function(){document.open();document.domain="' + document.domain + '";var ed = window.parent.tinymce.get("' + e.id + '");document.write(ed.iframeHTML);document.close();ed.' + n + "(true);})()"; return ix.setAttrib(t, "src", r), !0 } return !1 }(e, l); return e.contentAreaContainer = t.iframeContainer, e.iframeElement = l, e.iframeHTML = (g = Xs(f = e) + "", Ys(f) !== f.documentBaseUrl && (g += ''), g += '', d = Gs(f), m = Js(f), Qs(f) && (g += ''), g += '
'), ix.add(t.iframeContainer, l), p }, ux = function(e, t) { var n = ax(e, t); t.editorContainer && (ix.get(t.editorContainer).style.display = e.orgDisplay, e.hidden = ix.isHidden(t.editorContainer)), e.getElement().style.display = "none", ix.setAttrib(e.id, "aria-hidden", "true"), n || ox(e) }, sx = pi.DOM, cx = function(t, n, e) { var r, o, i = zp.get(e); if (r = zp.urls[e] || t.documentBaseUrl.replace(/\/$/, ""), e = Yt.trim(e), i && -1 === Yt.inArray(n, e)) { if (Yt.each(zp.dependencies(e), function(e) { cx(t, n, e) }), t.plugins[e]) return; o = new i(t, r, t.$), (t.plugins[e] = o).init && (o.init(t, r), n.push(e)) } }, lx = function(e) { return e.replace(/^\-/, "") }, fx = function(e) { return { editorContainer: e, iframeContainer: e } }, dx = function(e) { var t, n, r = e.getElement(); return e.inline ? fx(null) : (t = r, n = sx.create("div"), sx.insertAfter(n, t), fx(n)) }, mx = function(e) { var t, n, r, o, i, a, u, s, c, l, f, d = e.settings, m = e.getElement(); return e.orgDisplay = m.style.display, k(d.theme) ? (l = (o = e).settings, f = o.getElement(), i = l.width || sx.getStyle(f, "width") || "100%", a = l.height || sx.getStyle(f, "height") || f.offsetHeight, u = l.min_height || 100, (s = /^[0-9\.]+(|px)$/i).test("" + i) && (i = Math.max(parseInt(i, 10), 100)), s.test("" + a) && (a = Math.max(parseInt(a, 10), u)), c = o.theme.renderUI({ targetNode: f, width: i, height: a, deltaWidth: l.delta_width, deltaHeight: l.delta_height }), l.content_editable || (a = (c.iframeHeight || a) + ("number" == typeof a ? c.deltaHeight || 0 : "")) < u && (a = u), c.height = a, c) : O(d.theme) ? (r = (t = e).getElement(), (n = t.settings.theme(t, r)).editorContainer.nodeType && (n.editorContainer.id = n.editorContainer.id || t.id + "_parent"), n.iframeContainer && n.iframeContainer.nodeType && (n.iframeContainer.id = n.iframeContainer.id || t.id + "_iframecontainer"), n.height = n.iframeHeight ? n.iframeHeight : r.offsetHeight, n) : dx(e) }, gx = function(t) { var e, n, r, o, i, a, u = t.settings, s = t.getElement(); return t.rtl = u.rtl_ui || t.editorManager.i18n.rtl, t.editorManager.i18n.setCode(u.language), u.aria_label = u.aria_label || sx.getAttrib(s, "aria-label", t.getLang("aria.rich_text_area")), t.fire("ScriptsLoaded"), o = (n = t).settings.theme, k(o) ? (n.settings.theme = lx(o), r = Vp.get(o), n.theme = new r(n, Vp.urls[o]), n.theme.init && n.theme.init(n, Vp.urls[o] || n.documentBaseUrl.replace(/\/$/, ""), n.$)) : n.theme = {}, i = t, a = [], Yt.each(i.settings.plugins.split(/[ ,]/), function(e) { cx(i, a, lx(e)) }), e = mx(t), t.editorContainer = e.editorContainer ? e.editorContainer : null, u.content_css && Yt.each(Yt.explode(u.content_css), function(e) { t.contentCSS.push(t.documentBaseURI.toAbsolute(e)) }), u.content_editable ? ox(t) : ux(t, e) }, px = pi.DOM, hx = function(e) { return "-" === e.charAt(0) }, vx = function(i, a) { var u = Ci.ScriptLoader; ! function(e, t, n, r) { var o = t.settings, i = o.theme; if (k(i)) { if (!hx(i) && !Vp.urls.hasOwnProperty(i)) { var a = o.theme_url; a ? Vp.load(i, t.documentBaseURI.toAbsolute(a)) : Vp.load(i, "themes/" + i + "/theme" + n + ".js") } e.loadQueue(function() { Vp.waitFor(i, r) }) } else r() }(u, i, a, function() { var e, t, n, r, o; e = u, (n = (t = i).settings).language && "en" !== n.language && !n.language_url && (n.language_url = t.editorManager.baseURL + "/langs/" + n.language + ".js"), n.language_url && !t.editorManager.i18n.data[n.language] && e.add(n.language_url), r = i.settings, o = a, Yt.isArray(r.plugins) && (r.plugins = r.plugins.join(" ")), Yt.each(r.external_plugins, function(e, t) { zp.load(t, e), r.plugins += " " + t }), Yt.each(r.plugins.split(/[ ,]/), function(e) { if ((e = Yt.trim(e)) && !zp.urls[e]) if (hx(e)) { e = e.substr(1, e.length); var t = zp.dependencies(e); Yt.each(t, function(e) { var t = { prefix: "plugins/", resource: e, suffix: "/plugin" + o + ".js" }; e = zp.createUrl(t, e), zp.load(e.resource, e) }) } else zp.load(e, { prefix: "plugins/", resource: e, suffix: "/plugin" + o + ".js" }) }), u.loadQueue(function() { i.removed || gx(i) }, i, function(e) { Ip(i, e[0]), i.removed || gx(i) }) }) }, bx = function(t) { var e = t.settings, n = t.id, r = function() { px.unbind(window, "ready", r), t.render() }; if (je.Event.domLoaded) { if (t.getElement() && Re.contentEditable) { e.inline ? t.inline = !0 : (t.orgVisibility = t.getElement().style.visibility, t.getElement().style.visibility = "hidden"); var o = t.getElement().form || px.getParent(n, "form"); o && (t.formElement = o, e.hidden_input && !/TEXTAREA|INPUT/i.test(t.getElement().nodeName) && (px.insertAfter(px.create("input", { type: "hidden", name: n }), n), t.hasHiddenInput = !0), t.formEventDelegate = function(e) { t.fire(e.type, e) }, px.bind(o, "submit reset", t.formEventDelegate), t.on("reset", function() { t.setContent(t.startContent, { format: "raw" }) }), !e.submit_patch || o.submit.nodeType || o.submit.length || o._mceOldSubmit || (o._mceOldSubmit = o.submit, o.submit = function() { return t.editorManager.triggerSave(), t.setDirty(!1), o._mceOldSubmit(o) })), t.windowManager = Dp(t), t.notificationManager = Rp(t), "xml" === e.encoding && t.on("GetContent", function(e) { e.save && (e.content = px.encode(e.content)) }), e.add_form_submit_trigger && t.on("submit", function() { t.initialized && t.save() }), e.add_unload_trigger && (t._beforeUnload = function() { !t.initialized || t.destroyed || t.isHidden() || t.save({ format: "raw", no_events: !0, set_dirty: !1 }) }, t.editorManager.on("BeforeUnload", t._beforeUnload)), t.editorManager.add(t), vx(t, t.suffix) } } else px.bind(window, "ready", r) }, yx = function(e, t, n) { var r = e.sidebars ? e.sidebars : []; r.push({ name: t, settings: n }), e.sidebars = r }, Cx = Yt.each, xx = Yt.trim, wx = "source protocol authority userInfo user password host port relative path directory file query anchor".split(" "), Nx = { ftp: 21, http: 80, https: 443, mailto: 25 }, Ex = function(r, e) { var t, n, o = this; if (r = xx(r), t = (e = o.settings = e || {}).base_uri, /^([\w\-]+):([^\/]{2})/i.test(r) || /^\s*#/.test(r)) o.source = r; else { var i = 0 === r.indexOf("//"); 0 !== r.indexOf("/") || i || (r = (t && t.protocol || "http") + "://mce_host" + r), /^[\w\-]*:?\/\//.test(r) || (n = e.base_uri ? e.base_uri.path : new Ex(document.location.href).directory, "" == e.base_uri.protocol ? r = "//mce_host" + o.toAbsPath(n, r) : (r = /([^#?]*)([#?]?.*)/.exec(r), r = (t && t.protocol || "http") + "://mce_host" + o.toAbsPath(n, r[1]) + r[2])), r = r.replace(/@@/g, "(mce_at)"), r = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(r), Cx(wx, function(e, t) { var n = r[t]; n && (n = n.replace(/\(mce_at\)/g, "@@")), o[e] = n }), t && (o.protocol || (o.protocol = t.protocol), o.userInfo || (o.userInfo = t.userInfo), o.port || "mce_host" !== o.host || (o.port = t.port), o.host && "mce_host" !== o.host || (o.host = t.host), o.source = ""), i && (o.protocol = "") } }; Ex.prototype = { setPath: function(e) { e = /^(.*?)\/?(\w+)?$/.exec(e), this.path = e[0], this.directory = e[1], this.file = e[2], this.source = "", this.getURI() }, toRelative: function(e) { var t; if ("./" === e) return e; if ("mce_host" !== (e = new Ex(e, { base_uri: this })).host && this.host !== e.host && e.host || this.port !== e.port || this.protocol !== e.protocol && "" !== e.protocol) return e.getURI(); var n = this.getURI(), r = e.getURI(); return n === r || "/" === n.charAt(n.length - 1) && n.substr(0, n.length - 1) === r ? n : (t = this.toRelPath(this.path, e.path), e.query && (t += "?" + e.query), e.anchor && (t += "#" + e.anchor), t) }, toAbsolute: function(e, t) { return (e = new Ex(e, { base_uri: this })).getURI(t && this.isSameOrigin(e)) }, isSameOrigin: function(e) { if (this.host == e.host && this.protocol == e.protocol) { if (this.port == e.port) return !0; var t = Nx[this.protocol]; if (t && (this.port || t) == (e.port || t)) return !0 } return !1 }, toRelPath: function(e, t) { var n, r, o, i = 0, a = ""; if (e = (e = e.substring(0, e.lastIndexOf("/"))).split("/"), n = t.split("/"), e.length >= n.length) for (r = 0, o = e.length; r < o; r++) if (r >= n.length || e[r] !== n[r]) { i = r + 1; break } if (e.length < n.length) for (r = 0, o = n.length; r < o; r++) if (r >= e.length || e[r] !== n[r]) { i = r + 1; break } if (1 === i) return t; for (r = 0, o = e.length - (i - 1); r < o; r++) a += "../"; for (r = i - 1, o = n.length; r < o; r++) a += r !== i - 1 ? "/" + n[r] : n[r]; return a }, toAbsPath: function(e, t) { var n, r, o, i = 0, a = []; for (r = /\/$/.test(t) ? "/" : "", e = e.split("/"), t = t.split("/"), Cx(e, function(e) { e && a.push(e) }), e = a, n = t.length - 1, a = []; 0 <= n; n--) 0 !== t[n].length && "." !== t[n] && (".." !== t[n] ? 0 < i ? i-- : a.push(t[n]) : i++); return 0 !== (o = (n = e.length - i) <= 0 ? a.reverse().join("/") : e.slice(0, n).join("/") + "/" + a.reverse().join("/")).indexOf("/") && (o = "/" + o), r && o.lastIndexOf("/") !== o.length - 1 && (o += r), o }, getURI: function(e) { var t, n = this; return n.source && !e || (t = "", e || (n.protocol ? t += n.protocol + "://" : t += "//", n.userInfo && (t += n.userInfo + "@"), n.host && (t += n.host), n.port && (t += ":" + n.port)), n.path && (t += n.path), n.query && (t += "?" + n.query), n.anchor && (t += "#" + n.anchor), n.source = t), n.source } }, Ex.parseDataUri = function(e) { var t, n; return e = decodeURIComponent(e).split(","), (n = /data:([^;]+)/.exec(e[0])) && (t = n[1]), { type: t, data: e[1] } }, Ex.getDocumentBaseUrl = function(e) { var t; return t = 0 !== e.protocol.indexOf("http") && "file:" !== e.protocol ? e.href : e.protocol + "//" + e.host + e.pathname, /^[^:]+:\/\/\/?[^\/]+\//.test(t) && (t = t.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, ""), /[\/\\]$/.test(t) || (t += "/")), t }; var Sx = function(e, t, n) { var r, o, i, a, u; if (t.format = t.format ? t.format : "html", t.get = !0, t.getInner = !0, t.no_events || e.fire("BeforeGetContent", t), "raw" === t.format) r = Yt.trim(ev.trimExternal(e.serializer, n.innerHTML)); else if ("text" === t.format) r = Na(n.innerText || n.textContent); else { if ("tree" === t.format) return e.serializer.serialize(n, t); i = (o = e).serializer.serialize(n, t), a = ec(o), u = new RegExp("^(<" + a + "[^>]*>( | |\\s|\xa0|
|)<\\/" + a + ">[\r\n]*|
[\r\n]*)$"), r = i.replace(u, "") } return "text" === t.format || Co(er.fromDom(n)) ? t.content = r : t.content = Yt.trim(r), t.no_events || e.fire("GetContent", t), t.content }, Tx = function(e, t) { t(e), e.firstChild && Tx(e.firstChild, t), e.next && Tx(e.next, t) }, kx = function(e, t, n) { var r = function(e, n, t) { var r = {}, o = {}, i = []; for (var a in t.firstChild && Tx(t.firstChild, function(t) { F(e, function(e) { e.name === t.name && (r[e.name] ? r[e.name].nodes.push(t) : r[e.name] = { filter: e, nodes: [t] }) }), F(n, function(e) { "string" == typeof t.attr(e.name) && (o[e.name] ? o[e.name].nodes.push(t) : o[e.name] = { filter: e, nodes: [t] }) }) }), r) r.hasOwnProperty(a) && i.push(r[a]); for (var a in o) o.hasOwnProperty(a) && i.push(o[a]); return i }(e, t, n); F(r, function(t) { F(t.filter.callbacks, function(e) { e(t.nodes, t.filter.name, {}) }) }) }, Ax = function(e) { return e instanceof Wb }, _x = function(e, t) { var r; e.dom.setHTML(e.getBody(), t), xp(r = e) && rl.firstPositionIn(r.getBody()).each(function(e) { var t = e.getNode(), n = Do.isTable(t) ? rl.firstPositionIn(t).getOr(e) : e; r.selection.setRng(n.toRange()) }) }, Rx = function(u, s, c) { return void 0 === c && (c = {}), c.format = c.format ? c.format : "html", c.set = !0, c.content = Ax(s) ? "" : s, Ax(s) || c.no_events || (u.fire("BeforeSetContent", c), s = c.content), A.from(u.getBody()).fold(H(s), function(e) { return Ax(s) ? function(e, t, n, r) { kx(e.parser.getNodeFilters(), e.parser.getAttributeFilters(), n); var o = tf({ validate: e.validate }, e.schema).serialize(n); return r.content = Co(er.fromDom(t)) ? o : Yt.trim(o), _x(e, r.content), r.no_events || e.fire("SetContent", r), n }(u, e, s, c) : (t = u, n = e, o = c, 0 === (r = s).length || /^\s+$/.test(r) ? (a = '
', "TABLE" === n.nodeName ? r = "" + a + "" : /^(UL|OL)$/.test(n.nodeName) && (r = "
  • " + a + "
  • "), (i = ec(t)) && t.schema.isValidChild(n.nodeName.toLowerCase(), i.toLowerCase()) ? (r = a, r = t.dom.createHTML(i, t.settings.forced_root_block_attrs, r)) : r || (r = '
    '), _x(t, r), t.fire("SetContent", o)) : ("raw" !== o.format && (r = tf({ validate: t.validate }, t.schema).serialize(t.parser.parse(r, { isRootContent: !0, insert: !0 }))), o.content = Co(er.fromDom(n)) ? r : Yt.trim(r), _x(t, o.content), o.no_events || t.fire("SetContent", o)), o.content); var t, n, r, o, i, a }) }, Dx = pi.DOM, Bx = function(e) { return A.from(e).each(function(e) { return e.destroy() }) }, Ox = function(e) { if (!e.removed) { var t = e._selectionOverrides, n = e.editorUpload, r = e.getBody(), o = e.getElement(); r && e.save({ is_removing: !0 }), e.removed = !0, e.unbindAllNativeEvents(), e.hasHiddenInput && o && Dx.remove(o.nextSibling), !e.inline && r && (i = e, Dx.setStyle(i.id, "display", i.orgDisplay)), Kg(e), e.editorManager.remove(e), Dx.remove(e.getContainer()), Bx(t), Bx(n), e.destroy() } var i }, Px = function(e, t) { var n, r, o, i = e.selection, a = e.dom; e.destroyed || (t || e.removed ? (t || (e.editorManager.off("beforeunload", e._beforeUnload), e.theme && e.theme.destroy && e.theme.destroy(), Bx(i), Bx(a)), (r = (n = e).formElement) && (r._mceOldSubmit && (r.submit = r._mceOldSubmit, r._mceOldSubmit = null), Dx.unbind(r, "submit reset", n.formEventDelegate)), (o = e).contentAreaContainer = o.formElement = o.container = o.editorContainer = null, o.bodyElement = o.contentDocument = o.contentWindow = null, o.iframeElement = o.targetElm = null, o.selection && (o.selection = o.selection.win = o.selection.dom = o.selection.dom.doc = null), e.destroyed = !0) : e.remove()) }, Lx = pi.DOM, Ix = Yt.extend, Mx = Yt.each, Fx = Yt.resolve, Ux = Re.ie, zx = function(e, t, n) { var r, o, i, a, u, s, c, l = this, f = l.documentBaseUrl = n.documentBaseURL, d = n.baseURI; r = l, o = e, i = f, a = n.defaultSettings, u = t, c = { id: o, theme: "modern", delta_width: 0, delta_height: 0, popup_css: "", plugins: "", document_base_url: i, add_form_submit_trigger: !0, submit_patch: !0, add_unload_trigger: !0, convert_urls: !0, relative_urls: !0, remove_script_host: !0, object_resizing: !0, doctype: "", visual: !0, font_size_style_values: "xx-small,x-small,small,medium,large,x-large,xx-large", font_size_legacy_values: "xx-small,small,medium,large,x-large,xx-large,300%", forced_root_block: "p", hidden_input: !0, render_ui: !0, indentation: "30px", inline_styles: !0, convert_fonts_to_spans: !0, indent: "simple", indent_before: "p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist", indent_after: "p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist", entity_encoding: "named", url_converter: (s = r).convertURL, url_converter_scope: s, ie7_compat: !0 }, t = hf(cf, c, a, u), l.settings = t, Ni.language = t.language || "en", Ni.languageLoad = t.language_load, Ni.baseURL = n.baseURL, l.id = e, l.setDirty(!1), l.plugins = {}, l.documentBaseURI = new Ex(t.document_base_url, { base_uri: d }), l.baseURI = d, l.contentCSS = [], l.contentStyles = [], l.shortcuts = new lp(l), l.loadedCSS = {}, l.editorCommands = new Ug(l), l.suffix = n.suffix, l.editorManager = n, l.inline = t.inline, l.buttons = {}, l.menuItems = {}, t.cache_suffix && (Re.cacheSuffix = t.cache_suffix.replace(/^[\?\&]+/, "")), !1 === t.override_viewport && (Re.overrideViewPort = !1), n.fire("SetupEditor", { editor: l }), l.execCallback("setup", l), l.$ = pn.overrideDefaults(function() { return { context: l.inline ? l.getBody() : l.getDoc(), element: l.getBody() } }) }; Ix(zx.prototype = { render: function() { bx(this) }, focus: function(e) { Cp(this, e) }, hasFocus: function() { return xp(this) }, execCallback: function(e) { for (var t = [], n = 1; n < arguments.length; n++) t[n - 1] = arguments[n]; var r, o = this.settings[e]; if (o) return this.callbackLookup && (r = this.callbackLookup[e]) && (o = r.func, r = r.scope), "string" == typeof o && (r = (r = o.replace(/\.\w+$/, "")) ? Fx(r) : 0, o = Fx(o), this.callbackLookup = this.callbackLookup || {}, this.callbackLookup[e] = { func: o, scope: r }), o.apply(r || this, Array.prototype.slice.call(arguments, 1)) }, translate: function(e) { if (e && Yt.is(e, "string")) { var n = this.settings.language || "en", r = this.editorManager.i18n; e = r.data[n + "." + e] || e.replace(/\{\#([^\}]+)\}/g, function(e, t) { return r.data[n + "." + t] || "{#" + t + "}" }) } return this.editorManager.translate(e) }, getLang: function(e, t) { return this.editorManager.i18n.data[(this.settings.language || "en") + "." + e] || (t !== undefined ? t : "{#" + e + "}") }, getParam: function(e, t, n) { return yf(this, e, t, n) }, nodeChanged: function(e) { this._nodeChangeDispatcher.nodeChanged(e) }, addButton: function(e, t) { var n = this; t.cmd && (t.onclick = function() { n.execCommand(t.cmd) }), t.stateSelector && "undefined" == typeof t.active && (t.active = !1), t.text || t.icon || (t.icon = e), n.buttons = n.buttons, t.tooltip = t.tooltip || t.title, n.buttons[e] = t }, addSidebar: function(e, t) { return yx(this, e, t) }, addMenuItem: function(e, t) { var n = this; t.cmd && (t.onclick = function() { n.execCommand(t.cmd) }), n.menuItems = n.menuItems, n.menuItems[e] = t }, addContextToolbar: function(e, t) { var n, r = this; r.contextToolbars = r.contextToolbars || [], "string" == typeof e && (n = e, e = function(e) { return r.dom.is(e, n) }), r.contextToolbars.push({ id: rh.uuid("mcet"), predicate: e, items: t }) }, addCommand: function(e, t, n) { this.editorCommands.addCommand(e, t, n) }, addQueryStateHandler: function(e, t, n) { this.editorCommands.addQueryStateHandler(e, t, n) }, addQueryValueHandler: function(e, t, n) { this.editorCommands.addQueryValueHandler(e, t, n) }, addShortcut: function(e, t, n, r) { this.shortcuts.add(e, t, n, r) }, execCommand: function(e, t, n, r) { return this.editorCommands.execCommand(e, t, n, r) }, queryCommandState: function(e) { return this.editorCommands.queryCommandState(e) }, queryCommandValue: function(e) { return this.editorCommands.queryCommandValue(e) }, queryCommandSupported: function(e) { return this.editorCommands.queryCommandSupported(e) }, show: function() { this.hidden && (this.hidden = !1, this.inline ? this.getBody().contentEditable = !0 : (Lx.show(this.getContainer()), Lx.hide(this.id)), this.load(), this.fire("show")) }, hide: function() { var e = this, t = e.getDoc(); e.hidden || (Ux && t && !e.inline && t.execCommand("SelectAll"), e.save(), e.inline ? (e.getBody().contentEditable = !1, e === e.editorManager.focusedEditor && (e.editorManager.focusedEditor = null)) : (Lx.hide(e.getContainer()), Lx.setStyle(e.id, "display", e.orgDisplay)), e.hidden = !0, e.fire("hide")) }, isHidden: function() { return !!this.hidden }, setProgressState: function(e, t) { this.fire("ProgressState", { state: e, time: t }) }, load: function(e) { var t, n = this.getElement(); return this.removed ? "" : n ? ((e = e || {}).load = !0, t = this.setContent(n.value !== undefined ? n.value : n.innerHTML, e), e.element = n, e.no_events || this.fire("LoadContent", e), e.element = n = null, t) : void 0 }, save: function(e) { var t, n, r = this, o = r.getElement(); if (o && r.initialized && !r.removed) return (e = e || {}).save = !0, e.element = o, e.content = r.getContent(e), e.no_events || r.fire("SaveContent", e), "raw" === e.format && r.fire("RawSaveContent", e), t = e.content, /TEXTAREA|INPUT/i.test(o.nodeName) ? o.value = t : (!e.is_removing && r.inline || (o.innerHTML = t), (n = Lx.getParent(r.id, "form")) && Mx(n.elements, function(e) { if (e.name === r.id) return e.value = t, !1 })), e.element = o = null, !1 !== e.set_dirty && r.setDirty(!1), t }, setContent: function(e, t) { return Rx(this, e, t) }, getContent: function(e) { return t = this, void 0 === (n = e) && (n = {}), A.from(t.getBody()).fold(H("tree" === n.format ? new Wb("body", 11) : ""), function(e) { return Sx(t, n, e) }); var t, n }, insertContent: function(e, t) { t && (e = Ix({ content: e }, t)), this.execCommand("mceInsertContent", !1, e) }, isDirty: function() { return !this.isNotDirty }, setDirty: function(e) { var t = !this.isNotDirty; this.isNotDirty = !e, e && e !== t && this.fire("dirty") }, setMode: function(e) { var t, n; (n = e) !== Zg(t = this) && (t.initialized ? Qg(t, "readonly" === n) : t.on("init", function() { Qg(t, "readonly" === n) }), Xg(t, n)) }, getContainer: function() { return this.container || (this.container = Lx.get(this.editorContainer || this.id + "_parent")), this.container }, getContentAreaContainer: function() { return this.contentAreaContainer }, getElement: function() { return this.targetElm || (this.targetElm = Lx.get(this.id)), this.targetElm }, getWin: function() { var e; return this.contentWindow || (e = this.iframeElement) && (this.contentWindow = e.contentWindow), this.contentWindow }, getDoc: function() { var e; return this.contentDocument || (e = this.getWin()) && (this.contentDocument = e.document), this.contentDocument }, getBody: function() { var e = this.getDoc(); return this.bodyElement || (e ? e.body : null) }, convertURL: function(e, t, n) { var r = this.settings; return r.urlconverter_callback ? this.execCallback("urlconverter_callback", e, n, !0, t) : !r.convert_urls || n && "LINK" === n.nodeName || 0 === e.indexOf("file:") || 0 === e.length ? e : r.relative_urls ? this.documentBaseURI.toRelative(e) : e = this.documentBaseURI.toAbsolute(e, r.remove_script_host) }, addVisual: function(e) { var n, r = this, o = r.settings, i = r.dom; e = e || r.getBody(), r.hasVisual === undefined && (r.hasVisual = o.visual), Mx(i.select("table,a", e), function(e) { var t; switch (e.nodeName) { case "TABLE": return n = o.visual_table_class || "mce-item-table", void((t = i.getAttrib(e, "border")) && "0" !== t || !r.hasVisual ? i.removeClass(e, n) : i.addClass(e, n)); case "A": return void(i.getAttrib(e, "href") || (t = i.getAttrib(e, "name") || e.id, n = o.visual_anchor_class || "mce-item-anchor", t && r.hasVisual ? i.addClass(e, n) : i.removeClass(e, n))) } }), r.fire("VisualAid", { element: e, hasVisual: r.hasVisual }) }, remove: function() { Ox(this) }, destroy: function(e) { Px(this, e) }, uploadImages: function(e) { return this.editorUpload.uploadImages(e) }, _scanForImages: function() { return this.editorUpload.scanForImages() } }, ip); var Vx, qx, Hx, jx = { isEditorUIElement: function(e) { return -1 !== e.className.toString().indexOf("mce-") } }, $x = function(n, e) { var t, r; Qn.detect().browser.isIE() ? (r = n).on("focusout", function() { Dg(r) }) : (t = e, n.on("mouseup touchend", function(e) { t.throttle() })), n.on("keyup nodechange", function(e) { var t; "nodechange" === (t = e).type && t.selectionChange || Dg(n) }) }, Wx = function(e) { var t, n, r, o = Di(function() { Dg(e) }, 0); e.inline && (t = e, n = o, r = function() { n.throttle() }, pi.DOM.bind(document, "mouseup", r), t.on("remove", function() { pi.DOM.unbind(document, "mouseup", r) })), e.on("init", function() { $x(e, o) }), e.on("remove", function() { o.cancel() }) }, Kx = pi.DOM, Xx = function(e) { return jx.isEditorUIElement(e) }, Yx = function(t, e) { var n = t ? t.settings.custom_ui_selector : ""; return null !== Kx.getParent(e, function(e) { return Xx(e) || !! n && t.dom.is(e, n) }) }, Gx = function(r, e) { var t = e.editor; Wx(t), t.on("focusin", function() { var e = r.focusedEditor; e !== this && (e && e.fire("blur", { focusedEditor: this }), r.setActive(this), (r.focusedEditor = this).fire("focus", { blurredEditor: e }), this.focus(!0)) }), t.on("focusout", function() { var t = this; Le.setEditorTimeout(t, function() { var e = r.focusedEditor; Yx(t, function() { try { return document.activeElement } catch (e) { return document.body } }()) || e !== t || (t.fire("blur", { focusedEditor: null }), r.focusedEditor = null) }) }), Vx || (Vx = function(e) { var t, n = r.activeEditor; t = e.target, n && t.ownerDocument === document && (t === document.body || Yx(n, t) || r.focusedEditor !== n || (n.fire("blur", { focusedEditor: null }), r.focusedEditor = null)) }, Kx.bind(document, "focusin", Vx)) }, Jx = function(e, t) { e.focusedEditor === t.editor && (e.focusedEditor = null), e.activeEditor || (Kx.unbind(document, "focusin", Vx), Vx = null) }, Qx = function(e) { e.on("AddEditor", b(Gx, e)), e.on("RemoveEditor", b(Jx, e)) }, Zx = {}, ew = "en", tw = { setCode: function(e) { e && (ew = e, this.rtl = !! this.data[e] && "rtl" === this.data[e]._dir) }, getCode: function() { return ew }, rtl: !1, add: function(e, t) { var n = Zx[e]; for (var r in n || (Zx[e] = n = {}), t) n[r] = t[r]; this.setCode(e) }, translate: function(e) { var t = Zx[ew] || {}, n = function(e) { return Yt.is(e, "function") ? Object.prototype.toString.call(e) : r(e) ? "" : "" + e }, r = function(e) { return "" === e || null === e || Yt.is(e, "undefined") }, o = function(e) { return e = n(e), Yt.hasOwn(t, e) ? n(t[e]) : e }; if (r(e)) return ""; if (Yt.is(e, "object") && Yt.hasOwn(e, "raw")) return n(e.raw); if (Yt.is(e, "array")) { var i = e.slice(1); e = o(e[0]).replace(/\{([0-9]+)\}/g, function(e, t) { return Yt.hasOwn(i, t) ? n(i[t]) : e }) } return o(e).replace(/{context:\w+}$/, "") }, data: Zx }, nw = pi.DOM, rw = Yt.explode, ow = Yt.each, iw = Yt.extend, aw = 0, uw = !1, sw = [], cw = [], lw = function(t) { ow(Hx.get(), function(e) { "scroll" === t.type ? e.fire("ScrollWindow", t) : e.fire("ResizeWindow", t) }) }, fw = function(e) { e !== uw && (e ? pn(window).on("resize scroll", lw) : pn(window).off("resize scroll", lw), uw = e) }, dw = function(t) { var e = cw; delete sw[t.id]; for (var n = 0; n < sw.length; n++) if (sw[n] === t) { sw.splice(n, 1); break } return cw = U(cw, function(e) { return t !== e }), Hx.activeEditor === t && (Hx.activeEditor = 0 < cw.length ? cw[0] : null), Hx.focusedEditor === t && (Hx.focusedEditor = null), e.length !== cw.length }; iw(Hx = { defaultSettings: {}, $: pn, majorVersion: "4", minorVersion: "8.2", releaseDate: "2018-08-09", editors: sw, i18n: tw, activeEditor: null, settings: {}, setup: function() { var e, t, n, r, o = ""; if (t = Ex.getDocumentBaseUrl(document.location), /^[^:]+:\/\/\/?[^\/]+\//.test(t) && (t = t.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, ""), /[\/\\]$/.test(t) || (t += "/")), n = window.tinymce || window.tinyMCEPreInit) e = n.base || n.baseURL, o = n.suffix; else { for (var i = document.getElementsByTagName("script"), a = 0; a < i.length; a++) { var u = (r = i[a].src).substring(r.lastIndexOf("/")); if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(r)) { -1 !== u.indexOf(".min") && (o = ".min"), e = r.substring(0, r.lastIndexOf("/")); break } }!e && document.currentScript && (-1 !== (r = document.currentScript.src).indexOf(".min") && (o = ".min"), e = r.substring(0, r.lastIndexOf("/"))) } this.baseURL = new Ex(t).toAbsolute(e), this.documentBaseURL = t, this.baseURI = new Ex(this.baseURL), this.suffix = o, Qx(this) }, overrideDefaults: function(e) { var t, n; (t = e.base_url) && (this.baseURL = new Ex(this.documentBaseURL).toAbsolute(t.replace(/\/+$/, "")), this.baseURI = new Ex(this.baseURL)), n = e.suffix, e.suffix && (this.suffix = n); var r = (this.defaultSettings = e).plugin_base_urls; for (var o in r) Ni.PluginManager.urls[o] = r[o] }, init: function(r) { var n, u, s = this; u = Yt.makeMap("area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option tbody tfoot thead tr script noscript style textarea video audio iframe object menu", " "); var c = function(e) { var t = e.id; return t || (t = (t = e.name) && !nw.get(t) ? e.name : nw.uniqueId(), e.setAttribute("id", t)), t }, l = function(e, t) { return t.constructor === RegExp ? t.test(e.className) : nw.hasClass(e, t) }, f = function(e) { n = e }, e = function() { var o, i = 0, a = [], n = function(e, t, n) { var r = new zx(e, t, s); a.push(r), r.on("init", function() { ++i === o.length && f(a) }), r.targetElm = r.targetElm || n, r.render() }; nw.unbind(window, "ready", e), function(e) { var t = r[e]; t && t.apply(s, Array.prototype.slice.call(arguments, 2)) }("onpageload"), o = pn.unique(function(t) { var e, n = []; if (Re.ie && Re.ie < 11) return Up("TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/"), []; if (t.types) return ow(t.types, function(e) { n = n.concat(nw.select(e.selector)) }), n; if (t.selector) return nw.select(t.selector); if (t.target) return [t.target]; switch (t.mode) { case "exact": 0 < (e = t.elements || "").length && ow(rw(e), function(t) { var e; (e = nw.get(t)) ? n.push(e) : ow(document.forms, function(e) { ow(e.elements, function(e) { e.name === t && (t = "mce_editor_" + aw++, nw.setAttrib(e, "id", t), n.push(e)) }) }) }); break; case "textareas": case "specific_textareas": ow(nw.select("textarea"), function(e) { t.editor_deselector && l(e, t.editor_deselector) || t.editor_selector && !l(e, t.editor_selector) || n.push(e) }) } return n }(r)), r.types ? ow(r.types, function(t) { Yt.each(o, function(e) { return !nw.is(e, t.selector) || (n(c(e), iw({}, r, t), e), !1) }) }) : (Yt.each(o, function(e) { var t; (t = s.get(e.id)) && t.initialized && !(t.getContainer() || t.getBody()).parentNode && (dw(t), t.unbindAllNativeEvents(), t.destroy(!0), t.removed = !0, t = null) }), 0 === (o = Yt.grep(o, function(e) { return !s.get(e.id) })).length ? f([]) : ow(o, function(e) { var t; t = e, r.inline && t.tagName.toLowerCase() in u ? Up("Could not initialize inline editor on invalid inline target element", e) : n(c(e), r, e) })) }; return s.settings = r, nw.bind(window, "ready", e), new De(function(t) { n ? t(n) : f = function(e) { t(e) } }) }, get: function(t) { return 0 === arguments.length ? cw.slice(0) : k(t) ? V(cw, function(e) { return e.id === t }).getOr(null) : P(t) && cw[t] ? cw[t] : null }, add: function(e) { var t = this; return sw[e.id] === e || (null === t.get(e.id) && ("length" !== e.id && (sw[e.id] = e), sw.push(e), cw.push(e)), fw(!0), t.activeEditor = e, t.fire("AddEditor", { editor: e }), qx || (qx = function() { t.fire("BeforeUnload") }, nw.bind(window, "beforeunload", qx))), e }, createEditor: function(e, t) { return this.add(new zx(e, t, this)) }, remove: function(e) { var t, n, r = this; if (e) { if (!k(e)) return n = e, D(r.get(n.id)) ? null : (dw(n) && r.fire("RemoveEditor", { editor: n }), 0 === cw.length && nw.unbind(window, "beforeunload", qx), n.remove(), fw(0 < cw.length), n); ow(nw.select(e), function(e) { (n = r.get(e.id)) && r.remove(n) }) } else for (t = cw.length - 1; 0 <= t; t--) r.remove(cw[t]) }, execCommand: function(e, t, n) { var r = this.get(n); switch (e) { case "mceAddEditor": return this.get(n) || new zx(n, this.settings, this).render(), !0; case "mceRemoveEditor": return r && r.remove(), !0; case "mceToggleEditor": return r ? r.isHidden() ? r.show() : r.hide() : this.execCommand("mceAddEditor", 0, n), !0 } return !!this.activeEditor && this.activeEditor.execCommand(e, t, n) }, triggerSave: function() { ow(cw, function(e) { e.save() }) }, addI18n: function(e, t) { tw.add(e, t) }, translate: function(e) { return tw.translate(e) }, setActive: function(e) { var t = this.activeEditor; this.activeEditor !== e && (t && t.fire("deactivate", { relatedTarget: e }), e.fire("activate", { relatedTarget: t })), this.activeEditor = e } }, jg), Hx.setup(); var mw, gw = Hx; function pw(n) { return { walk: function(e, t) { return Dl(n, e, t) }, split: Bv, normalize: function(t) { return rg(n, t).fold(H(!1), function(e) { return t.setStart(e.startContainer, e.startOffset), t.setEnd(e.endContainer, e.endOffset), !0 }) } } }(mw = pw || (pw = {})).compareRanges = Gm, mw.getCaretRangeFromPoint = py, mw.getSelectedNode = Za, mw.getNode = eu; var hw, vw, bw = pw, yw = Math.min, Cw = Math.max, xw = Math.round, ww = function(e, t, n) { var r, o, i, a, u, s; return r = t.x, o = t.y, i = e.w, a = e.h, u = t.w, s = t.h, "b" === (n = (n || "").split(""))[0] && (o += s), "r" === n[1] && (r += u), "c" === n[0] && (o += xw(s / 2)), "c" === n[1] && (r += xw(u / 2)), "b" === n[3] && (o -= a), "r" === n[4] && (r -= i), "c" === n[3] && (o -= xw(a / 2)), "c" === n[4] && (r -= xw(i / 2)), Nw(r, o, i, a) }, Nw = function(e, t, n, r) { return { x: e, y: t, w: n, h: r } }, Ew = { inflate: function(e, t, n) { return Nw(e.x - t, e.y - n, e.w + 2 * t, e.h + 2 * n) }, relativePosition: ww, findBestRelativePosition: function(e, t, n, r) { var o, i; for (i = 0; i < r.length; i++) if ((o = ww(e, t, r[i])).x >= n.x && o.x + o.w <= n.w + n.x && o.y >= n.y && o.y + o.h <= n.h + n.y) return r[i]; return null }, intersect: function(e, t) { var n, r, o, i; return n = Cw(e.x, t.x), r = Cw(e.y, t.y), o = yw(e.x + e.w, t.x + t.w), i = yw(e.y + e.h, t.y + t.h), o - n < 0 || i - r < 0 ? null : Nw(n, r, o - n, i - r) }, clamp: function(e, t, n) { var r, o, i, a, u, s, c, l, f, d; return u = e.x, s = e.y, c = e.x + e.w, l = e.y + e.h, f = t.x + t.w, d = t.y + t.h, r = Cw(0, t.x - u), o = Cw(0, t.y - s), i = Cw(0, c - f), a = Cw(0, l - d), u += r, s += o, n && (c += r, l += o, u -= i, s -= a), Nw(u, s, (c -= i) - u, (l -= a) - s) }, create: Nw, fromClientRect: function(e) { return Nw(e.left, e.top, e.width, e.height) } }, Sw = {}, Tw = { add: function(e, t) { Sw[e.toLowerCase()] = t }, has: function(e) { return !!Sw[e.toLowerCase()] }, get: function(e) { var t = e.toLowerCase(), n = Sw.hasOwnProperty(t) ? Sw[t] : null; if (null === n) throw new Error("Could not find module for type: " + e); return n }, create: function(e, t) { var n; if ("string" == typeof e ? (t = t || {}).type = e : e = (t = e).type, e = e.toLowerCase(), !(n = Sw[e])) throw new Error("Could not find control by type: " + e); return (n = new n(t)).type = e, n } }, kw = Yt.each, Aw = Yt.extend, _w = function() {}; _w.extend = hw = function(n) { var e, t, r, o = this.prototype, i = function() { var e, t, n; if (!vw && (this.init && this.init.apply(this, arguments), t = this.Mixins)) for (e = t.length; e--;)(n = t[e]).init && n.init.apply(this, arguments) }, a = function() { return this }, u = function(n, r) { return function() { var e, t = this._super; return this._super = o[n], e = r.apply(this, arguments), this._super = t, e } }; for (t in vw = !0, e = new this, vw = !1, n.Mixins && (kw(n.Mixins, function(e) { for (var t in e)"init" !== t && (n[t] = e[t]) }), o.Mixins && (n.Mixins = o.Mixins.concat(n.Mixins))), n.Methods && kw(n.Methods.split(","), function(e) { n[e] = a }), n.Properties && kw(n.Properties.split(","), function(e) { var t = "_" + e; n[e] = function(e) { return e !== undefined ? (this[t] = e, this) : this[t] } }), n.Statics && kw(n.Statics, function(e, t) { i[t] = e }), n.Defaults && o.Defaults && (n.Defaults = Aw({}, o.Defaults, n.Defaults)), n)"function" == typeof(r = n[t]) && o[t] ? e[t] = u(t, r) : e[t] = r; return i.prototype = e, (i.constructor = i).extend = hw, i }; var Rw = Math.min, Dw = Math.max, Bw = Math.round, Ow = function(e, n) { var r, o, t, i; if (n = n || '"', null === e) return "null"; if ("string" == (t = typeof e)) return o = "\bb\tt\nn\ff\rr\"\"''\\\\", n + e.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g, function(e, t) { return '"' === n && "'" === e ? e : (r = o.indexOf(t)) + 1 ? "\\" + o.charAt(r + 1) : (e = t.charCodeAt().toString(16), "\\u" + "0000".substring(e.length) + e) }) + n; if ("object" === t) { if (e.hasOwnProperty && "[object Array]" === Object.prototype.toString.call(e)) { for (r = 0, o = "["; r < e.length; r++) o += (0 < r ? "," : "") + Ow(e[r], n); return o + "]" } for (i in o = "{", e) e.hasOwnProperty(i) && (o += "function" != typeof e[i] ? (1 < o.length ? "," + n : n) + i + n + ":" + Ow(e[i], n) : ""); return o + "}" } return "" + e }, Pw = { serialize: Ow, parse: function(e) { try { return JSON.parse(e) } catch (t) {} } }, Lw = { callbacks: {}, count: 0, send: function(t) { var n = this, r = pi.DOM, o = t.count !== undefined ? t.count : n.count, i = "tinymce_jsonp_" + o; n.callbacks[o] = function(e) { r.remove(i), delete n.callbacks[o], t.callback(e) }, r.add(r.doc.body, "script", { id: i, src: t.url, type: "text/javascript" }), n.count++ } }, Iw = { send: function(e) { var t, n = 0, r = function() { !e.async || 4 === t.readyState || 1e4 < n++ ? (e.success && n < 1e4 && 200 === t.status ? e.success.call(e.success_scope, "" + t.responseText, t, e) : e.error && e.error.call(e.error_scope, 1e4 < n ? "TIMED_OUT" : "GENERAL", t, e), t = null) : setTimeout(r, 10) }; if (e.scope = e.scope || this, e.success_scope = e.success_scope || e.scope, e.error_scope = e.error_scope || e.scope, e.async = !1 !== e.async, e.data = e.data || "", Iw.fire("beforeInitialize", { settings: e }), t = new qp) { if (t.overrideMimeType && t.overrideMimeType(e.content_type), t.open(e.type || (e.data ? "POST" : "GET"), e.url, e.async), e.crossDomain && (t.withCredentials = !0), e.content_type && t.setRequestHeader("Content-Type", e.content_type), e.requestheaders && Yt.each(e.requestheaders, function(e) { t.setRequestHeader(e.key, e.value) }), t.setRequestHeader("X-Requested-With", "XMLHttpRequest"), (t = Iw.fire("beforeSend", { xhr: t, settings: e }).xhr).send(e.data), !e.async) return r(); setTimeout(r, 10) } } }; Yt.extend(Iw, jg); var Mw, Fw, Uw, zw, Vw = Yt.extend, qw = function(e) { this.settings = Vw({}, e), this.count = 0 }; qw.sendRPC = function(e) { return (new qw).send(e) }, qw.prototype = { send: function(n) { var r = n.error, o = n.success; (n = Vw(this.settings, n)).success = function(e, t) { void 0 === (e = Pw.parse(e)) && (e = { error: "JSON Parse error." }), e.error ? r.call(n.error_scope || n.scope, e.error, t) : o.call(n.success_scope || n.scope, e.result) }, n.error = function(e, t) { r && r.call(n.error_scope || n.scope, e, t) }, n.data = Pw.serialize({ id: n.id || "c" + this.count++, method: n.method, params: n.params }), n.content_type = "application/json", Iw.send(n) } }; try { Mw = window.localStorage } catch (Kw) { Fw = {}, Uw = [], zw = { getItem: function(e) { var t = Fw[e]; return t || null }, setItem: function(e, t) { Uw.push(e), Fw[e] = String(t) }, key: function(e) { return Uw[e] }, removeItem: function(t) { Uw = Uw.filter(function(e) { return e === t }), delete Fw[t] }, clear: function() { Uw = [], Fw = {} }, length: 0 }, Object.defineProperty(zw, "length", { get: function() { return Uw.length }, configurable: !1, enumerable: !1 }), Mw = zw } var Hw, jw = gw, $w = { geom: { Rect: Ew }, util: { Promise: De, Delay: Le, Tools: Yt, VK: Hh, URI: Ex, Class: _w, EventDispatcher: Vg, Observable: jg, I18n: tw, XHR: Iw, JSON: Pw, JSONRequest: qw, JSONP: Lw, LocalStorage: Mw, Color: function(e) { var n = {}, u = 0, s = 0, c = 0, t = function(e) { var t; return "object" == typeof e ? "r" in e ? (u = e.r, s = e.g, c = e.b) : "v" in e && function(e, t, n) { var r, o, i, a; if (e = (parseInt(e, 10) || 0) % 360, t = parseInt(t, 10) / 100, n = parseInt(n, 10) / 100, t = Dw(0, Rw(t, 1)), n = Dw(0, Rw(n, 1)), 0 !== t) { switch (r = e / 60, i = (o = n * t) * (1 - Math.abs(r % 2 - 1)), a = n - o, Math.floor(r)) { case 0: u = o, s = i, c = 0; break; case 1: u = i, s = o, c = 0; break; case 2: u = 0, s = o, c = i; break; case 3: u = 0, s = i, c = o; break; case 4: u = i, s = 0, c = o; break; case 5: u = o, s = 0, c = i; break; default: u = s = c = 0 } u = Bw(255 * (u + a)), s = Bw(255 * (s + a)), c = Bw(255 * (c + a)) } else u = s = c = Bw(255 * n) }(e.h, e.s, e.v) : (t = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e)) ? (u = parseInt(t[1], 10), s = parseInt(t[2], 10), c = parseInt(t[3], 10)) : (t = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e)) ? (u = parseInt(t[1], 16), s = parseInt(t[2], 16), c = parseInt(t[3], 16)) : (t = /#([0-F])([0-F])([0-F])/gi.exec(e)) && (u = parseInt(t[1] + t[1], 16), s = parseInt(t[2] + t[2], 16), c = parseInt(t[3] + t[3], 16)), u = u < 0 ? 0 : 255 < u ? 255 : u, s = s < 0 ? 0 : 255 < s ? 255 : s, c = c < 0 ? 0 : 255 < c ? 255 : c, n }; return e && t(e), n.toRgb = function() { return { r: u, g: s, b: c } }, n.toHsv = function() { return e = u, t = s, n = c, o = 0, (i = Rw(e /= 255, Rw(t /= 255, n /= 255))) === (a = Dw(e, Dw(t, n))) ? { h: 0, s: 0, v: 100 * (o = i) } : (r = (a - i) / a, { h: Bw(60 * ((e === i ? 3 : n === i ? 1 : 5) - (e === i ? t - n : n === i ? e - t : n - e) / ((o = a) - i))), s: Bw(100 * r), v: Bw(100 * o) }); var e, t, n, r, o, i, a }, n.toHex = function() { var e = function(e) { return 1 < (e = parseInt(e, 10).toString(16)).length ? e : "0" + e }; return "#" + e(u) + e(s) + e(c) }, n.parse = t, n } }, dom: { EventUtils: je, Sizzle: Tt, DomQuery: pn, TreeWalker: oo, DOMUtils: pi, ScriptLoader: Ci, RangeUtils: bw, Serializer: sy, ControlSelection: my, BookmarkManager: ly, Selection: Hy, Event: je.Event }, html: { Styles: oi, Entities: $o, Node: Wb, Schema: ni, SaxParser: Qh, DomParser: ry, Writer: ef, Serializer: tf }, ui: { Factory: Tw }, Env: Re, AddOnManager: Ni, Annotator: Fl, Formatter: Pb, UndoManager: xv, EditorCommands: Ug, WindowManager: Dp, NotificationManager: Rp, EditorObservable: ip, Shortcuts: lp, Editor: zx, FocusManager: jx, EditorManager: gw, DOM: pi.DOM, ScriptLoader: Ci.ScriptLoader, PluginManager: Ni.PluginManager, ThemeManager: Ni.ThemeManager, trim: Yt.trim, isArray: Yt.isArray, is: Yt.is, toArray: Yt.toArray, makeMap: Yt.makeMap, each: Yt.each, map: Yt.map, grep: Yt.grep, inArray: Yt.inArray, extend: Yt.extend, create: Yt.create, walk: Yt.walk, createNS: Yt.createNS, resolve: Yt.resolve, explode: Yt.explode, _addCacheSuffix: Yt._addCacheSuffix, isOpera: Re.opera, isWebKit: Re.webkit, isIE: Re.ie, isGecko: Re.gecko, isMac: Re.mac }, Ww = jw = Yt.extend(jw, $w); Hw = Ww, window.tinymce = Hw, window.tinyMCE = Hw, function(e) { if ("object" == typeof module) try { module.exports = e } catch (t) {} }(Ww) }(); ! function() { "use strict"; var u, t, e, n, i, r, o = tinymce.util.Tools.resolve("tinymce.ThemeManager"), h = tinymce.util.Tools.resolve("tinymce.Env"), v = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"), c = tinymce.util.Tools.resolve("tinymce.util.Delay"), s = function(t) { return t.reduce(function(t, e) { return Array.isArray(e) ? t.concat(s(e)) : t.concat(e) }, []) }, a = { flatten: s }, l = function(t, e) { for (var n = 0; n < e.length; n++) { var i = (0, e[n])(t); if (i) return i } return null }, d = function(t, e) { return { id: t, rect: e } }, f = function(t) { return { x: t.left, y: t.top, w: t.width, h: t.height } }, m = function(t) { return { left: t.x, top: t.y, width: t.w, height: t.h, right: t.x + t.w, bottom: t.y + t.h } }, g = function(t) { var e = v.DOM.getViewPort(); return { x: t.x + e.x, y: t.y + e.y, w: t.w, h: t.h } }, p = function(t) { var e = t.getBoundingClientRect(); return g({ x: e.left, y: e.top, w: Math.max(t.clientWidth, t.offsetWidth), h: Math.max(t.clientHeight, t.offsetHeight) }) }, b = function(t, e) { return p(e) }, y = function(t) { return p(t.getContentAreaContainer() || t.getBody()) }, x = function(t) { var e = t.selection.getBoundingClientRect(); return e ? g(f(e)) : null }, w = function(n, i) { return function(t) { for (var e = 0; e < i.length; e++) if (i[e].predicate(n)) return d(i[e].id, b(t, n)); return null } }, _ = function(i, r) { return function(t) { for (var e = 0; e < i.length; e++) for (var n = 0; n < r.length; n++) if (r[n].predicate(i[e])) return d(r[n].id, b(t, i[e])); return null } }, C = tinymce.util.Tools.resolve("tinymce.util.Tools"), R = function(t, e) { return { id: t, predicate: e } }, E = function(t) { return C.map(t, function(t) { return R(t.id, t.predicate) }) }, k = function(e) { return function(t) { return t.selection.isCollapsed() ? null : d(e, x(t)) } }, T = function(i, r) { return function(t) { var e, n = t.schema.getTextBlockElements(); for (e = 0; e < i.length; e++) if ("TABLE" === i[e].nodeName) return null; for (e = 0; e < i.length; e++) if (i[e].nodeName in n) return t.dom.isEmpty(i[e]) ? d(r, x(t)) : null; return null } }, H = function(t) { t.fire("SkinLoaded") }, M = function(t) { return t.fire("BeforeRenderUI") }, S = tinymce.util.Tools.resolve("tinymce.EditorManager"), N = function(e) { return function(t) { return typeof t === e } }, O = function(t) { return Array.isArray(t) }, D = function(t) { return N("string")(t) }, P = function(t) { return N("number")(t) }, W = function(t) { return N("boolean")(t) }, A = function(t) { return N("function")(t) }, B = (N("object"), O), L = function(t, e) { if (e(t)) return !0; throw new Error("Default value doesn't match requested type.") }, I = function(r) { return function(t, e, n) { var i = t.settings; return L(n, r), e in i && r(i[e]) ? i[e] : n } }, z = { getStringOr: I(D), getBoolOr: I(W), getNumberOr: I(P), getHandlerOr: I(A), getToolbarItemsOr: (u = B, function(t, e, n) { var i, r, o, s, a, l = e in t.settings ? t.settings[e] : n; return L(n, u), r = n, B(i = l) ? i : D(i) ? "string" == typeof(s = i) ? (a = /[ ,]/, s.split(a).filter(function(t) { return 0 < t.length })) : s : W(i) ? (o = r, !1 === i ? [] : o) : r }) }, F = tinymce.util.Tools.resolve("tinymce.geom.Rect"), U = function(t, e) { return { rect: t, position: e } }, V = function(t, e) { return { x: e.x, y: e.y, w: t.w, h: t.h } }, q = function(t, e, n, i, r) { var o, s, a, l = { x: i.x, y: i.y, w: i.w + (i.w < r.w + n.w ? r.w : 0), h: i.h + (i.h < r.h + n.h ? r.h : 0) }; return o = F.findBestRelativePosition(r, n, l, t), n = F.clamp(n, l), o ? (s = F.relativePosition(r, n, o), a = V(r, s), U(a, o)) : (n = F.intersect(l, n)) ? ((o = F.findBestRelativePosition(r, n, l, e)) ? (s = F.relativePosition(r, n, o), a = V(r, s)) : a = V(r, n), U(a, o)) : null }, Y = function(t, e, n) { return q(["cr-cl", "cl-cr"], ["bc-tc", "bl-tl", "br-tr"], t, e, n) }, $ = function(t, e, n) { return q(["tc-bc", "bc-tc", "tl-bl", "bl-tl", "tr-br", "br-tr", "cr-cl", "cl-cr"], ["bc-tc", "bl-tl", "br-tr", "cr-cl"], t, e, n) }, X = function(t, e, n, i) { var r; return "function" == typeof t ? (r = t({ elementRect: m(e), contentAreaRect: m(n), panelRect: m(i) }), f(r)) : i }, j = function(t) { return t.panelRect }, J = function(t) { return z.getToolbarItemsOr(t, "selection_toolbar", ["bold", "italic", "|", "quicklink", "h2", "h3", "blockquote"]) }, G = function(t) { return z.getToolbarItemsOr(t, "insert_toolbar", ["quickimage", "quicktable"]) }, K = function(t) { return z.getHandlerOr(t, "inline_toolbar_position_handler", j) }, Z = function(t) { var e, n, i, r, o = t.settings; return o.skin_url ? (i = t, r = o.skin_url, i.documentBaseURI.toAbsolute(r)) : (e = o.skin, n = S.baseURL + "/skins/", e ? n + e : n + "lightgray") }, Q = function(t) { return !1 === t.settings.skin }, tt = function(i, r) { var t = Z(i), e = function() { var t, e, n; e = r, n = function() { t._skinLoaded = !0, H(t), e() }, (t = i).initialized ? n() : t.on("init", n) }; Q(i) ? e() : (v.DOM.styleSheetLoader.load(t + "/skin.min.css", e), i.contentCSS.push(t + "/content.inline.min.css")) }, et = function(t) { var e, n, i, r, o = t.contextToolbars; return a.flatten([o || [], (e = t, n = "img", i = "image", r = "alignleft aligncenter alignright", { predicate: function(t) { return e.dom.is(t, n) }, id: i, items: r })]) }, nt = function(t, e) { var n, i, r, o, s; return s = (o = t).selection.getNode(), i = o.dom.getParents(s, "*"), r = E(e), (n = l(t, [w(i[0], r), k("text"), T(i, "insert"), _(i, r)])) && n.rect ? n : null }, it = function(i, r) { return function() { var t, e, n; i.removed || (n = i, document.activeElement !== n.getBody()) || (t = et(i), (e = nt(i, t)) ? r.show(i, e.id, e.rect, t) : r.hide()) } }, rt = function(t, e) { var n, i, r, o, s, a = c.throttle(it(t, e), 0), l = c.throttle((r = it(n = t, i = e), function() { n.removed || i.inForm() || r() }), 0), u = (o = t, s = e, function() { var t = et(o), e = nt(o, t); e && s.reposition(o, e.id, e.rect) }); t.on("blur hide ObjectResizeStart", e.hide), t.on("click", a), t.on("nodeChange mouseup", l), t.on("ResizeEditor keyup", a), t.on("ResizeWindow", u), v.DOM.bind(h.container, "scroll", u), t.on("remove", function() { v.DOM.unbind(h.container, "scroll", u), e.remove() }), t.shortcuts.add("Alt+F10,F10", "", e.focus) }, ot = function(t, e) { return tt(t, function() { var n, i; rt(t, e), i = e, (n = t).shortcuts.remove("meta+k"), n.shortcuts.add("meta+k", "", function() { var t = et(n), e = l(n, [k("quicklink")]); e && i.show(n, e.id, e.rect, t) }) }), {} }, st = function(t, e) { return t.inline ? ot(t, e) : function(t) { throw new Error(t) }("inlite theme only supports inline mode.") }, at = function() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e] }, lt = function(t) { return function() { return t } }, ut = lt(!1), ct = lt(!0), dt = ut, ft = ct, ht = function() { return mt }, mt = (i = { fold: function(t, e) { return t() }, is: dt, isSome: dt, isNone: ft, getOr: n = function(t) { return t }, getOrThunk: e = function(t) { return t() }, getOrDie: function(t) { throw new Error(t || "error: getOrDie called on none.") }, getOrNull: function() { return null }, getOrUndefined: function() { return undefined }, or: n, orThunk: e, map: ht, ap: ht, each: function() {}, bind: ht, flatten: ht, exists: dt, forall: ft, filter: ht, equals: t = function(t) { return t.isNone() }, equals_: t, toArray: function() { return [] }, toString: lt("none()") }, Object.freeze && Object.freeze(i), i), gt = function(n) { var t = function() { return n }, e = function() { return r }, i = function(t) { return t(n) }, r = { fold: function(t, e) { return e(n) }, is: function(t) { return n === t }, isSome: ft, isNone: dt, getOr: t, getOrThunk: t, getOrDie: t, getOrNull: t, getOrUndefined: t, or: e, orThunk: e, map: function(t) { return gt(t(n)) }, ap: function(t) { return t.fold(ht, function(t) { return gt(t(n)) }) }, each: function(t) { t(n) }, bind: i, flatten: t, exists: i, forall: i, filter: function(t) { return t(n) ? r : mt }, equals: function(t) { return t.is(n) }, equals_: function(t, e) { return t.fold(dt, function(t) { return e(n, t) }) }, toArray: function() { return [n] }, toString: function() { return "some(" + n + ")" } }; return r }, pt = { some: gt, none: ht, from: function(t) { return null === t || t === undefined ? mt : gt(t) } }, vt = function(e) { return function(t) { return function(t) { if (null === t) return "null"; var e = typeof t; return "object" === e && Array.prototype.isPrototypeOf(t) ? "array" : "object" === e && String.prototype.isPrototypeOf(t) ? "string" : e }(t) === e } }, bt = vt("function"), yt = vt("number"), xt = (r = Array.prototype.indexOf) === undefined ? function(t, e) { return Tt(t, e) } : function(t, e) { return r.call(t, e) }, wt = function(t, e) { return kt(t, e).isSome() }, _t = function(t, e) { for (var n = t.length, i = new Array(n), r = 0; r < n; r++) { var o = t[r]; i[r] = e(o, r, t) } return i }, Ct = function(t, e) { for (var n = 0, i = t.length; n < i; n++) e(t[n], n, t) }, Rt = function(t, e) { for (var n = [], i = 0, r = t.length; i < r; i++) { var o = t[i]; e(o, i, t) && n.push(o) } return n }, Et = function(t, e) { for (var n = 0, i = t.length; n < i; n++) { var r = t[n]; if (e(r, n, t)) return pt.some(r) } return pt.none() }, kt = function(t, e) { for (var n = 0, i = t.length; n < i; n++) if (e(t[n], n, t)) return pt.some(n); return pt.none() }, Tt = function(t, e) { for (var n = 0, i = t.length; n < i; ++n) if (t[n] === e) return n; return -1 }, Ht = Array.prototype.push, Mt = (Array.prototype.slice, bt(Array.from) && Array.from, 0), St = { id: function() { return "mceu_" + Mt++ }, create: function(t, e, n) { var i = document.createElement(t); return v.DOM.setAttribs(i, e), "string" == typeof n ? i.innerHTML = n : C.each(n, function(t) { t.nodeType && i.appendChild(t) }), i }, createFragment: function(t) { return v.DOM.createFragment(t) }, getWindowSize: function() { return v.DOM.getViewPort() }, getSize: function(t) { var e, n; if (t.getBoundingClientRect) { var i = t.getBoundingClientRect(); e = Math.max(i.width || i.right - i.left, t.offsetWidth), n = Math.max(i.height || i.bottom - i.bottom, t.offsetHeight) } else e = t.offsetWidth, n = t.offsetHeight; return { width: e, height: n } }, getPos: function(t, e) { return v.DOM.getPos(t, e || St.getContainer()) }, getContainer: function() { return h.container ? h.container : document.body }, getViewPort: function(t) { return v.DOM.getViewPort(t) }, get: function(t) { return document.getElementById(t) }, addClass: function(t, e) { return v.DOM.addClass(t, e) }, removeClass: function(t, e) { return v.DOM.removeClass(t, e) }, hasClass: function(t, e) { return v.DOM.hasClass(t, e) }, toggleClass: function(t, e, n) { return v.DOM.toggleClass(t, e, n) }, css: function(t, e, n) { return v.DOM.setStyle(t, e, n) }, getRuntimeStyle: function(t, e) { return v.DOM.getStyle(t, e, !0) }, on: function(t, e, n, i) { return v.DOM.bind(t, e, n, i) }, off: function(t, e, n) { return v.DOM.unbind(t, e, n) }, fire: function(t, e, n) { return v.DOM.fire(t, e, n) }, innerHtml: function(t, e) { v.DOM.setHTML(t, e) } }, Nt = tinymce.util.Tools.resolve("tinymce.dom.DomQuery"), Ot = tinymce.util.Tools.resolve("tinymce.util.Class"), Dt = tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"), Pt = function(t) { var e; if (t) return "number" == typeof t ? { top: t = t || 0, left: t, bottom: t, right: t } : (1 === (e = (t = t.split(" ")).length) ? t[1] = t[2] = t[3] = t[0] : 2 === e ? (t[2] = t[0], t[3] = t[1]) : 3 === e && (t[3] = t[1]), { top: parseInt(t[0], 10) || 0, right: parseInt(t[1], 10) || 0, bottom: parseInt(t[2], 10) || 0, left: parseInt(t[3], 10) || 0 }) }, Wt = function(i, t) { function e(t) { var e = parseFloat(function(t) { var e = i.ownerDocument.defaultView; if (e) { var n = e.getComputedStyle(i, null); return n ? (t = t.replace(/[A-Z]/g, function(t) { return "-" + t }), n.getPropertyValue(t)) : null } return i.currentStyle[t] }(t)); return isNaN(e) ? 0 : e } return { top: e(t + "TopWidth"), right: e(t + "RightWidth"), bottom: e(t + "BottomWidth"), left: e(t + "LeftWidth") } }; function At() {} function Bt(t) { this.cls = [], this.cls._map = {}, this.onchange = t || At, this.prefix = "" } C.extend(Bt.prototype, { add: function(t) { return t && !this.contains(t) && (this.cls._map[t] = !0, this.cls.push(t), this._change()), this }, remove: function(t) { if (this.contains(t)) { var e = void 0; for (e = 0; e < this.cls.length && this.cls[e] !== t; e++); this.cls.splice(e, 1), delete this.cls._map[t], this._change() } return this }, toggle: function(t, e) { var n = this.contains(t); return n !== e && (n ? this.remove(t) : this.add(t), this._change()), this }, contains: function(t) { return !!this.cls._map[t] }, _change: function() { delete this.clsValue, this.onchange.call(this) } }), Bt.prototype.toString = function() { var t; if (this.clsValue) return this.clsValue; t = ""; for (var e = 0; e < this.cls.length; e++) 0 < e && (t += " "), t += this.prefix + this.cls[e]; return t }; var Lt, It, zt, Ft = /^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i, Ut = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, Vt = /^\s*|\s*$/g, qt = Ot.extend({ init: function(t) { var o = this.match; function s(t, e, n) { var i; function r(t) { t && e.push(t) } return r(function(e) { if (e) return e = e.toLowerCase(), function(t) { return "*" === e || t.type === e } }((i = Ft.exec(t.replace(Vt, "")))[1])), r(function(e) { if (e) return function(t) { return t._name === e } }(i[2])), r(function(n) { if (n) return n = n.split("."), function(t) { for (var e = n.length; e--;) if (!t.classes.contains(n[e])) return !1; return !0 } }(i[3])), r(function(n, i, r) { if (n) return function(t) { var e = t[n] ? t[n]() : ""; return i ? "=" === i ? e === r : "*=" === i ? 0 <= e.indexOf(r) : "~=" === i ? 0 <= (" " + e + " ").indexOf(" " + r + " ") : "!=" === i ? e !== r : "^=" === i ? 0 === e.indexOf(r) : "$=" === i && e.substr(e.length - r.length) === r : !! r } }(i[4], i[5], i[6])), r(function(i) { var e; if (i) return (i = /(?:not\((.+)\))|(.+)/i.exec(i))[1] ? (e = a(i[1], []), function(t) { return !o(t, e) }) : (i = i[2], function(t, e, n) { return "first" === i ? 0 === e : "last" === i ? e === n - 1 : "even" === i ? e % 2 == 0 : "odd" === i ? e % 2 == 1 : !! t[i] && t[i]() }) }(i[7])), e.pseudo = !! i[7], e.direct = n, e } function a(t, e) { var n, i, r, o = []; do { if (Ut.exec(""), (i = Ut.exec(t)) && (t = i[3], o.push(i[1]), i[2])) { n = i[3]; break } } while (i); for (n && a(n, e), t = [], r = 0; r < o.length; r++)">" !== o[r] && t.push(s(o[r], [], ">" === o[r - 1])); return e.push(t), e } this._selectors = a(t, []) }, match: function(t, e) { var n, i, r, o, s, a, l, u, c, d, f, h, m; for (n = 0, i = (e = e || this._selectors).length; n < i; n++) { for (m = t, h = 0, r = (o = (s = e[n]).length) - 1; 0 <= r; r--) for (u = s[r]; m;) { if (u.pseudo) for (c = d = (f = m.parent().items()).length; c-- && f[c] !== m;); for (a = 0, l = u.length; a < l; a++) if (!u[a](m, c, d)) { a = l + 1; break } if (a === l) { h++; break } if (r === o - 1) break; m = m.parent() } if (h === o) return !0 } return !1 }, find: function(t) { var e, n, u = [], i = this._selectors; function c(t, e, n) { var i, r, o, s, a, l = e[n]; for (i = 0, r = t.length; i < r; i++) { for (a = t[i], o = 0, s = l.length; o < s; o++) if (!l[o](a, i, r)) { o = s + 1; break } if (o === s) n === e.length - 1 ? u.push(a) : a.items && c(a.items(), e, n + 1); else if (l.direct) return; a.items && c(a.items(), e, n) } } if (t.items) { for (e = 0, n = i.length; e < n; e++) c(t.items(), i[e], 0); 1 < n && (u = function(t) { for (var e, n = [], i = t.length; i--;)(e = t[i]).__checked || (n.push(e), e.__checked = 1); for (i = n.length; i--;) delete n[i].__checked; return n }(u)) } return Lt || (Lt = qt.Collection), new Lt(u) } }), Yt = Array.prototype.push, $t = Array.prototype.slice; zt = { length: 0, init: function(t) { t && this.add(t) }, add: function(t) { return C.isArray(t) ? Yt.apply(this, t) : t instanceof It ? this.add(t.toArray()) : Yt.call(this, t), this }, set: function(t) { var e, n = this, i = n.length; for (n.length = 0, n.add(t), e = n.length; e < i; e++) delete n[e]; return n }, filter: function(e) { var t, n, i, r, o = []; for ("string" == typeof e ? (e = new qt(e), r = function(t) { return e.match(t) }) : r = e, t = 0, n = this.length; t < n; t++) r(i = this[t]) && o.push(i); return new It(o) }, slice: function() { return new It($t.apply(this, arguments)) }, eq: function(t) { return -1 === t ? this.slice(t) : this.slice(t, +t + 1) }, each: function(t) { return C.each(this, t), this }, toArray: function() { return C.toArray(this) }, indexOf: function(t) { for (var e = this.length; e-- && this[e] !== t;); return e }, reverse: function() { return new It(C.toArray(this).reverse()) }, hasClass: function(t) { return !!this[0] && this[0].classes.contains(t) }, prop: function(e, n) { var t; return n !== undefined ? (this.each(function(t) { t[e] && t[e](n) }), this) : (t = this[0]) && t[e] ? t[e]() : void 0 }, exec: function(e) { var n = C.toArray(arguments).slice(1); return this.each(function(t) { t[e] && t[e].apply(t, n) }), this }, remove: function() { for (var t = this.length; t--;) this[t].remove(); return this }, addClass: function(e) { return this.each(function(t) { t.classes.add(e) }) }, removeClass: function(e) { return this.each(function(t) { t.classes.remove(e) }) } }, C.each("fire on off show hide append prepend before after reflow".split(" "), function(n) { zt[n] = function() { var e = C.toArray(arguments); return this.each(function(t) { n in t && t[n].apply(t, e) }), this } }), C.each("text name disabled active selected checked visible parent value data".split(" "), function(e) { zt[e] = function(t) { return this.prop(e, t) } }), It = Ot.extend(zt); var Xt = qt.Collection = It, jt = function(t) { this.create = t.create }; jt.create = function(r, o) { return new jt({ create: function(e, n) { var i, t = function(t) { e.set(n, t.value) }; return e.on("change:" + n, function(t) { r.set(o, t.value) }), r.on("change:" + o, t), (i = e._bindings) || (i = e._bindings = [], e.on("destroy", function() { for (var t = i.length; t--;) i[t]() })), i.push(function() { r.off("change:" + o, t) }), r.get(o) } }) }; var Jt = tinymce.util.Tools.resolve("tinymce.util.Observable"); function Gt(t) { return 0 < t.nodeType } var Kt, Zt, Qt = Ot.extend({ Mixins: [Jt], init: function(t) { var e, n; for (e in t = t || {})(n = t[e]) instanceof jt && (t[e] = n.create(this, e)); this.data = t }, set: function(e, n) { var i, r, o = this.data[e]; if (n instanceof jt && (n = n.create(this, e)), "object" == typeof e) { for (i in e) this.set(i, e[i]); return this } return function t(e, n) { var i, r; if (e === n) return !0; if (null === e || null === n) return e === n; if ("object" != typeof e || "object" != typeof n) return e === n; if (C.isArray(n)) { if (e.length !== n.length) return !1; for (i = e.length; i--;) if (!t(e[i], n[i])) return !1 } if (Gt(e) || Gt(n)) return e === n; for (i in r = {}, n) { if (!t(e[i], n[i])) return !1; r[i] = !0 } for (i in e) if (!r[i] && !t(e[i], n[i])) return !1; return !0 }(o, n) || (this.data[e] = n, r = { target: this, name: e, value: n, oldValue: o }, this.fire("change:" + e, r), this.fire("change", r)), this }, get: function(t) { return this.data[t] }, has: function(t) { return t in this.data }, bind: function(t) { return jt.create(this, t) }, destroy: function() { this.fire("destroy") } }), te = {}, ee = { add: function(t) { var e = t.parent(); if (e) { if (!e._layout || e._layout.isNative()) return; te[e._id] || (te[e._id] = e), Kt || (Kt = !0, c.requestAnimationFrame(function() { var t, e; for (t in Kt = !1, te)(e = te[t]).state.get("rendered") && e.reflow(); te = {} }, document.body)) } }, remove: function(t) { te[t._id] && delete te[t._id] } }, ne = function(t) { return t ? t.getRoot().uiContainer : null }, ie = { getUiContainerDelta: function(t) { var e = ne(t); if (e && "static" !== v.DOM.getStyle(e, "position", !0)) { var n = v.DOM.getPos(e), i = e.scrollLeft - n.x, r = e.scrollTop - n.y; return pt.some({ x: i, y: r }) } return pt.none() }, setUiContainer: function(t, e) { var n = v.DOM.select(t.settings.ui_container)[0]; e.getRoot().uiContainer = n }, getUiContainer: ne, inheritUiContainer: function(t, e) { return e.uiContainer = ne(t) } }, re = "onmousewheel" in document, oe = !1, se = 0, ae = { Statics: { classPrefix: "mce-" }, isRtl: function() { return Zt.rtl }, classPrefix: "mce-", init: function(e) { var t, n, i = this; function r(t) { var e; for (t = t.split(" "), e = 0; e < t.length; e++) i.classes.add(t[e]) } i.settings = e = C.extend({}, i.Defaults, e), i._id = e.id || "mceu_" + se++, i._aria = { role: e.role }, i._elmCache = {}, i.$ = Nt, i.state = new Qt({ visible: !0, active: !1, disabled: !1, value: "" }), i.data = new Qt(e.data), i.classes = new Bt(function() { i.state.get("rendered") && (i.getEl().className = this.toString()) }), i.classes.prefix = i.classPrefix, (t = e.classes) && (i.Defaults && (n = i.Defaults.classes) && t !== n && r(n), r(t)), C.each("title text name visible disabled active value".split(" "), function(t) { t in e && i[t](e[t]) }), i.on("click", function() { if (i.disabled()) return !1 }), i.settings = e, i.borderBox = Pt(e.border), i.paddingBox = Pt(e.padding), i.marginBox = Pt(e.margin), e.hidden && i.hide() }, Properties: "parent,name", getContainerElm: function() { var t = ie.getUiContainer(this); return t || St.getContainer() }, getParentCtrl: function(t) { for (var e, n = this.getRoot().controlIdLookup; t && n && !(e = n[t.id]);) t = t.parentNode; return e }, initLayoutRect: function() { var t, e, n, i, r, o, s, a, l, u, c = this, d = c.settings, f = c.getEl(); t = c.borderBox = c.borderBox || Wt(f, "border"), c.paddingBox = c.paddingBox || Wt(f, "padding"), c.marginBox = c.marginBox || Wt(f, "margin"), u = St.getSize(f), a = d.minWidth, l = d.minHeight, r = a || u.width, o = l || u.height, n = d.width, i = d.height, s = void 0 !== (s = d.autoResize) ? s : !n && !i, n = n || r, i = i || o; var h = t.left + t.right, m = t.top + t.bottom, g = d.maxWidth || 65535, p = d.maxHeight || 65535; return c._layoutRect = e = { x: d.x || 0, y: d.y || 0, w: n, h: i, deltaW: h, deltaH: m, contentW: n - h, contentH: i - m, innerW: n - h, innerH: i - m, startMinWidth: a || 0, startMinHeight: l || 0, minW: Math.min(r, g), minH: Math.min(o, p), maxW: g, maxH: p, autoResize: s, scrollW: 0 }, c._lastLayoutRect = {}, e }, layoutRect: function(t) { var e, n, i, r, o, s = this, a = s._layoutRect; return a || (a = s.initLayoutRect()), t ? (i = a.deltaW, r = a.deltaH, t.x !== undefined && (a.x = t.x), t.y !== undefined && (a.y = t.y), t.minW !== undefined && (a.minW = t.minW), t.minH !== undefined && (a.minH = t.minH), (n = t.w) !== undefined && (n = (n = n < a.minW ? a.minW : n) > a.maxW ? a.maxW : n, a.w = n, a.innerW = n - i), (n = t.h) !== undefined && (n = (n = n < a.minH ? a.minH : n) > a.maxH ? a.maxH : n, a.h = n, a.innerH = n - r), (n = t.innerW) !== undefined && (n = (n = n < a.minW - i ? a.minW - i : n) > a.maxW - i ? a.maxW - i : n, a.innerW = n, a.w = n + i), (n = t.innerH) !== undefined && (n = (n = n < a.minH - r ? a.minH - r : n) > a.maxH - r ? a.maxH - r : n, a.innerH = n, a.h = n + r), t.contentW !== undefined && (a.contentW = t.contentW), t.contentH !== undefined && (a.contentH = t.contentH), (e = s._lastLayoutRect).x === a.x && e.y === a.y && e.w === a.w && e.h === a.h || ((o = Zt.repaintControls) && o.map && !o.map[s._id] && (o.push(s), o.map[s._id] = !0), e.x = a.x, e.y = a.y, e.w = a.w, e.h = a.h), s) : a }, repaint: function() { var t, e, n, i, r, o, s, a, l, u, c = this; l = document.createRange ? function(t) { return t } : Math.round, t = c.getEl().style, i = c._layoutRect, a = c._lastRepaintRect || {}, o = (r = c.borderBox).left + r.right, s = r.top + r.bottom, i.x !== a.x && (t.left = l(i.x) + "px", a.x = i.x), i.y !== a.y && (t.top = l(i.y) + "px", a.y = i.y), i.w !== a.w && (u = l(i.w - o), t.width = (0 <= u ? u : 0) + "px", a.w = i.w), i.h !== a.h && (u = l(i.h - s), t.height = (0 <= u ? u : 0) + "px", a.h = i.h), c._hasBody && i.innerW !== a.innerW && (u = l(i.innerW), (n = c.getEl("body")) && ((e = n.style).width = (0 <= u ? u : 0) + "px"), a.innerW = i.innerW), c._hasBody && i.innerH !== a.innerH && (u = l(i.innerH), (n = n || c.getEl("body")) && ((e = e || n.style).height = (0 <= u ? u : 0) + "px"), a.innerH = i.innerH), c._lastRepaintRect = a, c.fire("repaint", {}, !1) }, updateLayoutRect: function() { var t = this; t.parent()._lastRect = null, St.css(t.getEl(), { width: "", height: "" }), t._layoutRect = t._lastRepaintRect = t._lastLayoutRect = null, t.initLayoutRect() }, on: function(t, e) { var n, i, r, o = this; return le(o).on(t, "string" != typeof(n = e) ? n : function(t) { return i || o.parentsAndSelf().each(function(t) { var e = t.settings.callbacks; if (e && (i = e[n])) return r = t, !1 }), i ? i.call(r, t) : (t.action = n, void this.fire("execute", t)) }), o }, off: function(t, e) { return le(this).off(t, e), this }, fire: function(t, e, n) { if ((e = e || {}).control || (e.control = this), e = le(this).fire(t, e), !1 !== n && this.parent) for (var i = this.parent(); i && !e.isPropagationStopped();) i.fire(t, e, !1), i = i.parent(); return e }, hasEventListeners: function(t) { return le(this).has(t) }, parents: function(t) { var e, n = new Xt; for (e = this.parent(); e; e = e.parent()) n.add(e); return t && (n = n.filter(t)), n }, parentsAndSelf: function(t) { return new Xt(this).add(this.parents(t)) }, next: function() { var t = this.parent().items(); return t[t.indexOf(this) + 1] }, prev: function() { var t = this.parent().items(); return t[t.indexOf(this) - 1] }, innerHtml: function(t) { return this.$el.html(t), this }, getEl: function(t) { var e = t ? this._id + "-" + t : this._id; return this._elmCache[e] || (this._elmCache[e] = Nt("#" + e)[0]), this._elmCache[e] }, show: function() { return this.visible(!0) }, hide: function() { return this.visible(!1) }, focus: function() { try { this.getEl().focus() } catch (t) {} return this }, blur: function() { return this.getEl().blur(), this }, aria: function(t, e) { var n = this, i = n.getEl(n.ariaTarget); return void 0 === e ? n._aria[t] : (n._aria[t] = e, n.state.get("rendered") && i.setAttribute("role" === t ? t : "aria-" + t, e), n) }, encode: function(t, e) { return !1 !== e && (t = this.translate(t)), (t || "").replace(/[&<>"]/g, function(t) { return "&#" + t.charCodeAt(0) + ";" }) }, translate: function(t) { return Zt.translate ? Zt.translate(t) : t }, before: function(t) { var e = this.parent(); return e && e.insert(t, e.items().indexOf(this), !0), this }, after: function(t) { var e = this.parent(); return e && e.insert(t, e.items().indexOf(this)), this }, remove: function() { var e, t, n = this, i = n.getEl(), r = n.parent(); if (n.items) { var o = n.items().toArray(); for (t = o.length; t--;) o[t].remove() } r && r.items && (e = [], r.items().each(function(t) { t !== n && e.push(t) }), r.items().set(e), r._lastRect = null), n._eventsRoot && n._eventsRoot === n && Nt(i).off(); var s = n.getRoot().controlIdLookup; return s && delete s[n._id], i && i.parentNode && i.parentNode.removeChild(i), n.state.set("rendered", !1), n.state.destroy(), n.fire("remove"), n }, renderBefore: function(t) { return Nt(t).before(this.renderHtml()), this.postRender(), this }, renderTo: function(t) { return Nt(t || this.getContainerElm()).append(this.renderHtml()), this.postRender(), this }, preRender: function() {}, render: function() {}, renderHtml: function() { return '
    ' }, postRender: function() { var t, e, n, i, r, o = this, s = o.settings; for (i in o.$el = Nt(o.getEl()), o.state.set("rendered", !0), s) 0 === i.indexOf("on") && o.on(i.substr(2), s[i]); if (o._eventsRoot) { for (n = o.parent(); !r && n; n = n.parent()) r = n._eventsRoot; if (r) for (i in r._nativeEvents) o._nativeEvents[i] = !0 } ue(o), s.style && (t = o.getEl()) && (t.setAttribute("style", s.style), t.style.cssText = s.style), o.settings.border && (e = o.borderBox, o.$el.css({ "border-top-width": e.top, "border-right-width": e.right, "border-bottom-width": e.bottom, "border-left-width": e.left })); var a = o.getRoot(); for (var l in a.controlIdLookup || (a.controlIdLookup = {}), (a.controlIdLookup[o._id] = o)._aria) o.aria(l, o._aria[l]); !1 === o.state.get("visible") && (o.getEl().style.display = "none"), o.bindStates(), o.state.on("change:visible", function(t) { var e, n = t.value; o.state.get("rendered") && (o.getEl().style.display = !1 === n ? "none" : "", o.getEl().getBoundingClientRect()), (e = o.parent()) && (e._lastRect = null), o.fire(n ? "show" : "hide"), ee.add(o) }), o.fire("postrender", {}, !1) }, bindStates: function() {}, scrollIntoView: function(t) { var e, n, i, r, o, s, a = this.getEl(), l = a.parentNode, u = function(t, e) { var n, i, r = t; for (n = i = 0; r && r !== e && r.nodeType;) n += r.offsetLeft || 0, i += r.offsetTop || 0, r = r.offsetParent; return { x: n, y: i } }(a, l); return e = u.x, n = u.y, i = a.offsetWidth, r = a.offsetHeight, o = l.clientWidth, s = l.clientHeight, "end" === t ? (e -= o - i, n -= s - r) : "center" === t && (e -= o / 2 - i / 2, n -= s / 2 - r / 2), l.scrollLeft = e, l.scrollTop = n, this }, getRoot: function() { for (var t, e = this, n = []; e;) { if (e.rootControl) { t = e.rootControl; break } n.push(e), e = (t = e).parent() } t || (t = this); for (var i = n.length; i--;) n[i].rootControl = t; return t }, reflow: function() { ee.remove(this); var t = this.parent(); return t && t._layout && !t._layout.isNative() && t.reflow(), this } }; function le(n) { return n._eventDispatcher || (n._eventDispatcher = new Dt({ scope: n, toggleEvent: function(t, e) { e && Dt.isNative(t) && (n._nativeEvents || (n._nativeEvents = {}), n._nativeEvents[t] = !0, n.state.get("rendered") && ue(n)) } })), n._eventDispatcher } function ue(a) { var t, e, n, l, i, r; function o(t) { var e = a.getParentCtrl(t.target); e && e.fire(t.type, t) } function s() { var t = l._lastHoverCtrl; t && (t.fire("mouseleave", { target: t.getEl() }), t.parents().each(function(t) { t.fire("mouseleave", { target: t.getEl() }) }), l._lastHoverCtrl = null) } function u(t) { var e, n, i, r = a.getParentCtrl(t.target), o = l._lastHoverCtrl, s = 0; if (r !== o) { if ((n = (l._lastHoverCtrl = r).parents().toArray().reverse()).push(r), o) { for ((i = o.parents().toArray().reverse()).push(o), s = 0; s < i.length && n[s] === i[s]; s++); for (e = i.length - 1; s <= e; e--)(o = i[e]).fire("mouseleave", { target: o.getEl() }) } for (e = s; e < n.length; e++)(r = n[e]).fire("mouseenter", { target: r.getEl() }) } } function c(t) { t.preventDefault(), "mousewheel" === t.type ? (t.deltaY = -.025 * t.wheelDelta, t.wheelDeltaX && (t.deltaX = -.025 * t.wheelDeltaX)) : (t.deltaX = 0, t.deltaY = t.detail), t = a.fire("wheel", t) } if (i = a._nativeEvents) { for ((n = a.parents().toArray()).unshift(a), t = 0, e = n.length; !l && t < e; t++) l = n[t]._eventsRoot; for (l || (l = n[n.length - 1] || a), a._eventsRoot = l, e = t, t = 0; t < e; t++) n[t]._eventsRoot = l; var d = l._delegates; for (r in d || (d = l._delegates = {}), i) { if (!i) return !1; "wheel" !== r || oe ? ("mouseenter" === r || "mouseleave" === r ? l._hasMouseEnter || (Nt(l.getEl()).on("mouseleave", s).on("mouseover", u), l._hasMouseEnter = 1) : d[r] || (Nt(l.getEl()).on(r, o), d[r] = !0), i[r] = !1) : re ? Nt(a.getEl()).on("mousewheel", c) : Nt(a.getEl()).on("DOMMouseScroll", c) } } } C.each("text title visible disabled active value".split(" "), function(e) { ae[e] = function(t) { return 0 === arguments.length ? this.state.get(e) : (void 0 !== t && this.state.set(e, t), this) } }); var ce = Zt = Ot.extend(ae), de = function(t) { return "static" === St.getRuntimeStyle(t, "position") }, fe = function(t) { return t.state.get("fixed") }; function he(t, e, n) { var i, r, o, s, a, l, u, c, d, f; return d = me(), o = (r = St.getPos(e, ie.getUiContainer(t))).x, s = r.y, fe(t) && de(document.body) && (o -= d.x, s -= d.y), i = t.getEl(), a = (f = St.getSize(i)).width, l = f.height, u = (f = St.getSize(e)).width, c = f.height, "b" === (n = (n || "").split(""))[0] && (s += c), "r" === n[1] && (o += u), "c" === n[0] && (s += Math.round(c / 2)), "c" === n[1] && (o += Math.round(u / 2)), "b" === n[3] && (s -= l), "r" === n[4] && (o -= a), "c" === n[3] && (s -= Math.round(l / 2)), "c" === n[4] && (o -= Math.round(a / 2)), { x: o, y: s, w: a, h: l } } var me = function() { var t = window, e = Math.max(t.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft), n = Math.max(t.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop); return { x: e, y: n, w: e + (t.innerWidth || document.documentElement.clientWidth), h: n + (t.innerHeight || document.documentElement.clientHeight) } }, ge = function(t) { var e, n = ie.getUiContainer(t); return n && !fe(t) ? { x: 0, y: 0, w: (e = n).scrollWidth - 1, h: e.scrollHeight - 1 } : me() }, pe = { testMoveRel: function(t, e) { for (var n = ge(this), i = 0; i < e.length; i++) { var r = he(this, t, e[i]); if (fe(this)) { if (0 < r.x && r.x + r.w < n.w && 0 < r.y && r.y + r.h < n.h) return e[i] } else if (r.x > n.x && r.x + r.w < n.w && r.y > n.y && r.y + r.h < n.h) return e[i] } return e[0] }, moveRel: function(t, e) { "string" != typeof e && (e = this.testMoveRel(t, e)); var n = he(this, t, e); return this.moveTo(n.x, n.y) }, moveBy: function(t, e) { var n = this.layoutRect(); return this.moveTo(n.x + t, n.y + e), this }, moveTo: function(t, e) { var n = this; function i(t, e, n) { return t < 0 ? 0 : e < t + n && (t = e - n) < 0 ? 0 : t } if (n.settings.constrainToViewport) { var r = ge(this), o = n.layoutRect(); t = i(t, r.w, o.w), e = i(e, r.h, o.h) } var s = ie.getUiContainer(n); return s && de(s) && !fe(n) && (t -= s.scrollLeft, e -= s.scrollTop), s && (t += 1, e += 1), n.state.get("rendered") ? n.layoutRect({ x: t, y: e }).repaint() : (n.settings.x = t, n.settings.y = e), n.fire("move", { x: t, y: e }), n } }, ve = ce.extend({ Mixins: [pe], Defaults: { classes: "widget tooltip tooltip-n" }, renderHtml: function() { var t = this, e = t.classPrefix; return '" }, bindStates: function() { var e = this; return e.state.on("change:text", function(t) { e.getEl().lastChild.innerHTML = e.encode(t.value) }), e._super() }, repaint: function() { var t, e; t = this.getEl().style, e = this._layoutRect, t.left = e.x + "px", t.top = e.y + "px", t.zIndex = 131070 } }), be = ce.extend({ init: function(i) { var r = this; r._super(i), i = r.settings, r.canFocus = !0, i.tooltip && !1 !== be.tooltips && (r.on("mouseenter", function(t) { var e = r.tooltip().moveTo(-65535); if (t.control === r) { var n = e.text(i.tooltip).show().testMoveRel(r.getEl(), ["bc-tc", "bc-tl", "bc-tr"]); e.classes.toggle("tooltip-n", "bc-tc" === n), e.classes.toggle("tooltip-nw", "bc-tl" === n), e.classes.toggle("tooltip-ne", "bc-tr" === n), e.moveRel(r.getEl(), n) } else e.hide() }), r.on("mouseleave mousedown click", function() { r.tooltip().remove(), r._tooltip = null })), r.aria("label", i.ariaLabel || i.tooltip) }, tooltip: function() { return this._tooltip || (this._tooltip = new ve({ type: "tooltip" }), ie.inheritUiContainer(this, this._tooltip), this._tooltip.renderTo()), this._tooltip }, postRender: function() { var t = this, e = t.settings; t._super(), t.parent() || !e.width && !e.height || (t.initLayoutRect(), t.repaint()), e.autofocus && t.focus() }, bindStates: function() { var e = this; function n(t) { e.aria("disabled", t), e.classes.toggle("disabled", t) } function i(t) { e.aria("pressed", t), e.classes.toggle("active", t) } return e.state.on("change:disabled", function(t) { n(t.value) }), e.state.on("change:active", function(t) { i(t.value) }), e.state.get("disabled") && n(!0), e.state.get("active") && i(!0), e._super() }, remove: function() { this._super(), this._tooltip && (this._tooltip.remove(), this._tooltip = null) } }), ye = be.extend({ Defaults: { value: 0 }, init: function(t) { this._super(t), this.classes.add("progress"), this.settings.filter || (this.settings.filter = function(t) { return Math.round(t) }) }, renderHtml: function() { var t = this._id, e = this.classPrefix; return '
    0%
    ' }, postRender: function() { return this._super(), this.value(this.settings.value), this }, bindStates: function() { var e = this; function n(t) { t = e.settings.filter(t), e.getEl().lastChild.innerHTML = t + "%", e.getEl().firstChild.firstChild.style.width = t + "%" } return e.state.on("change:value", function(t) { n(t.value) }), n(e.state.get("value")), e._super() } }), xe = function(t, e) { t.getEl().lastChild.textContent = e + (t.progressBar ? " " + t.progressBar.value() + "%" : "") }, we = ce.extend({ Mixins: [pe], Defaults: { classes: "widget notification" }, init: function(t) { var e = this; e._super(t), e.maxWidth = t.maxWidth, t.text && e.text(t.text), t.icon && (e.icon = t.icon), t.color && (e.color = t.color), t.type && e.classes.add("notification-" + t.type), t.timeout && (t.timeout < 0 || 0 < t.timeout) && !t.closeButton ? e.closeButton = !1 : (e.classes.add("has-close"), e.closeButton = !0), t.progressBar && (e.progressBar = new ye), e.on("click", function(t) { -1 !== t.target.className.indexOf(e.classPrefix + "close") && e.close() }) }, renderHtml: function() { var t, e = this, n = e.classPrefix, i = "", r = "", o = ""; return e.icon && (i = ''), t = ' style="max-width: ' + e.maxWidth + "px;" + (e.color ? "background-color: " + e.color + ';"' : '"'), e.closeButton && (r = ''), e.progressBar && (o = e.progressBar.renderHtml()), '' }, postRender: function() { var t = this; return c.setTimeout(function() { t.$el.addClass(t.classPrefix + "in"), xe(t, t.state.get("text")) }, 100), t._super() }, bindStates: function() { var e = this; return e.state.on("change:text", function(t) { e.getEl().firstChild.innerHTML = t.value, xe(e, t.value) }), e.progressBar && (e.progressBar.bindStates(), e.progressBar.state.on("change:value", function(t) { xe(e, e.state.get("text")) })), e._super() }, close: function() { return this.fire("close").isDefaultPrevented() || this.remove(), this }, repaint: function() { var t, e; t = this.getEl().style, e = this._layoutRect, t.left = e.x + "px", t.top = e.y + "px", t.zIndex = 65534 } }); function _e(o) { var s = function(t) { return t.inline ? t.getElement() : t.getContentAreaContainer() }; return { open: function(t, e) { var n, i = C.extend(t, { maxWidth: (n = s(o), St.getSize(n).width) }), r = new we(i); return 0 < (r.args = i).timeout && (r.timer = setTimeout(function() { r.close(), e() }, i.timeout)), r.on("close", function() { e() }), r.renderTo(), r }, close: function(t) { t.close() }, reposition: function(t) { Ct(t, function(t) { t.moveTo(0, 0) }), function(n) { if (0 < n.length) { var t = n.slice(0, 1)[0], e = s(o); t.moveRel(e, "tc-tc"), Ct(n, function(t, e) { 0 < e && t.moveRel(n[e - 1].getEl(), "bc-tc") }) } }(t) }, getArgs: function(t) { return t.args } } } function Ce(t) { var e, n; if (t.changedTouches) for (e = "screenX screenY pageX pageY clientX clientY".split(" "), n = 0; n < e.length; n++) t[e[n]] = t.changedTouches[0][e[n]] } function Re(t, h) { var m, g, e, p, v, b, y, x = h.document || document; h = h || {}; var w = x.getElementById(h.handle || t); e = function(t) { var e, n, i, r, o, s, a, l, u, c, d, f = (e = x, u = Math.max, n = e.documentElement, i = e.body, r = u(n.scrollWidth, i.scrollWidth), o = u(n.clientWidth, i.clientWidth), s = u(n.offsetWidth, i.offsetWidth), a = u(n.scrollHeight, i.scrollHeight), l = u(n.clientHeight, i.clientHeight), { width: r < s ? o : r, height: a < u(n.offsetHeight, i.offsetHeight) ? l : a }); Ce(t), t.preventDefault(), g = t.button, c = w, b = t.screenX, y = t.screenY, d = window.getComputedStyle ? window.getComputedStyle(c, null).getPropertyValue("cursor") : c.runtimeStyle.cursor, m = Nt("
    ").css({ position: "absolute", top: 0, left: 0, width: f.width, height: f.height, zIndex: 2147483647, opacity: 1e-4, cursor: d }).appendTo(x.body), Nt(x).on("mousemove touchmove", v).on("mouseup touchend", p), h.start(t) }, v = function(t) { if (Ce(t), t.button !== g) return p(t); t.deltaX = t.screenX - b, t.deltaY = t.screenY - y, t.preventDefault(), h.drag(t) }, p = function(t) { Ce(t), Nt(x).off("mousemove touchmove", v).off("mouseup touchend", p), m.remove(), h.stop && h.stop(t) }, this.destroy = function() { Nt(w).off() }, Nt(w).on("mousedown touchstart", e) } var Ee = tinymce.util.Tools.resolve("tinymce.ui.Factory"), ke = function(t) { return !!t.getAttribute("data-mce-tabstop") }; function Te(t) { var o, r, n = t.root; function i(t) { return t && 1 === t.nodeType } try { o = document.activeElement } catch (e) { o = document.body } function s(t) { return i(t = t || o) ? t.getAttribute("role") : null } function a(t) { for (var e, n = t || o; n = n.parentNode;) if (e = s(n)) return e } function l(t) { var e = o; if (i(e)) return e.getAttribute("aria-" + t) } function u(t) { var e = t.tagName.toUpperCase(); return "INPUT" === e || "TEXTAREA" === e || "SELECT" === e } function c(e) { var r = []; return function t(e) { if (1 === e.nodeType && "none" !== e.style.display && !e.disabled) { var n; (u(n = e) && !n.hidden || ke(n) || /^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(s(n))) && r.push(e); for (var i = 0; i < e.childNodes.length; i++) t(e.childNodes[i]) } }(e || n.getEl()), r } function d(t) { var e, n; (n = (t = t || r).parents().toArray()).unshift(t); for (var i = 0; i < n.length && !(e = n[i]).settings.ariaRoot; i++); return e } function f(t, e) { return t < 0 ? t = e.length - 1 : t >= e.length && (t = 0), e[t] && e[t].focus(), t } function h(t, e) { var n = -1, i = d(); e = e || c(i.getEl()); for (var r = 0; r < e.length; r++) e[r] === o && (n = r); n += t, i.lastAriaIndex = f(n, e) } function m() { "tablist" === a() ? h(-1, c(o.parentNode)) : r.parent().submenu ? b() : h(-1) } function g() { var t = s(), e = a(); "tablist" === e ? h(1, c(o.parentNode)) : "menuitem" === t && "menu" === e && l("haspopup") ? y() : h(1) } function p() { h(-1) } function v() { var t = s(), e = a(); "menuitem" === t && "menubar" === e ? y() : "button" === t && l("haspopup") ? y({ key: "down" }) : h(1) } function b() { r.fire("cancel") } function y(t) { t = t || {}, r.fire("click", { target: o, aria: t }) } return r = n.getParentCtrl(o), n.on("keydown", function(t) { function e(t, e) { u(o) || ke(o) || "slider" !== s(o) && !1 !== e(t) && t.preventDefault() } if (!t.isDefaultPrevented()) switch (t.keyCode) { case 37: e(t, m); break; case 39: e(t, g); break; case 38: e(t, p); break; case 40: e(t, v); break; case 27: b(); break; case 14: case 13: case 32: e(t, y); break; case 9: ! function(t) { if ("tablist" === a()) { var e = c(r.getEl("body"))[0]; e && e.focus() } else h(t.shiftKey ? -1 : 1) }(t), t.preventDefault() } }), n.on("focusin", function(t) { o = t.target, r = t.control }), { focusFirst: function(t) { var e = d(t), n = c(e.getEl()); e.settings.ariaRemember && "lastAriaIndex" in e ? f(e.lastAriaIndex, n) : f(0, n) } } } var He, Me, Se, Ne, Oe = {}, De = ce.extend({ init: function(t) { var e = this; e._super(t), (t = e.settings).fixed && e.state.set("fixed", !0), e._items = new Xt, e.isRtl() && e.classes.add("rtl"), e.bodyClasses = new Bt(function() { e.state.get("rendered") && (e.getEl("body").className = this.toString()) }), e.bodyClasses.prefix = e.classPrefix, e.classes.add("container"), e.bodyClasses.add("container-body"), t.containerCls && e.classes.add(t.containerCls), e._layout = Ee.create((t.layout || "") + "layout"), e.settings.items ? e.add(e.settings.items) : e.add(e.render()), e._hasBody = !0 }, items: function() { return this._items }, find: function(t) { return (t = Oe[t] = Oe[t] || new qt(t)).find(this) }, add: function(t) { return this.items().add(this.create(t)).parent(this), this }, focus: function(t) { var e, n, i, r = this; if (!t || !(n = r.keyboardNav || r.parents().eq(-1)[0].keyboardNav)) return i = r.find("*"), r.statusbar && i.add(r.statusbar.items()), i.each(function(t) { if (t.settings.autofocus) return e = null, !1; t.canFocus && (e = e || t) }), e && e.focus(), r; n.focusFirst(r) }, replace: function(t, e) { for (var n, i = this.items(), r = i.length; r--;) if (i[r] === t) { i[r] = e; break } 0 <= r && ((n = e.getEl()) && n.parentNode.removeChild(n), (n = t.getEl()) && n.parentNode.removeChild(n)), e.parent(this) }, create: function(t) { var e, n = this, i = []; return C.isArray(t) || (t = [t]), C.each(t, function(t) { t && (t instanceof ce || ("string" == typeof t && (t = { type: t }), e = C.extend({}, n.settings.defaults, t), t.type = e.type = e.type || t.type || n.settings.defaultType || (e.defaults ? e.defaults.type : null), t = Ee.create(e)), i.push(t)) }), i }, renderNew: function() { var i = this; return i.items().each(function(t, e) { var n; t.parent(i), t.state.get("rendered") || ((n = i.getEl("body")).hasChildNodes() && e <= n.childNodes.length - 1 ? Nt(n.childNodes[e]).before(t.renderHtml()) : Nt(n).append(t.renderHtml()), t.postRender(), ee.add(t)) }), i._layout.applyClasses(i.items().filter(":visible")), i._lastRect = null, i }, append: function(t) { return this.add(t).renderNew() }, prepend: function(t) { return this.items().set(this.create(t).concat(this.items().toArray())), this.renderNew() }, insert: function(t, e, n) { var i, r, o; return t = this.create(t), i = this.items(), !n && e < i.length - 1 && (e += 1), 0 <= e && e < i.length && (r = i.slice(0, e).toArray(), o = i.slice(e).toArray(), i.set(r.concat(t, o))), this.renderNew() }, fromJSON: function(t) { for (var e in t) this.find("#" + e).value(t[e]); return this }, toJSON: function() { var i = {}; return this.find("*").each(function(t) { var e = t.name(), n = t.value(); e && void 0 !== n && (i[e] = n) }), i }, renderHtml: function() { var t = this, e = t._layout, n = this.settings.role; return t.preRender(), e.preRender(t), '
    ' + (t.settings.html || "") + e.renderHtml(t) + "
    " }, postRender: function() { var t, e = this; return e.items().exec("postRender"), e._super(), e._layout.postRender(e), e.state.set("rendered", !0), e.settings.style && e.$el.css(e.settings.style), e.settings.border && (t = e.borderBox, e.$el.css({ "border-top-width": t.top, "border-right-width": t.right, "border-bottom-width": t.bottom, "border-left-width": t.left })), e.parent() || (e.keyboardNav = Te({ root: e })), e }, initLayoutRect: function() { var t = this._super(); return this._layout.recalc(this), t }, recalc: function() { var t = this, e = t._layoutRect, n = t._lastRect; if (!n || n.w !== e.w || n.h !== e.h) return t._layout.recalc(t), e = t.layoutRect(), t._lastRect = { x: e.x, y: e.y, w: e.w, h: e.h }, !0 }, reflow: function() { var t; if (ee.remove(this), this.visible()) { for (ce.repaintControls = [], ce.repaintControls.map = {}, this.recalc(), t = ce.repaintControls.length; t--;) ce.repaintControls[t].repaint(); "flow" !== this.settings.layout && "stack" !== this.settings.layout && this.repaint(), ce.repaintControls = [] } return this } }), Pe = { init: function() { this.on("repaint", this.renderScroll) }, renderScroll: function() { var p = this, v = 2; function n() { var m, g, t; function e(t, e, n, i, r, o) { var s, a, l, u, c, d, f, h; if (a = p.getEl("scroll" + t)) { if (f = e.toLowerCase(), h = n.toLowerCase(), Nt(p.getEl("absend")).css(f, p.layoutRect()[i] - 1), !r) return void Nt(a).css("display", "none"); Nt(a).css("display", "block"), s = p.getEl("body"), l = p.getEl("scroll" + t + "t"), u = s["client" + n] - 2 * v, c = (u -= m && g ? a["client" + o] : 0) / s["scroll" + n], (d = {})[f] = s["offset" + e] + v, d[h] = u, Nt(a).css(d), (d = {})[f] = s["scroll" + e] * c, d[h] = u * c, Nt(l).css(d) } } t = p.getEl("body"), m = t.scrollWidth > t.clientWidth, g = t.scrollHeight > t.clientHeight, e("h", "Left", "Width", "contentW", m, "Height"), e("v", "Top", "Height", "contentH", g, "Width") } p.settings.autoScroll && (p._hasScroll || (p._hasScroll = !0, function() { function t(s, a, l, u, c) { var d, t = p._id + "-scroll" + s, e = p.classPrefix; Nt(p.getEl()).append('
    '), p.draghelper = new Re(t + "t", { start: function() { d = p.getEl("body")["scroll" + a], Nt("#" + t).addClass(e + "active") }, drag: function(t) { var e, n, i, r, o = p.layoutRect(); n = o.contentW > o.innerW, i = o.contentH > o.innerH, r = p.getEl("body")["client" + l] - 2 * v, e = (r -= n && i ? p.getEl("scroll" + s)["client" + c] : 0) / p.getEl("body")["scroll" + l], p.getEl("body")["scroll" + a] = d + t["delta" + u] / e }, stop: function() { Nt("#" + t).removeClass(e + "active") } }) } p.classes.add("scroll"), t("v", "Top", "Height", "Y", "Width"), t("h", "Left", "Width", "X", "Height") }(), p.on("wheel", function(t) { var e = p.getEl("body"); e.scrollLeft += 10 * (t.deltaX || 0), e.scrollTop += 10 * t.deltaY, n() }), Nt(p.getEl("body")).on("scroll", n)), n()) } }, We = De.extend({ Defaults: { layout: "fit", containerCls: "panel" }, Mixins: [Pe], renderHtml: function() { var t = this, e = t._layout, n = t.settings.html; return t.preRender(), e.preRender(t), void 0 === n ? n = '
    ' + e.renderHtml(t) + "
    " : ("function" == typeof n && (n = n.call(t)), t._hasBody = !1), '
    ' + (t._preBodyHtml || "") + n + "
    " } }), Ae = { resizeToContent: function() { this._layoutRect.autoResize = !0, this._lastRect = null, this.reflow() }, resizeTo: function(t, e) { if (t <= 1 || e <= 1) { var n = St.getWindowSize(); t = t <= 1 ? t * n.w : t, e = e <= 1 ? e * n.h : e } return this._layoutRect.autoResize = !1, this.layoutRect({ minW: t, minH: e, w: t, h: e }).reflow() }, resizeBy: function(t, e) { var n = this.layoutRect(); return this.resizeTo(n.w + t, n.h + e) } }, Be = [], Le = []; function Ie(t, e) { for (; t;) { if (t === e) return !0; t = t.parent() } } function ze() { He || (He = function(t) { 2 !== t.button && function(t) { for (var e = Be.length; e--;) { var n = Be[e], i = n.getParentCtrl(t.target); if (n.settings.autohide) { if (i && (Ie(i, n) || n.parent() === i)) continue; (t = n.fire("autohide", { target: t.target })).isDefaultPrevented() || n.hide() } } }(t) }, Nt(document).on("click touchstart", He)) } function Fe(r) { var t = St.getViewPort().y; function e(t, e) { for (var n, i = 0; i < Be.length; i++) if (Be[i] !== r) for (n = Be[i].parent(); n && (n = n.parent());) n === r && Be[i].fixed(t).moveBy(0, e).repaint() } r.settings.autofix && (r.state.get("fixed") ? r._autoFixY > t && (r.fixed(!1).layoutRect({ y: r._autoFixY }).repaint(), e(!1, r._autoFixY - t)) : (r._autoFixY = r.layoutRect().y, r._autoFixY < t && (r.fixed(!0).layoutRect({ y: 0 }).repaint(), e(!0, t - r._autoFixY)))) } function Ue(t, e) { var n, i, r = Ve.zIndex || 65535; if (t) Le.push(e); else for (n = Le.length; n--;) Le[n] === e && Le.splice(n, 1); if (Le.length) for (n = 0; n < Le.length; n++) Le[n].modal && (r++, i = Le[n]), Le[n].getEl().style.zIndex = r, Le[n].zIndex = r, r++; var o = Nt("#" + e.classPrefix + "modal-block", e.getContainerElm())[0]; i ? Nt(o).css("z-index", i.zIndex - 1) : o && (o.parentNode.removeChild(o), Ne = !1), Ve.currentZIndex = r } var Ve = We.extend({ Mixins: [pe, Ae], init: function(t) { var i = this; i._super(t), (i._eventsRoot = i).classes.add("floatpanel"), t.autohide && (ze(), function() { if (!Se) { var t = document.documentElement, e = t.clientWidth, n = t.clientHeight; Se = function() { document.all && e === t.clientWidth && n === t.clientHeight || (e = t.clientWidth, n = t.clientHeight, Ve.hideAll()) }, Nt(window).on("resize", Se) } }(), Be.push(i)), t.autofix && (Me || (Me = function() { var t; for (t = Be.length; t--;) Fe(Be[t]) }, Nt(window).on("scroll", Me)), i.on("move", function() { Fe(this) })), i.on("postrender show", function(t) { if (t.control === i) { var e, n = i.classPrefix; i.modal && !Ne && ((e = Nt("#" + n + "modal-block", i.getContainerElm()))[0] || (e = Nt('
    ').appendTo(i.getContainerElm())), c.setTimeout(function() { e.addClass(n + "in"), Nt(i.getEl()).addClass(n + "in") }), Ne = !0), Ue(!0, i) } }), i.on("show", function() { i.parents().each(function(t) { if (t.state.get("fixed")) return i.fixed(!0), !1 }) }), t.popover && (i._preBodyHtml = '
    ', i.classes.add("popover").add("bottom").add(i.isRtl() ? "end" : "start")), i.aria("label", t.ariaLabel), i.aria("labelledby", i._id), i.aria("describedby", i.describedBy || i._id + "-none") }, fixed: function(t) { var e = this; if (e.state.get("fixed") !== t) { if (e.state.get("rendered")) { var n = St.getViewPort(); t ? e.layoutRect().y -= n.y : e.layoutRect().y += n.y } e.classes.toggle("fixed", t), e.state.set("fixed", t) } return e }, show: function() { var t, e = this._super(); for (t = Be.length; t-- && Be[t] !== this;); return -1 === t && Be.push(this), e }, hide: function() { return qe(this), Ue(!1, this), this._super() }, hideAll: function() { Ve.hideAll() }, close: function() { return this.fire("close").isDefaultPrevented() || (this.remove(), Ue(!1, this)), this }, remove: function() { qe(this), this._super() }, postRender: function() { return this.settings.bodyRole && this.getEl("body").setAttribute("role", this.settings.bodyRole), this._super() } }); function qe(t) { var e; for (e = Be.length; e--;) Be[e] === t && Be.splice(e, 1); for (e = Le.length; e--;) Le[e] === t && Le.splice(e, 1) } Ve.hideAll = function() { for (var t = Be.length; t--;) { var e = Be[t]; e && e.settings.autohide && (e.hide(), Be.splice(t, 1)) } }; var Ye = [], $e = ""; function Xe(t) { var e, n = Nt("meta[name=viewport]")[0]; !1 !== h.overrideViewPort && (n || ((n = document.createElement("meta")).setAttribute("name", "viewport"), document.getElementsByTagName("head")[0].appendChild(n)), (e = n.getAttribute("content")) && void 0 !== $e && ($e = e), n.setAttribute("content", t ? "width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0" : $e)) } function je(t, e) { (function() { for (var t = 0; t < Ye.length; t++) if (Ye[t]._fullscreen) return !0; return !1 })() && !1 === e && Nt([document.documentElement, document.body]).removeClass(t + "fullscreen") } var Je = Ve.extend({ modal: !0, Defaults: { border: 1, layout: "flex", containerCls: "panel", role: "dialog", callbacks: { submit: function() { this.fire("submit", { data: this.toJSON() }) }, close: function() { this.close() } } }, init: function(t) { var n = this; n._super(t), n.isRtl() && n.classes.add("rtl"), n.classes.add("window"), n.bodyClasses.add("window-body"), n.state.set("fixed", !0), t.buttons && (n.statusbar = new We({ layout: "flex", border: "1 0 0 0", spacing: 3, padding: 10, align: "center", pack: n.isRtl() ? "start" : "end", defaults: { type: "button" }, items: t.buttons }), n.statusbar.classes.add("foot"), n.statusbar.parent(n)), n.on("click", function(t) { var e = n.classPrefix + "close"; (St.hasClass(t.target, e) || St.hasClass(t.target.parentNode, e)) && n.close() }), n.on("cancel", function() { n.close() }), n.on("move", function(t) { t.control === n && Ve.hideAll() }), n.aria("describedby", n.describedBy || n._id + "-none"), n.aria("label", t.title), n._fullscreen = !1 }, recalc: function() { var t, e, n, i, r = this, o = r.statusbar; r._fullscreen && (r.layoutRect(St.getWindowSize()), r.layoutRect().contentH = r.layoutRect().innerH), r._super(), t = r.layoutRect(), r.settings.title && !r._fullscreen && (e = t.headerW) > t.w && (n = t.x - Math.max(0, e / 2), r.layoutRect({ w: e, x: n }), i = !0), o && (o.layoutRect({ w: r.layoutRect().innerW }).recalc(), (e = o.layoutRect().minW + t.deltaW) > t.w && (n = t.x - Math.max(0, e - t.w), r.layoutRect({ w: e, x: n }), i = !0)), i && r.recalc() }, initLayoutRect: function() { var t, e = this, n = e._super(), i = 0; if (e.settings.title && !e._fullscreen) { t = e.getEl("head"); var r = St.getSize(t); n.headerW = r.width, n.headerH = r.height, i += n.headerH } e.statusbar && (i += e.statusbar.layoutRect().h), n.deltaH += i, n.minH += i, n.h += i; var o = St.getWindowSize(); return n.x = e.settings.x || Math.max(0, o.w / 2 - n.w / 2), n.y = e.settings.y || Math.max(0, o.h / 2 - n.h / 2), n }, renderHtml: function() { var t = this, e = t._layout, n = t._id, i = t.classPrefix, r = t.settings, o = "", s = "", a = r.html; return t.preRender(), e.preRender(t), r.title && (o = '
    ' + t.encode(r.title) + '
    '), r.url && (a = ''), void 0 === a && (a = e.renderHtml(t)), t.statusbar && (s = t.statusbar.renderHtml()), '
    ' + o + '
    ' + a + "
    " + s + "
    " }, fullscreen: function(t) { var n, e, i = this, r = document.documentElement, o = i.classPrefix; if (t !== i._fullscreen) if (Nt(window).on("resize", function() { var t; if (i._fullscreen) if (n) i._timer || (i._timer = c.setTimeout(function() { var t = St.getWindowSize(); i.moveTo(0, 0).resizeTo(t.w, t.h), i._timer = 0 }, 50)); else { t = (new Date).getTime(); var e = St.getWindowSize(); i.moveTo(0, 0).resizeTo(e.w, e.h), 50 < (new Date).getTime() - t && (n = !0) } }), e = i.layoutRect(), i._fullscreen = t) { i._initial = { x: e.x, y: e.y, w: e.w, h: e.h }, i.borderBox = Pt("0"), i.getEl("head").style.display = "none", e.deltaH -= e.headerH + 2, Nt([r, document.body]).addClass(o + "fullscreen"), i.classes.add("fullscreen"); var s = St.getWindowSize(); i.moveTo(0, 0).resizeTo(s.w, s.h) } else i.borderBox = Pt(i.settings.border), i.getEl("head").style.display = "", e.deltaH += e.headerH, Nt([r, document.body]).removeClass(o + "fullscreen"), i.classes.remove("fullscreen"), i.moveTo(i._initial.x, i._initial.y).resizeTo(i._initial.w, i._initial.h); return i.reflow() }, postRender: function() { var e, n = this; setTimeout(function() { n.classes.add("in"), n.fire("open") }, 0), n._super(), n.statusbar && n.statusbar.postRender(), n.focus(), this.dragHelper = new Re(n._id + "-dragh", { start: function() { e = { x: n.layoutRect().x, y: n.layoutRect().y } }, drag: function(t) { n.moveTo(e.x + t.deltaX, e.y + t.deltaY) } }), n.on("submit", function(t) { t.isDefaultPrevented() || n.close() }), Ye.push(n), Xe(!0) }, submit: function() { return this.fire("submit", { data: this.toJSON() }) }, remove: function() { var t, e = this; for (e.dragHelper.destroy(), e._super(), e.statusbar && this.statusbar.remove(), je(e.classPrefix, !1), t = Ye.length; t--;) Ye[t] === e && Ye.splice(t, 1); Xe(0 < Ye.length) }, getContentWindow: function() { var t = this.getEl().getElementsByTagName("iframe")[0]; return t ? t.contentWindow : null } }); ! function() { if (!h.desktop) { var n = { w: window.innerWidth, h: window.innerHeight }; c.setInterval(function() { var t = window.innerWidth, e = window.innerHeight; n.w === t && n.h === e || (n = { w: t, h: e }, Nt(window).trigger("resize")) }, 100) } Nt(window).on("resize", function() { var t, e, n = St.getWindowSize(); for (t = 0; t < Ye.length; t++) e = Ye[t].layoutRect(), Ye[t].moveTo(Ye[t].settings.x || Math.max(0, n.w / 2 - e.w / 2), Ye[t].settings.y || Math.max(0, n.h / 2 - e.h / 2)) }) }(); var Ge = Je.extend({ init: function(t) { t = { border: 1, padding: 20, layout: "flex", pack: "center", align: "center", containerCls: "panel", autoScroll: !0, buttons: { type: "button", text: "Ok", action: "ok" }, items: { type: "label", multiline: !0, maxWidth: 500, maxHeight: 200 } }, this._super(t) }, Statics: { OK: 1, OK_CANCEL: 2, YES_NO: 3, YES_NO_CANCEL: 4, msgBox: function(t) { var e, i = t.callback || function() {}; function n(t, e, n) { return { type: "button", text: t, subtype: n ? "primary" : "", onClick: function(t) { t.control.parents()[1].close(), i(e) } } } switch (t.buttons) { case Ge.OK_CANCEL: e = [n("Ok", !0, !0), n("Cancel", !1)]; break; case Ge.YES_NO: case Ge.YES_NO_CANCEL: e = [n("Yes", 1, !0), n("No", 0)], t.buttons === Ge.YES_NO_CANCEL && e.push(n("Cancel", -1)); break; default: e = [n("Ok", !0, !0)] } return new Je({ padding: 20, x: t.x, y: t.y, minWidth: 300, minHeight: 100, layout: "flex", pack: "center", align: "center", buttons: e, title: t.title, role: "alertdialog", items: { type: "label", multiline: !0, maxWidth: 500, maxHeight: 200, text: t.text }, onPostRender: function() { this.aria("describedby", this.items()[0]._id) }, onClose: t.onClose, onCancel: function() { i(!1) } }).renderTo(document.body).reflow() }, alert: function(t, e) { return "string" == typeof t && (t = { text: t }), t.callback = e, Ge.msgBox(t) }, confirm: function(t, e) { return "string" == typeof t && (t = { text: t }), t.callback = e, t.buttons = Ge.OK_CANCEL, Ge.msgBox(t) } } }), Ke = function(t, e) { return { renderUI: function() { return st(t, e) }, getNotificationManagerImpl: function() { return _e(t) }, getWindowManagerImpl: function() { return { open: function(n, t, e) { var i; return n.title = n.title || " ", n.url = n.url || n.file, n.url && (n.width = parseInt(n.width || 320, 10), n.height = parseInt(n.height || 240, 10)), n.body && (n.items = { defaults: n.defaults, type: n.bodyType || "form", items: n.body, data: n.data, callbacks: n.commands }), n.url || n.buttons || (n.buttons = [{ text: "Ok", subtype: "primary", onclick: function() { i.find("form")[0].submit() } }, { text: "Cancel", onclick: function() { i.close() } }]), (i = new Je(n)).on("close", function() { e(i) }), n.data && i.on("postRender", function() { this.find("*").each(function(t) { var e = t.name(); e in n.data && t.value(n.data[e]) }) }), i.features = n || {}, i.params = t || {}, i = i.renderTo(document.body).reflow() }, alert: function(t, e, n) { var i; return (i = Ge.alert(t, function() { e() })).on("close", function() { n(i) }), i }, confirm: function(t, e, n) { var i; return (i = Ge.confirm(t, function(t) { e(t) })).on("close", function() { n(i) }), i }, close: function(t) { t.close() }, getParams: function(t) { return t.params }, setParams: function(t, e) { t.params = e } } } } }, Ze = "undefined" != typeof window ? window : Function("return this;")(), Qe = function(t, e) { return function(t, e) { for (var n = e !== undefined && null !== e ? e : Ze, i = 0; i < t.length && n !== undefined && null !== n; ++i) n = n[t[i]]; return n }(t.split("."), e) }, tn = function(t, e) { var n = Qe(t, e); if (n === undefined || null === n) throw t + " not available on this browser"; return n }; function en() { return new(tn("FileReader")) } var nn = tinymce.util.Tools.resolve("tinymce.util.Promise"), rn = function(n) { return new nn(function(t) { var e = new en; e.onloadend = function() { t(e.result.split(",")[1]) }, e.readAsDataURL(n) }) }, on = function() { return new nn(function(e) { var t; (t = document.createElement("input")).type = "file", t.style.position = "fixed", t.style.left = 0, t.style.top = 0, t.style.opacity = .001, document.body.appendChild(t), t.onchange = function(t) { e(Array.prototype.slice.call(t.target.files)) }, t.click(), t.parentNode.removeChild(t) }) }, sn = 0, an = function(t) { return t + sn+++(e = function() { return Math.round(4294967295 * Math.random()).toString(36) }, "s" + Date.now().toString(36) + e() + e() + e()); var e }, ln = function(r, o) { var s = {}; function t(t) { var e, n, i; n = o[t ? "startContainer" : "endContainer"], i = o[t ? "startOffset" : "endOffset"], 1 === n.nodeType && (e = r.create("span", { "data-mce-type": "bookmark" }), n.hasChildNodes() ? (i = Math.min(i, n.childNodes.length - 1), t ? n.insertBefore(e, n.childNodes[i]) : r.insertAfter(e, n.childNodes[i])) : n.appendChild(e), n = e, i = 0), s[t ? "startContainer" : "endContainer"] = n, s[t ? "startOffset" : "endOffset"] = i } return t(!0), o.collapsed || t(), s }, un = function(r, o) { function t(t) { var e, n, i; e = i = o[t ? "startContainer" : "endContainer"], n = o[t ? "startOffset" : "endOffset"], e && (1 === e.nodeType && (n = function(t) { for (var e = t.parentNode.firstChild, n = 0; e;) { if (e === t) return n; 1 === e.nodeType && "bookmark" === e.getAttribute("data-mce-type") || n++, e = e.nextSibling } return -1 }(e), e = e.parentNode, r.remove(i)), o[t ? "startContainer" : "endContainer"] = e, o[t ? "startOffset" : "endOffset"] = n) } t(!0), t(); var e = r.createRng(); return e.setStart(o.startContainer, o.startOffset), o.endContainer && e.setEnd(o.endContainer, o.endOffset), e }, cn = tinymce.util.Tools.resolve("tinymce.dom.TreeWalker"), dn = tinymce.util.Tools.resolve("tinymce.dom.RangeUtils"), fn = function(t) { return "A" === t.nodeName && t.hasAttribute("href") }, hn = function(t) { var e, n, i, r, o, s, a, l; return r = t.selection, o = t.dom, s = r.getRng(), a = o, l = dn.getNode(s.startContainer, s.startOffset), e = a.getParent(l, fn) || l, n = dn.getNode(s.endContainer, s.endOffset), i = t.getBody(), C.grep(function(t, e, n) { var i, r, o = []; for (i = new cn(e, t), r = e; r && (1 === r.nodeType && o.push(r), r !== n); r = i.next()); return o }(i, e, n), fn) }, mn = function(t) { var e, n, i, r, o; n = hn(e = t), r = e.dom, o = e.selection, i = ln(r, o.getRng()), C.each(n, function(t) { e.dom.remove(t, !0) }), o.setRng(un(r, i)) }, gn = function(t) { t.selection.collapse(!1) }, pn = function(t) { t.focus(), mn(t), gn(t) }, vn = function(t, e) { var n, i, r, o, s, a = t.dom.getParent(t.selection.getStart(), "a[href]"); a ? (o = a, s = e, (r = t).focus(), r.dom.setAttrib(o, "href", s), gn(r)) : (i = e, (n = t).execCommand("mceInsertLink", !1, { href: i }), gn(n)) }, bn = function(t, e, n) { var i, r, o; t.plugins.table ? t.plugins.table.insertTable(e, n) : (r = e, o = n, (i = t).undoManager.transact(function() { var t, e; i.insertContent(function(t, e) { var n, i, r; for (r = '', r += "", i = 0; i < e; i++) { for (r += "", n = 0; n < t; n++) r += ""; r += "" } return r += "", r += "

    " }(r, o)), (t = i.dom.select("*[data-mce-id]")[0]).removeAttribute("data-mce-id"), e = i.dom.select("td,th", t), i.selection.setCursorLocation(e[0], 0) })) }, yn = function(t, e) { t.execCommand("FormatBlock", !1, e) }, xn = function(t, e, n) { var i, r; r = (i = t.editorUpload.blobCache).create(an("mceu"), n, e), i.add(r), t.insertContent(t.dom.createHTML("img", { src: r.blobUri() })) }, wn = function(t, e) { 0 === e.trim().length ? pn(t) : vn(t, e) }, _n = pn, Cn = function(n, t) { n.addButton("quicklink", { icon: "link", tooltip: "Insert/Edit link", stateSelector: "a[href]", onclick: function() { t.showForm(n, "quicklink") } }), n.addButton("quickimage", { icon: "image", tooltip: "Insert image", onclick: function() { on().then(function(t) { var e = t[0]; rn(e).then(function(t) { xn(n, t, e) }) }) } }), n.addButton("quicktable", { icon: "table", tooltip: "Insert table", onclick: function() { t.hide(), bn(n, 2, 2) } }), function(e) { for (var t = function(t) { return function() { yn(e, t) } }, n = 1; n < 6; n++) { var i = "h" + n; e.addButton(i, { text: i.toUpperCase(), tooltip: "Heading " + n, stateSelector: i, onclick: t(i), onPostRender: function() { this.getEl().firstChild.firstChild.style.fontWeight = "bold" } }) } }(n) }, Rn = function() { var t = h.container; if (t && "static" !== v.DOM.getStyle(t, "position", !0)) { var e = v.DOM.getPos(t), n = e.x - t.scrollLeft, i = e.y - t.scrollTop; return pt.some({ x: n, y: i }) } return pt.none() }, En = function(t) { return /^www\.|\.(com|org|edu|gov|uk|net|ca|de|jp|fr|au|us|ru|ch|it|nl|se|no|es|mil)$/i.test(t.trim()) }, kn = function(t) { return /^https?:\/\//.test(t.trim()) }, Tn = function(t, e) { return !kn(e) && En(e) ? (n = t, i = e, new nn(function(e) { n.windowManager.confirm("The URL you entered seems to be an external link. Do you want to add the required http:// prefix?", function(t) { e(!0 === t ? "http://" + i : i) }) })) : nn.resolve(e); var n, i }, Hn = function(r, e) { var t, n, i, o = {}; return t = "quicklink", n = { items: [{ type: "button", name: "unlink", icon: "unlink", onclick: function() { r.focus(), _n(r), e() }, tooltip: "Remove link" }, { type: "filepicker", name: "linkurl", placeholder: "Paste or type a link", filetype: "file", onchange: function(t) { var e = t.meta; e && e.attach && (o = { href: this.value(), attach: e.attach }) } }, { type: "button", icon: "checkmark", subtype: "primary", tooltip: "Ok", onclick: "submit" }], onshow: function(t) { if (t.control === this) { var e, n = ""; (e = r.dom.getParent(r.selection.getStart(), "a[href]")) && (n = r.dom.getAttrib(e, "href")), this.fromJSON({ linkurl: n }), i = this.find("#unlink"), e ? i.show() : i.hide(), this.find("#linkurl")[0].focus() } var i }, onsubmit: function(t) { Tn(r, t.data.linkurl).then(function(t) { r.undoManager.transact(function() { t === o.href && (o.attach(), o = {}), wn(r, t) }), e() }) } }, (i = Ee.create(C.extend({ type: "form", layout: "flex", direction: "row", padding: 5, name: t, spacing: 3 }, n))).on("show", function() { i.find("textbox").eq(0).each(function(t) { t.focus() }) }), i }, Mn = function(n, t, e) { var o, i, s = []; if (e) return C.each(B(i = e) ? i : D(i) ? i.split(/[ ,]/) : [], function(t) { if ("|" === t) o = null; else if (n.buttons[t]) { o || (o = { type: "buttongroup", items: [] }, s.push(o)); var e = n.buttons[t]; A(e) && (e = e()), e.type = e.type || "button", (e = Ee.create(e)).on("postRender", (i = n, r = e, function() { var e, t, n = (t = function(t, e) { return { selector: t, handler: e } }, (e = r).settings.stateSelector ? t(e.settings.stateSelector, function(t) { e.active(t) }) : e.settings.disabledStateSelector ? t(e.settings.disabledStateSelector, function(t) { e.disabled(t) }) : null); null !== n && i.selection.selectorChanged(n.selector, n.handler) })), o.items.push(e) } var i, r }), Ee.create({ type: "toolbar", layout: "flow", name: t, items: s }) }, Sn = function() { var l, c, o = function(t) { return 0 < t.items().length }, u = function(t, e) { var n, i, r = (n = t, i = e, C.map(i, function(t) { return Mn(n, t.id, t.items) })).concat([Mn(t, "text", J(t)), Mn(t, "insert", G(t)), Hn(t, p)]); return Ee.create({ type: "floatpanel", role: "dialog", classes: "tinymce tinymce-inline arrow", ariaLabel: "Inline toolbar", layout: "flex", direction: "column", align: "stretch", autohide: !1, autofix: !0, fixed: !0, border: 1, items: C.grep(r, o), oncancel: function() { t.focus() } }) }, d = function(t) { t && t.show() }, f = function(t, e) { t.moveTo(e.x, e.y) }, h = function(n, i) { i = i ? i.substr(0, 2) : "", C.each({ t: "down", b: "up", c: "center" }, function(t, e) { n.classes.toggle("arrow-" + t, e === i.substr(0, 1)) }), "cr" === i ? (n.classes.toggle("arrow-left", !0), n.classes.toggle("arrow-right", !1)) : "cl" === i ? (n.classes.toggle("arrow-left", !1), n.classes.toggle("arrow-right", !0)) : C.each({ l: "left", r: "right" }, function(t, e) { n.classes.toggle("arrow-" + t, e === i.substr(1, 1)) }) }, m = function(t, e) { var n = t.items().filter("#" + e); return 0 < n.length && (n[0].show(), t.reflow(), !0) }, g = function(t, e, n, i) { var r, o, s, a; if (a = K(n), r = y(n), o = v.DOM.getRect(t.getEl()), s = "insert" === e ? Y(i, r, o) : $(i, r, o)) { var l = Rn().getOr({ x: 0, y: 0 }), u = { x: s.rect.x - l.x, y: s.rect.y - l.y, w: s.rect.w, h: s.rect.h }; return f(t, X(a, c = i, r, u)), h(t, s.position), !0 } return !1 }, p = function() { l && l.hide() }; return { show: function(t, e, n, i) { var r, o, s, a; l || (M(t), (l = u(t, i)).renderTo().reflow().moveTo(n.x, n.y), t.nodeChanged()), o = e, s = t, a = n, d(r = l), r.items().hide(), m(r, o) ? !1 === g(r, o, s, a) && p() : p() }, showForm: function(t, e) { if (l) { if (l.items().hide(), !m(l, e)) return void p(); var n, i, r, o = void 0; d(l), l.items().hide(), m(l, e), r = K(t), n = y(t), o = v.DOM.getRect(l.getEl()), (i = $(c, n, o)) && (o = i.rect, f(l, X(r, c, n, o)), h(l, i.position)) } }, reposition: function(t, e, n) { l && g(l, e, t, n) }, inForm: function() { return l && l.visible() && 0 < l.items().filter("form:visible").length }, hide: p, focus: function() { l && l.find("toolbar:visible").eq(0).each(function(t) { t.focus(!0) }) }, remove: function() { l && (l.remove(), l = null) } } }, Nn = Ot.extend({ Defaults: { firstControlClass: "first", lastControlClass: "last" }, init: function(t) { this.settings = C.extend({}, this.Defaults, t) }, preRender: function(t) { t.bodyClasses.add(this.settings.containerClass) }, applyClasses: function(t) { var e, n, i, r, o = this.settings; e = o.firstControlClass, n = o.lastControlClass, t.each(function(t) { t.classes.remove(e).remove(n).add(o.controlClass), t.visible() && (i || (i = t), r = t) }), i && i.classes.add(e), r && r.classes.add(n) }, renderHtml: function(t) { var e = ""; return this.applyClasses(t.items()), t.items().each(function(t) { e += t.renderHtml() }), e }, recalc: function() {}, postRender: function() {}, isNative: function() { return !1 } }), On = Nn.extend({ Defaults: { containerClass: "abs-layout", controlClass: "abs-layout-item" }, recalc: function(t) { t.items().filter(":visible").each(function(t) { var e = t.settings; t.layoutRect({ x: e.x, y: e.y, w: e.w, h: e.h }), t.recalc && t.recalc() }) }, renderHtml: function(t) { return '
    ' + this._super(t) } }), Dn = be.extend({ Defaults: { classes: "widget btn", role: "button" }, init: function(t) { var e, n = this; n._super(t), t = n.settings, e = n.settings.size, n.on("click mousedown", function(t) { t.preventDefault() }), n.on("touchstart", function(t) { n.fire("click", t), t.preventDefault() }), t.subtype && n.classes.add(t.subtype), e && n.classes.add("btn-" + e), t.icon && n.icon(t.icon) }, icon: function(t) { return arguments.length ? (this.state.set("icon", t), this) : this.state.get("icon") }, repaint: function() { var t, e = this.getEl().firstChild; e && ((t = e.style).width = t.height = "100%"), this._super() }, renderHtml: function() { var t, e, n = this, i = n._id, r = n.classPrefix, o = n.state.get("icon"), s = n.state.get("text"), a = "", l = n.settings; return (t = l.image) ? (o = "none", "string" != typeof t && (t = window.getSelection ? t[0] : t[1]), t = " style=\"background-image: url('" + t + "')\"") : t = "", s && (n.classes.add("btn-has-text"), a = '' + n.encode(s) + ""), o = o ? r + "ico " + r + "i-" + o : "", e = "boolean" == typeof l.active ? ' aria-pressed="' + l.active + '"' : "", '
    " }, bindStates: function() { var o = this, n = o.$, i = o.classPrefix + "txt"; function s(t) { var e = n("span." + i, o.getEl()); t ? (e[0] || (n("button:first", o.getEl()).append(''), e = n("span." + i, o.getEl())), e.html(o.encode(t))) : e.remove(), o.classes.toggle("btn-has-text", !! t) } return o.state.on("change:text", function(t) { s(t.value) }), o.state.on("change:icon", function(t) { var e = t.value, n = o.classPrefix; e = (o.settings.icon = e) ? n + "ico " + n + "i-" + o.settings.icon : ""; var i = o.getEl().firstChild, r = i.getElementsByTagName("i")[0]; e ? (r && r === i.firstChild || (r = document.createElement("i"), i.insertBefore(r, i.firstChild)), r.className = e) : r && i.removeChild(r), s(o.state.get("text")) }), o._super() } }), Pn = Dn.extend({ init: function(t) { t = C.extend({ text: "Browse...", multiple: !1, accept: null }, t), this._super(t), this.classes.add("browsebutton"), t.multiple && this.classes.add("multiple") }, postRender: function() { var n = this, e = St.create("input", { type: "file", id: n._id + "-browse", accept: n.settings.accept }); n._super(), Nt(e).on("change", function(t) { var e = t.target.files; n.value = function() { return e.length ? n.settings.multiple ? e : e[0] : null }, t.preventDefault(), e.length && n.fire("change", t) }), Nt(e).on("click", function(t) { t.stopPropagation() }), Nt(n.getEl("button")).on("click", function(t) { t.stopPropagation(), e.click() }), n.getEl().appendChild(e) }, remove: function() { Nt(this.getEl("button")).off(), Nt(this.getEl("input")).off(), this._super() } }), Wn = De.extend({ Defaults: { defaultType: "button", role: "group" }, renderHtml: function() { var t = this, e = t._layout; return t.classes.add("btn-group"), t.preRender(), e.preRender(t), '
    ' + (t.settings.html || "") + e.renderHtml(t) + "
    " } }), An = be.extend({ Defaults: { classes: "checkbox", role: "checkbox", checked: !1 }, init: function(t) { var e = this; e._super(t), e.on("click mousedown", function(t) { t.preventDefault() }), e.on("click", function(t) { t.preventDefault(), e.disabled() || e.checked(!e.checked()) }), e.checked(e.settings.checked) }, checked: function(t) { return arguments.length ? (this.state.set("checked", t), this) : this.state.get("checked") }, value: function(t) { return arguments.length ? this.checked(t) : this.checked() }, renderHtml: function() { var t = this, e = t._id, n = t.classPrefix; return '
    ' + t.encode(t.state.get("text")) + "
    " }, bindStates: function() { var o = this; function e(t) { o.classes.toggle("checked", t), o.aria("checked", t) } return o.state.on("change:text", function(t) { o.getEl("al").firstChild.data = o.translate(t.value) }), o.state.on("change:checked change:value", function(t) { o.fire("change"), e(t.value) }), o.state.on("change:icon", function(t) { var e = t.value, n = o.classPrefix; if (void 0 === e) return o.settings.icon; e = (o.settings.icon = e) ? n + "ico " + n + "i-" + o.settings.icon : ""; var i = o.getEl().firstChild, r = i.getElementsByTagName("i")[0]; e ? (r && r === i.firstChild || (r = document.createElement("i"), i.insertBefore(r, i.firstChild)), r.className = e) : r && i.removeChild(r) }), o.state.get("checked") && e(!0), o._super() } }), Bn = tinymce.util.Tools.resolve("tinymce.util.VK"), Ln = be.extend({ init: function(i) { var r = this; r._super(i), i = r.settings, r.classes.add("combobox"), r.subinput = !0, r.ariaTarget = "inp", i.menu = i.menu || i.values, i.menu && (i.icon = "caret"), r.on("click", function(t) { var e = t.target, n = r.getEl(); if (Nt.contains(n, e) || e === n) for (; e && e !== n;) e.id && -1 !== e.id.indexOf("-open") && (r.fire("action"), i.menu && (r.showMenu(), t.aria && r.menu.items()[0].focus())), e = e.parentNode }), r.on("keydown", function(t) { var e; 13 === t.keyCode && "INPUT" === t.target.nodeName && (t.preventDefault(), r.parents().reverse().each(function(t) { if (t.toJSON) return e = t, !1 }), r.fire("submit", { data: e.toJSON() })) }), r.on("keyup", function(t) { if ("INPUT" === t.target.nodeName) { var e = r.state.get("value"), n = t.target.value; n !== e && (r.state.set("value", n), r.fire("autocomplete", t)) } }), r.on("mouseover", function(t) { var e = r.tooltip().moveTo(-65535); if (r.statusLevel() && -1 !== t.target.className.indexOf(r.classPrefix + "status")) { var n = r.statusMessage() || "Ok", i = e.text(n).show().testMoveRel(t.target, ["bc-tc", "bc-tl", "bc-tr"]); e.classes.toggle("tooltip-n", "bc-tc" === i), e.classes.toggle("tooltip-nw", "bc-tl" === i), e.classes.toggle("tooltip-ne", "bc-tr" === i), e.moveRel(t.target, i) } }) }, statusLevel: function(t) { return 0 < arguments.length && this.state.set("statusLevel", t), this.state.get("statusLevel") }, statusMessage: function(t) { return 0 < arguments.length && this.state.set("statusMessage", t), this.state.get("statusMessage") }, showMenu: function() { var t, e = this, n = e.settings; e.menu || ((t = n.menu || []).length ? t = { type: "menu", items: t } : t.type = t.type || "menu", e.menu = Ee.create(t).parent(e).renderTo(e.getContainerElm()), e.fire("createmenu"), e.menu.reflow(), e.menu.on("cancel", function(t) { t.control === e.menu && e.focus() }), e.menu.on("show hide", function(t) { t.control.items().each(function(t) { t.active(t.value() === e.value()) }) }).fire("show"), e.menu.on("select", function(t) { e.value(t.control.value()) }), e.on("focusin", function(t) { "INPUT" === t.target.tagName.toUpperCase() && e.menu.hide() }), e.aria("expanded", !0)), e.menu.show(), e.menu.layoutRect({ w: e.layoutRect().w }), e.menu.moveRel(e.getEl(), e.isRtl() ? ["br-tr", "tr-br"] : ["bl-tl", "tl-bl"]) }, focus: function() { this.getEl("inp").focus() }, repaint: function() { var t, e, n = this, i = n.getEl(), r = n.getEl("open"), o = n.layoutRect(), s = 0, a = i.firstChild; n.statusLevel() && "none" !== n.statusLevel() && (s = parseInt(St.getRuntimeStyle(a, "padding-right"), 10) - parseInt(St.getRuntimeStyle(a, "padding-left"), 10)), t = r ? o.w - St.getSize(r).width - 10 : o.w - 10; var l = document; return l.all && (!l.documentMode || l.documentMode <= 8) && (e = n.layoutRect().h - 2 + "px"), Nt(a).css({ width: t - s, lineHeight: e }), n._super(), n }, postRender: function() { var e = this; return Nt(this.getEl("inp")).on("change", function(t) { e.state.set("value", t.target.value), e.fire("change", t) }), e._super() }, renderHtml: function() { var t, e, n, i = this, r = i._id, o = i.settings, s = i.classPrefix, a = i.state.get("value") || "", l = "", u = ""; return "spellcheck" in o && (u += ' spellcheck="' + o.spellcheck + '"'), o.maxLength && (u += ' maxlength="' + o.maxLength + '"'), o.size && (u += ' size="' + o.size + '"'), o.subtype && (u += ' type="' + o.subtype + '"'), n = '', i.disabled() && (u += ' disabled="disabled"'), (t = o.icon) && "caret" !== t && (t = s + "ico " + s + "i-" + o.icon), e = i.state.get("text"), (t || e) && (l = '
    ", i.classes.add("has-open")), '
    ' + n + l + "
    " }, value: function(t) { return arguments.length ? (this.state.set("value", t), this) : (this.state.get("rendered") && this.state.set("value", this.getEl("inp").value), this.state.get("value")) }, showAutoComplete: function(t, i) { var r = this; if (0 !== t.length) { r.menu ? r.menu.items().remove() : r.menu = Ee.create({ type: "menu", classes: "combobox-menu", layout: "flow" }).parent(r).renderTo(), C.each(t, function(t) { var e, n; r.menu.add({ text: t.title, url: t.previewUrl, match: i, classes: "menu-item-ellipsis", onclick: (e = t.value, n = t.title, function() { r.fire("selectitem", { title: n, value: e }) }) }) }), r.menu.renderNew(), r.hideMenu(), r.menu.on("cancel", function(t) { t.control.parent() === r.menu && (t.stopPropagation(), r.focus(), r.hideMenu()) }), r.menu.on("select", function() { r.focus() }); var e = r.layoutRect().w; r.menu.layoutRect({ w: e, minW: 0, maxW: e }), r.menu.repaint(), r.menu.reflow(), r.menu.show(), r.menu.moveRel(r.getEl(), r.isRtl() ? ["br-tr", "tr-br"] : ["bl-tl", "tl-bl"]) } else r.hideMenu() }, hideMenu: function() { this.menu && this.menu.hide() }, bindStates: function() { var r = this; r.state.on("change:value", function(t) { r.getEl("inp").value !== t.value && (r.getEl("inp").value = t.value) }), r.state.on("change:disabled", function(t) { r.getEl("inp").disabled = t.value }), r.state.on("change:statusLevel", function(t) { var e = r.getEl("status"), n = r.classPrefix, i = t.value; St.css(e, "display", "none" === i ? "none" : ""), St.toggleClass(e, n + "i-checkmark", "ok" === i), St.toggleClass(e, n + "i-warning", "warn" === i), St.toggleClass(e, n + "i-error", "error" === i), r.classes.toggle("has-status", "none" !== i), r.repaint() }), St.on(r.getEl("status"), "mouseleave", function() { r.tooltip().hide() }), r.on("cancel", function(t) { r.menu && r.menu.visible() && (t.stopPropagation(), r.hideMenu()) }); var n = function(t, e) { e && 0 < e.items().length && e.items().eq(t)[0].focus() }; return r.on("keydown", function(t) { var e = t.keyCode; "INPUT" === t.target.nodeName && (e === Bn.DOWN ? (t.preventDefault(), r.fire("autocomplete"), n(0, r.menu)) : e === Bn.UP && (t.preventDefault(), n(-1, r.menu))) }), r._super() }, remove: function() { Nt(this.getEl("inp")).off(), this.menu && this.menu.remove(), this._super() } }), In = Ln.extend({ init: function(t) { var e = this; t.spellcheck = !1, t.onaction && (t.icon = "none"), e._super(t), e.classes.add("colorbox"), e.on("change keyup postrender", function() { e.repaintColor(e.value()) }) }, repaintColor: function(t) { var e = this.getEl("open"), n = e ? e.getElementsByTagName("i")[0] : null; if (n) try { n.style.background = t } catch (i) {} }, bindStates: function() { var e = this; return e.state.on("change:value", function(t) { e.state.get("rendered") && e.repaintColor(t.value) }), e._super() } }), zn = Dn.extend({ showPanel: function() { var e = this, t = e.settings; if (e.classes.add("opened"), e.panel) e.panel.show(); else { var n = t.panel; n.type && (n = { layout: "grid", items: n }), n.role = n.role || "dialog", n.popover = !0, n.autohide = !0, n.ariaRoot = !0, e.panel = new Ve(n).on("hide", function() { e.classes.remove("opened") }).on("cancel", function(t) { t.stopPropagation(), e.focus(), e.hidePanel() }).parent(e).renderTo(e.getContainerElm()), e.panel.fire("show"), e.panel.reflow() } var i = e.panel.testMoveRel(e.getEl(), t.popoverAlign || (e.isRtl() ? ["bc-tc", "bc-tl", "bc-tr"] : ["bc-tc", "bc-tr", "bc-tl", "tc-bc", "tc-br", "tc-bl"])); e.panel.classes.toggle("start", "l" === i.substr(-1)), e.panel.classes.toggle("end", "r" === i.substr(-1)); var r = "t" === i.substr(0, 1); e.panel.classes.toggle("bottom", !r), e.panel.classes.toggle("top", r), e.panel.moveRel(e.getEl(), i) }, hidePanel: function() { this.panel && this.panel.hide() }, postRender: function() { var e = this; return e.aria("haspopup", !0), e.on("click", function(t) { t.control === e && (e.panel && e.panel.visible() ? e.hidePanel() : (e.showPanel(), e.panel.focus( !! t.aria))) }), e._super() }, remove: function() { return this.panel && (this.panel.remove(), this.panel = null), this._super() } }), Fn = v.DOM, Un = zn.extend({ init: function(t) { this._super(t), this.classes.add("splitbtn"), this.classes.add("colorbutton") }, color: function(t) { return t ? (this._color = t, this.getEl("preview").style.backgroundColor = t, this) : this._color }, resetColor: function() { return this._color = null, this.getEl("preview").style.backgroundColor = null, this }, renderHtml: function() { var t = this, e = t._id, n = t.classPrefix, i = t.state.get("text"), r = t.settings.icon ? n + "ico " + n + "i-" + t.settings.icon : "", o = t.settings.image ? " style=\"background-image: url('" + t.settings.image + "')\"" : "", s = ""; return i && (t.classes.add("btn-has-text"), s = '' + t.encode(i) + ""), '
    ' }, postRender: function() { var e = this, n = e.settings.onclick; return e.on("click", function(t) { t.aria && "down" === t.aria.key || t.control !== e || Fn.getParent(t.target, "." + e.classPrefix + "open") || (t.stopImmediatePropagation(), n.call(e, t)) }), delete e.settings.onclick, e._super() } }), Vn = tinymce.util.Tools.resolve("tinymce.util.Color"), qn = be.extend({ Defaults: { classes: "widget colorpicker" }, init: function(t) { this._super(t) }, postRender: function() { var n, i, r, o, s, a = this, l = a.color(); function u(t, e) { var n, i, r = St.getPos(t); return n = e.pageX - r.x, i = e.pageY - r.y, { x: n = Math.max(0, Math.min(n / t.clientWidth, 1)), y: i = Math.max(0, Math.min(i / t.clientHeight, 1)) } } function c(t, e) { var n = (360 - t.h) / 360; St.css(r, { top: 100 * n + "%" }), e || St.css(s, { left: t.s + "%", top: 100 - t.v + "%" }), o.style.background = Vn({ s: 100, v: 100, h: t.h }).toHex(), a.color().parse({ s: t.s, v: t.v, h: t.h }) } function t(t) { var e; e = u(o, t), n.s = 100 * e.x, n.v = 100 * (1 - e.y), c(n), a.fire("change") } function e(t) { var e; e = u(i, t), (n = l.toHsv()).h = 360 * (1 - e.y), c(n, !0), a.fire("change") } i = a.getEl("h"), r = a.getEl("hp"), o = a.getEl("sv"), s = a.getEl("svp"), a._repaint = function() { c(n = l.toHsv()) }, a._super(), a._svdraghelper = new Re(a._id + "-sv", { start: t, drag: t }), a._hdraghelper = new Re(a._id + "-h", { start: e, drag: e }), a._repaint() }, rgb: function() { return this.color().toRgb() }, value: function(t) { if (!arguments.length) return this.color().toHex(); this.color().parse(t), this._rendered && this._repaint() }, color: function() { return this._color || (this._color = Vn()), this._color }, renderHtml: function() { var t, e = this._id, o = this.classPrefix, s = "#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000"; return t = '
    ' + function() { var t, e, n, i, r = ""; for (n = "filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=", t = 0, e = (i = s.split(",")).length - 1; t < e; t++) r += '
    '; return r }() + '
    ', '
    ' + t + "
    " } }), Yn = be.extend({ init: function(t) { t = C.extend({ height: 100, text: "Drop an image here", multiple: !1, accept: null }, t), this._super(t), this.classes.add("dropzone"), t.multiple && this.classes.add("multiple") }, renderHtml: function() { var t, e, n = this.settings; return t = { id: this._id, hidefocus: "1" }, e = St.create("div", t, "" + this.translate(n.text) + ""), n.height && St.css(e, "height", n.height + "px"), n.width && St.css(e, "width", n.width + "px"), e.className = this.classes, e.outerHTML }, postRender: function() { var i = this, t = function(t) { t.preventDefault(), i.classes.toggle("dragenter"), i.getEl().className = i.classes }; i._super(), i.$el.on("dragover", function(t) { t.preventDefault() }), i.$el.on("dragenter", t), i.$el.on("dragleave", t), i.$el.on("drop", function(t) { if (t.preventDefault(), !i.state.get("disabled")) { var e = function(t) { var e = i.settings.accept; if ("string" != typeof e) return t; var n = new RegExp("(" + e.split(/\s*,\s*/).join("|") + ")$", "i"); return C.grep(t, function(t) { return n.test(t.name) }) }(t.dataTransfer.files); i.value = function() { return e.length ? i.settings.multiple ? e : e[0] : null }, e.length && i.fire("change", t) } }) }, remove: function() { this.$el.off(), this._super() } }), $n = be.extend({ init: function(t) { var n = this; t.delimiter || (t.delimiter = "\xbb"), n._super(t), n.classes.add("path"), n.canFocus = !0, n.on("click", function(t) { var e; (e = t.target.getAttribute("data-index")) && n.fire("select", { value: n.row()[e], index: e }) }), n.row(n.settings.row) }, focus: function() { return this.getEl().firstChild.focus(), this }, row: function(t) { return arguments.length ? (this.state.set("row", t), this) : this.state.get("row") }, renderHtml: function() { return '
    ' + this._getDataPathHtml(this.state.get("row")) + "
    " }, bindStates: function() { var e = this; return e.state.on("change:row", function(t) { e.innerHtml(e._getDataPathHtml(t.value)) }), e._super() }, _getDataPathHtml: function(t) { var e, n, i = t || [], r = "", o = this.classPrefix; for (e = 0, n = i.length; e < n; e++) r += (0 < e ? '" : "") + '
    ' + i[e].name + "
    "; return r || (r = '
    \xa0
    '), r } }), Xn = $n.extend({ postRender: function() { var o = this, s = o.settings.editor; function a(t) { if (1 === t.nodeType) { if ("BR" === t.nodeName || t.getAttribute("data-mce-bogus")) return !0; if ("bookmark" === t.getAttribute("data-mce-type")) return !0 } return !1 } return !1 !== s.settings.elementpath && (o.on("select", function(t) { s.focus(), s.selection.select(this.row()[t.index].element), s.nodeChanged() }), s.on("nodeChange", function(t) { for (var e = [], n = t.parents, i = n.length; i--;) if (1 === n[i].nodeType && !a(n[i])) { var r = s.fire("ResolveName", { name: n[i].nodeName.toLowerCase(), target: n[i] }); if (r.isDefaultPrevented() || e.push({ name: r.name, element: n[i] }), r.isPropagationStopped()) break } o.row(e) })), o._super() } }), jn = De.extend({ Defaults: { layout: "flex", align: "center", defaults: { flex: 1 } }, renderHtml: function() { var t = this, e = t._layout, n = t.classPrefix; return t.classes.add("formitem"), e.preRender(t), '
    ' + (t.settings.title ? '
    ' + t.settings.title + "
    " : "") + '
    ' + (t.settings.html || "") + e.renderHtml(t) + "
    " } }), Jn = De.extend({ Defaults: { containerCls: "form", layout: "flex", direction: "column", align: "stretch", flex: 1, padding: 15, labelGap: 30, spacing: 10, callbacks: { submit: function() { this.submit() } } }, preRender: function() { var i = this, t = i.items(); i.settings.formItemDefaults || (i.settings.formItemDefaults = { layout: "flex", autoResize: "overflow", defaults: { flex: 1 } }), t.each(function(t) { var e, n = t.settings.label; n && ((e = new jn(C.extend({ items: { type: "label", id: t._id + "-l", text: n, flex: 0, forId: t._id, disabled: t.disabled() } }, i.settings.formItemDefaults))).type = "formitem", t.aria("labelledby", t._id + "-l"), "undefined" == typeof t.settings.flex && (t.settings.flex = 1), i.replace(t, e), e.add(t)) }) }, submit: function() { return this.fire("submit", { data: this.toJSON() }) }, postRender: function() { this._super(), this.fromJSON(this.settings.data) }, bindStates: function() { var n = this; function t() { var t, e, i = 0, r = []; if (!1 !== n.settings.labelGapCalc) for (("children" === n.settings.labelGapCalc ? n.find("formitem") : n.items()).filter("formitem").each(function(t) { var e = t.items()[0], n = e.getEl().clientWidth; i = i < n ? n : i, r.push(e) }), e = n.settings.labelGap || 0, t = r.length; t--;) r[t].settings.minWidth = i + e } n._super(), n.on("show", t), t() } }), Gn = Jn.extend({ Defaults: { containerCls: "fieldset", layout: "flex", direction: "column", align: "stretch", flex: 1, padding: "25 15 5 15", labelGap: 30, spacing: 10, border: 1 }, renderHtml: function() { var t = this, e = t._layout, n = t.classPrefix; return t.preRender(), e.preRender(t), '
    ' + (t.settings.title ? '' + t.settings.title + "" : "") + '
    ' + (t.settings.html || "") + e.renderHtml(t) + "
    " } }), Kn = 0, Zn = function(t) { if (null === t || t === undefined) throw new Error("Node cannot be null or undefined"); return { dom: lt(t) } }, Qn = { fromHtml: function(t, e) { var n = (e || document).createElement("div"); if (n.innerHTML = t, !n.hasChildNodes() || 1 < n.childNodes.length) throw console.error("HTML does not have a single root node", t), "HTML must have a single root node"; return Zn(n.childNodes[0]) }, fromTag: function(t, e) { var n = (e || document).createElement(t); return Zn(n) }, fromText: function(t, e) { var n = (e || document).createTextNode(t); return Zn(n) }, fromDom: Zn, fromPoint: function(t, e, n) { var i = t.dom(); return pt.from(i.elementFromPoint(e, n)).map(Zn) } }, ti = function(n) { var i, r = !1; return function() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; return r || (r = !0, i = n.apply(null, t)), i } }, ei = { ATTRIBUTE: Node.ATTRIBUTE_NODE, CDATA_SECTION: Node.CDATA_SECTION_NODE, COMMENT: Node.COMMENT_NODE, DOCUMENT: Node.DOCUMENT_NODE, DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE, DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE, ELEMENT: Node.ELEMENT_NODE, TEXT: Node.TEXT_NODE, PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE, ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE, ENTITY: Node.ENTITY_NODE, NOTATION: Node.NOTATION_NODE }, ni = function(t) { return t.dom().nodeType }, ii = function(e) { return function(t) { return ni(t) === e } }, ri = (ii(ei.ELEMENT), ii(ei.TEXT), ii(ei.DOCUMENT), ti(function() { return ri(Qn.fromDom(document)) }), function(t) { var e = t.dom().body; if (null === e || e === undefined) throw "Body is not available yet"; return Qn.fromDom(e) }), oi = function(t, e) { var n = function(t, e) { for (var n = 0; n < t.length; n++) { var i = t[n]; if (i.test(e)) return i } return undefined }(t, e); if (!n) return { major: 0, minor: 0 }; var i = function(t) { return Number(e.replace(n, "$" + t)) }; return ai(i(1), i(2)) }, si = function() { return ai(0, 0) }, ai = function(t, e) { return { major: t, minor: e } }, li = { nu: ai, detect: function(t, e) { var n = String(e).toLowerCase(); return 0 === t.length ? si() : oi(t, n) }, unknown: si }, ui = "Firefox", ci = function(t, e) { return function() { return e === t } }, di = function(t) { var e = t.current; return { current: e, version: t.version, isEdge: ci("Edge", e), isChrome: ci("Chrome", e), isIE: ci("IE", e), isOpera: ci("Opera", e), isFirefox: ci(ui, e), isSafari: ci("Safari", e) } }, fi = { unknown: function() { return di({ current: undefined, version: li.unknown() }) }, nu: di, edge: lt("Edge"), chrome: lt("Chrome"), ie: lt("IE"), opera: lt("Opera"), firefox: lt(ui), safari: lt("Safari") }, hi = "Windows", mi = "Android", gi = "Solaris", pi = "FreeBSD", vi = function(t, e) { return function() { return e === t } }, bi = function(t) { var e = t.current; return { current: e, version: t.version, isWindows: vi(hi, e), isiOS: vi("iOS", e), isAndroid: vi(mi, e), isOSX: vi("OSX", e), isLinux: vi("Linux", e), isSolaris: vi(gi, e), isFreeBSD: vi(pi, e) } }, yi = { unknown: function() { return bi({ current: undefined, version: li.unknown() }) }, nu: bi, windows: lt(hi), ios: lt("iOS"), android: lt(mi), linux: lt("Linux"), osx: lt("OSX"), solaris: lt(gi), freebsd: lt(pi) }, xi = function(t, e) { var n = String(e).toLowerCase(); return Et(t, function(t) { return t.search(n) }) }, wi = function(t, n) { return xi(t, n).map(function(t) { var e = li.detect(t.versionRegexes, n); return { current: t.name, version: e } }) }, _i = function(t, n) { return xi(t, n).map(function(t) { var e = li.detect(t.versionRegexes, n); return { current: t.name, version: e } }) }, Ci = function(t, e) { return -1 !== t.indexOf(e) }, Ri = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, Ei = function(e) { return function(t) { return Ci(t, e) } }, ki = [{ name: "Edge", versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], search: function(t) { return Ci(t, "edge/") && Ci(t, "chrome") && Ci(t, "safari") && Ci(t, "applewebkit") } }, { name: "Chrome", versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, Ri], search: function(t) { return Ci(t, "chrome") && !Ci(t, "chromeframe") } }, { name: "IE", versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/], search: function(t) { return Ci(t, "msie") || Ci(t, "trident") } }, { name: "Opera", versionRegexes: [Ri, /.*?opera\/([0-9]+)\.([0-9]+).*/], search: Ei("opera") }, { name: "Firefox", versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], search: Ei("firefox") }, { name: "Safari", versionRegexes: [Ri, /.*?cpu os ([0-9]+)_([0-9]+).*/], search: function(t) { return (Ci(t, "safari") || Ci(t, "mobile/")) && Ci(t, "applewebkit") } }], Ti = [{ name: "Windows", search: Ei("win"), versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] }, { name: "iOS", search: function(t) { return Ci(t, "iphone") || Ci(t, "ipad") }, versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/] }, { name: "Android", search: Ei("android"), versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] }, { name: "OSX", search: Ei("os x"), versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/] }, { name: "Linux", search: Ei("linux"), versionRegexes: [] }, { name: "Solaris", search: Ei("sunos"), versionRegexes: [] }, { name: "FreeBSD", search: Ei("freebsd"), versionRegexes: [] }], Hi = { browsers: lt(ki), oses: lt(Ti) }, Mi = function(t) { var e, n, i, r, o, s, a, l, u, c, d, f = Hi.browsers(), h = Hi.oses(), m = wi(f, t).fold(fi.unknown, fi.nu), g = _i(h, t).fold(yi.unknown, yi.nu); return { browser: m, os: g, deviceType: (n = m, i = t, r = (e = g).isiOS() && !0 === /ipad/i.test(i), o = e.isiOS() && !r, s = e.isAndroid() && 3 === e.version.major, a = e.isAndroid() && 4 === e.version.major, l = r || s || a && !0 === /mobile/i.test(i), u = e.isiOS() || e.isAndroid(), c = u && !l, d = n.isSafari() && e.isiOS() && !1 === /safari/i.test(i), { isiPad: lt(r), isiPhone: lt(o), isTablet: lt(l), isPhone: lt(c), isTouch: lt(u), isAndroid: e.isAndroid, isiOS: e.isiOS, isWebView: lt(d) }) } }, Si = ti(function() { var t = navigator.userAgent; return Mi(t) }), Ni = ei.ELEMENT, Oi = ei.DOCUMENT, Di = function(t) { return t.nodeType !== Ni && t.nodeType !== Oi || 0 === t.childElementCount }, Pi = { all: function(t, e) { var n = e === undefined ? document : e.dom(); return Di(n) ? [] : _t(n.querySelectorAll(t), Qn.fromDom) }, is: function(t, e) { var n = t.dom(); if (n.nodeType !== Ni) return !1; if (n.matches !== undefined) return n.matches(e); if (n.msMatchesSelector !== undefined) return n.msMatchesSelector(e); if (n.webkitMatchesSelector !== undefined) return n.webkitMatchesSelector(e); if (n.mozMatchesSelector !== undefined) return n.mozMatchesSelector(e); throw new Error("Browser lacks native selectors") }, one: function(t, e) { var n = e === undefined ? document : e.dom(); return Di(n) ? pt.none() : pt.from(n.querySelector(t)).map(Qn.fromDom) } }, Wi = (Si().browser.isIE(), function() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e] }("element", "offset"), function(t, e) { return Pi.all(e, t) }), Ai = C.trim, Bi = function(e) { return function(t) { if (t && 1 === t.nodeType) { if (t.contentEditable === e) return !0; if (t.getAttribute("data-mce-contenteditable") === e) return !0 } return !1 } }, Li = Bi("true"), Ii = Bi("false"), zi = function(t, e, n, i, r) { return { type: t, title: e, url: n, level: i, attach: r } }, Fi = function(t) { return t.innerText || t.textContent }, Ui = function(t) { return t.id ? t.id : (e = "h", n = (new Date).getTime(), e + "_" + Math.floor(1e9 * Math.random()) + ++Kn + String(n)); var e, n }, Vi = function(t) { return (e = t) && "A" === e.nodeName && (e.id || e.name) && Yi(t); var e }, qi = function(t) { return t && /^(H[1-6])$/.test(t.nodeName) }, Yi = function(t) { return function(t) { for (; t = t.parentNode;) { var e = t.contentEditable; if (e && "inherit" !== e) return Li(t) } return !1 }(t) && !Ii(t) }, $i = function(t) { return qi(t) && Yi(t) }, Xi = function(t) { var e, n = Ui(t); return zi("header", Fi(t), "#" + n, qi(e = t) ? parseInt(e.nodeName.substr(1), 10) : 0, function() { t.id = n }) }, ji = function(t) { var e = t.id || t.name, n = Fi(t); return zi("anchor", n || "#" + e, "#" + e, 0, at) }, Ji = function(t) { var e, n; return e = "h1,h2,h3,h4,h5,h6,a:not([href])", n = t, _t(Wi(Qn.fromDom(n), e), function(t) { return t.dom() }) }, Gi = function(t) { return 0 < Ai(t.title).length }, Ki = function(t) { var e, n = Ji(t); return Rt((e = n, _t(Rt(e, $i), Xi)).concat(_t(Rt(n, Vi), ji)), Gi) }, Zi = {}, Qi = function(t) { return { title: t.title, value: { title: { raw: t.title }, url: t.url, attach: t.attach } } }, tr = function(t, e) { return { title: t, value: { title: t, url: e, attach: at } } }, er = function(t, e, n) { var i = e in t ? t[e] : n; return !1 === i ? null : i }, nr = function(t, i, r, e) { var n, o, s, a, l, u, c = { title: "-" }, d = function(t) { var e = t.hasOwnProperty(r) ? t[r] : [], n = Rt(e, function(t) { return e = t, !wt(i, function(t) { return t.url === e }); var e }); return C.map(n, function(t) { return { title: t, value: { title: t, url: t, attach: at } } }) }, f = function(e) { var t, n = Rt(i, function(t) { return t.type === e }); return t = n, C.map(t, Qi) }; return !1 === e.typeahead_urls ? [] : "file" === r ? (n = [rr(t, d(Zi)), rr(t, f("header")), rr(t, (a = f("anchor"), l = er(e, "anchor_top", "#top"), u = er(e, "anchor_bottom", "#bottom"), null !== l && a.unshift(tr("", l)), null !== u && a.push(tr("", u)), a))], o = function(t, e) { return 0 === t.length || 0 === e.length ? t.concat(e) : t.concat(c, e) }, s = [], Ct(n, function(t) { s = o(s, t) }), s) : rr(t, d(Zi)) }, ir = function(t, e) { var n, i, r, o = Zi[e]; /^https?/.test(t) && (o ? (n = o, i = t, r = xt(n, i), -1 === r ? pt.none() : pt.some(r)).isNone() && (Zi[e] = o.slice(0, 5).concat(t)) : Zi[e] = [t]) }, rr = function(t, e) { var n = t.toLowerCase(), i = C.grep(e, function(t) { return -1 !== t.title.toLowerCase().indexOf(n) }); return 1 === i.length && i[0].title === t ? [] : i }, or = function(o, t, n) { var i = t.filepicker_validator_handler; i && o.state.on("change:value", function(t) { var e; 0 !== (e = t.value).length ? i({ url: e, type: n }, function(t) { var e, n, i, r = (n = (e = t).status, i = e.message, "valid" === n ? { status: "ok", message: i } : "unknown" === n ? { status: "warn", message: i } : "invalid" === n ? { status: "warn", message: i } : { status: "none", message: "" }); o.statusMessage(r.message), o.statusLevel(r.status) }) : o.statusLevel("none") }) }, sr = Ln.extend({ Statics: { clearHistory: function() { Zi = {} } }, init: function(t) { var e, n, i, r, o, s, a, l, u = this, c = window.tinymce ? window.tinymce.activeEditor : S.activeEditor, d = c.settings, f = t.filetype; t.spellcheck = !1, (i = d.file_picker_types || d.file_browser_callback_types) && (i = C.makeMap(i, /[, ]/)), i && !i[f] || (!(n = d.file_picker_callback) || i && !i[f] ? !(n = d.file_browser_callback) || i && !i[f] || (e = function() { n(u.getEl("inp").id, u.value(), f, window) }) : e = function() { var t = u.fire("beforecall").meta; t = C.extend({ filetype: f }, t), n.call(c, function(t, e) { u.value(t).fire("change", { meta: e }) }, u.value(), t) }), e && (t.icon = "browse", t.onaction = e), u._super(t), u.classes.add("filepicker"), r = u, o = d, s = c.getBody(), a = f, l = function(t) { var e = Ki(s), n = nr(t, e, a, o); r.showAutoComplete(n, t) }, r.on("autocomplete", function() { l(r.value()) }), r.on("selectitem", function(t) { var e = t.value; r.value(e.url); var n, i = (n = e.title).raw ? n.raw : n; "image" === a ? r.fire("change", { meta: { alt: i, attach: e.attach } }) : r.fire("change", { meta: { text: i, attach: e.attach } }), r.focus() }), r.on("click", function(t) { 0 === r.value().length && "INPUT" === t.target.nodeName && l("") }), r.on("PostRender", function() { r.getRoot().on("submit", function(t) { t.isDefaultPrevented() || ir(r.value(), a) }) }), or(u, d, f) } }), ar = On.extend({ recalc: function(t) { var e = t.layoutRect(), n = t.paddingBox; t.items().filter(":visible").each(function(t) { t.layoutRect({ x: n.left, y: n.top, w: e.innerW - n.right - n.left, h: e.innerH - n.top - n.bottom }), t.recalc && t.recalc() }) } }), lr = On.extend({ recalc: function(t) { var e, n, i, r, o, s, a, l, u, c, d, f, h, m, g, p, v, b, y, x, w, _, C, R, E, k, T, H, M, S, N, O, D, P, W, A, B, L = [], I = Math.max, z = Math.min; for (i = t.items().filter(":visible"), r = t.layoutRect(), o = t.paddingBox, s = t.settings, f = t.isRtl() ? s.direction || "row-reversed" : s.direction, a = s.align, l = t.isRtl() ? s.pack || "end" : s.pack, u = s.spacing || 0, "row-reversed" !== f && "column-reverse" !== f || (i = i.set(i.toArray().reverse()), f = f.split("-")[0]), "column" === f ? (R = "y", _ = "h", C = "minH", E = "maxH", T = "innerH", k = "top", H = "deltaH", M = "contentH", P = "left", O = "w", S = "x", N = "innerW", D = "minW", W = "right", A = "deltaW", B = "contentW") : (R = "x", _ = "w", C = "minW", E = "maxW", T = "innerW", k = "left", H = "deltaW", M = "contentW", P = "top", O = "h", S = "y", N = "innerH", D = "minH", W = "bottom", A = "deltaH", B = "contentH"), d = r[T] - o[k] - o[k], w = c = 0, e = 0, n = i.length; e < n; e++) m = (h = i[e]).layoutRect(), d -= e < n - 1 ? u : 0, 0 < (g = h.settings.flex) && (c += g, m[E] && L.push(h), m.flex = g), d -= m[C], w < (p = o[P] + m[D] + o[W]) && (w = p); if ((y = {})[C] = d < 0 ? r[C] - d + r[H] : r[T] - d + r[H], y[D] = w + r[A], y[M] = r[T] - d, y[B] = w, y.minW = z(y.minW, r.maxW), y.minH = z(y.minH, r.maxH), y.minW = I(y.minW, r.startMinWidth), y.minH = I(y.minH, r.startMinHeight), !r.autoResize || y.minW === r.minW && y.minH === r.minH) { for (b = d / c, e = 0, n = L.length; e < n; e++)(v = (m = (h = L[e]).layoutRect())[E]) < (p = m[C] + m.flex * b) ? (d -= m[E] - m[C], c -= m.flex, m.flex = 0, m.maxFlexSize = v) : m.maxFlexSize = 0; for (b = d / c, x = o[k], y = {}, 0 === c && ("end" === l ? x = d + o[k] : "center" === l ? (x = Math.round(r[T] / 2 - (r[T] - d) / 2) + o[k]) < 0 && (x = o[k]) : "justify" === l && (x = o[k], u = Math.floor(d / (i.length - 1)))), y[S] = o[P], e = 0, n = i.length; e < n; e++) p = (m = (h = i[e]).layoutRect()).maxFlexSize || m[C], "center" === a ? y[S] = Math.round(r[N] / 2 - m[O] / 2) : "stretch" === a ? (y[O] = I(m[D] || 0, r[N] - o[P] - o[W]), y[S] = o[P]) : "end" === a && (y[S] = r[N] - m[O] - o.top), 0 < m.flex && (p += m.flex * b), y[_] = p, y[R] = x, h.layoutRect(y), h.recalc && h.recalc(), x += p + u } else if (y.w = y.minW, y.h = y.minH, t.layoutRect(y), this.recalc(t), null === t._lastRect) { var F = t.parent(); F && (F._lastRect = null, F.recalc()) } } }), ur = Nn.extend({ Defaults: { containerClass: "flow-layout", controlClass: "flow-layout-item", endClass: "break" }, recalc: function(t) { t.items().filter(":visible").each(function(t) { t.recalc && t.recalc() }) }, isNative: function() { return !0 } }), cr = function(t, e) { return Pi.one(e, t) }, dr = function(t, e) { return function() { t.execCommand("mceToggleFormat", !1, e) } }, fr = function(t, e, n) { var i = function(t) { n(t, e) }; t.formatter ? t.formatter.formatChanged(e, i) : t.on("init", function() { t.formatter.formatChanged(e, i) }) }, hr = function(t, n) { return function(e) { fr(t, n, function(t) { e.control.active(t) }) } }, mr = function(i) { var e = ["alignleft", "aligncenter", "alignright", "alignjustify"], r = "alignleft", t = [{ text: "Left", icon: "alignleft", onclick: dr(i, "alignleft") }, { text: "Center", icon: "aligncenter", onclick: dr(i, "aligncenter") }, { text: "Right", icon: "alignright", onclick: dr(i, "alignright") }, { text: "Justify", icon: "alignjustify", onclick: dr(i, "alignjustify") }]; i.addMenuItem("align", { text: "Align", menu: t }), i.addButton("align", { type: "menubutton", icon: r, menu: t, onShowMenu: function(t) { var n = t.control.menu; C.each(e, function(e, t) { n.items().eq(t).each(function(t) { return t.active(i.formatter.match(e)) }) }) }, onPostRender: function(t) { var n = t.control; C.each(e, function(e, t) { fr(i, e, function(t) { n.icon(r), t && n.icon(e) }) }) } }), C.each({ alignleft: ["Align left", "JustifyLeft"], aligncenter: ["Align center", "JustifyCenter"], alignright: ["Align right", "JustifyRight"], alignjustify: ["Justify", "JustifyFull"], alignnone: ["No alignment", "JustifyNone"] }, function(t, e) { i.addButton(e, { active: !1, tooltip: t[0], cmd: t[1], onPostRender: hr(i, e) }) }) }, gr = function(t) { return t ? t.split(",")[0] : "" }, pr = function(l, u) { return function() { var a = this; a.state.set("value", null), l.on("init nodeChange", function(t) { var e, n, i, r, o = l.queryCommandValue("FontName"), s = (e = u, r = (n = o) ? n.toLowerCase() : "", C.each(e, function(t) { t.value.toLowerCase() === r && (i = t.value) }), C.each(e, function(t) { i || gr(t.value).toLowerCase() !== gr(r).toLowerCase() || (i = t.value) }), i); a.value(s || null), !s && o && a.text(gr(o)) }) } }, vr = function(n) { n.addButton("fontselect", function() { var t, e = (t = function(t) { for (var e = (t = t.replace(/;$/, "").split(";")).length; e--;) t[e] = t[e].split("="); return t }(n.settings.font_formats || "Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"), C.map(t, function(t) { return { text: { raw: t[0] }, value: t[1], textStyle: -1 === t[1].indexOf("dings") ? "font-family:" + t[1] : "" } })); return { type: "listbox", text: "Font Family", tooltip: "Font Family", values: e, fixedWidth: !0, onPostRender: pr(n, e), onselect: function(t) { t.control.settings.value && n.execCommand("FontName", !1, t.control.settings.value) } } }) }, br = function(t) { vr(t) }, yr = function(t, e) { return /[0-9.]+px$/.test(t) ? (n = 72 * parseInt(t, 10) / 96, i = e || 0, r = Math.pow(10, i), Math.round(n * r) / r + "pt") : t; var n, i, r }, xr = function(t, e, n) { var i; return C.each(t, function(t) { t.value === n ? i = n : t.value === e && (i = e) }), i }, wr = function(n) { n.addButton("fontsizeselect", function() { var t, s, a, e = (t = n.settings.fontsize_formats || "8pt 10pt 12pt 14pt 18pt 24pt 36pt", C.map(t.split(" "), function(t) { var e = t, n = t, i = t.split("="); return 1 < i.length && (e = i[0], n = i[1]), { text: e, value: n } })); return { type: "listbox", text: "Font Sizes", tooltip: "Font Sizes", values: e, fixedWidth: !0, onPostRender: (s = n, a = e, function() { var o = this; s.on("init nodeChange", function(t) { var e, n, i, r; if (e = s.queryCommandValue("FontSize")) for (i = 3; !r && 0 <= i; i--) n = yr(e, i), r = xr(a, n, e); o.value(r || null), r || o.text(n) }) }), onclick: function(t) { t.control.settings.value && n.execCommand("FontSize", !1, t.control.settings.value) } } }) }, _r = function(t) { wr(t) }, Cr = function(n, t) { var i = t.length; return C.each(t, function(t) { t.menu && (t.hidden = 0 === Cr(n, t.menu)); var e = t.format; e && (t.hidden = !n.formatter.canApply(e)), t.hidden && i-- }), i }, Rr = function(n, t) { var i = t.items().length; return t.items().each(function(t) { t.menu && t.visible(0 < Rr(n, t.menu)), !t.menu && t.settings.menu && t.visible(0 < Cr(n, t.settings.menu)); var e = t.settings.format; e && t.visible(n.formatter.canApply(e)), t.visible() || i-- }), i }, Er = function(t) { var i, r, o, e, s, n, a, l, u = (r = 0, o = [], e = [{ title: "Headings", items: [{ title: "Heading 1", format: "h1" }, { title: "Heading 2", format: "h2" }, { title: "Heading 3", format: "h3" }, { title: "Heading 4", format: "h4" }, { title: "Heading 5", format: "h5" }, { title: "Heading 6", format: "h6" }] }, { title: "Inline", items: [{ title: "Bold", icon: "bold", format: "bold" }, { title: "Italic", icon: "italic", format: "italic" }, { title: "Underline", icon: "underline", format: "underline" }, { title: "Strikethrough", icon: "strikethrough", format: "strikethrough" }, { title: "Superscript", icon: "superscript", format: "superscript" }, { title: "Subscript", icon: "subscript", format: "subscript" }, { title: "Code", icon: "code", format: "code" }] }, { title: "Blocks", items: [{ title: "Paragraph", format: "p" }, { title: "Blockquote", format: "blockquote" }, { title: "Div", format: "div" }, { title: "Pre", format: "pre" }] }, { title: "Alignment", items: [{ title: "左对齐", icon: "alignleft", format: "alignleft" }, { title: "居中对齐", icon: "aligncenter", format: "aligncenter" }, { title: "右对齐", icon: "alignright", format: "alignright" }, { title: "两侧对齐", icon: "alignjustify", format: "alignjustify" }] }], s = function(t) { var i = []; if (t) return C.each(t, function(t) { var e = { text: t.title, icon: t.icon }; if (t.items) e.menu = s(t.items); else { var n = t.format || "custom" + r++; t.format || (t.name = n, o.push(t)), e.format = n, e.cmd = t.cmd } i.push(e) }), i }, (i = t).on("init", function() { C.each(o, function(t) { i.formatter.register(t.name, t) }) }), { type: "menu", items: i.settings.style_formats_merge ? i.settings.style_formats ? s(e.concat(i.settings.style_formats)) : s(e) : s(i.settings.style_formats || e), onPostRender: function(t) { i.fire("renderFormatsMenu", { control: t.control }) }, itemDefaults: { preview: !0, textStyle: function() { if (this.settings.format) return i.formatter.getCssText(this.settings.format) }, onPostRender: function() { var n = this; n.parent().on("show", function() { var t, e; (t = n.settings.format) && (n.disabled(!i.formatter.canApply(t)), n.active(i.formatter.match(t))), (e = n.settings.cmd) && n.active(i.queryCommandState(e)) }) }, onclick: function() { this.settings.format && dr(i, this.settings.format)(), this.settings.cmd && i.execCommand(this.settings.cmd) } } }); n = u, t.addMenuItem("formats", { text: "Formats", menu: n }), l = u, (a = t).addButton("styleselect", { type: "menubutton", text: "Formats", menu: l, onShowMenu: function() { a.settings.style_formats_autohide && Rr(a, this.menu) } }) }, kr = function(n, t) { return function() { var r, o, s, e = []; return C.each(t, function(t) { e.push({ text: t[0], value: t[1], textStyle: function() { return n.formatter.getCssText(t[1]) } }) }), { type: "listbox", text: t[0][0], values: e, fixedWidth: !0, onselect: function(t) { if (t.control) { var e = t.control.value(); dr(n, e)() } }, onPostRender: (r = n, o = e, function() { var e = this; r.on("nodeChange", function(t) { var n = r.formatter, i = null; C.each(t.parents, function(e) { if (C.each(o, function(t) { if (s ? n.matchNode(e, s, { value: t.value }) && (i = t.value) : n.matchNode(e, t.value) && (i = t.value), i) return !1 }), i) return !1 }), e.value(i) }) }) } } }, Tr = function(t) { var e, n, i = function(t) { for (var e = (t = t.replace(/;$/, "").split(";")).length; e--;) t[e] = t[e].split("="); return t }(t.settings.block_formats || "Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre"); t.addMenuItem("blockformats", { text: "Blocks", menu: (e = t, n = i, C.map(n, function(t) { return { text: t[0], onclick: dr(e, t[1]), textStyle: function() { return e.formatter.getCssText(t[1]) } } })) }), t.addButton("formatselect", kr(t, i)) }, Hr = function(e, t) { var n, i; if ("string" == typeof t) i = t.split(" "); else if (C.isArray(t)) return function(t) { for (var e = [], n = 0, i = t.length; n < i; ++n) { if (!Array.prototype.isPrototypeOf(t[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + t); Ht.apply(e, t[n]) } return e }(C.map(t, function(t) { return Hr(e, t) })); return n = C.grep(i, function(t) { return "|" === t || t in e.menuItems }), C.map(n, function(t) { return "|" === t ? { text: "-" } : e.menuItems[t] }) }, Mr = function(t) { return t && "-" === t.text }, Sr = function(t) { var e = Rt(t, function(t, e, n) { return !Mr(t) || !Mr(n[e - 1]) }); return Rt(e, function(t, e, n) { return !Mr(t) || 0 < e && e < n.length - 1 }) }, Nr = function(t) { var e, n, i, r, o = t.settings.insert_button_items; return Sr(o ? Hr(t, o) : (e = t, n = "insert", i = [{ text: "-" }], r = C.grep(e.menuItems, function(t) { return t.context === n }), C.each(r, function(t) { "before" === t.separator && i.push({ text: "|" }), t.prependToContext ? i.unshift(t) : i.push(t), "after" === t.separator && i.push({ text: "|" }) }), i)) }, Or = function(t) { var e; (e = t).addButton("insert", { type: "menubutton", icon: "insert", menu: [], oncreatemenu: function() { this.menu.add(Nr(e)), this.menu.renderNew() } }) }, Dr = function(t) { var n, i, r; n = t, C.each({ bold: "Bold", italic: "Italic", underline: "Underline", strikethrough: "Strikethrough", subscript: "Subscript", superscript: "Superscript" }, function(t, e) { n.addButton(e, { active: !1, tooltip: t, onPostRender: hr(n, e), onclick: dr(n, e) }) }), i = t, C.each({ outdent: ["Decrease indent", "Outdent"], indent: ["Increase indent", "Indent"], cut: ["Cut", "Cut"], copy: ["Copy", "Copy"], paste: ["Paste", "Paste"], help: ["Help", "mceHelp"], selectall: ["Select all", "SelectAll"], visualaid: ["Visual aids", "mceToggleVisualAid"], newdocument: ["新建文件", "mceNewDocument"], removeformat: ["Clear formatting", "RemoveFormat"], remove: ["Remove", "Delete"] }, function(t, e) { i.addButton(e, { tooltip: t[0], cmd: t[1] }) }), r = t, C.each({ blockquote: ["Blockquote", "mceBlockQuote"], subscript: ["Subscript", "Subscript"], superscript: ["Superscript", "Superscript"] }, function(t, e) { r.addButton(e, { active: !1, tooltip: t[0], cmd: t[1], onPostRender: hr(r, e) }) }) }, Pr = function(t) { var n; Dr(t), n = t, C.each({ bold: ["Bold", "Bold", "Meta+B"], italic: ["Italic", "Italic", "Meta+I"], underline: ["Underline", "Underline", "Meta+U"], strikethrough: ["Strikethrough", "Strikethrough"], subscript: ["Subscript", "Subscript"], superscript: ["Superscript", "Superscript"], removeformat: ["Clear formatting", "RemoveFormat"], newdocument: ["新建文件", "mceNewDocument"], cut: ["Cut", "Cut", "Meta+X"], copy: ["Copy", "Copy", "Meta+C"], paste: ["Paste", "Paste", "Meta+V"], selectall: ["Select all", "SelectAll", "Meta+A"] }, function(t, e) { n.addMenuItem(e, { text: t[0], icon: e, shortcut: t[2], cmd: t[1] }) }), n.addMenuItem("codeformat", { text: "Code", icon: "code", onclick: dr(n, "code") }) }, Wr = function(n, i) { return function() { var t = this, e = function() { var t = "redo" === i ? "hasRedo" : "hasUndo"; return !!n.undoManager && n.undoManager[t]() }; t.disabled(!e()), n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode", function() { t.disabled(n.readonly || !e()) }) } }, Ar = function(t) { var e, n; (e = t).addMenuItem("undo", { text: "Undo", icon: "undo", shortcut: "Meta+Z", onPostRender: Wr(e, "undo"), cmd: "undo" }), e.addMenuItem("redo", { text: "Redo", icon: "redo", shortcut: "Meta+Y", onPostRender: Wr(e, "redo"), cmd: "redo" }), (n = t).addButton("undo", { tooltip: "Undo", onPostRender: Wr(n, "undo"), cmd: "undo" }), n.addButton("redo", { tooltip: "Redo", onPostRender: Wr(n, "redo"), cmd: "redo" }) }, Br = function(t) { var e, n; (e = t).addMenuItem("visualaid", { text: "Visual aids", selectable: !0, onPostRender: (n = e, function() { var e = this; n.on("VisualAid", function(t) { e.active(t.hasVisual) }), e.active(n.hasVisual) }), cmd: "mceToggleVisualAid" }) }, Lr = { setup: function(t) { var e; t.rtl && (ce.rtl = !0), t.on("mousedown", function() { Ve.hideAll() }), (e = t).settings.ui_container && (h.container = cr(Qn.fromDom(document.body), e.settings.ui_container).fold(lt(null), function(t) { return t.dom() })), be.tooltips = !h.iOS, ce.translate = function(t) { return S.translate(t) }, Tr(t), mr(t), Pr(t), Ar(t), _r(t), br(t), Er(t), Br(t), Or(t) } }, Ir = On.extend({ recalc: function(t) { var e, n, i, r, o, s, a, l, u, c, d, f, h, m, g, p, v, b, y, x, w, _, C, R, E, k, T, H, M = [], S = []; e = t.settings, r = t.items().filter(":visible"), o = t.layoutRect(), i = e.columns || Math.ceil(Math.sqrt(r.length)), n = Math.ceil(r.length / i), b = e.spacingH || e.spacing || 0, y = e.spacingV || e.spacing || 0, x = e.alignH || e.align, w = e.alignV || e.align, p = t.paddingBox, H = "reverseRows" in e ? e.reverseRows : t.isRtl(), x && "string" == typeof x && (x = [x]), w && "string" == typeof w && (w = [w]); for (d = 0; d < i; d++) M.push(0); for (f = 0; f < n; f++) S.push(0); for (f = 0; f < n; f++) for (d = 0; d < i && (c = r[f * i + d]); d++) R = (u = c.layoutRect()).minW, E = u.minH, M[d] = R > M[d] ? R : M[d], S[f] = E > S[f] ? E : S[f]; for (k = o.innerW - p.left - p.right, d = _ = 0; d < i; d++) _ += M[d] + (0 < d ? b : 0), k -= (0 < d ? b : 0) + M[d]; for (T = o.innerH - p.top - p.bottom, f = C = 0; f < n; f++) C += S[f] + (0 < f ? y : 0), T -= (0 < f ? y : 0) + S[f]; if (_ += p.left + p.right, C += p.top + p.bottom, (l = {}).minW = _ + (o.w - o.innerW), l.minH = C + (o.h - o.innerH), l.contentW = l.minW - o.deltaW, l.contentH = l.minH - o.deltaH, l.minW = Math.min(l.minW, o.maxW), l.minH = Math.min(l.minH, o.maxH), l.minW = Math.max(l.minW, o.startMinWidth), l.minH = Math.max(l.minH, o.startMinHeight), !o.autoResize || l.minW === o.minW && l.minH === o.minH) { var N; o.autoResize && ((l = t.layoutRect(l)).contentW = l.minW - o.deltaW, l.contentH = l.minH - o.deltaH), N = "start" === e.packV ? 0 : 0 < T ? Math.floor(T / n) : 0; var O = 0, D = e.flexWidths; if (D) for (d = 0; d < D.length; d++) O += D[d]; else O = i; var P = k / O; for (d = 0; d < i; d++) M[d] += D ? D[d] * P : P; for (m = p.top, f = 0; f < n; f++) { for (h = p.left, a = S[f] + N, d = 0; d < i && (c = r[H ? f * i + i - 1 - d : f * i + d]); d++) g = c.settings, u = c.layoutRect(), s = Math.max(M[d], u.startMinWidth), u.x = h, u.y = m, "center" === (v = g.alignH || (x ? x[d] || x[0] : null)) ? u.x = h + s / 2 - u.w / 2 : "right" === v ? u.x = h + s - u.w : "stretch" === v && (u.w = s), "center" === (v = g.alignV || (w ? w[d] || w[0] : null)) ? u.y = m + a / 2 - u.h / 2 : "bottom" === v ? u.y = m + a - u.h : "stretch" === v && (u.h = a), c.layoutRect(u), h += s + b, c.recalc && c.recalc(); m += a + y } } else if (l.w = l.minW, l.h = l.minH, t.layoutRect(l), this.recalc(t), null === t._lastRect) { var W = t.parent(); W && (W._lastRect = null, W.recalc()) } } }), zr = be.extend({ renderHtml: function() { var t = this; return t.classes.add("iframe"), t.canFocus = !1, '' }, src: function(t) { this.getEl().src = t }, html: function(t, e) { var n = this, i = this.getEl().contentWindow.document.body; return i ? (i.innerHTML = t, e && e()) : c.setTimeout(function() { n.html(t) }), this } }), Fr = be.extend({ init: function(t) { this._super(t), this.classes.add("widget").add("infobox"), this.canFocus = !1 }, severity: function(t) { this.classes.remove("error"), this.classes.remove("warning"), this.classes.remove("success"), this.classes.add(t) }, help: function(t) { this.state.set("help", t) }, renderHtml: function() { var t = this, e = t.classPrefix; return '
    ' + t.encode(t.state.get("text")) + '
    ' }, bindStates: function() { var e = this; return e.state.on("change:text", function(t) { e.getEl("body").firstChild.data = e.encode(t.value), e.state.get("rendered") && e.updateLayoutRect() }), e.state.on("change:help", function(t) { e.classes.toggle("has-help", t.value), e.state.get("rendered") && e.updateLayoutRect() }), e._super() } }), Ur = be.extend({ init: function(t) { var e = this; e._super(t), e.classes.add("widget").add("label"), e.canFocus = !1, t.multiline && e.classes.add("autoscroll"), t.strong && e.classes.add("strong") }, initLayoutRect: function() { var t = this, e = t._super(); return t.settings.multiline && (St.getSize(t.getEl()).width > e.maxW && (e.minW = e.maxW, t.classes.add("multiline")), t.getEl().style.width = e.minW + "px", e.startMinH = e.h = e.minH = Math.min(e.maxH, St.getSize(t.getEl()).height)), e }, repaint: function() { return this.settings.multiline || (this.getEl().style.lineHeight = this.layoutRect().h + "px"), this._super() }, severity: function(t) { this.classes.remove("error"), this.classes.remove("warning"), this.classes.remove("success"), this.classes.add(t) }, renderHtml: function() { var t, e, n = this, i = n.settings.forId, r = n.settings.html ? n.settings.html : n.encode(n.state.get("text")); return !i && (e = n.settings.forName) && (t = n.getRoot().find("#" + e)[0]) && (i = t._id), i ? '" : '' + r + "" }, bindStates: function() { var e = this; return e.state.on("change:text", function(t) { e.innerHtml(e.encode(t.value)), e.state.get("rendered") && e.updateLayoutRect() }), e._super() } }), Vr = De.extend({ Defaults: { role: "toolbar", layout: "flow" }, init: function(t) { this._super(t), this.classes.add("toolbar") }, postRender: function() { return this.items().each(function(t) { t.classes.add("toolbar-item") }), this._super() } }), qr = Vr.extend({ Defaults: { role: "menubar", containerCls: "menubar", ariaRoot: !0, defaults: { type: "menubutton" } } }), Yr = Dn.extend({ init: function(t) { var e = this; e._renderOpen = !0, e._super(t), t = e.settings, e.classes.add("menubtn"), t.fixedWidth && e.classes.add("fixed-width"), e.aria("haspopup", !0), e.state.set("menu", t.menu || e.render()) }, showMenu: function(t) { var e, n = this; if (n.menu && n.menu.visible() && !1 !== t) return n.hideMenu(); n.menu || (e = n.state.get("menu") || [], n.classes.add("opened"), e.length ? e = { type: "menu", animate: !0, items: e } : (e.type = e.type || "menu", e.animate = !0), e.renderTo ? n.menu = e.parent(n).show().renderTo() : n.menu = Ee.create(e).parent(n).renderTo(), n.fire("createmenu"), n.menu.reflow(), n.menu.on("cancel", function(t) { t.control.parent() === n.menu && (t.stopPropagation(), n.focus(), n.hideMenu()) }), n.menu.on("select", function() { n.focus() }), n.menu.on("show hide", function(t) { t.control === n.menu && (n.activeMenu("show" === t.type), n.classes.toggle("opened", "show" === t.type)), n.aria("expanded", "show" === t.type) }).fire("show")), n.menu.show(), n.menu.layoutRect({ w: n.layoutRect().w }), n.menu.repaint(), n.menu.moveRel(n.getEl(), n.isRtl() ? ["br-tr", "tr-br"] : ["bl-tl", "tl-bl"]), n.fire("showmenu") }, hideMenu: function() { this.menu && (this.menu.items().each(function(t) { t.hideMenu && t.hideMenu() }), this.menu.hide()) }, activeMenu: function(t) { this.classes.toggle("active", t) }, renderHtml: function() { var t, e = this, n = e._id, i = e.classPrefix, r = e.settings.icon, o = e.state.get("text"), s = ""; return (t = e.settings.image) ? (r = "none", "string" != typeof t && (t = window.getSelection ? t[0] : t[1]), t = " style=\"background-image: url('" + t + "')\"") : t = "", o && (e.classes.add("btn-has-text"), s = '' + e.encode(o) + ""), r = e.settings.icon ? i + "ico " + i + "i-" + r : "", e.aria("role", e.parent() instanceof qr ? "menuitem" : "button"), '
    ' }, postRender: function() { var r = this; return r.on("click", function(t) { t.control === r && function(t, e) { for (; t;) { if (e === t) return !0; t = t.parentNode } return !1 }(t.target, r.getEl()) && (r.focus(), r.showMenu(!t.aria), t.aria && r.menu.items().filter(":visible")[0].focus()) }), r.on("mouseenter", function(t) { var e, n = t.control, i = r.parent(); n && i && n instanceof Yr && n.parent() === i && (i.items().filter("MenuButton").each(function(t) { t.hideMenu && t !== n && (t.menu && t.menu.visible() && (e = !0), t.hideMenu()) }), e && (n.focus(), n.showMenu())) }), r._super() }, bindStates: function() { var t = this; return t.state.on("change:menu", function() { t.menu && t.menu.remove(), t.menu = null }), t._super() }, remove: function() { this._super(), this.menu && this.menu.remove() } }); function $r(i, r) { var o, s, a = this, l = ce.classPrefix; a.show = function(t, e) { function n() { o && (Nt(i).append('
    '), e && e()) } return a.hide(), o = !0, t ? s = c.setTimeout(n, t) : n(), a }, a.hide = function() { var t = i.lastChild; return c.clearTimeout(s), t && -1 !== t.className.indexOf("throbber") && t.parentNode.removeChild(t), o = !1, a } } var Xr = Ve.extend({ Defaults: { defaultType: "menuitem", border: 1, layout: "stack", role: "application", bodyRole: "menu", ariaRoot: !0 }, init: function(t) { if (t.autohide = !0, t.constrainToViewport = !0, "function" == typeof t.items && (t.itemsFactory = t.items, t.items = []), t.itemDefaults) for (var e = t.items, n = e.length; n--;) e[n] = C.extend({}, t.itemDefaults, e[n]); this._super(t), this.classes.add("menu"), t.animate && 11 !== h.ie && this.classes.add("animate") }, repaint: function() { return this.classes.toggle("menu-align", !0), this._super(), this.getEl().style.height = "", this.getEl("body").style.height = "", this }, cancel: function() { this.hideAll(), this.fire("select") }, load: function() { var e, n = this; function i() { n.throbber && (n.throbber.hide(), n.throbber = null) } n.settings.itemsFactory && (n.throbber || (n.throbber = new $r(n.getEl("body"), !0), 0 === n.items().length ? (n.throbber.show(), n.fire("loading")) : n.throbber.show(100, function() { n.items().remove(), n.fire("loading") }), n.on("hide close", i)), n.requestTime = e = (new Date).getTime(), n.settings.itemsFactory(function(t) { 0 !== t.length ? n.requestTime === e && (n.getEl().style.width = "", n.getEl("body").style.width = "", i(), n.items().remove(), n.getEl("body").innerHTML = "", n.add(t), n.renderNew(), n.fire("loaded")) : n.hide() })) }, hideAll: function() { return this.find("menuitem").exec("hideMenu"), this._super() }, preRender: function() { var n = this; return n.items().each(function(t) { var e = t.settings; if (e.icon || e.image || e.selectable) return !(n._hasIcons = !0) }), n.settings.itemsFactory && n.on("postrender", function() { n.settings.itemsFactory && n.load() }), n.on("show hide", function(t) { t.control === n && ("show" === t.type ? c.setTimeout(function() { n.classes.add("in") }, 0) : n.classes.remove("in")) }), n._super() } }), jr = Yr.extend({ init: function(i) { var e, r, o, n, s = this; s._super(i), i = s.settings, s._values = e = i.values, e && ("undefined" != typeof i.value && function t(e) { for (var n = 0; n < e.length; n++) { if (r = e[n].selected || i.value === e[n].value) return o = o || e[n].text, s.state.set("value", e[n].value), !0; if (e[n].menu && t(e[n].menu)) return !0 } }(e), !r && 0 < e.length && (o = e[0].text, s.state.set("value", e[0].value)), s.state.set("menu", e)), s.state.set("text", i.text || o), s.classes.add("listbox"), s.on("select", function(t) { var e = t.control; n && (t.lastControl = n), i.multiple ? e.active(!e.active()) : s.value(t.control.value()), n = e }) }, value: function(e) { return 0 === arguments.length ? this.state.get("value") : (void 0 === e || (this.settings.values ? 0 < C.grep(this.settings.values, function(t) { return t.value === e }).length ? this.state.set("value", e) : null === e && this.state.set("value", null) : this.state.set("value", e)), this) }, bindStates: function() { var i = this; return i.on("show", function(t) { var e, n; e = t.control, n = i.value(), e instanceof Xr && e.items().each(function(t) { t.hasMenus() || t.active(t.value() === n) }) }), i.state.on("change:value", function(e) { var n = function t(e, n) { var i; if (e) for (var r = 0; r < e.length; r++) { if (e[r].value === n) return e[r]; if (e[r].menu && (i = t(e[r].menu, n))) return i } }(i.state.get("menu"), e.value); n ? i.text(n.text) : i.text(i.settings.text) }), i._super() } }), Jr = be.extend({ Defaults: { border: 0, role: "menuitem" }, init: function(t) { var e, n = this; n._super(t), t = n.settings, n.classes.add("menu-item"), t.menu && n.classes.add("menu-item-expand"), t.preview && n.classes.add("menu-item-preview"), "-" !== (e = n.state.get("text")) && "|" !== e || (n.classes.add("menu-item-sep"), n.aria("role", "separator"), n.state.set("text", "-")), t.selectable && (n.aria("role", "menuitemcheckbox"), n.classes.add("menu-item-checkbox"), t.icon = "selected"), t.preview || t.selectable || n.classes.add("menu-item-normal"), n.on("mousedown", function(t) { t.preventDefault() }), t.menu && !t.ariaHideMenu && n.aria("haspopup", !0) }, hasMenus: function() { return !!this.settings.menu }, showMenu: function() { var e, n = this, t = n.settings, i = n.parent(); if (i.items().each(function(t) { t !== n && t.hideMenu() }), t.menu) { (e = n.menu) ? e.show() : ((e = t.menu).length ? e = { type: "menu", items: e } : e.type = e.type || "menu", i.settings.itemDefaults && (e.itemDefaults = i.settings.itemDefaults), (e = n.menu = Ee.create(e).parent(n).renderTo()).reflow(), e.on("cancel", function(t) { t.stopPropagation(), n.focus(), e.hide() }), e.on("show hide", function(t) { t.control.items && t.control.items().each(function(t) { t.active(t.settings.selected) }) }).fire("show"), e.on("hide", function(t) { t.control === e && n.classes.remove("selected") }), e.submenu = !0), e._parentMenu = i, e.classes.add("menu-sub"); var r = e.testMoveRel(n.getEl(), n.isRtl() ? ["tl-tr", "bl-br", "tr-tl", "br-bl"] : ["tr-tl", "br-bl", "tl-tr", "bl-br"]); e.moveRel(n.getEl(), r), r = "menu-sub-" + (e.rel = r), e.classes.remove(e._lastRel).add(r), e._lastRel = r, n.classes.add("selected"), n.aria("expanded", !0) } }, hideMenu: function() { var t = this; return t.menu && (t.menu.items().each(function(t) { t.hideMenu && t.hideMenu() }), t.menu.hide(), t.aria("expanded", !1)), t }, renderHtml: function() { var t, e = this, n = e._id, i = e.settings, r = e.classPrefix, o = e.state.get("text"), s = e.settings.icon, a = "", l = i.shortcut, u = e.encode(i.url); function c(t) { return t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") } function d(t) { var e = i.match || ""; return e ? t.replace(new RegExp(c(e), "gi"), function(t) { return "!mce~match[" + t + "]mce~match!" }) : t } function f(t) { return t.replace(new RegExp(c("!mce~match["), "g"), "").replace(new RegExp(c("]mce~match!"), "g"), "") } return s && e.parent().classes.add("menu-has-icons"), i.image && (a = " style=\"background-image: url('" + i.image + "')\""), l && (l = function(t) { var e, n, i = {}; for (i = h.mac ? { alt: "⌥", ctrl: "⌘", shift: "⇧", meta: "⌘" } : { meta: "Ctrl" }, t = t.split("+"), e = 0; e < t.length; e++)(n = i[t[e].toLowerCase()]) && (t[e] = n); return t.join("+") }(l)), s = r + "ico " + r + "i-" + (e.settings.icon || "none"), t = "-" !== o ? '\xa0" : "", o = f(e.encode(d(o))), u = f(e.encode(d(u))), '
    ' + t + ("-" !== o ? '' + o + "" : "") + (l ? '
    ' + l + "
    " : "") + (i.menu ? '
    ' : "") + (u ? '" : "") + "
    " }, postRender: function() { var e = this, n = e.settings, t = n.textStyle; if ("function" == typeof t && (t = t.call(this)), t) { var i = e.getEl("text"); i && (i.setAttribute("style", t), e._textStyle = t) } return e.on("mouseenter click", function(t) { t.control === e && (n.menu || "click" !== t.type ? (e.showMenu(), t.aria && e.menu.focus(!0)) : (e.fire("select"), c.requestAnimationFrame(function() { e.parent().hideAll() }))) }), e._super(), e }, hover: function() { return this.parent().items().each(function(t) { t.classes.remove("selected") }), this.classes.toggle("selected", !0), this }, active: function(t) { return function(t, e) { var n = t._textStyle; if (n) { var i = t.getEl("text"); i.setAttribute("style", n), e && (i.style.color = "", i.style.backgroundColor = "") } }(this, t), void 0 !== t && this.aria("checked", t), this._super(t) }, remove: function() { this._super(), this.menu && this.menu.remove() } }), Gr = An.extend({ Defaults: { classes: "radio", role: "radio" } }), Kr = be.extend({ renderHtml: function() { var t = this, e = t.classPrefix; return t.classes.add("resizehandle"), "both" === t.settings.direction && t.classes.add("resizehandle-both"), t.canFocus = !1, '
    ' }, postRender: function() { var e = this; e._super(), e.resizeDragHelper = new Re(this._id, { start: function() { e.fire("ResizeStart") }, drag: function(t) { "both" !== e.settings.direction && (t.deltaX = 0), e.fire("Resize", t) }, stop: function() { e.fire("ResizeEnd") } }) }, remove: function() { return this.resizeDragHelper && this.resizeDragHelper.destroy(), this._super() } }); function Zr(t) { var e = ""; if (t) for (var n = 0; n < t.length; n++) e += '"; return e } var Qr = be.extend({ Defaults: { classes: "selectbox", role: "selectbox", options: [] }, init: function(t) { var n = this; n._super(t), n.settings.size && (n.size = n.settings.size), n.settings.options && (n._options = n.settings.options), n.on("keydown", function(t) { var e; 13 === t.keyCode && (t.preventDefault(), n.parents().reverse().each(function(t) { if (t.toJSON) return e = t, !1 }), n.fire("submit", { data: e.toJSON() })) }) }, options: function(t) { return arguments.length ? (this.state.set("options", t), this) : this.state.get("options") }, renderHtml: function() { var t, e = this, n = ""; return t = Zr(e._options), e.size && (n = ' size = "' + e.size + '"'), '" }, bindStates: function() { var e = this; return e.state.on("change:options", function(t) { e.getEl().innerHTML = Zr(t.value) }), e._super() } }); function to(t, e, n) { return t < e && (t = e), n < t && (t = n), t } function eo(t, e, n) { t.setAttribute("aria-" + e, n) } function no(t, e) { var n, i, r, o, s; "v" === t.settings.orientation ? (r = "top", i = "height", n = "h") : (r = "left", i = "width", n = "w"), s = t.getEl("handle"), o = ((t.layoutRect()[n] || 100) - St.getSize(s)[i]) * ((e - t._minValue) / (t._maxValue - t._minValue)) + "px", s.style[r] = o, s.style.height = t.layoutRect().h + "px", eo(s, "valuenow", e), eo(s, "valuetext", "" + t.settings.previewFilter(e)), eo(s, "valuemin", t._minValue), eo(s, "valuemax", t._maxValue) } var io = be.extend({ init: function(t) { var e = this; t.previewFilter || (t.previewFilter = function(t) { return Math.round(100 * t) / 100 }), e._super(t), e.classes.add("slider"), "v" === t.orientation && e.classes.add("vertical"), e._minValue = yt(t.minValue) ? t.minValue : 0, e._maxValue = yt(t.maxValue) ? t.maxValue : 100, e._initValue = e.state.get("value") }, renderHtml: function() { var t = this._id, e = this.classPrefix; return '
    ' }, reset: function() { this.value(this._initValue).repaint() }, postRender: function() { var t, e, n, i, r, o, s, a, l, u, c, d, f, h, m = this; t = m._minValue, e = m._maxValue, "v" === m.settings.orientation ? (n = "screenY", i = "top", r = "height", o = "h") : (n = "screenX", i = "left", r = "width", o = "w"), m._super(), function(o, s) { function e(t) { var e, n, i, r; e = to(e = (((e = m.value()) + (r = n = o)) / ((i = s) - r) + .05 * t) * (i - n) - n, o, s), m.value(e), m.fire("dragstart", { value: e }), m.fire("drag", { value: e }), m.fire("dragend", { value: e }) } m.on("keydown", function(t) { switch (t.keyCode) { case 37: case 38: e(-1); break; case 39: case 40: e(1) } }) }(t, e), s = t, a = e, l = m.getEl("handle"), m._dragHelper = new Re(m._id, { handle: m._id + "-handle", start: function(t) { u = t[n], c = parseInt(m.getEl("handle").style[i], 10), d = (m.layoutRect()[o] || 100) - St.getSize(l)[r], m.fire("dragstart", { value: h }) }, drag: function(t) { var e = t[n] - u; f = to(c + e, 0, d), l.style[i] = f + "px", h = s + f / d * (a - s), m.value(h), m.tooltip().text("" + m.settings.previewFilter(h)).show().moveRel(l, "bc tc"), m.fire("drag", { value: h }) }, stop: function() { m.tooltip().hide(), m.fire("dragend", { value: h }) } }) }, repaint: function() { this._super(), no(this, this.value()) }, bindStates: function() { var e = this; return e.state.on("change:value", function(t) { no(e, t.value) }), e._super() } }), ro = be.extend({ renderHtml: function() { return this.classes.add("spacer"), this.canFocus = !1, '
    ' } }), oo = Yr.extend({ Defaults: { classes: "widget btn splitbtn", role: "button" }, repaint: function() { var t, e, n = this.getEl(), i = this.layoutRect(); return this._super(), t = n.firstChild, e = n.lastChild, Nt(t).css({ width: i.w - St.getSize(e).width, height: i.h - 2 }), Nt(e).css({ height: i.h - 2 }), this }, activeMenu: function(t) { Nt(this.getEl().lastChild).toggleClass(this.classPrefix + "active", t) }, renderHtml: function() { var t, e, n = this, i = n._id, r = n.classPrefix, o = n.state.get("icon"), s = n.state.get("text"), a = n.settings, l = ""; return (t = a.image) ? (o = "none", "string" != typeof t && (t = window.getSelection ? t[0] : t[1]), t = " style=\"background-image: url('" + t + "')\"") : t = "", o = a.icon ? r + "ico " + r + "i-" + o : "", s && (n.classes.add("btn-has-text"), l = '' + n.encode(s) + ""), e = "boolean" == typeof a.active ? ' aria-pressed="' + a.active + '"' : "", '
    ' }, postRender: function() { var n = this.settings.onclick; return this.on("click", function(t) { var e = t.target; if (t.control === this) for (; e;) { if (t.aria && "down" !== t.aria.key || "BUTTON" === e.nodeName && -1 === e.className.indexOf("open")) return t.stopImmediatePropagation(), void(n && n.call(this, t)); e = e.parentNode } }), delete this.settings.onclick, this._super() } }), so = ur.extend({ Defaults: { containerClass: "stack-layout", controlClass: "stack-layout-item", endClass: "break" }, isNative: function() { return !0 } }), ao = We.extend({ Defaults: { layout: "absolute", defaults: { type: "panel" } }, activateTab: function(n) { var t; this.activeTabId && (t = this.getEl(this.activeTabId), Nt(t).removeClass(this.classPrefix + "active"), t.setAttribute("aria-selected", "false")), this.activeTabId = "t" + n, (t = this.getEl("t" + n)).setAttribute("aria-selected", "true"), Nt(t).addClass(this.classPrefix + "active"), this.items()[n].show().fire("showtab"), this.reflow(), this.items().each(function(t, e) { n !== e && t.hide() }) }, renderHtml: function() { var i = this, t = i._layout, r = "", o = i.classPrefix; return i.preRender(), t.preRender(i), i.items().each(function(t, e) { var n = i._id + "-t" + e; t.aria("role", "tabpanel"), t.aria("labelledby", n), r += '" }), '
    ' + r + '
    ' + t.renderHtml(i) + "
    " }, postRender: function() { var i = this; i._super(), i.settings.activeTab = i.settings.activeTab || 0, i.activateTab(i.settings.activeTab), this.on("click", function(t) { var e = t.target.parentNode; if (e && e.id === i._id + "-head") for (var n = e.childNodes.length; n--;) e.childNodes[n] === t.target && i.activateTab(n) }) }, initLayoutRect: function() { var t, e, n, i = this; e = (e = St.getSize(i.getEl("head")).width) < 0 ? 0 : e, n = 0, i.items().each(function(t) { e = Math.max(e, t.layoutRect().minW), n = Math.max(n, t.layoutRect().minH) }), i.items().each(function(t) { t.settings.x = 0, t.settings.y = 0, t.settings.w = e, t.settings.h = n, t.layoutRect({ x: 0, y: 0, w: e, h: n }) }); var r = St.getSize(i.getEl("head")).height; return i.settings.minWidth = e, i.settings.minHeight = n + r, (t = i._super()).deltaH += r, t.innerH = t.h - t.deltaH, t } }), lo = be.extend({ init: function(t) { var n = this; n._super(t), n.classes.add("textbox"), t.multiline ? n.classes.add("multiline") : (n.on("keydown", function(t) { var e; 13 === t.keyCode && (t.preventDefault(), n.parents().reverse().each(function(t) { if (t.toJSON) return e = t, !1 }), n.fire("submit", { data: e.toJSON() })) }), n.on("keyup", function(t) { n.state.set("value", t.target.value) })) }, repaint: function() { var t, e, n, i, r, o = this, s = 0; t = o.getEl().style, e = o._layoutRect, r = o._lastRepaintRect || {}; var a = document; return !o.settings.multiline && a.all && (!a.documentMode || a.documentMode <= 8) && (t.lineHeight = e.h - s + "px"), i = (n = o.borderBox).left + n.right + 8, s = n.top + n.bottom + (o.settings.multiline ? 8 : 0), e.x !== r.x && (t.left = e.x + "px", r.x = e.x), e.y !== r.y && (t.top = e.y + "px", r.y = e.y), e.w !== r.w && (t.width = e.w - i + "px", r.w = e.w), e.h !== r.h && (t.height = e.h - s + "px", r.h = e.h), o._lastRepaintRect = r, o.fire("repaint", {}, !1), o }, renderHtml: function() { var e, t, n = this, i = n.settings; return e = { id: n._id, hidefocus: "1" }, C.each(["rows", "spellcheck", "maxLength", "size", "readonly", "min", "max", "step", "list", "pattern", "placeholder", "required", "multiple"], function(t) { e[t] = i[t] }), n.disabled() && (e.disabled = "disabled"), i.subtype && (e.type = i.subtype), (t = St.create(i.multiline ? "textarea" : "input", e)).value = n.state.get("value"), t.className = n.classes.toString(), t.outerHTML }, value: function(t) { return arguments.length ? (this.state.set("value", t), this) : (this.state.get("rendered") && this.state.set("value", this.getEl().value), this.state.get("value")) }, postRender: function() { var e = this; e.getEl().value = e.state.get("value"), e._super(), e.$el.on("change", function(t) { e.state.set("value", t.target.value), e.fire("change", t) }) }, bindStates: function() { var e = this; return e.state.on("change:value", function(t) { e.getEl().value !== t.value && (e.getEl().value = t.value) }), e.state.on("change:disabled", function(t) { e.getEl().disabled = t.value }), e._super() }, remove: function() { this.$el.off(), this._super() } }), uo = function() { return { Selector: qt, Collection: Xt, ReflowQueue: ee, Control: ce, Factory: Ee, KeyboardNavigation: Te, Container: De, DragHelper: Re, Scrollable: Pe, Panel: We, Movable: pe, Resizable: Ae, FloatPanel: Ve, Window: Je, MessageBox: Ge, Tooltip: ve, Widget: be, Progress: ye, Notification: we, Layout: Nn, AbsoluteLayout: On, Button: Dn, ButtonGroup: Wn, Checkbox: An, ComboBox: Ln, ColorBox: In, PanelButton: zn, ColorButton: Un, ColorPicker: qn, Path: $n, ElementPath: Xn, FormItem: jn, Form: Jn, FieldSet: Gn, FilePicker: sr, FitLayout: ar, FlexLayout: lr, FlowLayout: ur, FormatControls: Lr, GridLayout: Ir, Iframe: zr, InfoBox: Fr, Label: Ur, Toolbar: Vr, MenuBar: qr, MenuButton: Yr, MenuItem: Jr, Throbber: $r, Menu: Xr, ListBox: jr, Radio: Gr, ResizeHandle: Kr, SelectBox: Qr, Slider: io, Spacer: ro, SplitButton: oo, StackLayout: so, TabPanel: ao, TextBox: lo, DropZone: Yn, BrowseButton: Pn } }, co = function(n) { n.ui ? C.each(uo(), function(t, e) { n.ui[e] = t }) : n.ui = uo() }; C.each(uo(), function(t, e) { Ee.add(e, t) }), co(window.tinymce ? window.tinymce : {}), o.add("inlite", function(t) { var e = Sn(); return Lr.setup(t), Cn(t, e), Ke(t, e) }) }(); ! function() { "use strict"; var n, e, t, r, o, i, u, a, k = function() { for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e] }, v = function(t, r) { return function() { for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e]; return t(r.apply(null, arguments)) } }, E = function(n) { return function() { return n } }, h = function(n) { return n }, l = function(i) { for (var n = [], e = 1; e < arguments.length; e++) n[e - 1] = arguments[e]; for (var u = new Array(arguments.length - 1), t = 1; t < arguments.length; t++) u[t - 1] = arguments[t]; return function() { for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e]; for (var t = new Array(arguments.length), r = 0; r < t.length; r++) t[r] = arguments[r]; var o = u.concat(t); return i.apply(null, o) } }, T = function(t) { return function() { for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e]; return !t.apply(null, arguments) } }, c = function(n) { return function() { throw new Error(n) } }, s = function(n) { return n() }, f = E(!1), d = E(!0), m = function(e) { return function(n) { return function(n) { if (null === n) return "null"; var e = typeof n; return "object" === e && Array.prototype.isPrototypeOf(n) ? "array" : "object" === e && String.prototype.isPrototypeOf(n) ? "string" : e }(n) === e } }, b = m("string"), g = m("object"), p = m("array"), y = m("boolean"), w = m("function"), x = m("number"), S = Object.prototype.hasOwnProperty, O = function(u) { return function() { for (var n = new Array(arguments.length), e = 0; e < n.length; e++) n[e] = arguments[e]; if (0 === n.length) throw new Error("Can't merge zero objects"); for (var t = {}, r = 0; r < n.length; r++) { var o = n[r]; for (var i in o) S.call(o, i) && (t[i] = u(t[i], o[i])) } return t } }, C = O(function(n, e) { return g(n) && g(e) ? C(n, e) : e }), D = O(function(n, e) { return e }), A = f, R = d, M = function() { return I }, I = (r = { fold: function(n, e) { return n() }, is: A, isSome: A, isNone: R, getOr: t = function(n) { return n }, getOrThunk: e = function(n) { return n() }, getOrDie: function(n) { throw new Error(n || "error: getOrDie called on none.") }, getOrNull: function() { return null }, getOrUndefined: function() { return undefined }, or: t, orThunk: e, map: M, ap: M, each: function() {}, bind: M, flatten: M, exists: A, forall: R, filter: M, equals: n = function(n) { return n.isNone() }, equals_: n, toArray: function() { return [] }, toString: E("none()") }, Object.freeze && Object.freeze(r), r), N = function(t) { var n = function() { return t }, e = function() { return o }, r = function(n) { return n(t) }, o = { fold: function(n, e) { return e(t) }, is: function(n) { return t === n }, isSome: R, isNone: A, getOr: n, getOrThunk: n, getOrDie: n, getOrNull: n, getOrUndefined: n, or: e, orThunk: e, map: function(n) { return N(n(t)) }, ap: function(n) { return n.fold(M, function(n) { return N(n(t)) }) }, each: function(n) { n(t) }, bind: r, flatten: n, exists: r, forall: r, filter: function(n) { return n(t) ? o : I }, equals: function(n) { return n.is(t) }, equals_: function(n, e) { return n.fold(A, function(n) { return e(t, n) }) }, toArray: function() { return [t] }, toString: function() { return "some(" + t + ")" } }; return o }, B = { some: N, none: M, from: function(n) { return null === n || n === undefined ? I : N(n) } }, F = Object.keys, V = function(n, e) { for (var t = F(n), r = 0, o = t.length; r < o; r++) { var i = t[r]; e(n[i], i, n) } }, H = function(n, r) { return z(n, function(n, e, t) { return { k: e, v: r(n, e, t) } }) }, z = function(r, o) { var i = {}; return V(r, function(n, e) { var t = o(n, e, r); i[t.k] = t.v }), i }, j = function(n, t) { var r = []; return V(n, function(n, e) { r.push(t(n, e)) }), r }, L = E("touchstart"), U = E("touchmove"), P = E("touchend"), _ = E("mousedown"), W = E("mousemove"), $ = E("mouseup"), G = E("mouseover"), q = E("keydown"), Y = E("input"), X = E("change"), K = E("click"), J = E("transitionend"), Q = E("selectstart"), Z = function(t) { var r, o = !1; return function() { for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e]; return o || (o = !0, r = t.apply(null, n)), r } }, nn = function(n, e) { var t = function(n, e) { for (var t = 0; t < n.length; t++) { var r = n[t]; if (r.test(e)) return r } return undefined }(n, e); if (!t) return { major: 0, minor: 0 }; var r = function(n) { return Number(e.replace(t, "$" + n)) }; return tn(r(1), r(2)) }, en = function() { return tn(0, 0) }, tn = function(n, e) { return { major: n, minor: e } }, rn = { nu: tn, detect: function(n, e) { var t = String(e).toLowerCase(); return 0 === n.length ? en() : nn(n, t) }, unknown: en }, on = "Firefox", un = function(n, e) { return function() { return e === n } }, an = function(n) { var e = n.current; return { current: e, version: n.version, isEdge: un("Edge", e), isChrome: un("Chrome", e), isIE: un("IE", e), isOpera: un("Opera", e), isFirefox: un(on, e), isSafari: un("Safari", e) } }, cn = { unknown: function() { return an({ current: undefined, version: rn.unknown() }) }, nu: an, edge: E("Edge"), chrome: E("Chrome"), ie: E("IE"), opera: E("Opera"), firefox: E(on), safari: E("Safari") }, sn = "Windows", fn = "Android", ln = "Solaris", dn = "FreeBSD", mn = function(n, e) { return function() { return e === n } }, gn = function(n) { var e = n.current; return { current: e, version: n.version, isWindows: mn(sn, e), isiOS: mn("iOS", e), isAndroid: mn(fn, e), isOSX: mn("OSX", e), isLinux: mn("Linux", e), isSolaris: mn(ln, e), isFreeBSD: mn(dn, e) } }, vn = { unknown: function() { return gn({ current: undefined, version: rn.unknown() }) }, nu: gn, windows: E(sn), ios: E("iOS"), android: E(fn), linux: E("Linux"), osx: E("OSX"), solaris: E(ln), freebsd: E(dn) }, pn = (o = Array.prototype.indexOf) === undefined ? function(n, e) { return kn(n, e) } : function(n, e) { return o.call(n, e) }, hn = function(n, e) { return -1 < pn(n, e) }, bn = function(n, e) { return Cn(n, e).isSome() }, yn = function(n, e) { for (var t = n.length, r = new Array(t), o = 0; o < t; o++) { var i = n[o]; r[o] = e(i, o, n) } return r }, wn = function(n, e) { for (var t = 0, r = n.length; t < r; t++) e(n[t], t, n) }, xn = function(n, e) { for (var t = [], r = 0, o = n.length; r < o; r++) { var i = n[r]; e(i, r, n) && t.push(i) } return t }, Tn = function(n, e, t) { return function(n, e) { for (var t = n.length - 1; 0 <= t; t--) e(n[t], t, n) }(n, function(n) { t = e(t, n) }), t }, Sn = function(n, e, t) { return wn(n, function(n) { t = e(t, n) }), t }, On = function(n, e) { for (var t = 0, r = n.length; t < r; t++) { var o = n[t]; if (e(o, t, n)) return B.some(o) } return B.none() }, Cn = function(n, e) { for (var t = 0, r = n.length; t < r; t++) if (e(n[t], t, n)) return B.some(t); return B.none() }, kn = function(n, e) { for (var t = 0, r = n.length; t < r; ++t) if (n[t] === e) return t; return -1 }, En = Array.prototype.push, Dn = function(n) { for (var e = [], t = 0, r = n.length; t < r; ++t) { if (!Array.prototype.isPrototypeOf(n[t])) throw new Error("Arr.flatten item " + t + " was not an array, input: " + n); En.apply(e, n[t]) } return e }, An = function(n, e) { var t = yn(n, e); return Dn(t) }, Rn = function(n, e) { for (var t = 0, r = n.length; t < r; ++t) if (!0 !== e(n[t], t, n)) return !1; return !0 }, Mn = Array.prototype.slice, In = function(n) { var e = Mn.call(n, 0); return e.reverse(), e }, Nn = function(n) { return [n] }, Bn = (w(Array.from) && Array.from, function(n, e) { var t = String(e).toLowerCase(); return On(n, function(n) { return n.search(t) }) }), Fn = function(n, t) { return Bn(n, t).map(function(n) { var e = rn.detect(n.versionRegexes, t); return { current: n.name, version: e } }) }, Vn = function(n, t) { return Bn(n, t).map(function(n) { var e = rn.detect(n.versionRegexes, t); return { current: n.name, version: e } }) }, Hn = function(n, e) { return -1 !== n.indexOf(e) }, zn = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, jn = function(e) { return function(n) { return Hn(n, e) } }, Ln = [{ name: "Edge", versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], search: function(n) { return Hn(n, "edge/") && Hn(n, "chrome") && Hn(n, "safari") && Hn(n, "applewebkit") } }, { name: "Chrome", versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, zn], search: function(n) { return Hn(n, "chrome") && !Hn(n, "chromeframe") } }, { name: "IE", versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/], search: function(n) { return Hn(n, "msie") || Hn(n, "trident") } }, { name: "Opera", versionRegexes: [zn, /.*?opera\/([0-9]+)\.([0-9]+).*/], search: jn("opera") }, { name: "Firefox", versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], search: jn("firefox") }, { name: "Safari", versionRegexes: [zn, /.*?cpu os ([0-9]+)_([0-9]+).*/], search: function(n) { return (Hn(n, "safari") || Hn(n, "mobile/")) && Hn(n, "applewebkit") } }], Un = [{ name: "Windows", search: jn("win"), versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] }, { name: "iOS", search: function(n) { return Hn(n, "iphone") || Hn(n, "ipad") }, versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/] }, { name: "Android", search: jn("android"), versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] }, { name: "OSX", search: jn("os x"), versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/] }, { name: "Linux", search: jn("linux"), versionRegexes: [] }, { name: "Solaris", search: jn("sunos"), versionRegexes: [] }, { name: "FreeBSD", search: jn("freebsd"), versionRegexes: [] }], Pn = { browsers: E(Ln), oses: E(Un) }, _n = function(n) { var e, t, r, o, i, u, a, c, s, f, l, d = Pn.browsers(), m = Pn.oses(), g = Fn(d, n).fold(cn.unknown, cn.nu), v = Vn(m, n).fold(vn.unknown, vn.nu); return { browser: g, os: v, deviceType: (t = g, r = n, o = (e = v).isiOS() && !0 === /ipad/i.test(r), i = e.isiOS() && !o, u = e.isAndroid() && 3 === e.version.major, a = e.isAndroid() && 4 === e.version.major, c = o || u || a && !0 === /mobile/i.test(r), s = e.isiOS() || e.isAndroid(), f = s && !c, l = t.isSafari() && e.isiOS() && !1 === /safari/i.test(r), { isiPad: E(o), isiPhone: E(i), isTablet: E(c), isPhone: E(f), isTouch: E(s), isAndroid: e.isAndroid, isiOS: e.isiOS, isWebView: E(l) }) } }, Wn = { detect: Z(function() { var n = navigator.userAgent; return _n(n) }) }, $n = { tap: E("alloy.tap") }, Gn = E("alloy.focus"), qn = E("alloy.blur.post"), Yn = E("alloy.receive"), Xn = E("alloy.execute"), Kn = E("alloy.focus.item"), Jn = $n.tap, Qn = Wn.detect().deviceType.isTouch() ? $n.tap : K, Zn = E("alloy.longpress"), ne = E("alloy.system.init"), ee = E("alloy.system.scroll"), te = E("alloy.system.attached"), re = E("alloy.system.detached"), oe = function(n, e) { ce(n, n.element(), e, {}) }, ie = function(n, e, t) { ce(n, n.element(), e, t) }, ue = function(n) { oe(n, Xn()) }, ae = function(n, e, t) { ce(n, e, t, {}) }, ce = function(n, e, t, r) { var o = C({ target: e }, r); n.getSystem().triggerEvent(t, e, H(o, E)) }, se = function(n) { if (null === n || n === undefined) throw new Error("Node cannot be null or undefined"); return { dom: E(n) } }, fe = { fromHtml: function(n, e) { var t = (e || document).createElement("div"); if (t.innerHTML = n, !t.hasChildNodes() || 1 < t.childNodes.length) throw console.error("HTML does not have a single root node", n), "HTML must have a single root node"; return se(t.childNodes[0]) }, fromTag: function(n, e) { var t = (e || document).createElement(n); return se(t) }, fromText: function(n, e) { var t = (e || document).createTextNode(n); return se(t) }, fromDom: se, fromPoint: function(n, e, t) { var r = n.dom(); return B.from(r.elementFromPoint(e, t)).map(se) } }, le = { ATTRIBUTE: Node.ATTRIBUTE_NODE, CDATA_SECTION: Node.CDATA_SECTION_NODE, COMMENT: Node.COMMENT_NODE, DOCUMENT: Node.DOCUMENT_NODE, DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE, DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE, ELEMENT: Node.ELEMENT_NODE, TEXT: Node.TEXT_NODE, PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE, ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE, ENTITY: Node.ENTITY_NODE, NOTATION: Node.NOTATION_NODE }, de = function(n) { return n.dom().nodeName.toLowerCase() }, me = function(n) { return n.dom().nodeType }, ge = function(e) { return function(n) { return me(n) === e } }, ve = ge(le.ELEMENT), pe = ge(le.TEXT), he = ge(le.DOCUMENT), be = { name: de, type: me, value: function(n) { return n.dom().nodeValue }, isElement: ve, isText: pe, isDocument: he, isComment: function(n) { return me(n) === le.COMMENT || "#comment" === de(n) } }, ye = Z(function() { return we(fe.fromDom(document)) }), we = function(n) { var e = n.dom().body; if (null === e || e === undefined) throw "Body is not available yet"; return fe.fromDom(e) }, xe = { body: ye, getBody: we, inBody: function(n) { var e = be.isText(n) ? n.dom().parentNode : n.dom(); return e !== undefined && null !== e && e.ownerDocument.body.contains(e) } }, Te = function() { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; return function() { for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n]; if (e.length !== t.length) throw new Error('Wrong number of arguments to struct. Expected "[' + e.length + ']", got ' + t.length + " arguments"); var r = {}; return wn(e, function(n, e) { r[n] = E(t[e]) }), r } }, Se = function(n) { return n.slice(0).sort() }, Oe = function(n, e) { throw new Error("All required keys (" + Se(n).join(", ") + ") were not specified. Specified keys were: " + Se(e).join(", ") + ".") }, Ce = function(n) { throw new Error("Unsupported keys for object: " + Se(n).join(", ")) }, ke = function(e, n) { if (!p(n)) throw new Error("The " + e + " fields must be an array. Was: " + n + "."); wn(n, function(n) { if (!b(n)) throw new Error("The value " + n + " in the " + e + " fields was not a string.") }) }, Ee = function(n) { var t = Se(n); On(t, function(n, e) { return e < t.length - 1 && n === t[e + 1] }).each(function(n) { throw new Error("The field: " + n + " occurs more than once in the combined fields: [" + t.join(", ") + "].") }) }, De = function(o, i) { var u = o.concat(i); if (0 === u.length) throw new Error("You must specify at least one required or optional field."); return ke("required", o), ke("optional", i), Ee(u), function(e) { var t = F(e); Rn(o, function(n) { return hn(t, n) }) || Oe(o, t); var n = xn(t, function(n) { return !hn(u, n) }); 0 < n.length && Ce(n); var r = {}; return wn(o, function(n) { r[n] = E(e[n]) }), wn(i, function(n) { r[n] = E(Object.prototype.hasOwnProperty.call(e, n) ? B.some(e[n]) : B.none()) }), r } }, Ae = function(n, e) { for (var t = [], r = function(n) { return t.push(n), e(n) }, o = e(n); (o = o.bind(r)).isSome();); return t }, Re = "undefined" != typeof window ? window : Function("return this;")(), Me = function(n, e) { return function(n, e) { for (var t = e !== undefined && null !== e ? e : Re, r = 0; r < n.length && t !== undefined && null !== t; ++r) t = t[n[r]]; return t }(n.split("."), e) }, Ie = { getOrDie: function(n, e) { var t = Me(n, e); if (t === undefined || null === t) throw n + " not available on this browser"; return t } }, Ne = le.ELEMENT, Be = le.DOCUMENT, Fe = function(n) { return n.nodeType !== Ne && n.nodeType !== Be || 0 === n.childElementCount }, Ve = { all: function(n, e) { var t = e === undefined ? document : e.dom(); return Fe(t) ? [] : yn(t.querySelectorAll(n), fe.fromDom) }, is: function(n, e) { var t = n.dom(); if (t.nodeType !== Ne) return !1; if (t.matches !== undefined) return t.matches(e); if (t.msMatchesSelector !== undefined) return t.msMatchesSelector(e); if (t.webkitMatchesSelector !== undefined) return t.webkitMatchesSelector(e); if (t.mozMatchesSelector !== undefined) return t.mozMatchesSelector(e); throw new Error("Browser lacks native selectors") }, one: function(n, e) { var t = e === undefined ? document : e.dom(); return Fe(t) ? B.none() : B.from(t.querySelector(n)).map(fe.fromDom) } }, He = function(n, e) { return n.dom() === e.dom() }, ze = (Wn.detect().browser.isIE(), He), je = function(n) { var e = n.dom(); return B.from(e.parentNode).map(fe.fromDom) }, Le = function(n) { var e = n.dom(); return B.from(e.previousSibling).map(fe.fromDom) }, Ue = function(n) { var e = n.dom(); return B.from(e.nextSibling).map(fe.fromDom) }, Pe = function(n) { var e = n.dom(); return yn(e.childNodes, fe.fromDom) }, _e = function(n, e) { var t = n.dom().childNodes; return B.from(t[e]).map(fe.fromDom) }, We = Te("element", "offset"), $e = { owner: function(n) { return fe.fromDom(n.dom().ownerDocument) }, defaultView: function(n) { var e = n.dom().ownerDocument.defaultView; return fe.fromDom(e) }, documentElement: function(n) { return fe.fromDom(n.dom().ownerDocument.documentElement) }, parent: je, findIndex: function(t) { return je(t).bind(function(n) { var e = Pe(n); return Cn(e, function(n) { return ze(t, n) }) }) }, parents: function(n, e) { for (var t = w(e) ? e : E(!1), r = n.dom(), o = []; null !== r.parentNode && r.parentNode !== undefined;) { var i = r.parentNode, u = fe.fromDom(i); if (o.push(u), !0 === t(u)) break; r = i } return o }, siblings: function(e) { return je(e).map(Pe).map(function(n) { return xn(n, function(n) { return !ze(e, n) }) }).getOr([]) }, prevSibling: Le, offsetParent: function(n) { var e = n.dom(); return B.from(e.offsetParent).map(fe.fromDom) }, prevSiblings: function(n) { return In(Ae(n, Le)) }, nextSibling: Ue, nextSiblings: function(n) { return Ae(n, Ue) }, children: Pe, child: _e, firstChild: function(n) { return _e(n, 0) }, lastChild: function(n) { return _e(n, n.dom().childNodes.length - 1) }, childNodesCount: function(n) { return n.dom().childNodes.length }, hasChildNodes: function(n) { return n.dom().hasChildNodes() }, leaf: function(n, e) { var t = Pe(n); return 0 < t.length && e < t.length ? We(t[e], 0) : We(n, e) } }, Ge = function(e, t) { $e.parent(e).each(function(n) { n.dom().insertBefore(t.dom(), e.dom()) }) }, qe = function(n, e) { n.dom().appendChild(e.dom()) }, Ye = { before: Ge, after: function(n, e) { $e.nextSibling(n).fold(function() { $e.parent(n).each(function(n) { qe(n, e) }) }, function(n) { Ge(n, e) }) }, prepend: function(e, t) { $e.firstChild(e).fold(function() { qe(e, t) }, function(n) { e.dom().insertBefore(t.dom(), n.dom()) }) }, append: qe, appendAt: function(n, e, t) { $e.child(n, t).fold(function() { qe(n, e) }, function(n) { Ge(n, e) }) }, wrap: function(n, e) { Ge(n, e), qe(e, n) } }, Xe = function(e, n) { wn(n, function(n) { Ye.before(e, n) }) }, Ke = function(e, n) { wn(n, function(n) { Ye.append(e, n) }) }, Je = function(n) { var e = n.dom(); null !== e.parentNode && e.parentNode.removeChild(e) }, Qe = { empty: function(n) { n.dom().textContent = "", wn($e.children(n), function(n) { Je(n) }) }, remove: Je, unwrap: function(n) { var e = $e.children(n); 0 < e.length && Xe(n, e), Je(n) } }, Ze = function(n) { oe(n, re()); var e = n.components(); wn(e, Ze) }, nt = function(n) { var e = n.components(); wn(e, nt), oe(n, te()) }, et = function(n, e) { tt(n, e, Ye.append) }, tt = function(n, e, t) { n.getSystem().addToWorld(e), t(n.element(), e.element()), xe.inBody(n.element()) && nt(e), n.syncComponents() }, rt = function(n) { Ze(n), Qe.remove(n.element()), n.getSystem().removeFromWorld(n) }, ot = function(e) { var n = $e.parent(e.element()).bind(function(n) { return e.getSystem().getByDom(n).fold(B.none, B.some) }); rt(e), n.each(function(n) { n.syncComponents() }) }, it = function(t) { return { is: function(n) { return t === n }, isValue: d, isError: f, getOr: E(t), getOrThunk: E(t), getOrDie: E(t), or: function(n) { return it(t) }, orThunk: function(n) { return it(t) }, fold: function(n, e) { return e(t) }, map: function(n) { return it(n(t)) }, each: function(n) { n(t) }, bind: function(n) { return n(t) }, exists: function(n) { return n(t) }, forall: function(n) { return n(t) }, toOption: function() { return B.some(t) } } }, ut = function(t) { return { is: f, isValue: f, isError: d, getOr: h, getOrThunk: function(n) { return n() }, getOrDie: function() { return c(String(t))() }, or: function(n) { return n }, orThunk: function(n) { return n() }, fold: function(n, e) { return n(t) }, map: function(n) { return ut(t) }, each: k, bind: function(n) { return ut(t) }, exists: f, forall: d, toOption: B.none } }, at = { value: it, error: ut }, ct = function(u) { if (!p(u)) throw new Error("cases must be an array"); if (0 === u.length) throw new Error("there must be at least one case"); var a = [], t = {}; return wn(u, function(n, r) { var e = F(n); if (1 !== e.length) throw new Error("one and only one name per case"); var o = e[0], i = n[o]; if (t[o] !== undefined) throw new Error("duplicate key detected:" + o); if ("cata" === o) throw new Error("cannot have a case named cata (sorry)"); if (!p(i)) throw new Error("case arguments must be an array"); a.push(o), t[o] = function() { var n = arguments.length; if (n !== i.length) throw new Error("Wrong number of arguments to case " + o + ". Expected " + i.length + " (" + i + "), got " + n); for (var t = new Array(n), e = 0; e < t.length; e++) t[e] = arguments[e]; return { fold: function() { if (arguments.length !== u.length) throw new Error("Wrong number of arguments to fold. Expected " + u.length + ", got " + arguments.length); return arguments[r].apply(null, t) }, match: function(n) { var e = F(n); if (a.length !== e.length) throw new Error("Wrong number of arguments to match. Expected: " + a.join(",") + "\nActual: " + e.join(",")); if (!Rn(a, function(n) { return hn(e, n) })) throw new Error("Not all branches were specified when using match. Specified: " + e.join(", ") + "\nRequired: " + a.join(", ")); return n[o].apply(null, t) }, log: function(n) { console.log(n, { constructors: a, constructor: o, params: t }) } } } }), t }, st = ct([{ strict: [] }, { defaultedThunk: ["fallbackThunk"] }, { asOption: [] }, { asDefaultedOptionThunk: ["fallbackThunk"] }, { mergeWithThunk: ["baseThunk"] }]), ft = function(n) { return st.defaultedThunk(E(n)) }, lt = st.strict, dt = st.asOption, mt = st.defaultedThunk, gt = (st.asDefaultedOptionThunk, st.mergeWithThunk), vt = (ct([{ bothErrors: ["error1", "error2"] }, { firstError: ["error1", "value2"] }, { secondError: ["value1", "error2"] }, { bothValues: ["value1", "value2"] }]), function(n) { var e = [], t = []; return wn(n, function(n) { n.fold(function(n) { e.push(n) }, function(n) { t.push(n) }) }), { errors: e, values: t } }), pt = function(n) { return v(at.error, Dn)(n) }, ht = function(n, e) { var t, r, o = vt(n); return 0 < o.errors.length ? pt(o.errors) : (t = o.values, r = e, at.value(C.apply(undefined, [r].concat(t)))) }, bt = function(n) { var e = vt(n); return 0 < e.errors.length ? pt(e.errors) : at.value(e.values) }, yt = function(e) { return function(n) { return n.hasOwnProperty(e) ? B.from(n[e]) : B.none() } }, wt = function(n, e) { return yt(e)(n) }, xt = function(n, e) { var t = {}; return t[n] = e, t }, Tt = function(n, e) { return t = n, r = {}, wn(e, function(n) { t[n] !== undefined && t.hasOwnProperty(n) && (r[n] = t[n]) }), r; var t, r }, St = function(n, e) { return t = e, r = {}, V(n, function(n, e) { hn(t, e) || (r[e] = n) }), r; var t, r }, Ot = function(n) { return yt(n) }, Ct = function(n, e) { return t = n, r = e, function(n) { return yt(t)(n).getOr(r) }; var t, r }, kt = function(n, e) { return wt(n, e) }, Et = function(n, e) { return xt(n, e) }, Dt = function(n) { return e = {}, wn(n, function(n) { e[n.key] = n.value }), e; var e }, At = function(n, e) { return ht(n, e) }, Rt = function(n, e) { return r = e, (t = n).hasOwnProperty(r) && t[r] !== undefined && null !== t[r]; var t, r }, Mt = ct([{ setOf: ["validator", "valueType"] }, { arrOf: ["valueType"] }, { objOf: ["fields"] }, { itemOf: ["validator"] }, { choiceOf: ["key", "branches"] }, { thunk: ["description"] }, { func: ["args", "outputSchema"] }]), It = ct([{ field: ["name", "presence", "type"] }, { state: ["name"] }]), Nt = function() { return Ie.getOrDie("JSON") }, Bt = function(n, e, t) { return Nt().stringify(n, e, t) }, Ft = function(n) { return g(n) && 100 < F(n).length ? " removed due to size" : Bt(n, null, 2) }, Vt = function(n, e) { return at.error([{ path: n, getErrorInfo: e }]) }, Ht = ct([{ field: ["key", "okey", "presence", "prop"] }, { state: ["okey", "instantiator"] }]), zt = function(t, r, o) { return wt(r, o).fold(function() { return n = o, e = r, Vt(t, function() { return 'Could not find valid *strict* value for "' + n + '" in ' + Ft(e) }); var n, e }, at.value) }, jt = function(n, e, t) { var r = wt(n, e).fold(function() { return t(n) }, h); return at.value(r) }, Lt = function(o, a, n, c) { return n.fold(function(i, e, n, t) { var r = function(n) { return t.extract(o.concat([i]), c, n).map(function(n) { return xt(e, c(n)) }) }, u = function(n) { return n.fold(function() { var n = xt(e, c(B.none())); return at.value(n) }, function(n) { return t.extract(o.concat([i]), c, n).map(function(n) { return xt(e, c(B.some(n))) }) }) }; return n.fold(function() { return zt(o, a, i).bind(r) }, function(n) { return jt(a, i, n).bind(r) }, function() { return (n = a, e = i, at.value(wt(n, e))).bind(u); var n, e }, function(n) { return (e = a, t = i, r = n, o = wt(e, t).map(function(n) { return !0 === n ? r(e) : n }), at.value(o)).bind(u); var e, t, r, o }, function(n) { var e = n(a); return jt(a, i, E({})).map(function(n) { return C(e, n) }).bind(r) }) }, function(n, e) { var t = e(a); return at.value(xt(n, c(t))) }) }, Ut = function(r) { return { extract: function(t, n, e) { return r(e, n).fold(function(n) { return e = n, Vt(t, function() { return e }); var e }, at.value) }, toString: function() { return "val" }, toDsl: function() { return Mt.itemOf(r) } } }, Pt = function(n) { var c = _t(n), s = Tn(n, function(e, n) { return n.fold(function(n) { return C(e, Et(n, !0)) }, E(e)) }, {}); return { extract: function(n, e, t) { var r, o, i, u = y(t) ? [] : (o = F(r = t), xn(o, function(n) { return Rt(r, n) })), a = xn(u, function(n) { return !Rt(s, n) }); return 0 === a.length ? c.extract(n, e, t) : (i = a, Vt(n, function() { return "There are unsupported fields: [" + i.join(", ") + "] specified" })) }, toString: c.toString, toDsl: c.toDsl } }, _t = function(a) { return { extract: function(n, e, t) { return r = n, o = t, i = e, u = yn(a, function(n) { return Lt(r, o, n, i) }), ht(u, {}); var r, o, i, u }, toString: function() { return "obj{\n" + yn(a, function(n) { return n.fold(function(n, e, t, r) { return n + " -> " + r.toString() }, function(n, e) { return "state(" + n + ")" }) }).join("\n") + "}" }, toDsl: function() { return Mt.objOf(yn(a, function(n) { return n.fold(function(n, e, t, r) { return It.field(n, t, r) }, function(n, e) { return It.state(n) }) })) } } }, Wt = function(t, i) { var e = function(n, e) { return (o = Ut(t), { extract: function(t, r, n) { var e = yn(n, function(n, e) { return o.extract(t.concat(["[" + e + "]"]), r, n) }); return bt(e) }, toString: function() { return "array(" + o.toString() + ")" }, toDsl: function() { return Mt.arrOf(o) } }).extract(n, h, e); var o }; return { extract: function(t, r, o) { var n = F(o); return e(t, n).bind(function(n) { var e = yn(n, function(n) { return Ht.field(n, n, lt(), i) }); return _t(e).extract(t, r, o) }) }, toString: function() { return "setOf(" + i.toString() + ")" }, toDsl: function() { return Mt.setOf(t, i) } } }, $t = E(Ut(at.value)), Gt = Ht.state, qt = Ht.field, Yt = function(t, e, r, o, i) { return kt(o, i).fold(function() { return n = o, e = i, Vt(t, function() { return 'The chosen schema: "' + e + '" did not exist in branches: ' + Ft(n) }); var n, e }, function(n) { return _t(n).extract(t.concat(["branch: " + i]), e, r) }) }, Xt = function(o, i) { return { extract: function(e, t, r) { return kt(r, o).fold(function() { return n = o, Vt(e, function() { return 'Choice schema did not contain choice key: "' + n + '"' }); var n }, function(n) { return Yt(e, t, r, i, n) }) }, toString: function() { return "chooseOn(" + o + "). Possible values: " + F(i) }, toDsl: function() { return Mt.choiceOf(o, i) } } }, Kt = Ut(at.value), Jt = function(n, e, t, r) { return e.extract([n], t, r).fold(function(n) { return at.error({ input: r, errors: n }) }, at.value) }, Qt = function(n, e, t) { return Jt(n, e, E, t) }, Zt = function(n) { return n.fold(function(n) { throw new Error(tr(n)) }, h) }, nr = function(n, e, t) { return Zt(Jt(n, e, h, t)) }, er = function(n, e, t) { return Zt(Qt(n, e, t)) }, tr = function(n) { return "Errors: \n" + (e = n.errors, t = 10 < e.length ? e.slice(0, 10).concat([{ path: [], getErrorInfo: function() { return "... (only showing first ten failures)" } }]) : e, yn(t, function(n) { return "Failed path: (" + n.path.join(" > ") + ")\n" + n.getErrorInfo() })) + "\n\nInput object: " + Ft(n.input); var e, t }, rr = function(n, e) { return Xt(n, e) }, or = E(Kt), ir = (i = w, u = "function", Ut(function(n) { var e = typeof n; return i(n) ? at.value(n) : at.error("Expected type: " + u + " but got: " + e) })), ur = function(n) { return qt(n, n, lt(), $t()) }, ar = function(n, e) { return qt(n, n, lt(), e) }, cr = function(n) { return ar(n, ir) }, sr = function(n, e) { return qt(n, n, lt(), _t(e)) }, fr = function(n) { return qt(n, n, dt(), $t()) }, lr = function(n, e) { return qt(n, n, dt(), _t(e)) }, dr = function(n, e) { return qt(n, n, dt(), Pt(e)) }, mr = function(n, e) { return qt(n, n, ft(e), $t()) }, gr = function(n, e, t) { return qt(n, n, ft(e), t) }, vr = function(n, e) { return Gt(n, e) }, pr = function(n) { if (!Rt(n, "can") && !Rt(n, "abort") && !Rt(n, "run")) throw new Error("EventHandler defined by: " + Bt(n, null, 2) + " does not have can, abort, or run!"); return nr("Extracting event.handler", Pt([mr("can", E(!0)), mr("abort", E(!1)), mr("run", k)]), n) }, hr = function(t) { var e, r, o, i, n = (e = t, r = function(n) { return n.can }, function() { for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n]; return Sn(e, function(n, e) { return n && r(e).apply(undefined, t) }, !0) }), u = (o = t, i = function(n) { return n.abort }, function() { for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n]; return Sn(o, function(n, e) { return n || i(e).apply(undefined, t) }, !1) }); return pr({ can: n, abort: u, run: function() { for (var e = [], n = 0; n < arguments.length; n++) e[n] = arguments[n]; wn(t, function(n) { n.run.apply(undefined, e) }) } }) }, br = function(n) { return Dt(n) }, yr = function(n, e) { return { key: n, value: pr({ abort: e }) } }, wr = function(n, e) { return { key: n, value: pr({ run: e }) } }, xr = function(n, e, t) { return { key: n, value: pr({ run: function(n) { e.apply(undefined, [n].concat(t)) } }) } }, Tr = function(n) { return function(r) { return { key: n, value: pr({ run: function(n, e) { var t; t = e, ze(n.element(), t.event().target()) && r(n, e) } }) } } }, Sr = function(n, e, t) { var u, r, o = e.partUids()[t]; return r = o, wr(u = n, function(n, i) { n.getSystem().getByUid(r).each(function(n) { var e, t, r, o; t = (e = n).element(), r = u, o = i, e.getSystem().triggerEvent(r, t, o.event()) }) }) }, Or = function(n) { return wr(n, function(n, e) { e.cut() }) }, Cr = Tr(te()), kr = Tr(re()), Er = Tr(ne()), Dr = (a = Xn(), function(n) { return wr(a, n) }), Ar = function(n) { return yn(n, function(n) { return r = e = "/*", o = (t = n).length - e.length, "" !== r && (t.length < r.length || t.substr(o, o + r.length) !== r) ? n : n.substring(0, n.length - "/*".length); var e, t, r, o }) }, Rr = function(n, e) { var t = n.toString(), r = t.indexOf(")") + 1, o = t.indexOf("("), i = t.substring(o + 1, r - 1).split(/,\s*/); return n.toFunctionAnnotation = function() { return { name: e, parameters: Ar(i) } }, n }, Mr = De(["tag"], ["classes", "attributes", "styles", "value", "innerHtml", "domChildren", "defChildren"]), Ir = function(n) { return { tag: n.tag(), classes: n.classes().getOr([]), attributes: n.attributes().getOr({}), styles: n.styles().getOr({}), value: n.value().getOr(""), innerHtml: n.innerHtml().getOr(""), defChildren: n.defChildren().fold(function() { return "" }, function(n) { return Bt(n, null, 2) }), domChildren: n.domChildren().fold(function() { return "" }, function(n) { return 0 === n.length ? "0 children, but still specified" : String(n.length) }) } }, Nr = De([], ["classes", "attributes", "styles", "value", "innerHtml", "defChildren", "domChildren"]), Br = function(e, n, t) { return n.fold(function() { return t.fold(function() { return {} }, function(n) { return Et(e, n) }) }, function(n) { return t.fold(function() { return Et(e, n) }, function(n) { return Et(e, n) }) }) }, Fr = function(t, r, o) { return Er(function(n, e) { o(n, t, r) }) }, Vr = function(n, e, t, r, o, i) { var u, a, c = n, s = lr(e, [(u = "config", a = n, qt(u, u, dt(), a))]); return jr(c, s, e, t, r, o, i) }, Hr = function(o, i, u) { var n, e, t, r, a, c; return n = function(t) { for (var n = [], e = 1; e < arguments.length; e++) n[e - 1] = arguments[e]; var r = [t].concat(n); return t.config({ name: E(o) }).fold(function() { throw new Error("We could not find any behaviour configuration for: " + o + ". Using API: " + u) }, function(n) { var e = Array.prototype.slice.call(r, 1); return i.apply(undefined, [t, n.config, n.state].concat(e)) }) }, e = u, t = i.toString(), r = t.indexOf(")") + 1, a = t.indexOf("("), c = t.substring(a + 1, r - 1).split(/,\s*/), n.toFunctionAnnotation = function() { return { name: e, parameters: Ar(c.slice(0, 1).concat(c.slice(3))) } }, n }, zr = function(n) { return { key: n, value: undefined } }, jr = function(t, n, r, o, e, i, u) { var a = function(n) { return Rt(n, r) ? n[r]() : B.none() }, c = H(e, function(n, e) { return Hr(r, n, e) }), s = H(i, function(n, e) { return Rr(n, e) }), f = C(s, c, { revoke: l(zr, r), config: function(n) { var e = er(r + "-config", t, n); return { key: r, value: { config: e, me: f, configAsRaw: Z(function() { return nr(r + "-config", t, n) }), initialConfig: n, state: u } } }, schema: function() { return n }, exhibit: function(n, t) { return a(n).bind(function(e) { return kt(o, "exhibit").map(function(n) { return n(t, e.config, e.state) }) }).getOr(Nr({})) }, name: function() { return r }, handlers: function(n) { return a(n).bind(function(e) { return kt(o, "events").map(function(n) { return n(e.config, e.state) }) }).getOr({}) } }); return f }, Lr = function(n, e) { return Ur(n, e, { validate: w, label: "function" }) }, Ur = function(r, o, i) { if (0 === o.length) throw new Error("You must specify at least one required field."); return ke("required", o), Ee(o), function(e) { var t = F(e); Rn(o, function(n) { return hn(t, n) }) || Oe(o, t), r(o, t); var n = xn(o, function(n) { return !i.validate(e[n], n) }); return 0 < n.length && function(n, e) { throw new Error("All values need to be of type: " + e + ". Keys (" + Se(n).join(", ") + ") were not.") }(n, i.label), e } }, Pr = function(e, n) { var t = xn(n, function(n) { return !hn(e, n) }); 0 < t.length && Ce(t) }, _r = k, Wr = function(n) { return Lr(Pr, n) }, $r = { init: function() { return Gr({ readState: function() { return "No State required" } }) } }, Gr = function(n) { return Lr(_r, ["readState"])(n), n }, qr = function(n) { return Dt(n) }, Yr = Pt([ur("fields"), ur("name"), mr("active", {}), mr("apis", {}), mr("state", $r), mr("extra", {})]), Xr = function(n) { var e, t, r, o, i, u, a, c, s = nr("Creating behaviour: " + n.name, Yr, n); return e = s.fields, t = s.name, r = s.active, o = s.apis, i = s.extra, u = s.state, a = Pt(e), c = lr(t, [dr("config", e)]), jr(a, c, t, r, o, i, u) }, Kr = Pt([ur("branchKey"), ur("branches"), ur("name"), mr("active", {}), mr("apis", {}), mr("state", $r), mr("extra", {})]), Jr = E(undefined); function Qr(n, e, t) { var r = t || !1, o = function() { e(), r = !0 }, i = function() { n(), r = !1 }; return { on: o, off: i, toggle: function() { (r ? i : o)() }, isOn: function() { return r } } } var Zr = function(n, e, t) { if (!(b(t) || y(t) || x(t))) throw console.error("Invalid call to Attr.set. Key ", e, ":: Value ", t, ":: Element ", n), new Error("Attribute value was not simple"); n.setAttribute(e, t + "") }, no = function(n, e, t) { Zr(n.dom(), e, t) }, eo = function(n, e) { var t = n.dom().getAttribute(e); return null === t ? undefined : t }, to = function(n, e) { var t = n.dom(); return !(!t || !t.hasAttribute) && t.hasAttribute(e) }, ro = { clone: function(n) { return Sn(n.dom().attributes, function(n, e) { return n[e.name] = e.value, n }, {}) }, set: no, setAll: function(n, e) { var t = n.dom(); V(e, function(n, e) { Zr(t, e, n) }) }, get: eo, has: to, remove: function(n, e) { n.dom().removeAttribute(e) }, hasNone: function(n) { var e = n.dom().attributes; return e === undefined || null === e || 0 === e.length }, transfer: function(o, i, n) { be.isElement(o) && be.isElement(i) && wn(n, function(n) { var e, t, r; t = i, to(e = o, r = n) && !to(t, r) && no(t, r, eo(e, r)) }) } }, oo = function(n, e) { var t = ro.get(n, e); return t === undefined || "" === t ? [] : t.split(" ") }, io = oo, uo = function(n, e, t) { var r = oo(n, e).concat([t]); return ro.set(n, e, r.join(" ")), !0 }, ao = function(n, e, t) { var r = xn(oo(n, e), function(n) { return n !== t }); return 0 < r.length ? ro.set(n, e, r.join(" ")) : ro.remove(n, e), !1 }, co = function(n) { return io(n, "class") }, so = function(n, e) { return uo(n, "class", e) }, fo = function(n, e) { return ao(n, "class", e) }, lo = co, mo = so, go = fo, vo = function(n, e) { return hn(co(n), e) ? fo(n, e) : so(n, e) }, po = function(n) { return n.dom().classList !== undefined }, ho = function(n, e) { return po(n) && n.dom().classList.contains(e) }, bo = { add: function(n, e) { po(n) ? n.dom().classList.add(e) : mo(n, e) }, remove: function(n, e) { var t; po(n) ? n.dom().classList.remove(e) : go(n, e), 0 === (po(t = n) ? t.dom().classList : lo(t)).length && ro.remove(t, "class") }, toggle: function(n, e) { return po(n) ? n.dom().classList.toggle(e) : vo(n, e) }, toggler: function(n, e) { var t = po(n), r = n.dom().classList; return Qr(function() { t ? r.remove(e) : go(n, e) }, function() { t ? r.add(e) : mo(n, e) }, ho(n, e)) }, has: ho }, yo = function(n, e, t) { bo.remove(n, t), bo.add(n, e) }, wo = Object.freeze({ toAlpha: function(n, e, t) { yo(n.element(), e.alpha(), e.omega()) }, toOmega: function(n, e, t) { yo(n.element(), e.omega(), e.alpha()) }, isAlpha: function(n, e, t) { return bo.has(n.element(), e.alpha()) }, isOmega: function(n, e, t) { return bo.has(n.element(), e.omega()) }, clear: function(n, e, t) { bo.remove(n.element(), e.alpha()), bo.remove(n.element(), e.omega()) } }), xo = [ur("alpha"), ur("omega")], To = Xr({ fields: xo, name: "swapping", apis: wo }), So = function(n) { var e = n, t = function() { return e }; return { get: t, set: function(n) { e = n }, clone: function() { return So(t()) } } }; function Oo(n, e, t, r, o) { return n(t, r) ? B.some(t) : w(o) && o(t) ? B.none() : e(t, r, o) } var Co = function(n, e, t) { for (var r = n.dom(), o = w(t) ? t : E(!1); r.parentNode;) { r = r.parentNode; var i = fe.fromDom(r); if (e(i)) return B.some(i); if (o(i)) break } return B.none() }, ko = function(n, e) { return On(n.dom().childNodes, v(e, fe.fromDom)).map(fe.fromDom) }, Eo = function(n, r) { var o = function(n) { for (var e = 0; e < n.childNodes.length; e++) { if (r(fe.fromDom(n.childNodes[e]))) return B.some(fe.fromDom(n.childNodes[e])); var t = o(n.childNodes[e]); if (t.isSome()) return t } return B.none() }; return o(n.dom()) }, Do = { first: function(n) { return Eo(xe.body(), n) }, ancestor: Co, closest: function(n, e, t) { return Oo(function(n) { return e(n) }, Co, n, e, t) }, sibling: function(e, t) { var n = e.dom(); return n.parentNode ? ko(fe.fromDom(n.parentNode), function(n) { return !ze(e, n) && t(n) }) : B.none() }, child: ko, descendant: Eo }, Ao = function(n) { n.dom().focus() }, Ro = function(n) { var e = n !== undefined ? n.dom() : document; return B.from(e.activeElement).map(fe.fromDom) }, Mo = function(n) { var e = $e.owner(n).dom(); return n.dom() === e.activeElement }, Io = Ao, No = function(n) { n.dom().blur() }, Bo = Ro, Fo = function(e) { return Ro($e.owner(e)).filter(function(n) { return e.dom().contains(n.dom()) }) }, Vo = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"), Ho = tinymce.util.Tools.resolve("tinymce.ThemeManager"), zo = function(n) { var e = document.createElement("a"); e.target = "_blank", e.href = n.href, e.rel = "noreferrer noopener"; var t = document.createEvent("MouseEvents"); t.initMouseEvent("click", !0, !0, window, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), document.body.appendChild(e), e.dispatchEvent(t), document.body.removeChild(e) }, jo = { formatChanged: E("formatChanged"), orientationChanged: E("orientationChanged"), dropupDismissed: E("dropupDismissed") }, Lo = function(n, e) { var t = (e || document).createElement("div"); return t.innerHTML = n, $e.children(fe.fromDom(t)) }, Uo = function(n) { return n.dom().innerHTML }, Po = Uo, _o = function(n, e) { var t = $e.owner(n).dom(), r = fe.fromDom(t.createDocumentFragment()), o = Lo(e, t); Ke(r, o), Qe.empty(n), Ye.append(n, r) }, Wo = function(n) { var e = fe.fromTag("div"), t = fe.fromDom(n.dom().cloneNode(!0)); return Ye.append(e, t), Uo(e) }, $o = function(n, e) { return fe.fromDom(n.dom().cloneNode(e)) }, Go = function(n) { return $o(n, !1) }, qo = function(n) { return e = Go(n), Wo(e); var e }, Yo = Object.freeze({ events: function(a) { return br([wr(Yn(), function(o, i) { var n, e, u = a.channels(), t = F(u), r = (n = t, (e = i).universal() ? n : xn(n, function(n) { return hn(e.channels(), n) })); wn(r, function(n) { var e = u[n](), t = e.schema(), r = er("channel[" + n + "] data\nReceiver: " + qo(o.element()), t, i.data()); e.onReceive()(o, r) }) })]) } }), Xo = function(n) { for (var e = [], t = function(n) { e.push(n) }, r = 0; r < n.length; r++) n[r].each(t); return e }, Ko = function(n, e) { for (var t = 0; t < n.length; t++) { var r = e(n[t], t); if (r.isSome()) return r } return B.none() }, Jo = "unknown", Qo = [], Zo = ["alloy/data/Fields", "alloy/debugging/Debugging"], ni = { logEventCut: k, logEventStopped: k, logNoParent: k, logEventNoHandlers: k, logEventResponse: k, write: k }, ei = function(n, e, t) { var r, o = "*" === Qo || hn(Qo, n) ? (r = [], { logEventCut: function(n, e, t) { r.push({ outcome: "cut", target: e, purpose: t }) }, logEventStopped: function(n, e, t) { r.push({ outcome: "stopped", target: e, purpose: t }) }, logNoParent: function(n, e, t) { r.push({ outcome: "no-parent", target: e, purpose: t }) }, logEventNoHandlers: function(n, e) { r.push({ outcome: "no-handlers-left", target: e }) }, logEventResponse: function(n, e, t) { r.push({ outcome: "response", purpose: t, target: e }) }, write: function() { hn(["mousemove", "mouseover", "mouseout", ne()], n) || console.log(n, { event: n, target: e.dom(), sequence: yn(r, function(n) { return hn(["cut", "stopped", "response"], n.outcome) ? "{" + n.purpose + "} " + n.outcome + " at (" + qo(n.target) + ")" : n.outcome }) }) } }) : ni, i = t(o); return o.write(), i }, ti = E([ur("menu"), ur("selectedMenu")]), ri = E([ur("item"), ur("selectedItem")]), oi = (E(Pt(ri().concat(ti()))), E(Pt(ri()))), ii = sr("initSize", [ur("numColumns"), ur("numRows")]), ui = function(n, e, t) { var r; return function() { var n = new Error; if (n.stack !== undefined) { var e = n.stack.split("\n"); On(e, function(e) { return 0 < e.indexOf("alloy") && !bn(Zo, function(n) { return -1 < e.indexOf(n) }) }).getOr(Jo) } }(), qt(e, e, t, (r = function(t) { return at.value(function() { for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e]; return t.apply(undefined, n) }) }, Ut(function(n) { return r(n) }))) }, ai = function(n) { return ui(0, n, ft(k)) }, ci = function(n) { return ui(0, n, ft(B.none)) }, si = function(n) { return ui(0, n, lt()) }, fi = function(n) { return ui(0, n, lt()) }, li = function(n, e) { return vr(n, E(e)) }, di = function(n) { return vr(n, h) }, mi = E(ii), gi = [ar("channels", Wt(at.value, Pt([si("onReceive"), mr("schema", or())])))], vi = Xr({ fields: gi, name: "receiving", active: Yo }), pi = function(n, e) { var t = wi(n, e), r = e.aria(); r.update()(n, r, t) }, hi = function(n, e, t) { bo.toggle(n.element(), e.toggleClass()), pi(n, e) }, bi = function(n, e, t) { bo.add(n.element(), e.toggleClass()), pi(n, e) }, yi = function(n, e, t) { bo.remove(n.element(), e.toggleClass()), pi(n, e) }, wi = function(n, e) { return bo.has(n.element(), e.toggleClass()) }, xi = function(n, e, t) { (e.selected() ? bi : yi)(n, e, t) }, Ti = Object.freeze({ onLoad: xi, toggle: hi, isOn: wi, on: bi, off: yi }), Si = Object.freeze({ exhibit: function(n, e, t) { return Nr({}) }, events: function(n, e) { var t, r, o, i = (t = n, r = e, o = hi, Dr(function(n) { o(n, t, r) })), u = Fr(n, e, xi); return br(Dn([n.toggleOnExecute() ? [i] : [], [u] ])) } }), Oi = function(n, e, t) { ro.set(n.element(), "aria-expanded", t) }, Ci = [mr("selected", !1), ur("toggleClass"), mr("toggleOnExecute", !0), gr("aria", { mode: "none" }, rr("mode", { pressed: [mr("syncWithExpanded", !1), li("update", function(n, e, t) { ro.set(n.element(), "aria-pressed", t), e.syncWithExpanded() && Oi(n, e, t) })], checked: [li("update", function(n, e, t) { ro.set(n.element(), "aria-checked", t) })], expanded: [li("update", Oi)], selected: [li("update", function(n, e, t) { ro.set(n.element(), "aria-selected", t) })], none: [li("update", k)] }))], ki = Xr({ fields: Ci, name: "toggling", active: Si, apis: Ti }), Ei = function(t, r) { return vi.config({ channels: Et(jo.formatChanged(), { onReceive: function(n, e) { e.command === t && r(n, e.state) } }) }) }, Di = function(n) { return vi.config({ channels: Et(jo.orientationChanged(), { onReceive: n }) }) }, Ai = function(n, e) { return { key: n, value: { onReceive: e } } }, Ri = "tinymce-mobile", Mi = { resolve: function(n) { return Ri + "-" + n }, prefix: E(Ri) }, Ii = function(n, e) { e.ignore() || (Io(n.element()), e.onFocus()(n)) }, Ni = Object.freeze({ focus: Ii, blur: function(n, e) { e.ignore() || No(n.element()) }, isFocused: function(n) { return Mo(n.element()) } }), Bi = Object.freeze({ exhibit: function(n, e) { return e.ignore() ? Nr({}) : Nr({ attributes: { tabindex: "-1" } }) }, events: function(t) { return br([wr(Gn(), function(n, e) { Ii(n, t), e.stop() })]) } }), Fi = [ai("onFocus"), mr("ignore", !1)], Vi = Xr({ fields: Fi, name: "focusing", active: Bi, apis: Ni }), Hi = function(n) { return n.style !== undefined }, zi = function(n, e, t) { if (!b(t)) throw console.error("Invalid call to CSS.set. Property ", e, ":: Value ", t, ":: Element ", n), new Error("CSS value must be a string: " + t); Hi(n) && n.style.setProperty(e, t) }, ji = function(n, e) { Hi(n) && n.style.removeProperty(e) }, Li = function(n, e, t) { var r = n.dom(); zi(r, e, t) }, Ui = function(n, e) { return Hi(n) ? n.style.getPropertyValue(e) : "" }, Pi = function(n, e) { var t = n.dom(), r = Ui(t, e); return B.from(r).filter(function(n) { return 0 < n.length }) }, _i = { copy: function(n, e) { var t = n.dom(), r = e.dom(); Hi(t) && Hi(r) && (r.style.cssText = t.style.cssText) }, set: Li, preserve: function(n, e) { var t = ro.get(n, "style"), r = e(n); return (t === undefined ? ro.remove : ro.set)(n, "style", t), r }, setAll: function(n, e) { var t = n.dom(); V(e, function(n, e) { zi(t, e, n) }) }, setOptions: function(n, e) { var t = n.dom(); V(e, function(n, e) { n.fold(function() { ji(t, e) }, function(n) { zi(t, e, n) }) }) }, remove: function(n, e) { var t = n.dom(); ji(t, e), ro.has(n, "style") && "" === ro.get(n, "style").replace(/^\s+|\s+$/g, "") && ro.remove(n, "style") }, get: function(n, e) { var t = n.dom(), r = window.getComputedStyle(t).getPropertyValue(e), o = "" !== r || xe.inBody(n) ? r : Ui(t, e); return null === o ? undefined : o }, getRaw: Pi, getAllRaw: function(n) { var e = {}, t = n.dom(); if (Hi(t)) for (var r = 0; r < t.style.length; r++) { var o = t.style.item(r); e[o] = t.style[o] } return e }, isValidValue: function(n, e, t) { var r = fe.fromTag(n); return Li(r, e, t), Pi(r, e).isSome() }, reflow: function(n) { return n.dom().offsetWidth }, transfer: function(r, o, n) { be.isElement(r) && be.isElement(o) && wn(n, function(n) { var e, t; e = o, Pi(r, t = n).each(function(n) { Pi(e, t).isNone() && Li(e, t, n) }) }) } }; function Wi(r, o) { var n = function(n) { var e = o(n); if (e <= 0 || null === e) { var t = _i.get(n, r); return parseFloat(t) || 0 } return e }, i = function(o, n) { return Sn(n, function(n, e) { var t = _i.get(o, e), r = t === undefined ? 0 : parseInt(t, 10); return isNaN(r) ? n : n + r }, 0) }; return { set: function(n, e) { if (!x(e) && !e.match(/^[0-9]+$/)) throw r + ".set accepts only positive integer values. Value was " + e; var t = n.dom(); Hi(t) && (t.style[r] = e + "px") }, get: n, getOuter: n, aggregate: i, max: function(n, e, t) { var r = i(n, t); return r < e ? e - r : 0 } } } var $i, Gi, qi = Wi("height", function(n) { var e = n.dom(); return xe.inBody(n) ? e.getBoundingClientRect().height : e.offsetHeight }), Yi = function(n) { return qi.get(n) }, Xi = function(n, e, t) { return xn($e.parents(n, t), e) }, Ki = function(n, e) { return xn($e.siblings(n), e) }, Ji = function(n) { return Ve.all(n) }, Qi = function(n, e, t) { return Xi(n, function(n) { return Ve.is(n, e) }, t) }, Zi = function(n, e) { return Ki(n, function(n) { return Ve.is(n, e) }) }, nu = function(n, e) { return Ve.all(e, n) }, eu = function(n, e, t) { return Do.ancestor(n, function(n) { return Ve.is(n, e) }, t) }, tu = function(n) { return Ve.one(n) }, ru = eu, ou = function(n, e) { return Ve.one(e, n) }, iu = function(n, e, t) { return Oo(Ve.is, eu, n, e, t) }, uu = function(n, e, t) { var r = In(n.slice(0, e)), o = In(n.slice(e + 1)); return On(r.concat(o), t) }, au = function(n, e, t) { var r = In(n.slice(0, e)); return On(r, t) }, cu = function(n, e, t) { var r = n.slice(0, e), o = n.slice(e + 1); return On(o.concat(r), t) }, su = function(n, e, t) { var r = n.slice(e + 1); return On(r, t) }, fu = function(t) { return function(n) { var e = n.raw(); return hn(t, e.which) } }, lu = function(n) { return function(e) { return Rn(n, function(n) { return n(e) }) } }, du = function(n) { return !0 === n.raw().shiftKey }, mu = function(n) { return !0 === n.raw().ctrlKey }, gu = T(du), vu = function(n, e) { return { matches: n, classification: e } }, pu = function(n, e, t, r) { var o = n + e; return r < o ? t : o < t ? r : o }, hu = function(n, e, t) { return n <= e ? e : t <= n ? t : n }, bu = function(e, t, n) { var r = nu(e.element(), "." + t.highlightClass()); wn(r, function(n) { bo.remove(n, t.highlightClass()), e.getSystem().getByDom(n).each(function(n) { t.onDehighlight()(e, n) }) }) }, yu = function(n, e, t, r) { var o = wu(n, e, t, r); bu(n, e), bo.add(r.element(), e.highlightClass()), o || e.onHighlight()(n, r) }, wu = function(n, e, t, r) { return bo.has(r.element(), e.highlightClass()) }, xu = function(n, e, t, r) { var o = nu(n.element(), "." + e.itemClass()); return B.from(o[r]).fold(function() { return at.error("No element found with index " + r) }, n.getSystem().getByDom) }, Tu = function(e, n, t) { return ou(e.element(), "." + n.itemClass()).bind(function(n) { return e.getSystem().getByDom(n).toOption() }) }, Su = function(e, n, t) { var r = nu(e.element(), "." + n.itemClass()); return (0 < r.length ? B.some(r[r.length - 1]) : B.none()).bind(function(n) { return e.getSystem().getByDom(n).toOption() }) }, Ou = function(t, e, n, r) { var o = nu(t.element(), "." + e.itemClass()); return Cn(o, function(n) { return bo.has(n, e.highlightClass()) }).bind(function(n) { var e = pu(n, r, 0, o.length - 1); return t.getSystem().getByDom(o[e]).toOption() }) }, Cu = Object.freeze({ dehighlightAll: bu, dehighlight: function(n, e, t, r) { var o = wu(n, e, t, r); bo.remove(r.element(), e.highlightClass()), o && e.onDehighlight()(n, r) }, highlight: yu, highlightFirst: function(e, t, r) { Tu(e, t, r).each(function(n) { yu(e, t, r, n) }) }, highlightLast: function(e, t, r) { Su(e, t, r).each(function(n) { yu(e, t, r, n) }) }, highlightAt: function(e, t, r, n) { xu(e, t, r, n).fold(function(n) { throw new Error(n) }, function(n) { yu(e, t, r, n) }) }, highlightBy: function(e, t, r, n) { var o = nu(e.element(), "." + t.itemClass()), i = Xo(yn(o, function(n) { return e.getSystem().getByDom(n).toOption() })); On(i, n).each(function(n) { yu(e, t, r, n) }) }, isHighlighted: wu, getHighlighted: function(e, n, t) { return ou(e.element(), "." + n.highlightClass()).bind(function(n) { return e.getSystem().getByDom(n).toOption() }) }, getFirst: Tu, getLast: Su, getPrevious: function(n, e, t) { return Ou(n, e, 0, -1) }, getNext: function(n, e, t) { return Ou(n, e, 0, 1) } }), ku = [ur("highlightClass"), ur("itemClass"), ai("onHighlight"), ai("onDehighlight")], Eu = Xr({ fields: ku, name: "highlighting", apis: Cu }), Du = function() { return { get: function(n) { return Fo(n.element()) }, set: function(n, e) { n.getSystem().triggerFocus(e, n.element()) } } }, Au = function(n, e, a, t, r, i) { var u = function(e, t, r, o) { var n, i, u = a(e, t, r, o); return (n = u, i = t.event(), On(n, function(n) { return n.matches(i) }).map(function(n) { return n.classification })).bind(function(n) { return n(e, t, r, o) }) }, o = { schema: function() { return n.concat([mr("focusManager", Du()), li("handler", o), li("state", e)]) }, processKey: u, toEvents: function(r, o) { var n = t(r, o), e = br(i.map(function(t) { return wr(Gn(), function(n, e) { t(n, r, o, e), e.stop() }) }).toArray().concat([wr(q(), function(n, e) { u(n, e, r, o).each(function(n) { e.stop() }) })])); return C(n, e) }, toApis: r }; return o }, Ru = function(n) { var e = [fr("onEscape"), fr("onEnter"), mr("selector", '[data-alloy-tabstop="true"]'), mr("firstTabstop", 0), mr("useTabstopAt", E(!0)), fr("visibilitySelector")].concat([n]), u = function(n, e) { var t = n.visibilitySelector().bind(function(n) { return iu(e, n) }).getOr(e); return 0 < Yi(t) }, a = function(e, n, t, r, o) { return o(n, t, function(n) { return u(e = r, t = n) && e.useTabstopAt()(t); var e, t }).fold(function() { return r.cyclic() ? B.some(!0) : B.none() }, function(n) { return r.focusManager().set(e, n), B.some(!0) }) }, i = function(e, n, t, r) { var o, i, u = nu(e.element(), t.selector()); return (o = e, i = t, i.focusManager().get(o).bind(function(n) { return iu(n, i.selector()) })).bind(function(n) { return Cn(u, l(ze, n)).bind(function(n) { return a(e, u, n, t, r) }) }) }, t = E([vu(lu([du, fu([9])]), function(n, e, t, r) { var o = t.cyclic() ? uu : au; return i(n, 0, t, o) }), vu(fu([9]), function(n, e, t, r) { var o = t.cyclic() ? cu : su; return i(n, 0, t, o) }), vu(fu([27]), function(e, t, n, r) { return n.onEscape().bind(function(n) { return n(e, t) }) }), vu(lu([gu, fu([13])]), function(e, t, n, r) { return n.onEnter().bind(function(n) { return n(e, t) }) })]), r = E({}), o = E({}); return Au(e, $r.init, t, r, o, B.some(function(e, t) { var n, r, o, i; (n = e, r = t, o = nu(n.element(), r.selector()), i = xn(o, function(n) { return u(r, n) }), B.from(i[r.firstTabstop()])).each(function(n) { t.focusManager().set(e, n) }) })) }, Mu = Ru(vr("cyclic", E(!1))), Iu = Ru(vr("cyclic", E(!0))), Nu = function(n) { return "input" === be.name(n) && "radio" !== ro.get(n, "type") || "textarea" === be.name(n) }, Bu = function(n, e, t) { return Nu(t) && fu([32])(e.event()) ? B.none() : (ae(n, t, Xn()), B.some(!0)) }, Fu = [mr("execute", Bu), mr("useSpace", !1), mr("useEnter", !0), mr("useControlEnter", !1), mr("useDown", !1)], Vu = function(n, e, t) { return t.execute()(n, e, n.element()) }, Hu = E({}), zu = E({}), ju = Au(Fu, $r.init, function(n, e, t, r) { var o = t.useSpace() && !Nu(n.element()) ? [32] : [], i = t.useEnter() ? [13] : [], u = t.useDown() ? [40] : [], a = o.concat(i).concat(u); return [vu(fu(a), Vu)].concat(t.useControlEnter() ? [vu(lu([mu, fu([13])]), Vu)] : []) }, Hu, zu, B.none()), Lu = function(n) { var t = So(B.none()); return Gr({ readState: E({}), setGridSize: function(n, e) { t.set(B.some({ numRows: E(n), numColumns: E(e) })) }, getNumRows: function() { return t.get().map(function(n) { return n.numRows() }) }, getNumColumns: function() { return t.get().map(function(n) { return n.numColumns() }) } }) }, Uu = Object.freeze({ flatgrid: Lu, init: function(n) { return n.state()(n) } }), Pu = function(n) { return "rtl" === _i.get(n, "direction") ? "rtl" : "ltr" }, _u = function(e, t) { return function(n) { return "rtl" === Pu(n) ? t : e } }, Wu = function(i) { return function(n, e, t, r) { var o = i(n.element()); return Yu(o, n, e, t, r) } }, $u = function(n, e) { var t = _u(n, e); return Wu(t) }, Gu = function(n, e) { var t = _u(e, n); return Wu(t) }, qu = function(o) { return function(n, e, t, r) { return Yu(o, n, e, t, r) } }, Yu = function(e, t, n, r, o) { return r.focusManager().get(t).bind(function(n) { return e(t.element(), n, r, o) }).map(function(n) { return r.focusManager().set(t, n), !0 }) }, Xu = qu, Ku = qu, Ju = qu, Qu = function(n) { var e, t = n.dom(); return !((e = t).offsetWidth <= 0 && e.offsetHeight <= 0) }, Zu = De(["index", "candidates"], []), na = function(n, e, t) { return ea(n, e, t, Qu) }, ea = function(n, e, t, r) { var o, i = l(ze, e), u = nu(n, t), a = xn(u, Qu); return Cn(o = a, i).map(function(n) { return Zu({ index: n, candidates: o }) }) }, ta = function(n, e) { return Cn(n, function(n) { return ze(e, n) }) }, ra = function(t, n, r, e) { return e(Math.floor(n / r), n % r).bind(function(n) { var e = n.row() * r + n.column(); return 0 <= e && e < t.length ? B.some(t[e]) : B.none() }) }, oa = function(o, n, i, u, a) { return ra(o, n, u, function(n, e) { var t = n === i - 1 ? o.length - n * u : u, r = pu(e, a, 0, t - 1); return B.some({ row: E(n), column: E(r) }) }) }, ia = function(i, n, u, a, c) { return ra(i, n, a, function(n, e) { var t = pu(n, c, 0, u - 1), r = t === u - 1 ? i.length - t * a : a, o = hu(e, 0, r - 1); return B.some({ row: E(t), column: E(o) }) }) }, ua = [ur("selector"), mr("execute", Bu), ci("onEscape"), mr("captureTab", !1), mi()], aa = function(o) { return function(n, e, t, r) { return na(n, e, t.selector()).bind(function(n) { return o(n.candidates(), n.index(), r.getNumRows().getOr(t.initSize().numRows()), r.getNumColumns().getOr(t.initSize().numColumns())) }) } }, ca = function(n, e, t, r) { return t.captureTab() ? B.some(!0) : B.none() }, sa = aa(function(n, e, t, r) { return oa(n, e, t, r, -1) }), fa = aa(function(n, e, t, r) { return oa(n, e, t, r, 1) }), la = aa(function(n, e, t, r) { return ia(n, e, t, r, -1) }), da = aa(function(n, e, t, r) { return ia(n, e, t, r, 1) }), ma = E([vu(fu([37]), $u(sa, fa)), vu(fu([39]), Gu(sa, fa)), vu(fu([38]), Xu(la)), vu(fu([40]), Ku(da)), vu(lu([du, fu([9])]), ca), vu(lu([gu, fu([9])]), ca), vu(fu([27]), function(n, e, t, r) { return t.onEscape()(n, e) }), vu(fu([32].concat([13])), function(e, t, r, n) { return (o = e, i = r, i.focusManager().get(o).bind(function(n) { return iu(n, i.selector()) })).bind(function(n) { return r.execute()(e, t, n) }); var o, i })]), ga = E({}), va = Au(ua, Lu, ma, ga, {}, B.some(function(e, t, n) { ou(e.element(), t.selector()).each(function(n) { t.focusManager().set(e, n) }) })), pa = function(n, e, t, o) { return na(n, t, e).bind(function(n) { var e = n.index(), t = n.candidates(), r = pu(e, o, 0, t.length - 1); return B.from(t[r]) }) }, ha = [ur("selector"), mr("getInitial", B.none), mr("execute", Bu), mr("executeOnMove", !1), mr("allowVertical", !0)], ba = function(e, t, r) { return (n = e, o = r, o.focusManager().get(n).bind(function(n) { return iu(n, o.selector()) })).bind(function(n) { return r.execute()(e, t, n) }); var n, o }, ya = function(n, e, t) { return pa(n, t.selector(), e, -1) }, wa = function(n, e, t) { return pa(n, t.selector(), e, 1) }, xa = function(r) { return function(n, e, t) { return r(n, e, t).bind(function() { return t.executeOnMove() ? ba(n, e, t) : B.some(!0) }) } }, Ta = E({}), Sa = E({}), Oa = Au(ha, $r.init, function(n, e, t, r) { var o = [37].concat(t.allowVertical() ? [38] : []), i = [39].concat(t.allowVertical() ? [40] : []); return [vu(fu(o), xa($u(ya, wa))), vu(fu(i), xa(Gu(ya, wa))), vu(fu([13]), ba), vu(fu([32]), ba)] }, Ta, Sa, B.some(function(e, t) { t.getInitial()(e).or(ou(e.element(), t.selector())).each(function(n) { t.focusManager().set(e, n) }) })), Ca = De(["rowIndex", "columnIndex", "cell"], []), ka = function(n, e, t) { return B.from(n[e]).bind(function(n) { return B.from(n[t]).map(function(n) { return Ca({ rowIndex: e, columnIndex: t, cell: n }) }) }) }, Ea = function(n, e, t, r) { var o = n[e].length, i = pu(t, r, 0, o - 1); return ka(n, e, i) }, Da = function(n, e, t, r) { var o = pu(t, r, 0, n.length - 1), i = n[o].length, u = hu(e, 0, i - 1); return ka(n, o, u) }, Aa = function(n, e, t, r) { var o = n[e].length, i = hu(t + r, 0, o - 1); return ka(n, e, i) }, Ra = function(n, e, t, r) { var o = hu(t + r, 0, n.length - 1), i = n[o].length, u = hu(e, 0, i - 1); return ka(n, o, u) }, Ma = [sr("selectors", [ur("row"), ur("cell")]), mr("cycles", !0), mr("previousSelector", B.none), mr("execute", Bu)], Ia = function(n, e) { return function(t, r, i) { var u = i.cycles() ? n : e; return iu(r, i.selectors().row()).bind(function(n) { var e = nu(n, i.selectors().cell()); return ta(e, r).bind(function(r) { var o = nu(t, i.selectors().row()); return ta(o, n).bind(function(n) { var e, t = (e = i, yn(o, function(n) { return nu(n, e.selectors().cell()) })); return u(t, n, r).map(function(n) { return n.cell() }) }) }) }) } }, Na = Ia(function(n, e, t) { return Ea(n, e, t, -1) }, function(n, e, t) { return Aa(n, e, t, -1) }), Ba = Ia(function(n, e, t) { return Ea(n, e, t, 1) }, function(n, e, t) { return Aa(n, e, t, 1) }), Fa = Ia(function(n, e, t) { return Da(n, t, e, -1) }, function(n, e, t) { return Ra(n, t, e, -1) }), Va = Ia(function(n, e, t) { return Da(n, t, e, 1) }, function(n, e, t) { return Ra(n, t, e, 1) }), Ha = E([vu(fu([37]), $u(Na, Ba)), vu(fu([39]), Gu(Na, Ba)), vu(fu([38]), Xu(Fa)), vu(fu([40]), Ku(Va)), vu(fu([32].concat([13])), function(e, t, r) { return Fo(e.element()).bind(function(n) { return r.execute()(e, t, n) }) })]), za = E({}), ja = E({}), La = Au(Ma, $r.init, Ha, za, ja, B.some(function(e, t) { t.previousSelector()(e).orThunk(function() { var n = t.selectors(); return ou(e.element(), n.cell()) }).each(function(n) { t.focusManager().set(e, n) }) })), Ua = [ur("selector"), mr("execute", Bu), mr("moveOnTab", !1)], Pa = function(e, t, r) { return r.focusManager().get(e).bind(function(n) { return r.execute()(e, t, n) }) }, _a = function(n, e, t) { return pa(n, t.selector(), e, -1) }, Wa = function(n, e, t) { return pa(n, t.selector(), e, 1) }, $a = E([vu(fu([38]), Ju(_a)), vu(fu([40]), Ju(Wa)), vu(lu([du, fu([9])]), function(n, e, t) { return t.moveOnTab() ? Ju(_a)(n, e, t) : B.none() }), vu(lu([gu, fu([9])]), function(n, e, t) { return t.moveOnTab() ? Ju(Wa)(n, e, t) : B.none() }), vu(fu([13]), Pa), vu(fu([32]), Pa)]), Ga = E({}), qa = E({}), Ya = Au(Ua, $r.init, $a, Ga, qa, B.some(function(e, t) { ou(e.element(), t.selector()).each(function(n) { t.focusManager().set(e, n) }) })), Xa = [ci("onSpace"), ci("onEnter"), ci("onShiftEnter"), ci("onLeft"), ci("onRight"), ci("onTab"), ci("onShiftTab"), ci("onUp"), ci("onDown"), ci("onEscape"), fr("focusIn")], Ka = Au(Xa, $r.init, function(n, e, t) { return [vu(fu([32]), t.onSpace()), vu(lu([gu, fu([13])]), t.onEnter()), vu(lu([du, fu([13])]), t.onShiftEnter()), vu(lu([du, fu([9])]), t.onShiftTab()), vu(lu([gu, fu([9])]), t.onTab()), vu(fu([38]), t.onUp()), vu(fu([40]), t.onDown()), vu(fu([37]), t.onLeft()), vu(fu([39]), t.onRight()), vu(fu([32]), t.onSpace()), vu(fu([27]), t.onEscape())] }, function() { return {} }, function() { return {} }, B.some(function(e, t) { return t.focusIn().bind(function(n) { return n(e, t) }) })), Ja = Mu.schema(), Qa = Iu.schema(), Za = Oa.schema(), nc = va.schema(), ec = La.schema(), tc = ju.schema(), rc = Ya.schema(), oc = Ka.schema(), ic = Object.freeze({ acyclic: Ja, cyclic: Qa, flow: Za, flatgrid: nc, matrix: ec, execution: tc, menu: rc, special: oc }), uc = (Gi = nr("Creating behaviour: " + ($i = { branchKey: "mode", branches: ic, name: "keying", active: { events: function(n, e) { return n.handler().toEvents(n, e) } }, apis: { focusIn: function(n) { n.getSystem().triggerFocus(n.element(), n.element()) }, setGridSize: function(n, e, t, r, o) { Rt(t, "setGridSize") ? t.setGridSize(r, o) : console.error("Layout does not support setGridSize") } }, state: Uu }).name, Kr, $i), Vr(rr(Gi.branchKey, Gi.branches), Gi.name, Gi.active, Gi.apis, Gi.extra, Gi.state)), ac = function(r, n) { return e = r, t = {}, o = yn(n, function(n) { return e = n.name(), t = "Cannot configure " + n.name() + " for " + r, qt(e, e, dt(), Ut(function(n) { return at.error("The field: " + e + " is forbidden. " + t) })); var e, t }).concat([vr("dump", h)]), qt(e, e, ft(t), _t(o)); var e, t, o }, cc = function(n) { return n.dump() }, sc = "placeholder", fc = ct([{ single: ["required", "valueThunk"] }, { multiple: ["required", "valueThunks"] }]), lc = function(n, e, t, r) { return t.uiType === sc ? (i = t, u = r, (o = n).exists(function(n) { return n !== i.owner }) ? fc.single(!0, E(i)) : kt(u, i.name).fold(function() { throw new Error("Unknown placeholder component: " + i.name + "\nKnown: [" + F(u) + "]\nNamespace: " + o.getOr("none") + "\nSpec: " + Bt(i, null, 2)) }, function(n) { return n.replace() })) : fc.single(!1, E(t)); var o, i, u }, dc = function(i, u, a, c) { return lc(i, 0, a, c).fold(function(n, e) { var t = e(u, a.config, a.validated), r = kt(t, "components").getOr([]), o = An(r, function(n) { return dc(i, u, n, c) }); return [C(t, { components: o })] }, function(n, e) { return e(u, a.config, a.validated) }) }, mc = function(e, t, n, r) { var o, i, u, a = H(r, function(n, e) { return r = n, o = !1, { name: E(t = e), required: function() { return r.fold(function(n, e) { return n }, function(n, e) { return n }) }, used: function() { return o }, replace: function() { if (!0 === o) throw new Error("Trying to use the same placeholder more than once: " + t); return o = !0, r } }; var t, r, o }), c = (o = e, i = t, u = a, An(n, function(n) { return dc(o, i, n, u) })); return V(a, function(n) { if (!1 === n.used() && n.required()) throw new Error("Placeholder: " + n.name() + " was not found in components list\nNamespace: " + e.getOr("none") + "\nComponents: " + Bt(t.components(), null, 2)) }), c }, gc = fc.single, vc = fc.multiple, pc = E(sc), hc = 0, bc = function(n) { var e = (new Date).getTime(); return n + "_" + Math.floor(1e9 * Math.random()) + ++hc + String(e) }, yc = ct([{ required: ["data"] }, { external: ["data"] }, { optional: ["data"] }, { group: ["data"] }]), wc = mr("factory", { sketch: h }), xc = mr("schema", []), Tc = ur("name"), Sc = qt("pname", "pname", mt(function(n) { return "" }), or()), Oc = mr("defaults", E({})), Cc = mr("overrides", E({})), kc = _t([wc, xc, Tc, Sc, Oc, Cc]), Ec = _t([wc, xc, Tc, Oc, Cc]), Dc = _t([wc, xc, Tc, Sc, Oc, Cc]), Ac = _t([wc, xc, Tc, ur("unit"), Sc, Oc, Cc]), Rc = function(n) { var e = function(n) { return n.name() }; return n.fold(e, e, e, e) }, Mc = function(t, r) { return function(n) { var e = er("Converting part type", r, n); return t(e) } }, Ic = Mc(yc.required, kc), Nc = (Mc(yc.external, Ec), Mc(yc.optional, Dc)), Bc = Mc(yc.group, Ac), Fc = E("entirety"), Vc = function(n, e, t, r) { var o = t; return C(e.defaults()(n, t, r), t, { uid: n.partUids()[e.name()] }, e.overrides()(n, t, r), { "debug.sketcher": Et("part-" + e.name(), o) }) }, Hc = function(o, n) { var i = {}; return wn(n, function(n) { var e; (e = n, e.fold(B.some, B.none, B.some, B.some)).each(function(t) { var r = zc(o, t.pname()); i[t.name()] = function(n) { var e = nr("Part: " + t.name() + " in " + o, _t(t.schema()), n); return C(r, { config: n, validated: e }) } }) }), i }, zc = function(n, e) { return { uiType: pc(), owner: n, name: e } }, jc = function(n, e, t) { return r = e, i = {}, o = {}, wn(t, function(n) { n.fold(function(r) { i[r.pname()] = gc(!0, function(n, e, t) { return r.factory().sketch(Vc(n, r, e, t)) }) }, function(n) { var e = r.parts()[n.name()](); o[n.name()] = E(Vc(r, n, e[Fc()]())) }, function(r) { i[r.pname()] = gc(!1, function(n, e, t) { return r.factory().sketch(Vc(n, r, e, t)) }) }, function(o) { i[o.pname()] = vc(!0, function(e, n, t) { var r = e[o.name()](); return yn(r, function(n) { return o.factory().sketch(C(o.defaults()(e, n), n, o.overrides()(e, n))) }) }) }) }), { internals: E(i), externals: E(o) }; var r, i, o }, Lc = function(n, e, t) { return mc(B.some(n), e, e.components(), t) }, Uc = function(n, e, t) { var r = e.partUids()[t]; return n.getSystem().getByUid(r).toOption() }, Pc = function(n, e, t) { return Uc(n, e, t).getOrDie("Could not find part: " + t) }, _c = function(e, n) { var t = yn(n, Rc); return Dt(yn(t, function(n) { return { key: n, value: e + "-" + n } })) }, Wc = function(e) { return qt("partUids", "partUids", gt(function(n) { return _c(n.uid, e) }), or()) }, $c = bc("alloy-premade"), Gc = bc("api"), qc = function(n) { return Et($c, n) }, Yc = function(o) { return n = function(n) { for (var e = [], t = 1; t < arguments.length; t++) e[t - 1] = arguments[t]; var r = n.config(Gc); return o.apply(undefined, [r].concat([n].concat(e))) }, e = o.toString(), t = e.indexOf(")") + 1, r = e.indexOf("("), i = e.substring(r + 1, t - 1).split(/,\s*/), n.toFunctionAnnotation = function() { return { name: "OVERRIDE", parameters: Ar(i.slice(1)) } }, n; var n, e, t, r, i }, Xc = E(Gc), Kc = E("alloy-id-"), Jc = E("data-alloy-id"), Qc = Kc(), Zc = Jc(), ns = function(n) { var e = be.isElement(n) ? ro.get(n, Zc) : null; return B.from(e) }, es = function(n) { return bc(n) }, ts = function(n, e, t, r, o) { var i, u, a = (u = o, (0 < (i = r).length ? [sr("parts", i)] : []).concat([ur("uid"), mr("dom", {}), mr("components", []), di("originalSpec"), mr("debug.sketcher", {})]).concat(u)); return er(n + " [SpecSchema]", Pt(a.concat(e)), t) }, rs = function(n, e, t, r, o) { var i = os(o), u = An(t, function(n) { return n.fold(B.none, B.some, B.none, B.none).map(function(n) { return sr(n.name(), n.schema().concat([di(Fc())])) }).toArray() }), a = Wc(t), c = ts(n, e, i, u, [a]), s = jc(0, c, t), f = Lc(n, c, s.internals()); return C(r(c, f, i, s.externals()), { "debug.sketcher": Et(n, o) }) }, os = function(n) { return C({ uid: es("uid") }, n) }, is = Pt([ur("name"), ur("factory"), ur("configFields"), mr("apis", {}), mr("extraApis", {})]), us = Pt([ur("name"), ur("factory"), ur("configFields"), ur("partFields"), mr("apis", {}), mr("extraApis", {})]), as = function(n) { var a = nr("Sketcher for " + n.name, is, n), e = H(a.apis, Yc), t = H(a.extraApis, function(n, e) { return Rr(n, e) }); return C({ name: E(a.name), partFields: E([]), configFields: E(a.configFields), sketch: function(n) { return e = a.name, t = a.configFields, r = a.factory, i = os(o = n), u = ts(e, t, i, [], []), C(r(u, i), { "debug.sketcher": Et(e, o) }); var e, t, r, o, i, u } }, e, t) }, cs = function(n) { var e = nr("Sketcher for " + n.name, us, n), t = Hc(e.name, e.partFields), r = H(e.apis, Yc), o = H(e.extraApis, function(n, e) { return Rr(n, e) }); return C({ name: E(e.name), partFields: E(e.partFields), configFields: E(e.configFields), sketch: function(n) { return rs(e.name, e.configFields, e.partFields, e.factory, n) }, parts: E(t) }, r, o) }, ss = as({ name: "Button", factory: function(n) { var e, t, r, o = (e = n.action(), t = function(n, e) { e.stop(), ue(n) }, r = Wn.detect().deviceType.isTouch() ? [wr(Jn(), t)] : [wr(K(), t), wr(_(), function(n, e) { e.cut() })], br(Dn([e.map(function(t) { return wr(Xn(), function(n, e) { t(n), e.stop() }) }).toArray(), r]))), i = kt(n.dom(), "attributes").bind(Ot("type")), u = kt(n.dom(), "tag"); return { uid: n.uid(), dom: n.dom(), components: n.components(), events: o, behaviours: C(qr([Vi.config({}), uc.config({ mode: "execution", useSpace: !0, useEnter: !0 })]), cc(n.buttonBehaviours())), domModification: { attributes: C(i.fold(function() { return u.is("button") ? { type: "button" } : {} }, function(n) { return {} }), { role: n.role().getOr("button") }) }, eventOrder: n.eventOrder() } }, configFields: [mr("uid", undefined), ur("dom"), mr("components", []), ac("buttonBehaviours", [Vi, uc]), fr("action"), fr("role"), mr("eventOrder", {})] }), fs = Object.freeze({ events: function(n) { return br([yr(Q(), E(!0))]) }, exhibit: function(n, e) { return Nr({ styles: { "-webkit-user-select": "none", "user-select": "none", "-ms-user-select": "none", "-moz-user-select": "-moz-none" }, attributes: { unselectable: "on" } }) } }), ls = Xr({ fields: [], name: "unselecting", active: fs }), ds = function(n) { var e, t, r, o = fe.fromHtml(n), i = $e.children(o), u = (t = (e = o).dom().attributes !== undefined ? e.dom().attributes : [], Sn(t, function(n, e) { return "class" === e.name ? n : C(n, Et(e.name, e.value)) }, {})), a = (r = o, Array.prototype.slice.call(r.dom().classList, 0)), c = 0 === i.length ? {} : { innerHtml: Po(o) }; return C({ tag: be.name(o), classes: a, attributes: u }, c) }, ms = function(n) { var e, o, t = (e = n, o = { prefix: Mi.prefix() }, e.replace(/\$\{([^{}]*)\}/g, function(n, e) { var t, r = o[e]; return "string" == (t = typeof r) || "number" === t ? r.toString() : n })); return ds(t) }, gs = function(n) { return { dom: ms(n) } }, vs = function(n) { return qr([ki.config({ toggleClass: Mi.resolve("toolbar-button-selected"), toggleOnExecute: !1, aria: { mode: "pressed" } }), Ei(n, function(n, e) { (e ? ki.on : ki.off)(n) })]) }, ps = function(n, e, t) { return ss.sketch({ dom: ms(''), action: e, buttonBehaviours: C(qr([ls.config({})]), t) }) }, hs = { forToolbar: ps, forToolbarCommand: function(n, e) { return ps(e, function() { n.execCommand(e) }, {}) }, forToolbarStateAction: function(n, e, t, r) { var o = vs(t); return ps(e, r, o) }, forToolbarStateCommand: function(n, e) { var t = vs(e); return ps(e, function() { n.execCommand(e) }, t) } }, bs = function(t, r) { return { left: E(t), top: E(r), translate: function(n, e) { return bs(t + n, r + e) } } }, ys = bs, ws = function(n, e, t) { return Math.max(e, Math.min(t, n)) }, xs = function(n, e, t, r, o, i, u) { var a = t - e; if (r < n.left) return e - 1; if (r > n.right) return t + 1; var c, s, f, l, d = Math.min(n.right, Math.max(r, n.left)) - n.left, m = ws(d / n.width * a + e, e - 1, t + 1), g = Math.round(m); return i && e <= m && m <= t ? (c = m, s = e, f = t, l = o, u.fold(function() { var n = c - s, e = Math.round(n / l) * l; return ws(s + e, s - 1, f + 1) }, function(n) { var e = (c - n) % l, t = Math.round(e / l), r = Math.floor((c - n) / l), o = Math.floor((f - n) / l), i = n + Math.min(o, r + t) * l; return Math.max(n, i) })) : g }, Ts = "slider.change.value", Ss = Wn.detect().deviceType.isTouch(), Os = function(n) { return function(n) { var e = n.event().raw(); if (Ss) { var t = e; return t.touches !== undefined && 1 === t.touches.length ? B.some(t.touches[0]).map(function(n) { return ys(n.clientX, n.clientY) }) : B.none() } var r = e; return r.clientX !== undefined ? B.some(r).map(function(n) { return ys(n.clientX, n.clientY) }) : B.none() }(n).map(function(n) { return n.left() }) }, Cs = function(n, e) { ie(n, Ts, { value: e }) }, ks = function(i, u, a, n) { return Os(n).map(function(n) { var e, t, r, o; return e = i, r = n, o = xs(a, (t = u).min(), t.max(), r, t.stepSize(), t.snapToGrid(), t.snapStart()), Cs(e, o), n }) }, Es = function(n, e) { var t, r, o, i, u = (t = e.value().get(), r = e.min(), o = e.max(), i = e.stepSize(), t < r ? t : o < t ? o : t === r ? r - 1 : Math.max(r, t - i)); Cs(n, u) }, Ds = function(n, e) { var t, r, o, i, u = (t = e.value().get(), r = e.min(), o = e.max(), i = e.stepSize(), o < t ? t : t < r ? r : t === o ? o + 1 : Math.min(o, t + i)); Cs(n, u) }, As = Wn.detect().deviceType.isTouch(), Rs = function(n, r) { return Nc({ name: n + "-edge", overrides: function(n) { var e = br([xr(L(), r, [n])]), t = br([xr(_(), r, [n]), xr(W(), function(n, e) { e.mouseIsDown().get() && r(n, e) }, [n])]); return { events: As ? e : t } } }) }, Ms = [Rs("left", function(n, e) { Cs(n, e.min() - 1) }), Rs("right", function(n, e) { Cs(n, e.max() + 1) }), Ic({ name: "thumb", defaults: E({ dom: { styles: { position: "absolute" } } }), overrides: function(n) { return { events: br([Sr(L(), n, "spectrum"), Sr(U(), n, "spectrum"), Sr(P(), n, "spectrum")]) } } }), Ic({ schema: [vr("mouseIsDown", function() { return So(!1) })], name: "spectrum", overrides: function(r) { var t = function(n, e) { var t = n.element().dom().getBoundingClientRect(); ks(n, r, t, e) }, n = br([wr(L(), t), wr(U(), t)]), e = br([wr(_(), t), wr(W(), function(n, e) { r.mouseIsDown().get() && t(n, e) })]); return { behaviours: qr(As ? [] : [uc.config({ mode: "special", onLeft: function(n) { return Es(n, r), B.some(!0) }, onRight: function(n) { return Ds(n, r), B.some(!0) } }), Vi.config({})]), events: As ? n : e } } })], Is = function(n, e, t) { e.store().manager().onLoad(n, e, t) }, Ns = function(n, e, t) { e.store().manager().onUnload(n, e, t) }, Bs = Object.freeze({ onLoad: Is, onUnload: Ns, setValue: function(n, e, t, r) { e.store().manager().setValue(n, e, t, r) }, getValue: function(n, e, t) { return e.store().manager().getValue(n, e, t) } }), Fs = Object.freeze({ events: function(t, r) { var n = t.resetOnDom() ? [Cr(function(n, e) { Is(n, t, r) }), kr(function(n, e) { Ns(n, t, r) })] : [Fr(t, r, Is)]; return br(n) } }), Vs = function() { var n = So(null); return Gr({ set: n.set, get: n.get, isNotSet: function() { return null === n.get() }, clear: function() { n.set(null) }, readState: function() { return { mode: "memory", value: n.get() } } }) }, Hs = function() { var n = So({}); return Gr({ readState: function() { return { mode: "dataset", dataset: n.get() } }, set: n.set, get: n.get }) }, zs = Object.freeze({ memory: Vs, dataset: Hs, manual: function() { return Gr({ readState: function() {} }) }, init: function(n) { return n.store().manager().state(n) } }), js = function(n, e, t, r) { e.store().getDataKey(), t.set({}), e.store().setData()(n, r), e.onSetValue()(n, r) }, Ls = [fr("initialValue"), ur("getFallbackEntry"), ur("getDataKey"), ur("setData"), li("manager", { setValue: js, getValue: function(n, e, t) { var r = e.store().getDataKey()(n), o = t.get(); return kt(o, r).fold(function() { return e.store().getFallbackEntry()(r) }, function(n) { return n }) }, onLoad: function(e, t, r) { t.store().initialValue().each(function(n) { js(e, t, r, n) }) }, onUnload: function(n, e, t) { t.set({}) }, state: Hs })], Us = [ur("getValue"), mr("setValue", k), fr("initialValue"), li("manager", { setValue: function(n, e, t, r) { e.store().setValue()(n, r), e.onSetValue()(n, r) }, getValue: function(n, e, t) { return e.store().getValue()(n) }, onLoad: function(e, t, n) { t.store().initialValue().each(function(n) { t.store().setValue()(e, n) }) }, onUnload: k, state: $r.init })], Ps = [fr("initialValue"), li("manager", { setValue: function(n, e, t, r) { t.set(r), e.onSetValue()(n, r) }, getValue: function(n, e, t) { return t.get() }, onLoad: function(n, e, t) { e.store().initialValue().each(function(n) { t.isNotSet() && t.set(n) }) }, onUnload: function(n, e, t) { t.clear() }, state: Vs })], _s = [gr("store", { mode: "memory" }, rr("mode", { memory: Ps, manual: Us, dataset: Ls })), ai("onSetValue"), mr("resetOnDom", !1)], Ws = Xr({ fields: _s, name: "representing", active: Fs, apis: Bs, extra: { setValueFrom: function(n, e) { var t = Ws.getValue(e); Ws.setValue(n, t) } }, state: zs }), $s = Wn.detect().deviceType.isTouch(), Gs = [ur("min"), ur("max"), mr("stepSize", 1), mr("onChange", k), mr("onInit", k), mr("onDragStart", k), mr("onDragEnd", k), mr("snapToGrid", !1), fr("snapStart"), ur("getInitialValue"), ac("sliderBehaviours", [uc, Ws]), vr("value", function(n) { return So(n.min) })].concat($s ? [] : [vr("mouseIsDown", function() { return So(!1) })]), qs = Wi("width", function(n) { return n.dom().offsetWidth }), Ys = function(n, e) { qs.set(n, e) }, Xs = function(n) { return qs.get(n) }, Ks = Wn.detect().deviceType.isTouch(), Js = cs({ name: "Slider", configFields: Gs, partFields: Ms, factory: function(c, n, e, t) { var s = c.max() - c.min(), f = function(n) { var e = n.element().dom().getBoundingClientRect(); return (e.left + e.right) / 2 }, o = function(n) { return Pc(n, c, "thumb") }, i = function(n) { var e, t, r, o, i = Pc(n, c, "spectrum").element().dom().getBoundingClientRect(), u = n.element().dom().getBoundingClientRect(), a = (e = n, t = i, (o = (r = c).value().get()) < r.min() ? Uc(e, r, "left-edge").fold(function() { return 0 }, function(n) { return f(n) - t.left }) : o > r.max() ? Uc(e, r, "right-edge").fold(function() { return t.width }, function(n) { return f(n) - t.left }) : (r.value().get() - r.min()) / s * t.width); return i.left - u.left + a }, u = function(n) { var e = i(n), t = o(n), r = Xs(t.element()) / 2; _i.set(t.element(), "left", e - r + "px") }, r = function(n, e) { var t = c.value().get(), r = o(n); return t !== e || _i.getRaw(r.element(), "left").isNone() ? (c.value().set(e), u(n), c.onChange()(n, r, e), B.some(!0)) : B.none() }, a = Ks ? [wr(L(), function(n, e) { c.onDragStart()(n, o(n)) }), wr(P(), function(n, e) { c.onDragEnd()(n, o(n)) })] : [wr(_(), function(n, e) { e.stop(), c.onDragStart()(n, o(n)), c.mouseIsDown().set(!0) }), wr($(), function(n, e) { c.onDragEnd()(n, o(n)), c.mouseIsDown().set(!1) })]; return { uid: c.uid(), dom: c.dom(), components: n, behaviours: C(qr(Dn([Ks ? [] : [uc.config({ mode: "special", focusIn: function(n) { return Uc(n, c, "spectrum").map(uc.focusIn).map(E(!0)) } })], [Ws.config({ store: { mode: "manual", getValue: function(n) { return c.value().get() } } })] ])), cc(c.sliderBehaviours())), events: br([wr(Ts, function(n, e) { r(n, e.event().value()) }), Cr(function(n, e) { c.value().set(c.getInitialValue()()); var t = o(n); u(n), c.onInit()(n, t, c.value().get()) })].concat(a)), apis: { resetToMin: function(n) { r(n, c.min()) }, resetToMax: function(n) { r(n, c.max()) }, refresh: u }, domModification: { styles: { position: "relative" } } } }, apis: { resetToMin: function(n, e) { n.resetToMin(e) }, resetToMax: function(n, e) { n.resetToMax(e) }, refresh: function(n, e) { n.refresh(e) } } }), Qs = function(e, t, r) { return hs.forToolbar(t, function() { var n = r(); e.setContextToolbar([{ label: t + " group", items: n }]) }, {}) }, Zs = function(n) { return [(o = n, i = function(n) { return n < 0 ? "black" : 360 < n ? "white" : "hsl(" + n + ", 100%, 50%)" }, Js.sketch({ dom: ms('
    '), components: [Js.parts()["left-edge"](gs('
    ')), Js.parts().spectrum({ dom: ms('
    '), components: [gs('
    ')], behaviours: qr([ki.config({ toggleClass: Mi.resolve("thumb-active") })]) }), Js.parts()["right-edge"](gs('
    ')), Js.parts().thumb({ dom: ms('
    '), behaviours: qr([ki.config({ toggleClass: Mi.resolve("thumb-active") })]) })], onChange: function(n, e, t) { var r = i(t); _i.set(e.element(), "background-color", r), o.onChange(n, e, r) }, onDragStart: function(n, e) { ki.on(e) }, onDragEnd: function(n, e) { ki.off(e) }, onInit: function(n, e, t) { var r = i(t); _i.set(e.element(), "background-color", r) }, stepSize: 10, min: 0, max: 360, getInitialValue: o.getInitialValue, sliderBehaviours: qr([Di(Js.refresh)]) }))]; var o, i }, nf = function(n, r) { var e = { onChange: function(n, e, t) { r.undoManager.transact(function() { r.formatter.apply("forecolor", { value: t }), r.nodeChanged() }) }, getInitialValue: function() { return -1 } }; return Qs(n, "color", function() { return Zs(e) }) }, ef = Pt([ur("getInitialValue"), ur("onChange"), ur("category"), ur("sizes")]), tf = function(n) { var o = nr("SizeSlider", ef, n); return Js.sketch({ dom: { tag: "div", classes: [Mi.resolve("slider-" + o.category + "-size-container"), Mi.resolve("slider"), Mi.resolve("slider-size-container")] }, onChange: function(n, e, t) { var r; 0 <= (r = t) && r < o.sizes.length && o.onChange(t) }, onDragStart: function(n, e) { ki.on(e) }, onDragEnd: function(n, e) { ki.off(e) }, min: 0, max: o.sizes.length - 1, stepSize: 1, getInitialValue: o.getInitialValue, snapToGrid: !0, sliderBehaviours: qr([Di(Js.refresh)]), components: [Js.parts().spectrum({ dom: ms('
    '), components: [gs('
    ')] }), Js.parts().thumb({ dom: ms('
    '), behaviours: qr([ki.config({ toggleClass: Mi.resolve("thumb-active") })]) })] }) }, rf = ["9px", "10px", "11px", "12px", "14px", "16px", "18px", "20px", "24px", "32px", "36px"], of = function(n) { var e, t, r = n.selection.getStart(), o = fe.fromDom(r), i = fe.fromDom(n.getBody()), u = (e = function(n) { return ze(i, n) }, t = o, (be.isElement(t) ? B.some(t) : $e.parent(t)).map(function(n) { return Do.closest(n, function(n) { return _i.getRaw(n, "font-size").isSome() }, e).bind(function(n) { return _i.getRaw(n, "font-size") }).getOrThunk(function() { return _i.get(n, "font-size") }) }).getOr("")); return On(rf, function(n) { return u === n }).getOr("medium") }, uf = { candidates: E(rf), get: function(n) { var e, t = of(n); return (e = t, Cn(rf, function(n) { return n === e })).getOr(2) }, apply: function(r, n) { var e; (e = n, B.from(rf[e])).each(function(n) { var e, t; t = n, of(e = r) !== t && e.execCommand("fontSize", !1, t) }) } }, af = uf.candidates(), cf = function(n) { return [gs(''), (e = n, tf({ onChange: e.onChange, sizes: af, category: "font", getInitialValue: e.getInitialValue })), gs('')]; var e }, sf = function(n) { var e = n.uid !== undefined && Rt(n, "uid") ? n.uid : es("memento"); return { get: function(n) { return n.getSystem().getByUid(e).getOrDie() }, getOpt: function(n) { return n.getSystem().getByUid(e).fold(B.none, B.some) }, asSpec: function() { return C(n, { uid: e }) } } }; function ff(n, e) { return df(document.createElement("canvas"), n, e) } function lf(n) { return n.getContext("2d") } function df(n, e, t) { return n.width = e, n.height = t, n } var mf = { create: ff, clone: function(n) { var e; return lf(e = ff(n.width, n.height)).drawImage(n, 0, 0), e }, resize: df, get2dContext: lf, get3dContext: function(n) { var e = null; try { e = n.getContext("webgl") || n.getContext("experimental-webgl") } catch (t) {} return e || (e = null), e } }, gf = { getWidth: function(n) { return n.naturalWidth || n.width }, getHeight: function(n) { return n.naturalHeight || n.height } }, vf = window.Promise ? window.Promise : function() { var n = function(n) { if ("object" != typeof this) throw new TypeError("Promises must be constructed via new"); if ("function" != typeof n) throw new TypeError("not a function"); this._state = null, this._value = null, this._deferreds = [], s(n, r(o, this), r(u, this)) }, e = n.immediateFn || "function" == typeof setImmediate && setImmediate || function(n) { setTimeout(n, 1) }; function r(n, e) { return function() { n.apply(e, arguments) } } var t = Array.isArray || function(n) { return "[object Array]" === Object.prototype.toString.call(n) }; function i(r) { var o = this; null !== this._state ? e(function() { var n = o._state ? r.onFulfilled : r.onRejected; if (null !== n) { var e; try { e = n(o._value) } catch (t) { return void r.reject(t) } r.resolve(e) } else(o._state ? r.resolve : r.reject)(o._value) }) : this._deferreds.push(r) } function o(n) { try { if (n === this) throw new TypeError("A promise cannot be resolved with itself."); if (n && ("object" == typeof n || "function" == typeof n)) { var e = n.then; if ("function" == typeof e) return void s(r(e, n), r(o, this), r(u, this)) } this._state = !0, this._value = n, a.call(this) } catch (t) { u.call(this, t) } } function u(n) { this._state = !1, this._value = n, a.call(this) } function a() { for (var n = 0, e = this._deferreds.length; n < e; n++) i.call(this, this._deferreds[n]); this._deferreds = null } function c(n, e, t, r) { this.onFulfilled = "function" == typeof n ? n : null, this.onRejected = "function" == typeof e ? e : null, this.resolve = t, this.reject = r } function s(n, e, t) { var r = !1; try { n(function(n) { r || (r = !0, e(n)) }, function(n) { r || (r = !0, t(n)) }) } catch (o) { if (r) return; r = !0, t(o) } } return n.prototype["catch"] = function(n) { return this.then(null, n) }, n.prototype.then = function(t, r) { var o = this; return new n(function(n, e) { i.call(o, new c(t, r, n, e)) }) }, n.all = function() { var c = Array.prototype.slice.call(1 === arguments.length && t(arguments[0]) ? arguments[0] : arguments); return new n(function(o, i) { if (0 === c.length) return o([]); var u = c.length; function a(e, n) { try { if (n && ("object" == typeof n || "function" == typeof n)) { var t = n.then; if ("function" == typeof t) return void t.call(n, function(n) { a(e, n) }, i) } c[e] = n, 0 == --u && o(c) } catch (r) { i(r) } } for (var n = 0; n < c.length; n++) a(n, c[n]) }) }, n.resolve = function(e) { return e && "object" == typeof e && e.constructor === n ? e : new n(function(n) { n(e) }) }, n.reject = function(t) { return new n(function(n, e) { e(t) }) }, n.race = function(o) { return new n(function(n, e) { for (var t = 0, r = o.length; t < r; t++) o[t].then(n, e) }) }, n }(); function pf() { return new(Ie.getOrDie("FileReader")) } var hf = { atob: function(n) { return Ie.getOrDie("atob")(n) }, requestAnimationFrame: function(n) { Ie.getOrDie("requestAnimationFrame")(n) } }; function bf(a) { return new vf(function(n, e) { var t = URL.createObjectURL(a), r = new Image, o = function() { r.removeEventListener("load", i), r.removeEventListener("error", u) }; function i() { o(), n(r) } function u() { o(), e("Unable to load data of type " + a.type + ": " + t) } r.addEventListener("load", i), r.addEventListener("error", u), r.src = t, r.complete && i() }) } function yf(r) { return new vf(function(n, t) { var e = new XMLHttpRequest; e.open("GET", r, !0), e.responseType = "blob", e.onload = function() { 200 == this.status && n(this.response) }, e.onerror = function() { var n, e = this; t(0 === this.status ? ((n = new Error("No access to download image")).code = 18, n.name = "SecurityError", n) : new Error("Error " + e.status + " downloading image")) }, e.send() }) } function wf(n) { var e = n.split(","), t = /data:([^;]+)/.exec(e[0]); if (!t) return B.none(); for (var r, o, i, u = t[1], a = e[1], c = hf.atob(a), s = c.length, f = Math.ceil(s / 1024), l = new Array(f), d = 0; d < f; ++d) { for (var m = 1024 * d, g = Math.min(m + 1024, s), v = new Array(g - m), p = m, h = 0; p < g; ++h, ++p) v[h] = c[p].charCodeAt(0); l[d] = (r = v, new(Ie.getOrDie("Uint8Array"))(r)) } return B.some((o = l, i = { type: u }, new(Ie.getOrDie("Blob"))(o, i))) } function xf(t) { return new vf(function(n, e) { wf(t).fold(function() { e("uri is not base64: " + t) }, n) }) } function Tf(t) { return new vf(function(n) { var e = new pf; e.onloadend = function() { n(e.result) }, e.readAsDataURL(t) }) } var Sf, Of, Cf, kf, Ef, Df, Af, Rf, Mf = { blobToImage: bf, imageToBlob: function(n) { var e = n.src; return 0 === e.indexOf("data:") ? xf(e) : yf(e) }, blobToArrayBuffer: function(t) { return new vf(function(n) { var e = new pf; e.onloadend = function() { n(e.result) }, e.readAsArrayBuffer(t) }) }, blobToDataUri: Tf, blobToBase64: function(n) { return Tf(n).then(function(n) { return n.split(",")[1] }) }, dataUriToBlobSync: wf, canvasToBlob: function(n, t, r) { return t = t || "image/png", HTMLCanvasElement.prototype.toBlob ? new vf(function(e) { n.toBlob(function(n) { e(n) }, t, r) }) : xf(n.toDataURL(t, r)) }, canvasToDataURL: function(n, e, t) { return e = e || "image/png", n.then(function(n) { return n.toDataURL(e, t) }) }, blobToCanvas: function(n) { return bf(n).then(function(n) { var e, t; return e = n, URL.revokeObjectURL(e.src), t = mf.create(gf.getWidth(n), gf.getHeight(n)), mf.get2dContext(t).drawImage(n, 0, 0), t }) }, uriToBlob: function(n) { return 0 === n.indexOf("blob:") ? yf(n) : 0 === n.indexOf("data:") ? xf(n) : null } }, If = function(n) { return Mf.blobToBase64(n) }, Nf = function(u) { var e = sf({ dom: { tag: "input", attributes: { accept: "image/*", type: "file", title: "" }, styles: { visibility: "hidden", position: "absolute" } }, events: br([Or(K()), wr(X(), function(n, e) { var t, r, o; (t = e, r = t.event(), o = r.raw().target.files || r.raw().dataTransfer.files, B.from(o[0])).each(function(n) { var o, i; o = u, If(i = n).then(function(r) { o.undoManager.transact(function() { var n = o.editorUpload.blobCache, e = n.create(bc("mceu"), i, r); n.add(e); var t = o.dom.createHTML("img", { src: e.blobUri() }); o.insertContent(t) }) }) }) })]) }); return ss.sketch({ dom: ms(''), components: [e.asSpec()], action: function(n) { e.get(n).element().dom().click() } }) }, Bf = function(n) { return n.dom().textContent }, Ff = function(n, e) { n.dom().textContent = e }, Vf = function(n) { return 0 < n.length }, Hf = function(n) { return n === undefined || null === n ? "" : n }, zf = function(e, t, n) { return n.text.filter(Vf).fold(function() { return ro.get(n = e, "href") === Bf(n) ? B.some(t) : B.none(); var n }, B.some) }, jf = function(n) { var e = fe.fromDom(n.selection.getStart()); return iu(e, "a") }, Lf = { getInfo: function(n) { return jf(n).fold(function() { return { url: "", text: n.selection.getContent({ format: "text" }), title: "", target: "", link: B.none() } }, function(n) { return t = Bf(e = n), r = ro.get(e, "href"), o = ro.get(e, "title"), i = ro.get(e, "target"), { url: Hf(r), text: t !== r ? Hf(t) : "", title: Hf(o), target: Hf(i), link: B.some(e) }; var e, t, r, o, i }) }, applyInfo: function(o, i) { i.url.filter(Vf).fold(function() { var e; e = o, i.link.bind(h).each(function(n) { e.execCommand("unlink") }) }, function(t) { var n, e, r = (n = i, (e = {}).href = t, n.title.filter(Vf).each(function(n) { e.title = n }), n.target.filter(Vf).each(function(n) { e.target = n }), e); i.link.bind(h).fold(function() { var n = i.text.filter(Vf).getOr(t); o.insertContent(o.dom.createHTML("a", r, o.dom.encode(n))) }, function(e) { var n = zf(e, t, i); ro.setAll(e, r), n.each(function(n) { Ff(e, n) }) }) }) }, query: jf }, Uf = Wn.detect(), Pf = function(n, e) { var t = e.selection.getRng(); n(), e.selection.setRng(t) }, _f = function(n, e) { (Uf.os.isAndroid() ? Pf : s)(e, n) }, Wf = function(n, e) { var t, r; return { key: n, value: { config: {}, me: (t = n, r = br(e), Xr({ fields: [ur("enabled")], name: t, active: { events: E(r) } })), configAsRaw: E({}), initialConfig: {}, state: $r } } }, $f = Object.freeze({ getCurrent: function(n, e, t) { return e.find()(n) } }), Gf = [ur("find")], qf = Xr({ fields: Gf, name: "composing", apis: $f }), Yf = as({ name: "Container", factory: function(n) { return { uid: n.uid(), dom: C({ tag: "div", attributes: { role: "presentation" } }, n.dom()), components: n.components(), behaviours: cc(n.containerBehaviours()), events: n.events(), domModification: n.domModification(), eventOrder: n.eventOrder() } }, configFields: [mr("components", []), ac("containerBehaviours", []), mr("events", {}), mr("domModification", {}), mr("eventOrder", {})] }), Xf = as({ name: "DataField", factory: function(t) { return { uid: t.uid(), dom: t.dom(), behaviours: C(qr([Ws.config({ store: { mode: "memory", initialValue: t.getInitialValue()() } }), qf.config({ find: B.some })]), cc(t.dataBehaviours())), events: br([Cr(function(n, e) { Ws.setValue(n, t.getInitialValue()()) })]) } }, configFields: [ur("uid"), ur("dom"), ur("getInitialValue"), ac("dataBehaviours", [Ws, qf])] }), Kf = function(n, e) { if (e === undefined) throw new Error("Value.set was undefined"); n.dom().value = e }, Jf = function(n) { return n.dom().value }, Qf = E([fr("data"), mr("inputAttributes", {}), mr("inputStyles", {}), mr("type", "input"), mr("tag", "input"), mr("inputClasses", []), ai("onSetValue"), mr("styles", {}), fr("placeholder"), mr("eventOrder", {}), ac("inputBehaviours", [Ws, Vi]), mr("selectOnFocus", !0)]), Zf = function(n) { return C(qr([Ws.config({ store: { mode: "manual", initialValue: n.data().getOr(undefined), getValue: function(n) { return Jf(n.element()) }, setValue: function(n, e) { Jf(n.element()) !== e && Kf(n.element(), e) } }, onSetValue: n.onSetValue() })]), (e = n, qr([Vi.config({ onFocus: !1 === e.selectOnFocus() ? k : function(n) { var e = n.element(), t = Jf(e); e.dom().setSelectionRange(0, t.length) } })])), cc(n.inputBehaviours())); var e }, nl = as({ name: "Input", configFields: Qf(), factory: function(n, e) { return { uid: n.uid(), dom: (t = n, { tag: t.tag(), attributes: C(Dt([{ key: "type", value: t.type() }].concat(t.placeholder().map(function(n) { return { key: "placeholder", value: n } }).toArray())), t.inputAttributes()), styles: t.inputStyles(), classes: t.inputClasses() }), components: [], behaviours: Zf(n), eventOrder: n.eventOrder() }; var t } }), el = Object.freeze({ exhibit: function(n, e) { return Nr({ attributes: Dt([{ key: e.tabAttr(), value: "true" }]) }) } }), tl = [mr("tabAttr", "data-alloy-tabstop")], rl = Xr({ fields: tl, name: "tabstopping", active: el }), ol = function(n, e) { var t = sf(nl.sketch({ placeholder: e, onSetValue: function(n, e) { oe(n, Y()) }, inputBehaviours: qr([qf.config({ find: B.some }), rl.config({}), uc.config({ mode: "execution" })]), selectOnFocus: !1 })), r = sf(ss.sketch({ dom: ms(''), action: function(n) { var e = t.get(n); Ws.setValue(e, "") } })); return { name: n, spec: Yf.sketch({ dom: ms('
    '), components: [t.asSpec(), r.asSpec()], containerBehaviours: qr([ki.config({ toggleClass: Mi.resolve("input-container-empty") }), qf.config({ find: function(n) { return B.some(t.get(n)) } }), Wf("input-clearing", [wr(Y(), function(n) { var e = t.get(n); (0 < Ws.getValue(e).length ? ki.off : ki.on)(n) })])]) }) } }, il = ["input", "button", "textarea"], ul = function(n, e, t) { e.disabled() && dl(n, e, t) }, al = function(n) { return hn(il, be.name(n.element())) }, cl = function(n) { ro.set(n.element(), "disabled", "disabled") }, sl = function(n) { ro.remove(n.element(), "disabled") }, fl = function(n) { ro.set(n.element(), "aria-disabled", "true") }, ll = function(n) { ro.set(n.element(), "aria-disabled", "false") }, dl = function(e, n, t) { n.disableClass().each(function(n) { bo.add(e.element(), n) }), (al(e) ? cl : fl)(e) }, ml = function(n) { return al(n) ? ro.has(n.element(), "disabled") : "true" === ro.get(n.element(), "aria-disabled") }, gl = Object.freeze({ enable: function(e, n, t) { n.disableClass().each(function(n) { bo.remove(e.element(), n) }), (al(e) ? sl : ll)(e) }, disable: dl, isDisabled: ml, onLoad: ul }), vl = Object.freeze({ exhibit: function(n, e, t) { return Nr({ classes: e.disabled() ? e.disableClass().map(Nn).getOr([]) : [] }) }, events: function(n, e) { return br([yr(Xn(), function(n, e) { return ml(n) }), Fr(n, e, ul)]) } }), pl = [mr("disabled", !1), fr("disableClass")], hl = Xr({ fields: pl, name: "disabling", active: vl, apis: gl }), bl = [ac("formBehaviours", [Ws])], yl = function(n) { return "" }, wl = function(o, n, e) { return C({ "debug.sketcher": { Form: e }, uid: o.uid(), dom: o.dom(), components: n, behaviours: C(qr([Ws.config({ store: { mode: "manual", getValue: function(n) { var e, t, r = (e = o, t = n.getSystem(), H(e.partUids(), function(n, e) { return E(t.getByUid(n)) })); return H(r, function(n, e) { return n().bind(qf.getCurrent).map(Ws.getValue) }) }, setValue: function(t, n) { V(n, function(e, n) { Uc(t, o, n).each(function(n) { qf.getCurrent(n).each(function(n) { Ws.setValue(n, e) }) }) }) } } })]), cc(o.formBehaviours())), apis: { getField: function(n, e) { return Uc(n, o, e).bind(qf.getCurrent) } } }) }, xl = (Yc(function(n, e, t) { return n.getField(e, t) }), function(n) { var i, e = (i = [], { field: function(n, e) { return i.push(n), t = "form", r = yl(n), o = e, { uiType: pc(), owner: t, name: r, config: o, validated: {} }; var t, r, o }, record: function() { return i } }), t = n(e), r = e.record(), o = yn(r, function(n) { return Ic({ name: n, pname: yl(n) }) }); return rs("form", bl, o, wl, t) }), Tl = function() { var e = So(B.none()), t = function() { e.get().each(function(n) { n.destroy() }) }; return { clear: function() { t(), e.set(B.none()) }, isSet: function() { return e.get().isSome() }, set: function(n) { t(), e.set(B.some(n)) }, run: function(n) { e.get().each(n) } } }, Sl = function() { var e = So(B.none()); return { clear: function() { e.set(B.none()) }, set: function(n) { e.set(B.some(n)) }, isSet: function() { return e.get().isSome() }, on: function(n) { e.get().each(n) } } }, Ol = function(n) { return { xValue: n, points: [] } }, Cl = function(n, e) { if (e === n.xValue) return n; var t = 0 < e - n.xValue ? 1 : -1, r = { direction: t, xValue: e }; return { xValue: e, points: (0 === n.points.length ? [] : n.points[n.points.length - 1].direction === t ? n.points.slice(0, n.points.length - 1) : n.points).concat([r]) } }, kl = function(n) { if (0 === n.points.length) return 0; var e = n.points[0].direction, t = n.points[n.points.length - 1].direction; return -1 === e && -1 === t ? -1 : 1 === e && 1 === t ? 1 : 0 }, El = function(n) { var r = "navigateEvent", e = _t([ur("fields"), mr("maxFieldIndex", n.fields.length - 1), ur("onExecute"), ur("getInitialValue"), vr("state", function() { return { dialogSwipeState: Sl(), currentScreen: So(0) } })]), u = nr("SerialisedDialog", e, n), o = function(e, n, t) { return ss.sketch({ dom: ms(''), action: function(n) { ie(n, r, { direction: e }) }, buttonBehaviours: qr([hl.config({ disableClass: Mi.resolve("toolbar-navigation-disabled"), disabled: !t })]) }) }, i = function(n, o) { var i = nu(n.element(), "." + Mi.resolve("serialised-dialog-screen")); ou(n.element(), "." + Mi.resolve("serialised-dialog-chain")).each(function(r) { 0 <= u.state.currentScreen.get() + o && u.state.currentScreen.get() + o < i.length && (_i.getRaw(r, "left").each(function(n) { var e = parseInt(n, 10), t = Xs(i[0]); _i.set(r, "left", e - o * t + "px") }), u.state.currentScreen.set(u.state.currentScreen.get() + o)) }) }, a = function(r) { var n = nu(r.element(), "input"); B.from(n[u.state.currentScreen.get()]).each(function(n) { r.getSystem().getByDom(n).each(function(n) { var e, t; e = r, t = n.element(), e.getSystem().triggerFocus(t, e.element()) }) }); var e = s.get(r); Eu.highlightAt(e, u.state.currentScreen.get()) }, c = sf(xl(function(t) { return { dom: ms('
    '), components: [Yf.sketch({ dom: ms('
    '), components: yn(u.fields, function(n, e) { return e <= u.maxFieldIndex ? Yf.sketch({ dom: ms('
    '), components: Dn([ [o(-1, "previous", 0 < e)], [t.field(n.name, n.spec)], [o(1, "next", e < u.maxFieldIndex)] ]) }) : t.field(n.name, n.spec) }) })], formBehaviours: qr([Di(function(n, e) { var t; t = e, ou(n.element(), "." + Mi.resolve("serialised-dialog-chain")).each(function(n) { _i.set(n, "left", -u.state.currentScreen.get() * t.width + "px") }) }), uc.config({ mode: "special", focusIn: function(n) { a(n) }, onTab: function(n) { return i(n, 1), B.some(!0) }, onShiftTab: function(n) { return i(n, -1), B.some(!0) } }), Wf("form-events", [Cr(function(e, n) { u.state.currentScreen.set(0), u.state.dialogSwipeState.clear(); var t = s.get(e); Eu.highlightFirst(t), u.getInitialValue(e).each(function(n) { Ws.setValue(e, n) }) }), Dr(u.onExecute), wr(J(), function(n, e) { "left" === e.event().raw().propertyName && a(n) }), wr(r, function(n, e) { var t = e.event().direction(); i(n, t) })])]) } })), s = sf({ dom: ms('
    '), behaviours: qr([Eu.config({ highlightClass: Mi.resolve("dot-active"), itemClass: Mi.resolve("dot-item") })]), components: An(u.fields, function(n, e) { return e <= u.maxFieldIndex ? [gs('
    ')] : [] }) }); return { dom: ms('
    '), components: [c.asSpec(), s.asSpec()], behaviours: qr([uc.config({ mode: "special", focusIn: function(n) { var e = c.get(n); uc.focusIn(e) } }), Wf("serializer-wrapper-events", [wr(L(), function(n, e) { var t = e.event(); u.state.dialogSwipeState.set(Ol(t.touches[0].clientX)) }), wr(U(), function(n, e) { var t = e.event(); u.state.dialogSwipeState.on(function(n) { e.event().prevent(), u.state.dialogSwipeState.set(Cl(n, t.raw().touches[0].clientX)) }) }), wr(P(), function(r) { u.state.dialogSwipeState.on(function(n) { var e = c.get(r), t = -1 * kl(n); i(e, t) }) })])]) } }, Dl = Z(function(t, r) { return [{ label: "the link group", items: [El({ fields: [ol("url", "Type or paste URL"), ol("text", "Link text"), ol("title", "Link title"), ol("target", "Link target"), (n = "link", { name: n, spec: Xf.sketch({ dom: { tag: "span", styles: { display: "none" } }, getInitialValue: function() { return B.none() } }) })], maxFieldIndex: ["url", "text", "title", "target"].length - 1, getInitialValue: function() { return B.some(Lf.getInfo(r)) }, onExecute: function(n) { var e = Ws.getValue(n); Lf.applyInfo(r, e), t.restoreToolbar(), r.focus() } })] }]; var n }), Al = [{ title: "Headings", items: [{ title: "Heading 1", format: "h1" }, { title: "Heading 2", format: "h2" }, { title: "Heading 3", format: "h3" }, { title: "Heading 4", format: "h4" }, { title: "Heading 5", format: "h5" }, { title: "Heading 6", format: "h6" }] }, { title: "Inline", items: [{ title: "Bold", icon: "bold", format: "bold" }, { title: "Italic", icon: "italic", format: "italic" }, { title: "Underline", icon: "underline", format: "underline" }, { title: "Strikethrough", icon: "strikethrough", format: "strikethrough" }, { title: "Superscript", icon: "superscript", format: "superscript" }, { title: "Subscript", icon: "subscript", format: "subscript" }, { title: "Code", icon: "code", format: "code" }] }, { title: "Blocks", items: [{ title: "Paragraph", format: "p" }, { title: "Blockquote", format: "blockquote" }, { title: "Div", format: "div" }, { title: "Pre", format: "pre" }] }, { title: "Alignment", items: [{ title: "Left", icon: "alignleft", format: "alignleft" }, { title: "Center", icon: "aligncenter", format: "aligncenter" }, { title: "Right", icon: "alignright", format: "alignright" }, { title: "Justify", icon: "alignjustify", format: "alignjustify" }] }], Rl = br([(Sf = Gn(), Of = function(n, e) { var t, r, o = e.event().originator(), i = e.event().target(); return r = i, !(ze(t = o, n.element()) && !ze(t, r) && (console.warn(Gn() + " did not get interpreted by the desired target. \nOriginator: " + qo(o) + "\nTarget: " + qo(i) + "\nCheck the " + Gn() + " event handlers"), 1)) }, { key: Sf, value: pr({ can: Of }) })]), Ml = Object.freeze({ events: Rl }), Il = h, Nl = Wr(["debugInfo", "triggerFocus", "triggerEvent", "triggerEscape", "addToWorld", "removeFromWorld", "addToGui", "removeFromGui", "build", "getByUid", "getByDom", "broadcast", "broadcastOn", "isConnected"]), Bl = function(e) { var n = function(n) { return function() { throw new Error("The component must be in a context to send: " + n + "\n" + qo(e().element()) + " is not in context.") } }; return Nl({ debugInfo: E("fake"), triggerEvent: n("triggerEvent"), triggerFocus: n("triggerFocus"), triggerEscape: n("triggerEscape"), build: n("build"), addToWorld: n("addToWorld"), removeFromWorld: n("removeFromWorld"), addToGui: n("addToGui"), removeFromGui: n("removeFromGui"), getByUid: n("getByUid"), getByDom: n("getByDom"), broadcast: n("broadcast"), broadcastOn: n("broadcastOn"), isConnected: E(!1) }) }, Fl = function(n, o) { var i = {}; return V(n, function(n, r) { V(n, function(n, e) { var t = Ct(e, [])(i); i[e] = t.concat([o(r, n)]) }) }), i }, Vl = function(n, e) { return 1 < n.length ? at.error('Multiple behaviours have tried to change DOM "' + e + '". The guilty behaviours are: ' + Bt(yn(n, function(n) { return n.name() })) + ". At this stage, this is not supported. Future releases might provide strategies for resolving this.") : 0 === n.length ? at.value({}) : at.value(n[0].modification().fold(function() { return {} }, function(n) { return Et(e, n) })) }, Hl = function(u, a) { return Sn(u, function(n, e) { var t = e.modification().getOr({}); return n.bind(function(i) { var n = j(t, function(n, e) { return i[e] !== undefined ? (t = a, r = e, o = u, at.error("Mulitple behaviours have tried to change the _" + r + '_ "' + t + '". The guilty behaviours are: ' + Bt(An(o, function(n) { return n.modification().getOr({})[r] !== undefined ? [n.name()] : [] }), null, 2) + ". This is not currently supported.")) : at.value(Et(e, n)); var t, r, o }); return At(n, i) }) }, at.value({})).map(function(n) { return Et(a, n) }) }, zl = { classes: function(n, e) { var t = An(n, function(n) { return n.modification().getOr([]) }); return at.value(Et(e, t)) }, attributes: Hl, styles: Hl, domChildren: Vl, defChildren: Vl, innerHtml: Vl, value: Vl }, jl = function(n, e) { return t = l.apply(undefined, [n.handler].concat(e)), r = n.purpose(), { cHandler: t, purpose: E(r) }; var t, r }, Ll = function(n) { return n.cHandler }, Ul = function(n, e) { return { name: E(n), handler: E(e) } }, Pl = function(n, e, t) { var r, o, i = C(t, (r = n, o = {}, wn(e, function(n) { o[n.name()] = n.handlers(r) }), o)); return Fl(i, Ul) }, _l = function(n) { var e, i = w(e = n) ? { can: E(!0), abort: E(!1), run: e } : e; return function(n, e) { for (var t = [], r = 2; r < arguments.length; r++) t[r - 2] = arguments[r]; var o = [n, e].concat(t); i.abort.apply(undefined, o) ? e.stop() : i.can.apply(undefined, o) && i.run.apply(undefined, o) } }, Wl = function(n, e, t) { var r, o, i = e[t]; return i ? function(u, a, n, c) { var e = n.slice(0); try { var t = e.sort(function(n, e) { var t = n[a](), r = e[a](), o = c.indexOf(t), i = c.indexOf(r); if (-1 === o) throw new Error("The ordering for " + u + " does not have an entry for " + t + ".\nOrder specified: " + Bt(c, null, 2)); if (-1 === i) throw new Error("The ordering for " + u + " does not have an entry for " + r + ".\nOrder specified: " + Bt(c, null, 2)); return o < i ? -1 : i < o ? 1 : 0 }); return at.value(t) } catch (r) { return at.error([r]) } }("Event: " + t, "name", n, i).map(function(n) { var e = yn(n, function(n) { return n.handler() }); return hr(e) }) : (r = t, o = n, at.error(["The event (" + r + ') has more than one behaviour that listens to it.\nWhen this occurs, you must specify an event ordering for the behaviours in your spec (e.g. [ "listing", "toggling" ]).\nThe behaviours that can trigger it are: ' + Bt(yn(o, function(n) { return n.name() }), null, 2)])) }, $l = function(n, i) { var e = j(n, function(r, o) { return (1 === r.length ? at.value(r[0].handler()) : Wl(r, i, o)).map(function(n) { var e = _l(n), t = 1 < r.length ? xn(i, function(e) { return hn(r, function(n) { return n.name() === e }) }).join(" > ") : r[0].name(); return Et(o, { handler: e, purpose: E(t) }) }) }); return At(e, {}) }, Gl = function(n) { return Qt("custom.definition", Pt([qt("dom", "dom", lt(), Pt([ur("tag"), mr("styles", {}), mr("classes", []), mr("attributes", {}), fr("value"), fr("innerHtml")])), ur("components"), ur("uid"), mr("events", {}), mr("apis", E({})), qt("eventOrder", "eventOrder", (e = { "alloy.execute": ["disabling", "alloy.base.behaviour", "toggling"], "alloy.focus": ["alloy.base.behaviour", "focusing", "keying"], "alloy.system.init": ["alloy.base.behaviour", "disabling", "toggling", "representing"], input: ["alloy.base.behaviour", "representing", "streaming", "invalidating"], "alloy.system.detached": ["alloy.base.behaviour", "representing"] }, st.mergeWithThunk(E(e))), or()), fr("domModification"), di("originalSpec"), mr("debug.sketcher", "unknown")]), n); var e }, ql = function(n) { var e, t = { tag: n.dom().tag(), classes: n.dom().classes(), attributes: C((e = n, Et(Jc(), e.uid())), n.dom().attributes()), styles: n.dom().styles(), domChildren: yn(n.components(), function(n) { return n.element() }) }; return Mr(C(t, n.dom().innerHtml().map(function(n) { return Et("innerHtml", n) }).getOr({}), n.dom().value().map(function(n) { return Et("value", n) }).getOr({}))) }, Yl = function(e, n) { wn(n, function(n) { bo.add(e, n) }) }, Xl = function(e, n) { wn(n, function(n) { bo.remove(e, n) }) }, Kl = function(e) { if (e.domChildren().isSome() && e.defChildren().isSome()) throw new Error("Cannot specify children and child specs! Must be one or the other.\nDef: " + (n = Ir(e), Bt(n, null, 2))); return e.domChildren().fold(function() { var n = e.defChildren().getOr([]); return yn(n, Ql) }, function(n) { return n }); var n }, Jl = function(n) { var e = fe.fromTag(n.tag()); ro.setAll(e, n.attributes().getOr({})), Yl(e, n.classes().getOr([])), _i.setAll(e, n.styles().getOr({})), _o(e, n.innerHtml().getOr("")); var t = Kl(n); return Ke(e, t), n.value().each(function(n) { Kf(e, n) }), e }, Ql = function(n) { var e = Mr(n); return Jl(e) }, Zl = function(n, e) { return t = n, o = yn(r = e, function(n) { return lr(n.name(), [ur("config"), mr("state", $r)]) }), i = Qt("component.behaviours", _t(o), t.behaviours).fold(function(n) { throw new Error(tr(n) + "\nComplete spec:\n" + Bt(t, null, 2)) }, function(n) { return n }), { list: r, data: H(i, function(n) { var e = n().map(function(n) { return { config: n.config(), state: n.state().init(n.config()) } }); return function() { return e } }) }; var t, r, o, i }, nd = function(n) { var e, t, r = (e = kt(n, "behaviours").getOr({}), t = xn(F(e), function(n) { return e[n] !== undefined }), yn(t, function(n) { return e[n].me })); return Zl(n, r) }, ed = Wr(["getSystem", "config", "hasConfigured", "spec", "connect", "disconnect", "element", "syncComponents", "readState", "components", "events"]), td = function(n, e, t) { var r, o, i, u, a = ql(n), c = function(e, n, t, r) { var o = C({}, n); wn(t, function(n) { o[n.name()] = n.exhibit(e, r) }); var i = Fl(o, function(n, e) { return { name: function() { return n }, modification: e } }), u = H(i, function(n, e) { return An(n, function(e) { return e.modification().fold(function() { return [] }, function(n) { return [e] }) }) }), a = j(u, function(e, t) { return kt(zl, t).fold(function() { return at.error("Unknown field type: " + t) }, function(n) { return n(e, t) }) }); return At(a, {}).map(Nr) }(t, { "alloy.base.modification": (r = n, r.domModification().fold(function() { return Nr({}) }, Nr)) }, e, a).getOrDie(); return i = c, u = C({ tag: (o = a).tag(), classes: i.classes().getOr([]).concat(o.classes().getOr([])), attributes: D(o.attributes().getOr({}), i.attributes().getOr({})), styles: D(o.styles().getOr({}), i.styles().getOr({})) }, i.innerHtml().or(o.innerHtml()).map(function(n) { return Et("innerHtml", n) }).getOr({}), Br("domChildren", i.domChildren(), o.domChildren()), Br("defChildren", i.defChildren(), o.defChildren()), i.value().or(o.value()).map(function(n) { return Et("value", n) }).getOr({})), Mr(u) }, rd = function(n, e, t) { var r, o, i, u, a, c, s = { "alloy.base.behaviour": (r = n, r.events()) }; return (o = t, i = n.eventOrder(), u = e, a = s, c = Pl(o, u, a), $l(c, i)).getOrDie() }, od = function(n) { var e, t, r, o, i, u, a, c, s, f, l, d, m, g, v = Il(n), p = (e = v, t = Ct("components", [])(e), yn(t, ad)), h = C(Ml, v, Et("components", p)); return at.value((r = h, i = So(Bl(o = function() { return g })), u = Zt(Gl(C(r, { behaviours: undefined }))), a = nd(r), c = a.list, s = a.data, f = td(u, c, s), l = Jl(f), d = rd(u, c, s), m = So(u.components()), g = ed({ getSystem: i.get, config: function(n) { if (n === Xc()) return u.apis(); if (b(n)) throw new Error("Invalid input: only API constant is allowed"); var e = s; return (w(e[n.name()]) ? e[n.name()] : function() { throw new Error("Could not find " + n.name() + " in " + Bt(r, null, 2)) })() }, hasConfigured: function(n) { return w(s[n.name()]) }, spec: E(r), readState: function(n) { return s[n]().map(function(n) { return n.state.readState() }).getOr("not enabled") }, connect: function(n) { i.set(n) }, disconnect: function() { i.set(Bl(o)) }, element: E(l), syncComponents: function() { var n = $e.children(l), e = An(n, function(n) { return i.get().getByDom(n).fold(function() { return [] }, function(n) { return [n] }) }); m.set(e) }, components: m.get, events: E(d) }))) }, id = function(n) { var e = fe.fromText(n); return ud({ element: e }) }, ud = function(n) { var t = er("external.component", Pt([ur("element"), fr("uid")]), n), e = So(Bl()); t.uid().each(function(n) { var e; e = t.element(), ro.set(e, Zc, n) }); var r = ed({ getSystem: e.get, config: B.none, hasConfigured: E(!1), connect: function(n) { e.set(n) }, disconnect: function() { e.set(Bl(function() { return r })) }, element: E(t.element()), spec: E(n), readState: E("No state"), syncComponents: k, components: E([]), events: E({}) }); return qc(r) }, ad = function(e) { return (n = e, kt(n, $c)).fold(function() { var n = C({ uid: es("") }, e); return od(n).getOrDie() }, function(n) { return n }); var n }, cd = qc, sd = "alloy.item-hover", fd = "alloy.item-focus", ld = function(n) { (Fo(n.element()).isNone() || Vi.isFocused(n)) && (Vi.isFocused(n) || Vi.focus(n), ie(n, sd, { item: n })) }, dd = function(n) { ie(n, fd, { item: n }) }, md = E(sd), gd = E(fd), vd = [ur("data"), ur("components"), ur("dom"), fr("toggling"), mr("itemBehaviours", {}), mr("ignoreFocus", !1), mr("domModification", {}), li("builder", function(n) { return { dom: C(n.dom(), { attributes: { role: n.toggling().isSome() ? "menuitemcheckbox" : "menuitem" } }), behaviours: C(qr([n.toggling().fold(ki.revoke, function(n) { return ki.config(C({ aria: { mode: "checked" } }, n)) }), Vi.config({ ignore: n.ignoreFocus(), onFocus: function(n) { dd(n) } }), uc.config({ mode: "execution" }), Ws.config({ store: { mode: "memory", initialValue: n.data() } })]), n.itemBehaviours()), events: br([(e = Qn(), r = ue, wr(e, function(e, t) { var n = t.event(); e.getSystem().getByDom(n.target()).each(function(n) { r(e, n, t) }) })), Or(_()), wr(G(), ld), wr(Kn(), Vi.focus)]), components: n.components(), domModification: n.domModification(), eventOrder: n.eventOrder() }; var e, r }), mr("eventOrder", {})], pd = [ur("dom"), ur("components"), li("builder", function(n) { return { dom: n.dom(), components: n.components(), events: br([(e = Kn(), wr(e, function(n, e) { e.stop() }))]) }; var e })], hd = E([Ic({ name: "widget", overrides: function(e) { return { behaviours: qr([Ws.config({ store: { mode: "manual", getValue: function(n) { return e.data() }, setValue: function() {} } })]) } } })]), bd = [ur("uid"), ur("data"), ur("components"), ur("dom"), mr("autofocus", !1), mr("domModification", {}), Wc(hd()), li("builder", function(t) { var n = jc(0, t, hd()), e = Lc("item-widget", t, n.internals()), r = function(n) { return Uc(n, t, "widget").map(function(n) { return uc.focusIn(n), n }) }, o = function(n, e) { return Nu(e.event().target()) || t.autofocus() && e.setSource(n.element()), B.none() }; return C({ dom: t.dom(), components: e, domModification: t.domModification(), events: br([Dr(function(n, e) { r(n).each(function(n) { e.stop() }) }), wr(G(), ld), wr(Kn(), function(n, e) { t.autofocus() ? r(n) : Vi.focus(n) })]), behaviours: qr([Ws.config({ store: { mode: "memory", initialValue: t.data() } }), Vi.config({ onFocus: function(n) { dd(n) } }), uc.config({ mode: "special", focusIn: t.autofocus() ? function(n) { r(n) } : Jr(), onLeft: o, onRight: o, onEscape: function(n, e) { return Vi.isFocused(n) || t.autofocus() ? (t.autofocus() && e.setSource(n.element()), B.none()) : (Vi.focus(n), B.some(!0)) } })]) }) })], yd = rr("type", { widget: bd, item: vd, separator: pd }), wd = E([Bc({ factory: { sketch: function(n) { var e = er("menu.spec item", yd, n); return e.builder()(e) } }, name: "items", unit: "item", defaults: function(n, e) { var t = es(""); return C({ uid: t }, e) }, overrides: function(n, e) { return { type: e.type, ignoreFocus: n.fakeFocus(), domModification: { classes: [n.markers().item()] } } } })]), xd = E([ur("value"), ur("items"), ur("dom"), ur("components"), mr("eventOrder", {}), ac("menuBehaviours", [Eu, Ws, qf, uc]), gr("movement", { mode: "menu", moveOnTab: !0 }, rr("mode", { grid: [mi(), li("config", function(n, e) { return { mode: "flatgrid", selector: "." + n.markers().item(), initSize: { numColumns: e.initSize().numColumns(), numRows: e.initSize().numRows() }, focusManager: n.focusManager() } })], menu: [mr("moveOnTab", !0), li("config", function(n, e) { return { mode: "menu", selector: "." + n.markers().item(), moveOnTab: e.moveOnTab(), focusManager: n.focusManager() } })] })), ar("markers", oi()), mr("fakeFocus", !1), mr("focusManager", Du()), ai("onHighlight")]), Td = E("alloy.menu-focus"), Sd = cs({ name: "Menu", configFields: xd(), partFields: wd(), factory: function(n, e, t, r) { return C({ dom: C(n.dom(), { attributes: { role: "menu" } }), uid: n.uid(), behaviours: C(qr([Eu.config({ highlightClass: n.markers().selectedItem(), itemClass: n.markers().item(), onHighlight: n.onHighlight() }), Ws.config({ store: { mode: "memory", initialValue: n.value() } }), qf.config({ find: B.some }), uc.config(n.movement().config()(n, n.movement()))]), cc(n.menuBehaviours())), events: br([wr(gd(), function(e, t) { var n = t.event(); e.getSystem().getByDom(n.target()).each(function(n) { Eu.highlight(e, n), t.stop(), ie(e, Td(), { menu: e, item: n }) }) }), wr(md(), function(n, e) { var t = e.event().item(); Eu.highlight(n, t) })]), components: e, eventOrder: n.eventOrder() }) } }), Od = function(n, e, t, r) { var o = n.getSystem().build(r); tt(n, o, t) }, Cd = function(n, e) { return n.components() }, kd = Object.freeze({ append: function(n, e, t, r) { Od(n, 0, Ye.append, r) }, prepend: function(n, e, t, r) { Od(n, 0, Ye.prepend, r) }, remove: function(n, e, t, r) { var o = Cd(n, e); On(o, function(n) { return ze(r.element(), n.element()) }).each(ot) }, set: function(e, n, t, r) { var o, i, u, a, c, s; i = (o = e).components(), wn(i, rt), Qe.empty(o.element()), o.syncComponents(), u = function() { var n = yn(r, e.getSystem().build); wn(n, function(n) { et(e, n) }) }, a = e.element(), c = $e.owner(a), s = Bo(c).bind(function(e) { var n = function(n) { return ze(e, n) }; return n(a) ? B.some(a) : Do.descendant(a, n) }), u(a), s.each(function(e) { Bo(c).filter(function(n) { return ze(n, e) }).fold(function() { Io(e) }, k) }) }, contents: Cd }), Ed = Xr({ fields: [], name: "replacing", apis: kd }), Dd = function(t, r, o, n) { return kt(o, n).bind(function(n) { return kt(t, n).bind(function(n) { var e = Dd(t, r, o, n); return B.some([n].concat(e)) }) }).getOr([]) }, Ad = function(n, e) { var t = {}; V(n, function(n, e) { wn(n, function(n) { t[n] = e }) }); var r = e, o = z(e, function(n, e) { return { k: n, v: e } }), i = H(o, function(n, e) { return [e].concat(Dd(t, r, o, e)) }); return H(t, function(n) { return kt(i, n).getOr([n]) }) }, Rd = function() { var i = So({}), u = So({}), a = So({}), c = So(B.none()), s = So({}), n = function(n) { return kt(u.get(), n) }; return { setContents: function(n, e, t, r) { c.set(B.some(n)), i.set(t), u.set(e), s.set(r); var o = Ad(r, t); a.set(o) }, expand: function(t) { return kt(i.get(), t).map(function(n) { var e = kt(a.get(), t).getOr([]); return [n].concat(e) }) }, refresh: function(n) { return kt(a.get(), n) }, collapse: function(n) { return kt(a.get(), n).bind(function(n) { return 1 < n.length ? B.some(n.slice(1)) : B.none() }) }, lookupMenu: n, otherMenus: function(n) { var e, t, r = s.get(); return e = F(r), t = n, xn(e, function(n) { return !hn(t, n) }) }, getPrimary: function() { return c.get().bind(n) }, getMenus: function() { return u.get() }, clear: function() { i.set({}), u.set({}), a.set({}), c.set(B.none()) }, isClear: function() { return c.get().isNone() } } }, Md = E("collapse-item"), Id = as({ name: "TieredMenu", configFields: [fi("onExecute"), fi("onEscape"), si("onOpenMenu"), si("onOpenSubmenu"), ai("onCollapseMenu"), mr("openImmediately", !0), sr("data", [ur("primary"), ur("menus"), ur("expansions")]), mr("fakeFocus", !1), ai("onHighlight"), ai("onHover"), sr("markers", [ur("backgroundMenu")].concat(ti()).concat(ri())), ur("dom"), mr("navigateOnHover", !0), mr("stayInDom", !1), ac("tmenuBehaviours", [uc, Eu, qf, Ed]), mr("eventOrder", {})], apis: { collapseMenu: function(n, e) { n.collapseMenu(e) } }, factory: function(u, o) { var i = function(r, n) { return H(n, function(n, e) { var t = Sd.sketch(C(n, { value: e, items: n.items, markers: Tt(o.markers, ["item", "selectedItem"]), fakeFocus: u.fakeFocus(), onHighlight: u.onHighlight(), focusManager: u.fakeFocus() ? { get: function(n) { return Eu.getHighlighted(n).map(function(n) { return n.element() }) }, set: function(e, n) { e.getSystem().getByDom(n).fold(k, function(n) { Eu.highlight(e, n) }) } } : Du() })); return r.getSystem().build(t) }) }, a = Rd(), c = function(n) { return Ws.getValue(n).value }, s = function(n) { return H(u.data().menus(), function(n, e) { return An(n.items, function(n) { return "separator" === n.type ? [] : [n.data.value] }) }) }, f = function(e, n) { Eu.highlight(e, n), Eu.getHighlighted(n).orThunk(function() { return Eu.getFirst(n) }).each(function(n) { ae(e, n.element(), Kn()) }) }, l = function(n, e) { return Xo(yn(e, n.lookupMenu)) }, d = function(r, o, i) { return B.from(i[0]).bind(o.lookupMenu).map(function(n) { var e = l(o, i.slice(1)); wn(e, function(n) { bo.add(n.element(), u.markers().backgroundMenu()) }), xe.inBody(n.element()) || Ed.append(r, cd(n)), Xl(n.element(), [u.markers().backgroundMenu()]), f(r, n); var t = l(o, o.otherMenus(i)); return wn(t, function(n) { Xl(n.element(), [u.markers().backgroundMenu()]), u.stayInDom() || Ed.remove(r, n) }), n }) }, m = function(e, t) { var n = c(t); return a.expand(n).bind(function(n) { return B.from(n[0]).bind(a.lookupMenu).each(function(n) { xe.inBody(n.element()) || Ed.append(e, cd(n)), u.onOpenSubmenu()(e, t, n), Eu.highlightFirst(n) }), d(e, a, n) }) }, r = function(e, t) { var n = c(t); return a.collapse(n).bind(function(n) { return d(e, a, n).map(function(n) { return u.onCollapseMenu()(e, t, n), n }) }) }, n = function(t) { return function(e, n) { return iu(n.getSource(), "." + u.markers().item()).bind(function(n) { return e.getSystem().getByDom(n).toOption().bind(function(n) { return t(e, n).map(function() { return !0 }) }) }) } }, e = br([wr(Td(), function(n, e) { var t = e.event().menu(); Eu.highlight(n, t) }), Dr(function(e, n) { var t = n.event().target(); e.getSystem().getByDom(t).each(function(n) { 0 === c(n).indexOf("collapse-item") && r(e, n), m(e, n).fold(function() { u.onExecute()(e, n) }, function() {}) }) }), Cr(function(e, n) { var t, r, o; (t = e, r = i(t, u.data().menus()), o = s(t), a.setContents(u.data().primary(), r, u.data().expansions(), o), a.getPrimary()).each(function(n) { Ed.append(e, cd(n)), u.openImmediately() && (f(e, n), u.onOpenMenu()(e, n)) }) })].concat(u.navigateOnHover() ? [wr(md(), function(n, e) { var t, r, o = e.event().item(); t = n, r = c(o), a.refresh(r).bind(function(n) { return d(t, a, n) }), m(n, o), u.onHover()(n, o) })] : [])); return { uid: u.uid(), dom: u.dom(), behaviours: C(qr([uc.config({ mode: "special", onRight: n(function(n, e) { return Nu(e.element()) ? B.none() : m(n, e) }), onLeft: n(function(n, e) { return Nu(e.element()) ? B.none() : r(n, e) }), onEscape: n(function(n, e) { return r(n, e).orThunk(function() { return u.onEscape()(n, e).map(function() { return n }) }) }), focusIn: function(e, n) { a.getPrimary().each(function(n) { ae(e, n.element(), Kn()) }) } }), Eu.config({ highlightClass: u.markers().selectedMenu(), itemClass: u.markers().menu() }), qf.config({ find: function(n) { return Eu.getHighlighted(n) } }), Ed.config({})]), cc(u.tmenuBehaviours())), eventOrder: u.eventOrder(), apis: { collapseMenu: function(e) { Eu.getHighlighted(e).each(function(n) { Eu.getHighlighted(n).each(function(n) { r(e, n) }) }) } }, events: e } }, extraApis: { tieredData: function(n, e, t) { return { primary: n, menus: e, expansions: t } }, singleData: function(n, e) { return { primary: n, menus: Et(n, e), expansions: {} } }, collapseItem: function(n) { return { value: bc(Md()), text: n } } } }), Nd = function(n, e, t, r) { return kt(e.routes(), r.start()).map(s).bind(function(n) { return kt(n, r.destination()).map(s) }) }, Bd = function(n, e, t, r) { return Nd(0, e, 0, r).bind(function(e) { return e.transition().map(function(n) { return { transition: E(n), route: E(e) } }) }) }, Fd = function(t, r, n) { var e, o, i; (e = t, o = r, i = n, Vd(e, o, i).bind(function(n) { return Bd(e, o, i, n) })).each(function(n) { var e = n.transition(); bo.remove(t.element(), e.transitionClass()), ro.remove(t.element(), r.destinationAttr()) }) }, Vd = function(n, e, t) { var r = n.element(); return ro.has(r, e.destinationAttr()) ? B.some({ start: E(ro.get(n.element(), e.stateAttr())), destination: E(ro.get(n.element(), e.destinationAttr())) }) : B.none() }, Hd = function(n, e, t, r) { Fd(n, e, t), ro.has(n.element(), e.stateAttr()) && ro.get(n.element(), e.stateAttr()) !== r && e.onFinish()(n, r), ro.set(n.element(), e.stateAttr(), r) }, zd = Object.freeze({ findRoute: Nd, disableTransition: Fd, getCurrentRoute: Vd, jumpTo: Hd, progressTo: function(t, r, o, i) { var n, e; e = r, ro.has((n = t).element(), e.destinationAttr()) && (ro.set(n.element(), e.stateAttr(), ro.get(n.element(), e.destinationAttr())), ro.remove(n.element(), e.destinationAttr())); var u, a, c = (u = r, a = i, { start: E(ro.get(t.element(), u.stateAttr())), destination: E(a) }); Bd(t, r, o, c).fold(function() { Hd(t, r, o, i) }, function(n) { Fd(t, r, o); var e = n.transition(); bo.add(t.element(), e.transitionClass()), ro.set(t.element(), r.destinationAttr(), i) }) }, getState: function(n, e, t) { var r = n.element(); return ro.has(r, e.stateAttr()) ? B.some(ro.get(r, e.stateAttr())) : B.none() } }), jd = Object.freeze({ events: function(o, i) { return br([wr(J(), function(t, n) { var r = n.event().raw(); Vd(t, o, i).each(function(e) { Nd(0, o, 0, e).each(function(n) { n.transition().each(function(n) { r.propertyName === n.property() && (Hd(t, o, i, e.destination()), o.onTransition()(t, e)) }) }) }) }), Cr(function(n, e) { Hd(n, o, i, o.initialState()) })]) } }), Ld = [mr("destinationAttr", "data-transitioning-destination"), mr("stateAttr", "data-transitioning-state"), ur("initialState"), ai("onTransition"), ai("onFinish"), ar("routes", Wt(at.value, Wt(at.value, Pt([dr("transition", [ur("property"), ur("transitionClass")])]))))], Ud = Xr({ fields: Ld, name: "transitioning", active: jd, apis: zd, extra: { createRoutes: function(n) { var r = {}; return V(n, function(n, e) { var t = e.split("<->"); r[t[0]] = Et(t[1], n), r[t[1]] = Et(t[0], n) }), r }, createBistate: function(n, e, t) { return Dt([{ key: n, value: Et(e, t) }, { key: e, value: Et(n, t) }]) }, createTristate: function(n, e, t, r) { return Dt([{ key: n, value: Dt([{ key: e, value: r }, { key: t, value: r }]) }, { key: e, value: Dt([{ key: n, value: r }, { key: t, value: r }]) }, { key: t, value: Dt([{ key: n, value: r }, { key: e, value: r }]) }]) } } }), Pd = Mi.resolve("scrollable"), _d = { register: function(n) { bo.add(n, Pd) }, deregister: function(n) { bo.remove(n, Pd) }, scrollable: E(Pd) }, Wd = function(n) { return kt(n, "format").getOr(n.title) }, $d = function(n, e, t, r, o) { return { data: { value: n, text: e }, type: "item", dom: { tag: "div", classes: o ? [Mi.resolve("styles-item-is-menu")] : [] }, toggling: { toggleOnExecute: !1, toggleClass: Mi.resolve("format-matches"), selected: t }, itemBehaviours: qr(o ? [] : [Ei(n, function(n, e) { (e ? ki.on : ki.off)(n) })]), components: [{ dom: { tag: "div", attributes: { style: r }, innerHtml: e } }] } }, Gd = function(n, e, t, r) { return { value: n, dom: { tag: "div" }, components: [ss.sketch({ dom: { tag: "div", classes: [Mi.resolve("styles-collapser")] }, components: r ? [{ dom: { tag: "span", classes: [Mi.resolve("styles-collapse-icon")] } }, id(n)] : [id(n)], action: function(n) { if (r) { var e = t().get(n); Id.collapseMenu(e) } } }), { dom: { tag: "div", classes: [Mi.resolve("styles-menu-items-container")] }, components: [Sd.parts().items({})], behaviours: qr([Wf("adhoc-scrollable-menu", [Cr(function(n, e) { _i.set(n.element(), "overflow-y", "auto"), _i.set(n.element(), "-webkit-overflow-scrolling", "touch"), _d.register(n.element()) }), kr(function(n) { _i.remove(n.element(), "overflow-y"), _i.remove(n.element(), "-webkit-overflow-scrolling"), _d.deregister(n.element()) })])]) }], items: e, menuBehaviours: qr([Ud.config({ initialState: "after", routes: Ud.createTristate("before", "current", "after", { transition: { property: "transform", transitionClass: "transitioning" } }) })]) } }, qd = function(r) { var o, i, n, e, t, u = (o = r.formats, i = function() { return a }, n = Gd("Styles", [].concat(yn(o.items, function(n) { return $d(Wd(n), n.title, n.isSelected(), n.getPreview(), Rt(o.expansions, Wd(n))) })), i, !1), e = H(o.menus, function(n, e) { var t = yn(n, function(n) { return $d(Wd(n), n.title, n.isSelected !== undefined && n.isSelected(), n.getPreview !== undefined ? n.getPreview() : "", Rt(o.expansions, Wd(n))) }); return Gd(e, t, i, !0) }), t = C(e, Et("styles", n)), { tmenu: Id.tieredData("styles", t, o.expansions) }), a = sf(Id.sketch({ dom: { tag: "div", classes: [Mi.resolve("styles-menu")] }, components: [], fakeFocus: !0, stayInDom: !0, onExecute: function(n, e) { var t = Ws.getValue(e); return r.handle(e, t.value), B.none() }, onEscape: function() { return B.none() }, onOpenMenu: function(n, e) { var t = Xs(n.element()); Ys(e.element(), t), Ud.jumpTo(e, "current") }, onOpenSubmenu: function(n, e, t) { var r = Xs(n.element()), o = ru(e.element(), '[role="menu"]').getOrDie("hacky"), i = n.getSystem().getByDom(o).getOrDie(); Ys(t.element(), r), Ud.progressTo(i, "before"), Ud.jumpTo(t, "after"), Ud.progressTo(t, "current") }, onCollapseMenu: function(n, e, t) { var r = ru(e.element(), '[role="menu"]').getOrDie("hacky"), o = n.getSystem().getByDom(r).getOrDie(); Ud.progressTo(o, "after"), Ud.progressTo(t, "current") }, navigateOnHover: !1, openImmediately: !0, data: u.tmenu, markers: { backgroundMenu: Mi.resolve("styles-background-menu"), menu: Mi.resolve("styles-menu"), selectedMenu: Mi.resolve("styles-selected-menu"), item: Mi.resolve("styles-item"), selectedItem: Mi.resolve("styles-selected-item") } })); return a.asSpec() }, Yd = function(n) { return Rt(n, "items") ? (t = C(St(e = n, ["items"]), { menu: !0 }), r = Xd(e.items), { item: t, menus: C(r.menus, Et(e.title, r.items)), expansions: C(r.expansions, Et(e.title, e.title)) }) : { item: n, menus: {}, expansions: {} }; var e, t, r }, Xd = function(n) { return Tn(n, function(n, e) { var t = Yd(e); return { menus: C(n.menus, t.menus), items: [t.item].concat(n.items), expansions: C(n.expansions, t.expansions) } }, { menus: {}, expansions: {}, items: [] }) }, Kd = { expand: Xd }, Jd = function(u, n) { var a = function(n) { return function() { return u.formatter.match(n) } }, c = function(n) { return function() { return u.formatter.getCssText(n) } }, e = kt(n, "style_formats").getOr(Al), s = function(n) { return yn(n, function(n) { if (Rt(n, "items")) { var e = s(n.items); return C(C(n, { isSelected: E(!1), getPreview: E("") }), { items: e }) } return Rt(n, "format") ? C(i = n, { isSelected: a(i.format), getPreview: c(i.format) }) : (r = bc((t = n).title), o = C(t, { format: r, isSelected: a(r), getPreview: c(r) }), u.formatter.register(r, o), o); var t, r, o, i }) }; return s(e) }, Qd = function(t, n, r) { var e, o, i, u = (e = t, i = (o = function(n) { return An(n, function(n) { return n.items !== undefined ? 0 < o(n.items).length ? [n] : [] : !Rt(n, "format") || e.formatter.canApply(n.format) ? [n] : [] }) })(n), Kd.expand(i)); return qd({ formats: u, handle: function(n, e) { t.undoManager.transact(function() { ki.isOn(n) ? t.formatter.remove(e) : t.formatter.apply(e) }), r() } }) }, Zd = ["undo", "bold", "italic", "link", "image", "bullist", "styleselect"], nm = function(n) { var e = n.replace(/\|/g, " ").trim(); return 0 < e.length ? e.split(/\s+/) : [] }, em = function(n) { return An(n, function(n) { return p(n) ? em(n) : nm(n) }) }, tm = function(n) { var e = n.toolbar !== undefined ? n.toolbar : Zd; return p(e) ? em(e) : nm(e) }, rm = function(r, o) { var n = function(n) { return function() { return hs.forToolbarCommand(o, n) } }, e = function(n) { return function() { return hs.forToolbarStateCommand(o, n) } }, t = function(n, e, t) { return function() { return hs.forToolbarStateAction(o, n, e, t) } }, i = n("undo"), u = n("redo"), a = e("bold"), c = e("italic"), s = e("underline"), f = n("removeformat"), l = t("unlink", "link", function() { o.execCommand("unlink", null, !1) }), d = t("unordered-list", "ul", function() { o.execCommand("InsertUnorderedList", null, !1) }), m = t("ordered-list", "ol", function() { o.execCommand("InsertOrderedList", null, !1) }), g = Jd(o, o.settings), v = function() { return Qd(o, g, function() { o.fire("scrollIntoView") }) }, p = function(n, e) { return { isSupported: function() { return n.forall(function(n) { return Rt(o.buttons, n) }) }, sketch: e } }; return { undo: p(B.none(), i), redo: p(B.none(), u), bold: p(B.none(), a), italic: p(B.none(), c), underline: p(B.none(), s), removeformat: p(B.none(), f), link: p(B.none(), function() { return e = r, t = o, hs.forToolbarStateAction(t, "link", "link", function() { var n = Dl(e, t); e.setContextToolbar(n), _f(t, function() { e.focusToolbar() }), Lf.query(t).each(function(n) { t.selection.select(n.dom()) }) }); var e, t }), unlink: p(B.none(), l), image: p(B.none(), function() { return Nf(o) }), bullist: p(B.some("bullist"), d), numlist: p(B.some("numlist"), m), fontsizeselect: p(B.none(), function() { return e = o, n = { onChange: function(n) { uf.apply(e, n) }, getInitialValue: function() { return uf.get(e) } }, Qs(r, "font-size", function() { return cf(n) }); var e, n }), forecolor: p(B.none(), function() { return nf(r, o) }), styleselect: p(B.none(), function() { return hs.forToolbar("style-formats", function(n) { o.fire("toReading"), r.dropup().appear(v, ki.on, n) }, qr([ki.config({ toggleClass: Mi.resolve("toolbar-button-selected"), toggleOnExecute: !1, aria: { mode: "pressed" } }), vi.config({ channels: Dt([Ai(jo.orientationChanged(), ki.off), Ai(jo.dropupDismissed(), ki.off)]) })])) }) } }, om = function(n, t) { var e = tm(n), r = {}; return An(e, function(n) { var e = !Rt(r, n) && Rt(t, n) && t[n].isSupported() ? [t[n].sketch()] : []; return r[n] = !0, e }) }, im = function(m, g) { return function(n) { if (m(n)) { var e, t, r, o, i, u, a, c = fe.fromDom(n.target), s = function() { n.stopPropagation() }, f = function() { n.preventDefault() }, l = v(f, s), d = (e = c, t = n.clientX, r = n.clientY, o = s, i = f, u = l, a = n, { target: E(e), x: E(t), y: E(r), stop: o, prevent: i, kill: u, raw: E(a) }); g(d) } } }, um = function(n, e, t, r, o) { var i = im(t, r); return n.dom().addEventListener(e, i, o), { unbind: l(am, n, e, i, o) } }, am = function(n, e, t, r) { n.dom().removeEventListener(e, t, r) }, cm = function(n, e, t, r) { return um(n, e, t, r, !1) }, sm = function(n, e, t, r) { return um(n, e, t, r, !0) }, fm = E(!0), lm = function(n, e, t) { return cm(n, e, fm, t) }, dm = function(n, e, t) { return sm(n, e, fm, t) }, mm = function(n) { var e = n.matchMedia("(orientation: portrait)").matches; return { isPortrait: E(e) } }, gm = mm, vm = function(r, e) { var n = fe.fromDom(r), o = null, t = lm(n, "orientationchange", function() { clearInterval(o); var n = mm(r); e.onChange(n), i(function() { e.onReady(n) }) }), i = function(n) { clearInterval(o); var e = r.innerHeight, t = 0; o = setInterval(function() { e !== r.innerHeight ? (clearInterval(o), n(B.some(r.innerHeight))) : 20 < t && (clearInterval(o), n(B.none())), t++ }, 50) }; return { onAdjustment: i, destroy: function() { t.unbind() } } }, pm = function(n) { var e = Wn.detect().os.isiOS(), t = mm(n).isPortrait(); return e && !t ? n.screen.height : n.screen.width }, hm = function(n) { var e = n.raw(); return e.touches === undefined || 1 !== e.touches.length ? B.none() : B.some(e.touches[0]) }, bm = function(t) { var r, o, i, u = So(B.none()), a = (r = function(n) { u.set(B.none()), t.triggerEvent(Zn(), n) }, o = 400, i = null, { cancel: function() { null !== i && (clearTimeout(i), i = null) }, schedule: function() { for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e]; i = setTimeout(function() { r.apply(null, n), i = null }, o) } }), c = Dt([{ key: L(), value: function(t) { return hm(t).each(function(n) { a.cancel(); var e = { x: E(n.clientX), y: E(n.clientY), target: t.target }; a.schedule(t), u.set(B.some(e)) }), B.none() } }, { key: U(), value: function(n) { return a.cancel(), hm(n).each(function(i) { u.get().each(function(n) { var e, t, r, o; e = i, t = n, r = Math.abs(e.clientX - t.x()), o = Math.abs(e.clientY - t.y()), (5 < r || 5 < o) && u.set(B.none()) }) }), B.none() } }, { key: P(), value: function(e) { return a.cancel(), u.get().filter(function(n) { return ze(n.target(), e.target()) }).map(function(n) { return t.triggerEvent(Jn(), e) }) } }]); return { fireIfReady: function(e, n) { return kt(c, n).bind(function(n) { return n(e) }) } } }, ym = function(t) { var e = bm({ triggerEvent: function(n, e) { t.onTapContent(e) } }); return { fireTouchstart: function(n) { e.fireIfReady(n, "touchstart") }, onTouchend: function() { return lm(t.body(), "touchend", function(n) { e.fireIfReady(n, "touchend") }) }, onTouchmove: function() { return lm(t.body(), "touchmove", function(n) { e.fireIfReady(n, "touchmove") }) } } }, wm = 6 <= Wn.detect().os.version.major, xm = function(r, e, t) { var o = ym(r), i = $e.owner(e), u = function(n) { return !ze(n.start(), n.finish()) || n.soffset() !== n.foffset() }, n = function() { var n = r.doc().dom().hasFocus() && r.getSelection().exists(u); t.getByDom(e).each(!0 === (n || Bo(i).filter(function(n) { return "input" === be.name(n) }).exists(function(n) { return n.dom().selectionStart !== n.dom().selectionEnd })) ? ki.on : ki.off) }, a = [lm(r.body(), "touchstart", function(n) { r.onTouchContent(), o.fireTouchstart(n) }), o.onTouchmove(), o.onTouchend(), lm(e, "touchstart", function(n) { r.onTouchToolstrip() }), r.onToReading(function() { No(r.body()) }), r.onToEditing(k), r.onScrollToCursor(function(n) { n.preventDefault(), r.getCursorBox().each(function(n) { var e = r.win(), t = n.top() > e.innerHeight || n.bottom() > e.innerHeight ? n.bottom() - e.innerHeight + 50 : 0; 0 !== t && e.scrollTo(e.pageXOffset, e.pageYOffset + t) }) })].concat(!0 === wm ? [] : [lm(fe.fromDom(r.win()), "blur", function() { t.getByDom(e).each(ki.off) }), lm(i, "select", n), lm(r.doc(), "selectionchange", n)]); return { destroy: function() { wn(a, function(n) { n.unbind() }) } } }, Tm = function(n, e) { var t = parseInt(ro.get(n, e), 10); return isNaN(t) ? 0 : t }, Sm = (Cf = be.isText, kf = "text", Ef = function(n) { return Cf(n) ? B.from(n.dom().nodeValue) : B.none() }, Df = Wn.detect().browser, { get: function(n) { if (!Cf(n)) throw new Error("Can only get " + kf + " value of a " + kf + " node"); return Af(n).getOr("") }, getOption: Af = Df.isIE() && 10 === Df.version.major ? function(n) { try { return Ef(n) } catch (e) { return B.none() } } : Ef, set: function(n, e) { if (!Cf(n)) throw new Error("Can only set raw " + kf + " value of a " + kf + " node"); n.dom().nodeValue = e } }), Om = function(n) { return Sm.getOption(n) }, Cm = function(n) { return "img" === be.name(n) ? 1 : Om(n).fold(function() { return $e.children(n).length }, function(n) { return n.length }) }, km = Cm, Em = ct([{ before: ["element"] }, { on: ["element", "offset"] }, { after: ["element"] }]), Dm = { before: Em.before, on: Em.on, after: Em.after, cata: function(n, e, t, r) { return n.fold(e, t, r) }, getStart: function(n) { return n.fold(h, h, h) } }, Am = ct([{ domRange: ["rng"] }, { relative: ["startSitu", "finishSitu"] }, { exact: ["start", "soffset", "finish", "foffset"] }]), Rm = Te("start", "soffset", "finish", "foffset"), Mm = { domRange: Am.domRange, relative: Am.relative, exact: Am.exact, exactFromRange: function(n) { return Am.exact(n.start(), n.soffset(), n.finish(), n.foffset()) }, range: Rm, getWin: function(n) { var e = n.match({ domRange: function(n) { return fe.fromDom(n.startContainer) }, relative: function(n, e) { return Dm.getStart(n) }, exact: function(n, e, t, r) { return n } }); return $e.defaultView(e) } }, Im = function(n, e, t, r) { var o = $e.owner(n).dom().createRange(); return o.setStart(n.dom(), e), o.setEnd(t.dom(), r), o }, Nm = function(n, e, t, r) { var o = Im(n, e, t, r), i = ze(n, t) && e === r; return o.collapsed && !i }, Bm = function(n, e) { n.selectNodeContents(e.dom()) }, Fm = function(n) { n.deleteContents() }, Vm = function(n) { return { left: E(n.left), top: E(n.top), right: E(n.right), bottom: E(n.bottom), width: E(n.width), height: E(n.height) } }, Hm = { create: function(n) { return n.document.createRange() }, replaceWith: function(n, e) { Fm(n), n.insertNode(e.dom()) }, selectNodeContents: function(n, e) { var t = n.document.createRange(); return Bm(t, e), t }, selectNodeContentsUsing: Bm, relativeToNative: function(n, e, t) { var r, o, i = n.document.createRange(); return r = i, e.fold(function(n) { r.setStartBefore(n.dom()) }, function(n, e) { r.setStart(n.dom(), e) }, function(n) { r.setStartAfter(n.dom()) }), o = i, t.fold(function(n) { o.setEndBefore(n.dom()) }, function(n, e) { o.setEnd(n.dom(), e) }, function(n) { o.setEndAfter(n.dom()) }), i }, exactToNative: function(n, e, t, r, o) { var i = n.document.createRange(); return i.setStart(e.dom(), t), i.setEnd(r.dom(), o), i }, deleteContents: Fm, cloneFragment: function(n) { var e = n.cloneContents(); return fe.fromDom(e) }, getFirstRect: function(n) { var e = n.getClientRects(), t = 0 < e.length ? e[0] : n.getBoundingClientRect(); return 0 < t.width || 0 < t.height ? B.some(t).map(Vm) : B.none() }, getBounds: function(n) { var e = n.getBoundingClientRect(); return 0 < e.width || 0 < e.height ? B.some(e).map(Vm) : B.none() }, isWithin: function(n, e) { return e.compareBoundaryPoints(n.END_TO_START, n) < 1 && -1 < e.compareBoundaryPoints(n.START_TO_END, n) }, toString: function(n) { return n.toString() } }, zm = ct([{ ltr: ["start", "soffset", "finish", "foffset"] }, { rtl: ["start", "soffset", "finish", "foffset"] }]), jm = function(n, e, t) { return e(fe.fromDom(t.startContainer), t.startOffset, fe.fromDom(t.endContainer), t.endOffset) }, Lm = function(n, e) { var o, t, r, i = (o = n, e.match({ domRange: function(n) { return { ltr: E(n), rtl: B.none } }, relative: function(n, e) { return { ltr: Z(function() { return Hm.relativeToNative(o, n, e) }), rtl: Z(function() { return B.some(Hm.relativeToNative(o, e, n)) }) } }, exact: function(n, e, t, r) { return { ltr: Z(function() { return Hm.exactToNative(o, n, e, t, r) }), rtl: Z(function() { return B.some(Hm.exactToNative(o, t, r, n, e)) }) } } })); return (r = (t = i).ltr()).collapsed ? t.rtl().filter(function(n) { return !1 === n.collapsed }).map(function(n) { return zm.rtl(fe.fromDom(n.endContainer), n.endOffset, fe.fromDom(n.startContainer), n.startOffset) }).getOrThunk(function() { return jm(0, zm.ltr, r) }) : jm(0, zm.ltr, r) }, Um = (zm.ltr, zm.rtl, Lm), Pm = function(i, n) { return Lm(i, n).match({ ltr: function(n, e, t, r) { var o = i.document.createRange(); return o.setStart(n.dom(), e), o.setEnd(t.dom(), r), o }, rtl: function(n, e, t, r) { var o = i.document.createRange(); return o.setStart(t.dom(), r), o.setEnd(n.dom(), e), o } }) }, _m = (document.caretPositionFromPoint || document.caretRangeFromPoint, function(n, e) { var t = be.name(n); return "input" === t ? Dm.after(n) : hn(["br", "img"], t) ? 0 === e ? Dm.before(n) : Dm.after(n) : Dm.on(n, e) }), Wm = function(n, e, t, r) { var o = _m(n, e), i = _m(t, r); return Mm.relative(o, i) }, $m = Wm, Gm = function(n, e) { B.from(n.getSelection()).each(function(n) { n.removeAllRanges(), n.addRange(e) }) }, qm = function(n, e, t, r, o) { var i = Hm.exactToNative(n, e, t, r, o); Gm(n, i) }, Ym = function(l, n) { return Um(l, n).match({ ltr: function(n, e, t, r) { qm(l, n, e, t, r) }, rtl: function(n, e, t, r) { var o, i, u, a, c, s = l.getSelection(); if (s.setBaseAndExtent) s.setBaseAndExtent(n.dom(), e, t.dom(), r); else if (s.extend) try { i = n, u = e, a = t, c = r, (o = s).collapse(i.dom(), u), o.extend(a.dom(), c) } catch (f) { qm(l, t, r, n, e) } else qm(l, t, r, n, e) } }) }, Xm = function(n) { var e = fe.fromDom(n.anchorNode), t = fe.fromDom(n.focusNode); return Nm(e, n.anchorOffset, t, n.focusOffset) ? B.some(Mm.range(fe.fromDom(n.anchorNode), n.anchorOffset, fe.fromDom(n.focusNode), n.focusOffset)) : function(n) { if (0 < n.rangeCount) { var e = n.getRangeAt(0), t = n.getRangeAt(n.rangeCount - 1); return B.some(Mm.range(fe.fromDom(e.startContainer), e.startOffset, fe.fromDom(t.endContainer), t.endOffset)) } return B.none() }(n) }, Km = function(n) { return B.from(n.getSelection()).filter(function(n) { return 0 < n.rangeCount }).bind(Xm) }, Jm = function(n, e, t, r, o) { var i = $m(e, t, r, o); Ym(n, i) }, Qm = Km, Zm = function(n) { return Km(n).map(function(n) { return Mm.exact(n.start(), n.soffset(), n.finish(), n.foffset()) }) }, ng = function(n) { n.getSelection().removeAllRanges() }, eg = function(n, e) { var t = Pm(n, e); return Hm.getFirstRect(t) }, tg = function(n) { return { left: n.left, top: n.top, right: n.right, bottom: n.bottom, width: E(2), height: n.height } }, rg = function(n) { return { left: E(n.left), top: E(n.top), right: E(n.right), bottom: E(n.bottom), width: E(n.width), height: E(n.height) } }, og = function(n) { var e = n.getSelection(); return e !== undefined && 0 < e.rangeCount ? function(t) { if (t.collapsed) { var r = fe.fromDom(t.startContainer); return $e.parent(r).bind(function(n) { var e = Mm.exact(r, t.startOffset, n, km(n)); return eg(t.startContainer.ownerDocument.defaultView, e).map(tg).map(Nn) }).getOr([]) } return yn(t.getClientRects(), rg) }(e.getRangeAt(0)) : [] }, ig = function(n) { n.focus(); var e = fe.fromDom(n.document.body); (Bo().exists(function(n) { return hn(["input", "textarea"], be.name(n)) }) ? function(n) { setTimeout(function() { n() }, 0) } : s)(function() { Bo().each(No), Io(e) }) }, ug = "data-" + Mi.resolve("last-outer-height"), ag = function(n, e) { ro.set(n, ug, e) }, cg = function(n) { return { top: E(n.top()), bottom: E(n.top() + n.height()) } }, sg = function(n, e) { var t = Tm(e, ug), r = n.innerHeight; return r < t ? B.some(t - r) : B.none() }, fg = function(n, u) { var e = fe.fromDom(u.document.body), t = lm(fe.fromDom(n), "resize", function() { sg(n, e).each(function(i) { var n, e; (n = u, e = og(n), 0 < e.length ? B.some(e[0]).map(cg) : B.none()).each(function(n) { var e, t, r, o = (e = u, r = i, (t = n).top() > e.innerHeight || t.bottom() > e.innerHeight ? Math.min(r, t.bottom() - e.innerHeight + 50) : 0); 0 !== o && u.scrollTo(u.pageXOffset, u.pageYOffset + o) }) }), ag(e, n.innerHeight) }); return ag(e, n.innerHeight), { toEditing: function() { ig(u) }, destroy: function() { t.unbind() } } }, lg = function(n) { return B.some(fe.fromDom(n.dom().contentWindow.document.body)) }, dg = function(n) { return B.some(fe.fromDom(n.dom().contentWindow.document)) }, mg = function(n) { return B.from(n.dom().contentWindow) }, gg = function(n) { return mg(n).bind(Qm) }, vg = function(n) { return n.getFrame() }, pg = function(n, t) { return function(e) { return e[n].getOrThunk(function() { var n = vg(e); return function() { return t(n) } })() } }, hg = function(n, e, t, r) { return n[t].getOrThunk(function() { return function(n) { return lm(e, r, n) } }) }, bg = function(n) { return { left: E(n.left), top: E(n.top), right: E(n.right), bottom: E(n.bottom), width: E(n.width), height: E(n.height) } }, yg = { getBody: pg("getBody", lg), getDoc: pg("getDoc", dg), getWin: pg("getWin", mg), getSelection: pg("getSelection", gg), getFrame: vg, getActiveApi: function(a) { var c = vg(a); return lg(c).bind(function(u) { return dg(c).bind(function(i) { return mg(c).map(function(o) { var n = fe.fromDom(i.dom().documentElement), e = a.getCursorBox.getOrThunk(function() { return function() { return Zm(o).bind(function(n) { return eg(o, n).orThunk(function() { return Qm(o).filter(function(n) { return ze(n.start(), n.finish()) && n.soffset() === n.foffset() }).bind(function(n) { var e = n.start().dom().getBoundingClientRect(); return 0 < e.width || 0 < e.height ? B.some(e).map(bg) : B.none() }) }) }) } }), t = a.setSelection.getOrThunk(function() { return function(n, e, t, r) { Jm(o, n, e, t, r) } }), r = a.clearSelection.getOrThunk(function() { return function() { ng(o) } }); return { body: E(u), doc: E(i), win: E(o), html: E(n), getSelection: l(gg, c), setSelection: t, clearSelection: r, frame: E(c), onKeyup: hg(a, i, "onKeyup", "keyup"), onNodeChanged: hg(a, i, "onNodeChanged", "selectionchange"), onDomChanged: a.onDomChanged, onScrollToCursor: a.onScrollToCursor, onScrollToElement: a.onScrollToElement, onToReading: a.onToReading, onToEditing: a.onToEditing, onToolbarScrollStart: a.onToolbarScrollStart, onTouchContent: a.onTouchContent, onTapContent: a.onTapContent, onTouchToolstrip: a.onTouchToolstrip, getCursorBox: e } }) }) }) } }, wg = "data-ephox-mobile-fullscreen-style", xg = "position:absolute!important;", Tg = "top:0!important;left:0!important;margin:0!important;padding:0!important;width:100%!important;", Sg = Wn.detect().os.isAndroid(), Og = function(n, e) { var t, r, o = function(r) { return function(n) { var e = ro.get(n, "style"), t = e === undefined ? "no-styles" : e.trim(); t !== r && (ro.set(n, wg, t), ro.set(n, "style", r)) } }, i = Qi(n, "*"), u = An(i, function(n) { return Zi(n, "*") }), a = (t = e, (r = _i.get(t, "background-color")) !== undefined && "" !== r ? "background-color:" + r + "!important" : "background-color:rgb(255,255,255)!important;"); wn(u, o("display:none!important;")), wn(i, o(xg + Tg + a)), o((!0 === Sg ? "" : xg) + Tg + a)(n) }, Cg = function() { var n = Ji("[" + wg + "]"); wn(n, function(n) { var e = ro.get(n, wg); "no-styles" !== e ? ro.set(n, "style", e) : ro.remove(n, "style"), ro.remove(n, wg) }) }, kg = function() { var e = tu("head").getOrDie(), n = tu('meta[name="viewport"]').getOrThunk(function() { var n = fe.fromTag("meta"); return ro.set(n, "name", "viewport"), Ye.append(e, n), n }), t = ro.get(n, "content"); return { maximize: function() { ro.set(n, "content", "width=device-width, initial-scale=1.0, user-scalable=no, maximum-scale=1.0") }, restore: function() { t !== undefined && null !== t && 0 < t.length ? ro.set(n, "content", t) : ro.set(n, "content", "user-scalable=yes") } } }, Eg = function(e, n) { var t = kg(), r = Tl(), o = Tl(); return { enter: function() { n.hide(), bo.add(e.container, Mi.resolve("fullscreen-maximized")), bo.add(e.container, Mi.resolve("android-maximized")), t.maximize(), bo.add(e.body, Mi.resolve("android-scroll-reload")), r.set(fg(e.win, yg.getWin(e.editor).getOrDie("no"))), yg.getActiveApi(e.editor).each(function(n) { Og(e.container, n.body()), o.set(xm(n, e.toolstrip, e.alloy)) }) }, exit: function() { t.restore(), n.show(), bo.remove(e.container, Mi.resolve("fullscreen-maximized")), bo.remove(e.container, Mi.resolve("android-maximized")), Cg(), bo.remove(e.body, Mi.resolve("android-scroll-reload")), o.clear(), r.clear() } } }, Dg = function(t, r) { var o = null; return { cancel: function() { null !== o && (clearTimeout(o), o = null) }, throttle: function() { for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e]; null !== o && clearTimeout(o), o = setTimeout(function() { t.apply(null, n), o = null }, r) } } }, Ag = function(n, e) { var t, r, o, i = sf(Yf.sketch({ dom: ms(''), containerBehaviours: qr([ki.config({ toggleClass: Mi.resolve("mask-tap-icon-selected"), toggleOnExecute: !1 })]) })), u = (t = n, r = 200, o = null, { cancel: function() { null !== o && (clearTimeout(o), o = null) }, throttle: function() { for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e]; null === o && (o = setTimeout(function() { t.apply(null, n), o = null }, r)) } }); return Yf.sketch({ dom: ms('
    '), components: [Yf.sketch({ dom: ms('
    '), components: [ss.sketch({ dom: ms('
    '), components: [i.asSpec()], action: function(n) { u.throttle() }, buttonBehaviours: qr([ki.config({ toggleClass: Mi.resolve("mask-tap-icon-selected") })]) })] })] }) }, Rg = _t([sr("editor", [ur("getFrame"), fr("getBody"), fr("getDoc"), fr("getWin"), fr("getSelection"), fr("setSelection"), fr("clearSelection"), fr("cursorSaver"), fr("onKeyup"), fr("onNodeChanged"), fr("getCursorBox"), ur("onDomChanged"), mr("onTouchContent", k), mr("onTapContent", k), mr("onTouchToolstrip", k), mr("onScrollToCursor", E({ unbind: k })), mr("onScrollToElement", E({ unbind: k })), mr("onToEditing", E({ unbind: k })), mr("onToReading", E({ unbind: k })), mr("onToolbarScrollStart", h)]), ur("socket"), ur("toolstrip"), ur("dropup"), ur("toolbar"), ur("container"), ur("alloy"), vr("win", function(n) { return $e.owner(n.socket).dom().defaultView }), vr("body", function(n) { return fe.fromDom(n.socket.dom().ownerDocument.body) }), mr("translate", h), mr("setReadOnly", k), mr("readOnlyOnInit", E(!0))]), Mg = function(n) { var e = nr("Getting AndroidWebapp schema", Rg, n); _i.set(e.toolstrip, "width", "100%"); var t = ad(Ag(function() { e.setReadOnly(e.readOnlyOnInit()), o.enter() }, e.translate)); e.alloy.add(t); var r = { show: function() { e.alloy.add(t) }, hide: function() { e.alloy.remove(t) } }; Ye.append(e.container, t.element()); var o = Eg(e, r); return { setReadOnly: e.setReadOnly, refreshStructure: k, enter: o.enter, exit: o.exit, destroy: k } }, Ig = E([mr("shell", !0), ac("toolbarBehaviours", [Ed])]), Ng = E([Nc({ name: "groups", overrides: function(n) { return { behaviours: qr([Ed.config({})]) } } })]), Bg = cs({ name: "Toolbar", configFields: Ig(), partFields: Ng(), factory: function(e, n, t, r) { var o = function(n) { return e.shell() ? B.some(n) : Uc(n, e, "groups") }, i = e.shell() ? { behaviours: [Ed.config({})], components: [] } : { behaviours: [], components: n }; return { uid: e.uid(), dom: e.dom(), components: i.components, behaviours: C(qr(i.behaviours), cc(e.toolbarBehaviours())), apis: { setGroups: function(n, e) { o(n).fold(function() { throw console.error("Toolbar was defined to not be a shell, but no groups container was specified in components"), new Error("Toolbar was defined to not be a shell, but no groups container was specified in components") }, function(n) { Ed.set(n, e) }) } }, domModification: { attributes: { role: "group" } } } }, apis: { setGroups: function(n, e, t) { n.setGroups(e, t) } } }), Fg = E([ur("items"), (Rf = ["itemClass"], sr("markers", yn(Rf, ur))), ac("tgroupBehaviours", [uc])]), Vg = E([Bc({ name: "items", unit: "item", overrides: function(n) { return { domModification: { classes: [n.markers().itemClass()] } } } })]), Hg = cs({ name: "ToolbarGroup", configFields: Fg(), partFields: Vg(), factory: function(n, e, t, r) { return C({ dom: { attributes: { role: "toolbar" } } }, { uid: n.uid(), dom: n.dom(), components: e, behaviours: C(qr([uc.config({ mode: "flow", selector: "." + n.markers().itemClass() })]), cc(n.tgroupBehaviours())), "debug.sketcher": t["debug.sketcher"] }) } }), zg = "data-" + Mi.resolve("horizontal-scroll"), jg = function(n) { return "true" === ro.get(n, zg) ? 0 < (t = n).dom().scrollLeft || function(n) { n.dom().scrollLeft = 1; var e = 0 !== n.dom().scrollLeft; return n.dom().scrollLeft = 0, e }(t) : 0 < (e = n).dom().scrollTop || function(n) { n.dom().scrollTop = 1; var e = 0 !== n.dom().scrollTop; return n.dom().scrollTop = 0, e }(e); var e, t }, Lg = { exclusive: function(n, e) { return lm(n, "touchmove", function(n) { iu(n.target(), e).filter(jg).fold(function() { n.raw().preventDefault() }, k) }) }, markAsHorizontal: function(n) { ro.set(n, zg, "true") } }; function Ug() { var e = function(n) { var e = !0 === n.scrollable ? "${prefix}-toolbar-scrollable-group" : ""; return { dom: ms('
    '), tgroupBehaviours: qr([Wf("adhoc-scrollable-toolbar", !0 === n.scrollable ? [Er(function(n, e) { _i.set(n.element(), "overflow-x", "auto"), Lg.markAsHorizontal(n.element()), _d.register(n.element()) })] : [])]), components: [Yf.sketch({ components: [Hg.parts().items({})] })], markers: { itemClass: Mi.resolve("toolbar-group-item") }, items: n.items } }, t = ad(Bg.sketch({ dom: ms('
    '), components: [Bg.parts().groups({})], toolbarBehaviours: qr([ki.config({ toggleClass: Mi.resolve("context-toolbar"), toggleOnExecute: !1, aria: { mode: "none" } }), uc.config({ mode: "cyclic" })]), shell: !0 })), n = ad(Yf.sketch({ dom: { classes: [Mi.resolve("toolstrip")] }, components: [cd(t)], containerBehaviours: qr([ki.config({ toggleClass: Mi.resolve("android-selection-context-toolbar"), toggleOnExecute: !1 })]) })), r = function() { Bg.setGroups(t, o.get()), ki.off(t) }, o = So([]); return { wrapper: E(n), toolbar: E(t), createGroups: function(n) { return yn(n, v(Hg.sketch, e)) }, setGroups: function(n) { o.set(n), r() }, setContextToolbar: function(n) { ki.on(t), Bg.setGroups(t, n) }, restoreToolbar: function() { ki.isOn(t) && r() }, refresh: function() {}, focus: function() { uc.focusIn(t) } } } var Pg = function(n, e) { Ed.append(n, cd(e)) }, _g = function(n, e) { Ed.remove(n, e) }, Wg = function(n) { return ad(ss.sketch({ dom: ms('
    '), action: function() { n.run(function(n) { n.setReadOnly(!1) }) } })) }, $g = function() { return ad(Yf.sketch({ dom: ms('
    '), components: [], containerBehaviours: qr([Ed.config({})]) })) }, Gg = function(n, e, t, r) { (!0 === t ? To.toAlpha : To.toOmega)(r), (t ? Pg : _g)(n, e) }, qg = function(e, n) { return n.getAnimationRoot().fold(function() { return e.element() }, function(n) { return n(e) }) }, Yg = function(n) { return n.dimension().property() }, Xg = function(n, e) { return n.dimension().getDimension()(e) }, Kg = function(n, e) { var t = qg(n, e); Xl(t, [e.shrinkingClass(), e.growingClass()]) }, Jg = function(n, e) { bo.remove(n.element(), e.openClass()), bo.add(n.element(), e.closedClass()), _i.set(n.element(), Yg(e), "0px"), _i.reflow(n.element()) }, Qg = function(n, e) { bo.remove(n.element(), e.closedClass()), bo.add(n.element(), e.openClass()), _i.remove(n.element(), Yg(e)) }, Zg = function(n, e, t) { t.setCollapsed(), _i.set(n.element(), Yg(e), Xg(e, n.element())), _i.reflow(n.element()); var r = qg(n, e); bo.add(r, e.shrinkingClass()), Jg(n, e), e.onStartShrink()(n) }, nv = function(n, e, t) { var r = function(n, e) { Qg(n, e); var t = Xg(e, n.element()); return Jg(n, e), t }(n, e), o = qg(n, e); bo.add(o, e.growingClass()), Qg(n, e), _i.set(n.element(), Yg(e), r), t.setExpanded(), e.onStartGrow()(n) }, ev = function(n, e, t) { var r = qg(n, e); return !0 === bo.has(r, e.growingClass()) }, tv = function(n, e, t) { var r = qg(n, e); return !0 === bo.has(r, e.shrinkingClass()) }, rv = Object.freeze({ grow: function(n, e, t) { t.isExpanded() || nv(n, e, t) }, shrink: function(n, e, t) { t.isExpanded() && Zg(n, e, t) }, immediateShrink: function(n, e, t) { var r, o; t.isExpanded() && (r = n, o = e, t.setCollapsed(), _i.set(r.element(), Yg(o), Xg(o, r.element())), _i.reflow(r.element()), Kg(r, o), Jg(r, o), o.onStartShrink()(r), o.onShrunk()(r)) }, hasGrown: function(n, e, t) { return t.isExpanded() }, hasShrunk: function(n, e, t) { return t.isCollapsed() }, isGrowing: ev, isShrinking: tv, isTransitioning: function(n, e, t) { return !0 === ev(n, e) || !0 === tv(n, e) }, toggleGrow: function(n, e, t) { (t.isExpanded() ? Zg : nv)(n, e, t) }, disableTransitions: Kg }), ov = Object.freeze({ exhibit: function(n, e) { var t = e.expanded(); return Nr(t ? { classes: [e.openClass()], styles: {} } : { classes: [e.closedClass()], styles: Et(e.dimension().property(), "0px") }) }, events: function(t, r) { return br([wr(J(), function(n, e) { e.event().raw().propertyName === t.dimension().property() && (Kg(n, t), r.isExpanded() && _i.remove(n.element(), t.dimension().property()), (r.isExpanded() ? t.onGrown() : t.onShrunk())(n)) })]) } }), iv = [ur("closedClass"), ur("openClass"), ur("shrinkingClass"), ur("growingClass"), fr("getAnimationRoot"), ai("onShrunk"), ai("onStartShrink"), ai("onGrown"), ai("onStartGrow"), mr("expanded", !1), ar("dimension", rr("property", { width: [li("property", "width"), li("getDimension", function(n) { return Xs(n) + "px" })], height: [li("property", "height"), li("getDimension", function(n) { return Yi(n) + "px" })] }))], uv = Object.freeze({ init: function(n) { var e = So(n.expanded()); return Gr({ isExpanded: function() { return !0 === e.get() }, isCollapsed: function() { return !1 === e.get() }, setCollapsed: l(e.set, !1), setExpanded: l(e.set, !0), readState: function() { return "expanded: " + e.get() } }) } }), av = Xr({ fields: iv, name: "sliding", active: ov, apis: rv, state: uv }), cv = function(e, t) { var r = ad(Yf.sketch({ dom: { tag: "div", classes: [Mi.resolve("dropup")] }, components: [], containerBehaviours: qr([Ed.config({}), av.config({ closedClass: Mi.resolve("dropup-closed"), openClass: Mi.resolve("dropup-open"), shrinkingClass: Mi.resolve("dropup-shrinking"), growingClass: Mi.resolve("dropup-growing"), dimension: { property: "height" }, onShrunk: function(n) { e(), t(), Ed.set(n, []) }, onGrown: function(n) { e(), t() } }), Di(function(n, e) { o(k) })]) })), o = function(n) { window.requestAnimationFrame(function() { n(), av.shrink(r) }) }; return { appear: function(n, e, t) { !0 === av.hasShrunk(r) && !1 === av.isTransitioning(r) && window.requestAnimationFrame(function() { e(t), Ed.set(r, [n()]), av.grow(r) }) }, disappear: o, component: E(r), element: r.element } }, sv = Wn.detect().browser.isFirefox(), fv = Pt([cr("triggerEvent"), cr("broadcastEvent"), mr("stopBackspace", !0)]), lv = function(e, n) { var t, r, o, i, u = nr("Getting GUI events settings", fv, n), a = Wn.detect().deviceType.isTouch() ? ["touchstart", "touchmove", "touchend", "gesturestart"] : ["mousedown", "mouseup", "mouseover", "mousemove", "mouseout", "click"], c = bm(u), s = yn(a.concat(["selectstart", "input", "contextmenu", "change", "transitionend", "drag", "dragstart", "dragend", "dragenter", "dragleave", "dragover", "drop"]), function(n) { return lm(e, n, function(e) { c.fireIfReady(e, n).each(function(n) { n && e.kill() }), u.triggerEvent(n, e) && e.kill() }) }), f = lm(e, "keydown", function(n) { var e; u.triggerEvent("keydown", n) ? n.kill() : !0 !== u.stopBackspace || 8 !== (e = n).raw().which || hn(["input", "textarea"], be.name(e.target())) || n.prevent() }), l = (t = e, r = function(n) { u.triggerEvent("focusin", n) && n.kill() }, sv ? dm(t, "focus", r) : lm(t, "focusin", r)), d = (o = e, i = function(n) { u.triggerEvent("focusout", n) && n.kill(), setTimeout(function() { u.triggerEvent(qn(), n) }, 0) }, sv ? dm(o, "blur", i) : lm(o, "focusout", i)), m = $e.defaultView(e), g = lm(m, "scroll", function(n) { u.broadcastEvent(ee(), n) && n.kill() }); return { unbind: function() { wn(s, function(n) { n.unbind() }), f.unbind(), l.unbind(), d.unbind(), g.unbind() } } }, dv = function(n, e) { var t = kt(n, "target").map(function(n) { return n() }).getOr(e); return So(t) }, mv = ct([{ stopped: [] }, { resume: ["element"] }, { complete: [] }]), gv = function(n, r, e, t, o, i) { var u, a, c, s, f = n(r, t), l = (u = e, a = o, c = So(!1), s = So(!1), { stop: function() { c.set(!0) }, cut: function() { s.set(!0) }, isStopped: c.get, isCut: s.get, event: E(u), setSource: a.set, getSource: a.get }); return f.fold(function() { return i.logEventNoHandlers(r, t), mv.complete() }, function(e) { var t = e.descHandler(); return Ll(t)(l), l.isStopped() ? (i.logEventStopped(r, e.element(), t.purpose()), mv.stopped()) : l.isCut() ? (i.logEventCut(r, e.element(), t.purpose()), mv.complete()) : $e.parent(e.element()).fold(function() { return i.logNoParent(r, e.element(), t.purpose()), mv.complete() }, function(n) { return i.logEventResponse(r, e.element(), t.purpose()), mv.resume(n) }) }) }, vv = function(e, t, r, n, o, i) { return gv(e, t, r, n, o, i).fold(function() { return !0 }, function(n) { return vv(e, t, r, n, o, i) }, function() { return !1 }) }, pv = function(n, e, t) { var r, o, i = (r = e, o = So(!1), { stop: function() { o.set(!0) }, cut: k, isStopped: o.get, isCut: E(!1), event: E(r), setSource: c("Cannot set source of a broadcasted event"), getSource: c("Cannot get source of a broadcasted event") }); return wn(n, function(n) { var e = n.descHandler(); Ll(e)(i) }), i.isStopped() }, hv = function(n, e, t, r, o) { var i = dv(t, r); return vv(n, e, t, r, i, o) }, bv = function(n, e, t) { return Do.closest(n, function(n) { return e(n).isSome() }, t).bind(e) }, yv = Te("element", "descHandler"), wv = function(n, e) { return { id: E(n), descHandler: E(e) } }; function xv() { var i = {}; return { registerId: function(r, o, n) { V(n, function(n, e) { var t = i[e] !== undefined ? i[e] : {}; t[o] = jl(n, r), i[e] = t }) }, unregisterId: function(t) { V(i, function(n, e) { n.hasOwnProperty(t) && delete n[t] }) }, filterByType: function(n) { return kt(i, n).map(function(n) { return j(n, function(n, e) { return wv(e, n) }) }).getOr([]) }, find: function(n, e, t) { var o = Ot(e)(i); return bv(t, function(n) { return t = o, ns(r = n).fold(function() { return B.none() }, function(n) { var e = Ot(n); return t.bind(e).map(function(n) { return yv(r, n) }) }); var t, r }, n) } } } function Tv() { var r = xv(), o = {}, i = function(r) { var n = r.element(); return ns(n).fold(function() { return n = "uid-", e = r.element(), t = bc(Qc + n), ro.set(e, Zc, t), t; var n, e, t }, function(n) { return n }) }, u = function(n) { ns(n.element()).each(function(n) { o[n] = undefined, r.unregisterId(n) }) }; return { find: function(n, e, t) { return r.find(n, e, t) }, filter: function(n) { return r.filterByType(n) }, register: function(n) { var e = i(n); Rt(o, e) && function(n, e) { var t = o[e]; if (t !== n) throw new Error('The tagId "' + e + '" is already used by: ' + qo(t.element()) + "\nCannot use it for: " + qo(n.element()) + "\nThe conflicting element is" + (xe.inBody(t.element()) ? " " : " not ") + "already in the DOM"); u(n) }(n, e); var t = [n]; r.registerId(t, e, n.events()), o[e] = n }, unregister: u, getById: function(n) { return Ot(n)(o) } } } var Sv = function(t) { var r = function(e) { return $e.parent(t.element()).fold(function() { return !0 }, function(n) { return ze(e, n) }) }, o = Tv(), s = function(n, e) { return o.find(r, n, e) }, n = lv(t.element(), { triggerEvent: function(u, a) { return ei(u, a.target(), function(n) { return e = s, t = u, o = n, i = (r = a).target(), hv(e, t, r, i, o); var e, t, r, o, i }) }, broadcastEvent: function(n, e) { var t = o.filter(n); return pv(t, e) } }), i = Nl({ debugInfo: E("real"), triggerEvent: function(e, t, r) { ei(e, t, function(n) { hv(s, e, r, t, n) }) }, triggerFocus: function(a, c) { ns(a).fold(function() { Io(a) }, function(n) { ei(Gn(), a, function(n) { var e, t, r, o, i, u; e = s, t = Gn(), r = { originator: E(c), kill: k, prevent: k, target: E(a) }, i = n, u = dv(r, o = a), gv(e, t, r, o, u, i) }) }) }, triggerEscape: function(n, e) { i.triggerEvent("keydown", n.element(), e.event()) }, getByUid: function(n) { return m(n) }, getByDom: function(n) { return g(n) }, build: ad, addToGui: function(n) { a(n) }, removeFromGui: function(n) { c(n) }, addToWorld: function(n) { e(n) }, removeFromWorld: function(n) { u(n) }, broadcast: function(n) { l(n) }, broadcastOn: function(n, e) { d(n, e) }, isConnected: E(!0) }), e = function(n) { n.connect(i), be.isText(n.element()) || (o.register(n), wn(n.components(), e), i.triggerEvent(ne(), n.element(), { target: E(n.element()) })) }, u = function(n) { be.isText(n.element()) || (wn(n.components(), u), o.unregister(n)), n.disconnect() }, a = function(n) { et(t, n) }, c = function(n) { ot(n) }, f = function(t) { var n = o.filter(Yn()); wn(n, function(n) { var e = n.descHandler(); Ll(e)(t) }) }, l = function(n) { f({ universal: E(!0), data: E(n) }) }, d = function(n, e) { f({ universal: E(!1), channels: E(n), data: E(e) }) }, m = function(n) { return o.getById(n).fold(function() { return at.error(new Error('Could not find component with uid: "' + n + '" in system.')) }, at.value) }, g = function(n) { var e = ns(n).getOr("not found"); return m(e) }; return e(t), { root: E(t), element: t.element, destroy: function() { n.unbind(), Qe.remove(t.element()) }, add: a, remove: c, getByUid: m, getByDom: g, addToWorld: e, removeFromWorld: u, broadcast: l, broadcastOn: d } }, Ov = E(Mi.resolve("readonly-mode")), Cv = E(Mi.resolve("edit-mode")); function kv(n) { var e = ad(Yf.sketch({ dom: { classes: [Mi.resolve("outer-container")].concat(n.classes) }, containerBehaviours: qr([To.config({ alpha: Ov(), omega: Cv() })]) })); return Sv(e) } var Ev = function(n, e) { var t = fe.fromTag("input"); _i.setAll(t, { opacity: "0", position: "absolute", top: "-1000px", left: "-1000px" }), Ye.append(n, t), Io(t), e(t), Qe.remove(t) }, Dv = function(n) { var e = n.getSelection(); if (0 < e.rangeCount) { var t = e.getRangeAt(0), r = n.document.createRange(); r.setStart(t.startContainer, t.startOffset), r.setEnd(t.endContainer, t.endOffset), e.removeAllRanges(), e.addRange(r) } }, Av = function(n, e) { Bo().each(function(n) { ze(n, e) || No(n) }), n.focus(), Io(fe.fromDom(n.document.body)), Dv(n) }, Rv = { stubborn: function(n, e, t, r) { var o = function() { Av(e, r) }, i = lm(t, "keydown", function(n) { hn(["input", "textarea"], be.name(n.target())) || o() }); return { toReading: function() { Ev(n, No) }, toEditing: o, onToolbarTouch: function() {}, destroy: function() { i.unbind() } } }, timid: function(n, e, t, r) { var o = function() { No(r) }; return { toReading: function() { o() }, toEditing: function() { Av(e, r) }, onToolbarTouch: function() { o() }, destroy: k } } }, Mv = function(t, r, o, i, n) { var u = function() { r.run(function(n) { n.refreshSelection() }) }, e = function(n, e) { var t = n - i.dom().scrollTop; r.run(function(n) { n.scrollIntoView(t, t + e) }) }, a = function() { r.run(function(n) { n.clearSelection() }) }, c = function() { t.getCursorBox().each(function(n) { e(n.top(), n.height()) }), r.run(function(n) { n.syncHeight() }) }, s = ym(t), f = Dg(c, 300), l = [t.onKeyup(function() { a(), f.throttle() }), t.onNodeChanged(u), t.onDomChanged(f.throttle), t.onDomChanged(u), t.onScrollToCursor(function(n) { n.preventDefault(), f.throttle() }), t.onScrollToElement(function(n) { n.element(), e(r, i) }), t.onToEditing(function() { r.run(function(n) { n.toEditing() }) }), t.onToReading(function() { r.run(function(n) { n.toReading() }) }), lm(t.doc(), "touchend", function(n) { ze(t.html(), n.target()) || ze(t.body(), n.target()) }), lm(o, "transitionend", function(n) { var e; "height" === n.raw().propertyName && (e = Yi(o), r.run(function(n) { n.setViewportOffset(e) }), u(), c()) }), dm(o, "touchstart", function(n) { var e; r.run(function(n) { n.highlightSelection() }), e = n, r.run(function(n) { n.onToolbarTouch(e) }), t.onTouchToolstrip() }), lm(t.body(), "touchstart", function(n) { a(), t.onTouchContent(), s.fireTouchstart(n) }), s.onTouchmove(), s.onTouchend(), lm(t.body(), "click", function(n) { n.kill() }), lm(o, "touchmove", function() { t.onToolbarScrollStart() })]; return { destroy: function() { wn(l, function(n) { n.unbind() }) } } }, Iv = function(n) { var t = B.none(), e = [], r = function(n) { o() ? u(n) : e.push(n) }, o = function() { return t.isSome() }, i = function(n) { wn(n, u) }, u = function(e) { t.each(function(n) { setTimeout(function() { e(n) }, 0) }) }; return n(function(n) { t = B.some(n), i(e), e = [] }), { get: r, map: function(t) { return Iv(function(e) { r(function(n) { e(t(n)) }) }) }, isReady: o } }, Nv = { nu: Iv, pure: function(e) { return Iv(function(n) { n(e) }) } }, Bv = function(e) { var n = function(n) { var r; e((r = n, function() { for (var n = [], e = 0; e < arguments.length; e++) n[e] = arguments[e]; var t = this; setTimeout(function() { r.apply(t, n) }, 0) })) }; return { map: function(r) { return Bv(function(t) { n(function(n) { var e = r(n); t(e) }) }) }, bind: function(t) { return Bv(function(e) { n(function(n) { t(n).get(e) }) }) }, anonBind: function(t) { return Bv(function(e) { n(function(n) { t.get(e) }) }) }, toLazy: function() { return Nv.nu(n) }, get: n } }, Fv = { nu: Bv, pure: function(e) { return Bv(function(n) { n(e) }) } }, Vv = function(n, e, t) { return Math.abs(n - e) <= t ? B.none() : n < e ? B.some(n + t) : B.some(n - t) }, Hv = function() { var s = null; return { animate: function(r, o, n, i, e, t) { var u = !1, a = function(n) { u = !0, e(n) }; clearInterval(s); var c = function(n) { clearInterval(s), a(n) }; s = setInterval(function() { var t = r(); Vv(t, o, n).fold(function() { clearInterval(s), a(o) }, function(n) { if (i(n, c), !u) { var e = r(); (e !== n || Math.abs(e - o) > Math.abs(t - o)) && (clearInterval(s), a(o)) } }) }, t) } } }, zv = function(e, t) { return Ko([{ width: 320, height: 480, keyboard: { portrait: 300, landscape: 240 } }, { width: 320, height: 568, keyboard: { portrait: 300, landscape: 240 } }, { width: 375, height: 667, keyboard: { portrait: 305, landscape: 240 } }, { width: 414, height: 736, keyboard: { portrait: 320, landscape: 240 } }, { width: 768, height: 1024, keyboard: { portrait: 320, landscape: 400 } }, { width: 1024, height: 1366, keyboard: { portrait: 380, landscape: 460 } }], function(n) { return e <= n.width && t <= n.height ? B.some(n.keyboard) : B.none() }).getOr({ portrait: t / 5, landscape: e / 4 }) }, jv = function(n) { var e, t = gm(n).isPortrait(), r = zv((e = n).screen.width, e.screen.height), o = t ? r.portrait : r.landscape; return (t ? n.screen.height : n.screen.width) - n.innerHeight > o ? 0 : o }, Lv = function(n, e) { var t = $e.owner(n).dom().defaultView; return Yi(n) + Yi(e) - jv(t) }, Uv = Lv, Pv = function(n, e, t) { var r = Lv(e, t), o = Yi(e) + Yi(t) - r; _i.set(n, "padding-bottom", o + "px") }, _v = ct([{ fixed: ["element", "property", "offsetY"] }, { scroller: ["element", "offsetY"] }]), Wv = "data-" + Mi.resolve("position-y-fixed"), $v = "data-" + Mi.resolve("y-property"), Gv = "data-" + Mi.resolve("scrolling"), qv = "data-" + Mi.resolve("last-window-height"), Yv = function(n) { return Tm(n, Wv) }, Xv = function(n, e) { var t = ro.get(n, $v); return _v.fixed(n, t, e) }, Kv = function(n, e) { return _v.scroller(n, e) }, Jv = function(n) { var e = Yv(n); return ("true" === ro.get(n, Gv) ? Kv : Xv)(n, e) }, Qv = function(n, e, t) { var r = $e.owner(n).dom().defaultView.innerHeight; return ro.set(n, qv, r + "px"), r - e - t }, Zv = function(n) { var e = nu(n, "[" + Wv + "]"); return yn(e, Jv) }, np = function(r, o, i, u) { var n, e, t, a, c, s, f, l, d = $e.owner(r).dom().defaultView, m = (l = ro.get(f = i, "style"), _i.setAll(f, { position: "absolute", top: "0px" }), ro.set(f, Wv, "0px"), ro.set(f, $v, "top"), { restore: function() { ro.set(f, "style", l || ""), ro.remove(f, Wv), ro.remove(f, $v) } }), g = Yi(i), v = Yi(u), p = Qv(r, g, v), h = (t = g, a = p, s = ro.get(c = r, "style"), _d.register(c), _i.setAll(c, { position: "absolute", height: a + "px", width: "100%", top: t + "px" }), ro.set(c, Wv, t + "px"), ro.set(c, Gv, "true"), ro.set(c, $v, "top"), { restore: function() { _d.deregister(c), ro.set(c, "style", s || ""), ro.remove(c, Wv), ro.remove(c, Gv), ro.remove(c, $v) } }), b = (e = ro.get(n = u, "style"), _i.setAll(n, { position: "absolute", bottom: "0px" }), ro.set(n, Wv, "0px"), ro.set(n, $v, "bottom"), { restore: function() { ro.set(n, "style", e || ""), ro.remove(n, Wv), ro.remove(n, $v) } }), y = !0, w = function() { var n = d.innerHeight; return Tm(r, qv) < n }, x = function() { if (y) { var n = Yi(i), e = Yi(u), t = Qv(r, n, e); ro.set(r, Wv, n + "px"), _i.set(r, "height", t + "px"), _i.set(u, "bottom", -(n + t + e) + "px"), Pv(o, r, u) } }; return Pv(o, r, u), { setViewportOffset: function(n) { ro.set(r, Wv, n + "px"), x() }, isExpanding: w, isShrinking: T(w), refresh: x, restore: function() { y = !1, m.restore(), h.restore(), b.restore() } } }, ep = Yv, tp = Hv(), rp = "data-" + Mi.resolve("last-scroll-top"), op = function(n) { var e = _i.getRaw(n, "top").getOr("0"); return parseInt(e, 10) }, ip = function(n) { return parseInt(n.dom().scrollTop, 10) }, up = function(n, e) { var t = e + ep(n) + "px"; _i.set(n, "top", t) }, ap = function(t, r, o) { return Fv.nu(function(n) { var e = l(ip, t); tp.animate(e, r, 15, function(n) { t.dom().scrollTop = n, _i.set(t, "top", op(t) + 15 + "px") }, function() { t.dom().scrollTop = r, _i.set(t, "top", o + "px"), n(r) }, 10) }) }, cp = function(o, i) { return Fv.nu(function(n) { var e = l(ip, o); ro.set(o, rp, e()); var t = Math.abs(i - e()), r = Math.ceil(t / 10); tp.animate(e, i, r, function(n, e) { Tm(o, rp) !== o.dom().scrollTop ? e(o.dom().scrollTop) : (o.dom().scrollTop = n, ro.set(o, rp, n)) }, function() { o.dom().scrollTop = i, ro.set(o, rp, i), n(i) }, 10) }) }, sp = function(i, u) { return Fv.nu(function(n) { var e = l(op, i), t = function(n) { _i.set(i, "top", n + "px") }, r = Math.abs(u - e()), o = Math.ceil(r / 10); tp.animate(e, u, o, t, function() { t(u), n(u) }, 10) }) }, fp = function(e, t, r) { var o = $e.owner(e).dom().defaultView; return Fv.nu(function(n) { up(e, r), up(t, r), o.scrollTo(0, r), n(r) }) }, lp = function(n, e, t, r, o) { var i = Uv(e, t), u = l(Dv, n); i < r || i < o ? cp(e, e.dom().scrollTop - i + o).get(u) : r < 0 && cp(e, e.dom().scrollTop + r).get(u) }, dp = function(u, n) { return n(function(r) { var o = [], i = 0; 0 === u.length ? r([]) : wn(u, function(n, e) { var t; n.get((t = e, function(n) { o[t] = n, ++i >= u.length && r(o) })) }) }) }, mp = function(n, c) { return n.fold(function(n, e, t) { return r = n, o = e, u = c + (i = t), _i.set(r, o, u + "px"), Fv.pure(i); var r, o, i, u }, function(n, e) { return t = n, o = c + (r = e), i = _i.getRaw(t, "top").getOr(r), u = o - parseInt(i, 10), a = t.dom().scrollTop + u, ap(t, a, o); var t, r, o, i, u, a }) }, gp = function(n, e) { var t = Zv(n), r = yn(t, function(n) { return mp(n, e) }); return dp(r, Fv.nu) }, vp = function(e, t, n, r, o, i) { var u, a, c = (u = function(n) { return fp(e, t, n) }, a = So(Nv.pure({})), { start: function(e) { var n = Nv.nu(function(n) { return u(e).get(n) }); a.set(n) }, idle: function(n) { a.get().get(function() { n() }) } }), s = Dg(function() { c.idle(function() { gp(n, r.pageYOffset).get(function() { var n; (n = og(i), B.from(n[0]).bind(function(n) { var e = n.top() - t.dom().scrollTop; return e > r.innerHeight + 5 || e < -5 ? B.some({ top: E(e), bottom: E(e + n.height()) }) : B.none() })).each(function(n) { t.dom().scrollTop = t.dom().scrollTop + n.top() }), c.start(0), o.refresh() }) }) }, 1e3), f = lm(fe.fromDom(r), "scroll", function() { r.pageYOffset < 0 || s.throttle() }); return gp(n, r.pageYOffset).get(h), { unbind: f.unbind } }, pp = function(n) { var t = n.cWin(), e = n.ceBody(), r = n.socket(), o = n.toolstrip(), i = n.toolbar(), u = n.contentElement(), a = n.keyboardType(), c = n.outerWindow(), s = n.dropup(), f = np(r, e, o, s), l = a(n.outerBody(), t, xe.body(), u, o, i), d = vm(c, { onChange: k, onReady: f.refresh }); d.onAdjustment(function() { f.refresh() }); var m = lm(fe.fromDom(c), "resize", function() { f.isExpanding() && f.refresh() }), g = vp(o, r, n.outerBody(), c, f, t), v = function(t, e) { var n = t.document, r = fe.fromTag("div"); bo.add(r, Mi.resolve("unfocused-selections")), Ye.append(fe.fromDom(n.documentElement), r); var o = lm(r, "touchstart", function(n) { n.prevent(), Av(t, e), u() }), i = function(n) { var e = fe.fromTag("span"); return Yl(e, [Mi.resolve("layer-editor"), Mi.resolve("unfocused-selection")]), _i.setAll(e, { left: n.left() + "px", top: n.top() + "px", width: n.width() + "px", height: n.height() + "px" }), e }, u = function() { Qe.empty(r) }; return { update: function() { u(); var n = og(t), e = yn(n, i); Ke(r, e) }, isActive: function() { return 0 < $e.children(r).length }, destroy: function() { o.unbind(), Qe.remove(r) }, clear: u } }(t, u), p = function() { v.clear() }; return { toEditing: function() { l.toEditing(), p() }, toReading: function() { l.toReading() }, onToolbarTouch: function(n) { l.onToolbarTouch(n) }, refreshSelection: function() { v.isActive() && v.update() }, clearSelection: p, highlightSelection: function() { v.update() }, scrollIntoView: function(n, e) { lp(t, r, s, n, e) }, updateToolbarPadding: k, setViewportOffset: function(n) { f.setViewportOffset(n), sp(r, n).get(h) }, syncHeight: function() { _i.set(u, "height", u.dom().contentWindow.document.body.scrollHeight + "px") }, refreshStructure: f.refresh, destroy: function() { f.restore(), d.destroy(), g.unbind(), m.unbind(), l.destroy(), v.destroy(), Ev(xe.body(), No) } } }, hp = function(r, n) { var o = kg(), i = Sl(), u = Sl(), a = Tl(), c = Tl(); return { enter: function() { n.hide(); var t = fe.fromDom(document); yg.getActiveApi(r.editor).each(function(n) { i.set({ socketHeight: _i.getRaw(r.socket, "height"), iframeHeight: _i.getRaw(n.frame(), "height"), outerScroll: document.body.scrollTop }), u.set({ exclusives: Lg.exclusive(t, "." + _d.scrollable()) }), bo.add(r.container, Mi.resolve("fullscreen-maximized")), Og(r.container, n.body()), o.maximize(), _i.set(r.socket, "overflow", "scroll"), _i.set(r.socket, "-webkit-overflow-scrolling", "touch"), Io(n.body()); var e = De(["cWin", "ceBody", "socket", "toolstrip", "toolbar", "dropup", "contentElement", "cursor", "keyboardType", "isScrolling", "outerWindow", "outerBody"], []); a.set(pp(e({ cWin: n.win(), ceBody: n.body(), socket: r.socket, toolstrip: r.toolstrip, toolbar: r.toolbar, dropup: r.dropup.element(), contentElement: n.frame(), cursor: k, outerBody: r.body, outerWindow: r.win, keyboardType: Rv.stubborn, isScrolling: function() { return u.get().exists(function(n) { return n.socket.isScrolling() }) } }))), a.run(function(n) { n.syncHeight() }), c.set(Mv(n, a, r.toolstrip, r.socket, r.dropup)) }) }, refreshStructure: function() { a.run(function(n) { n.refreshStructure() }) }, exit: function() { o.restore(), c.clear(), a.clear(), n.show(), i.on(function(n) { n.socketHeight.each(function(n) { _i.set(r.socket, "height", n) }), n.iframeHeight.each(function(n) { _i.set(r.editor.getFrame(), "height", n) }), document.body.scrollTop = n.scrollTop }), i.clear(), u.on(function(n) { n.exclusives.unbind() }), u.clear(), bo.remove(r.container, Mi.resolve("fullscreen-maximized")), Cg(), _d.deregister(r.toolbar), _i.remove(r.socket, "overflow"), _i.remove(r.socket, "-webkit-overflow-scrolling"), No(r.editor.getFrame()), yg.getActiveApi(r.editor).each(function(n) { n.clearSelection() }) } } }, bp = function(n) { var e = nr("Getting IosWebapp schema", Rg, n); _i.set(e.toolstrip, "width", "100%"), _i.set(e.container, "position", "relative"); var t = ad(Ag(function() { e.setReadOnly(e.readOnlyOnInit()), r.enter() }, e.translate)); e.alloy.add(t); var r = hp(e, { show: function() { e.alloy.add(t) }, hide: function() { e.alloy.remove(t) } }); return { setReadOnly: e.setReadOnly, refreshStructure: r.refreshStructure, enter: r.enter, exit: r.exit, destroy: k } }, yp = tinymce.util.Tools.resolve("tinymce.EditorManager"), wp = function(n) { var e = kt(n.settings, "skin_url").fold(function() { return yp.baseURL + "/skins/lightgray" }, function(n) { return n }); return { content: e + "/content.mobile.min.css", ui: e + "/skin.mobile.min.css" } }, xp = function(n, e, t) { n.system().broadcastOn([jo.formatChanged()], { command: e, state: t }) }, Tp = function(r, n) { var e = F(n.formatter.get()); wn(e, function(e) { n.formatter.formatChanged(e, function(n) { xp(r, e, n) }) }), wn(["ul", "ol"], function(t) { n.selection.selectorChanged(t, function(n, e) { xp(r, t, n) }) }) }, Sp = (E(["x-small", "small", "medium", "large", "x-large"]), function(n) { var e = function() { n._skinLoaded = !0, n.fire("SkinLoaded") }; return function() { n.initialized ? e() : n.on("init", e) } }), Op = E("toReading"), Cp = E("toEditing"); Ho.add("mobile", function(C) { return { getNotificationManagerImpl: function() { return { open: h, close: k, reposition: k, getArgs: h } }, renderUI: function(n) { var e = wp(C); 0 == (!1 === C.settings.skin) ? (C.contentCSS.push(e.content), Vo.DOM.styleSheetLoader.load(e.ui, Sp(C))) : Sp(C)(); var t, r, o, i, u, a, c, s, f, l, d, m, g, v, p = function() { C.fire("scrollIntoView") }, h = fe.fromTag("div"), b = Wn.detect().os.isAndroid() ? (s = p, f = kv({ classes: [Mi.resolve("android-container")] }), l = Ug(), d = Tl(), m = Wg(d), g = $g(), v = cv(k, s), f.add(l.wrapper()), f.add(g), f.add(v.component()), { system: E(f), element: f.element, init: function(n) { d.set(Mg(n)) }, exit: function() { d.run(function(n) { n.exit(), Ed.remove(g, m) }) }, setToolbarGroups: function(n) { var e = l.createGroups(n); l.setGroups(e) }, setContextToolbar: function(n) { var e = l.createGroups(n); l.setContextToolbar(e) }, focusToolbar: function() { l.focus() }, restoreToolbar: function() { l.restoreToolbar() }, updateMode: function(n) { Gg(g, m, n, f.root()) }, socket: E(g), dropup: E(v) }) : (t = p, r = kv({ classes: [Mi.resolve("ios-container")] }), o = Ug(), i = Tl(), u = Wg(i), a = $g(), c = cv(function() { i.run(function(n) { n.refreshStructure() }) }, t), r.add(o.wrapper()), r.add(a), r.add(c.component()), { system: E(r), element: r.element, init: function(n) { i.set(bp(n)) }, exit: function() { i.run(function(n) { Ed.remove(a, u), n.exit() }) }, setToolbarGroups: function(n) { var e = o.createGroups(n); o.setGroups(e) }, setContextToolbar: function(n) { var e = o.createGroups(n); o.setContextToolbar(e) }, focusToolbar: function() { o.focus() }, restoreToolbar: function() { o.restoreToolbar() }, updateMode: function(n) { Gg(a, u, n, r.root()) }, socket: E(a), dropup: E(c) }), y = fe.fromDom(n.targetNode); Ye.after(y, h), function(n, e) { Ye.append(n, e.element()); var t = $e.children(e.element()); wn(t, function(n) { e.getByDom(n).each(nt) }) }(h, b.system()); var w = n.targetNode.ownerDocument.defaultView, x = vm(w, { onChange: function() { b.system().broadcastOn([jo.orientationChanged()], { width: pm(w) }) }, onReady: k }), T = function(n, e, t, r) { !1 === r && C.selection.collapse(); var o = S(n, e, t); b.setToolbarGroups(!0 === r ? o.readOnly : o.main), C.setMode(!0 === r ? "readonly" : "design"), C.fire(!0 === r ? Op() : Cp()), b.updateMode(r) }, S = function(n, e, t) { var r = n.get(), o = { readOnly: r.backToMask.concat(e.get()), main: r.backToMask.concat(t.get()) }; return o }, O = function(n, e) { return C.on(n, e), { unbind: function() { C.off(n) } } }; return C.on("init", function() { b.init({ editor: { getFrame: function() { return fe.fromDom(C.contentAreaContainer.querySelector("iframe")) }, onDomChanged: function() { return { unbind: k } }, onToReading: function(n) { return O(Op(), n) }, onToEditing: function(n) { return O(Cp(), n) }, onScrollToCursor: function(e) { return C.on("scrollIntoView", function(n) { e(n) }), { unbind: function() { C.off("scrollIntoView"), x.destroy() } } }, onTouchToolstrip: function() { t() }, onTouchContent: function() { var n, e = fe.fromDom(C.editorContainer.querySelector("." + Mi.resolve("toolbar"))); (n = e, Fo(n).bind(function(n) { return b.system().getByDom(n).toOption() })).each(ue), b.restoreToolbar(), t() }, onTapContent: function(n) { var e = n.target(); "img" === be.name(e) ? (C.selection.select(e.dom()), n.kill()) : "a" === be.name(e) && b.system().getByDom(fe.fromDom(C.editorContainer)).each(function(n) { To.isAlpha(n) && zo(e.dom()) }) } }, container: fe.fromDom(C.editorContainer), socket: fe.fromDom(C.contentAreaContainer), toolstrip: fe.fromDom(C.editorContainer.querySelector("." + Mi.resolve("toolstrip"))), toolbar: fe.fromDom(C.editorContainer.querySelector("." + Mi.resolve("toolbar"))), dropup: b.dropup(), alloy: b.system(), translate: k, setReadOnly: function(n) { T(c, a, u, n) }, readOnlyOnInit: function() { return !1 } }); var t = function() { b.dropup().disappear(function() { b.system().broadcastOn([jo.dropupDismissed()], {}) }) }, n = { label: "The first group", scrollable: !1, items: [hs.forToolbar("back", function() { C.selection.collapse(), b.exit() }, {})] }, e = { label: "Back to read only", scrollable: !1, items: [hs.forToolbar("readonly-back", function() { T(c, a, u, !0) }, {})] }, r = rm(b, C), o = om(C.settings, r), i = { label: "The extra group", scrollable: !1, items: [] }, u = So([{ label: "the action group", scrollable: !0, items: o }, i]), a = So([{ label: "The read only mode group", scrollable: !0, items: [] }, i]), c = So({ backToMask: [n], backToReadOnly: [e] }); Tp(b, C) }), { iframeContainer: b.socket().element().dom(), editorContainer: b.element().dom() } } } }) }(); ! function() { "use strict"; var e, t, n, i, r, o = tinymce.util.Tools.resolve("tinymce.ThemeManager"), h = tinymce.util.Tools.resolve("tinymce.EditorManager"), w = tinymce.util.Tools.resolve("tinymce.util.Tools"), d = function(e) { return !1 !== c(e) }, c = function(e) { return e.getParam("menubar") }, f = function(e) { return e.getParam("toolbar_items_size") }, m = function(e) { return e.getParam("menu") }, g = function(e) { return !1 === e.settings.skin }, p = function(e) { var t = e.getParam("resize", "vertical"); return !1 === t ? "none" : "both" === t ? "both" : "vertical" }, v = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"), b = tinymce.util.Tools.resolve("tinymce.ui.Factory"), y = tinymce.util.Tools.resolve("tinymce.util.I18n"), s = function(e) { return e.fire("SkinLoaded") }, x = function(e) { return e.fire("ResizeEditor") }, _ = function(e) { return e.fire("BeforeRenderUI") }, a = function(t, n) { return function() { var e = t.find(n)[0]; e && e.focus(!0) } }, C = function(e, t) { e.shortcuts.add("Alt+F9", "", a(t, "menubar")), e.shortcuts.add("Alt+F10,F10", "", a(t, "toolbar")), e.shortcuts.add("Alt+F11", "", a(t, "elementpath")), t.on("cancel", function() { e.focus() }) }, R = tinymce.util.Tools.resolve("tinymce.geom.Rect"), u = tinymce.util.Tools.resolve("tinymce.util.Delay"), E = function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t] }, k = function(e) { return function() { return e } }, l = k(!1), T = k(!0), H = l, S = T, M = function() { return N }, N = (i = { fold: function(e, t) { return e() }, is: H, isSome: H, isNone: S, getOr: n = function(e) { return e }, getOrThunk: t = function(e) { return e() }, getOrDie: function(e) { throw new Error(e || "error: getOrDie called on none.") }, getOrNull: function() { return null }, getOrUndefined: function() { return undefined }, or: n, orThunk: t, map: M, ap: M, each: function() {}, bind: M, flatten: M, exists: H, forall: S, filter: M, equals: e = function(e) { return e.isNone() }, equals_: e, toArray: function() { return [] }, toString: k("none()") }, Object.freeze && Object.freeze(i), i), P = function(n) { var e = function() { return n }, t = function() { return r }, i = function(e) { return e(n) }, r = { fold: function(e, t) { return t(n) }, is: function(e) { return n === e }, isSome: S, isNone: H, getOr: e, getOrThunk: e, getOrDie: e, getOrNull: e, getOrUndefined: e, or: t, orThunk: t, map: function(e) { return P(e(n)) }, ap: function(e) { return e.fold(M, function(e) { return P(e(n)) }) }, each: function(e) { e(n) }, bind: i, flatten: e, exists: i, forall: i, filter: function(e) { return e(n) ? r : N }, equals: function(e) { return e.is(n) }, equals_: function(e, t) { return e.fold(H, function(e) { return t(n, e) }) }, toArray: function() { return [n] }, toString: function() { return "some(" + n + ")" } }; return r }, D = { some: P, none: M, from: function(e) { return null === e || e === undefined ? N : P(e) } }, W = function(e) { return e ? e.getRoot().uiContainer : null }, O = { getUiContainerDelta: function(e) { var t = W(e); if (t && "static" !== v.DOM.getStyle(t, "position", !0)) { var n = v.DOM.getPos(t), i = t.scrollLeft - n.x, r = t.scrollTop - n.y; return D.some({ x: i, y: r }) } return D.none() }, setUiContainer: function(e, t) { var n = v.DOM.select(e.settings.ui_container)[0]; t.getRoot().uiContainer = n }, getUiContainer: W, inheritUiContainer: function(e, t) { return t.uiContainer = W(e) } }, A = function(i, e, r) { var o, s = []; if (e) return w.each(e.split(/[ ,]/), function(t) { var e, n = function() { var e = i.selection; t.settings.stateSelector && e.selectorChanged(t.settings.stateSelector, function(e) { t.active(e) }, !0), t.settings.disabledStateSelector && e.selectorChanged(t.settings.disabledStateSelector, function(e) { t.disabled(e) }) }; "|" === t ? o = null : (o || (o = { type: "buttongroup", items: [] }, s.push(o)), i.buttons[t] && (e = t, "function" == typeof(t = i.buttons[e]) && (t = t()), t.type = t.type || "button", t.size = r, t = b.create(t), o.items.push(t), i.initialized ? n() : i.on("init", n))) }), { type: "toolbar", layout: "flow", items: s } }, B = A, L = function(n, i) { var e, t, r = []; if (w.each(!1 === (t = (e = n).getParam("toolbar")) ? [] : w.isArray(t) ? w.grep(t, function(e) { return 0 < e.length }) : function(e, t) { for (var n = [], i = 1; i < 10; i++) { var r = e["toolbar" + i]; if (!r) break; n.push(r) } var o = e.toolbar ? [e.toolbar] : [t]; return 0 < n.length ? n : o }(e.settings, "undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"), function(e) { var t; (t = e) && r.push(A(n, t, i)) }), r.length) return { type: "panel", layout: "stack", classes: "toolbar-grp", ariaRoot: !0, ariaRemember: !0, items: r } }, I = v.DOM, z = function(e) { return { left: e.x, top: e.y, width: e.w, height: e.h, right: e.x + e.w, bottom: e.y + e.h } }, F = function(e, t) { e.moveTo(t.left, t.top) }, U = function(e, t, n, i, r, o) { return o = z({ x: t, y: n, w: o.w, h: o.h }), e && (o = e({ elementRect: z(i), contentAreaRect: z(r), panelRect: o })), o }, V = function(x) { var i, o = function() { return x.contextToolbars || [] }, n = function(e, t) { var n, i, r, o, s, a, l, u = x.getParam("inline_toolbar_position_handler"); if (!x.removed) { if (!e || !e.toolbar.panel) return c = x, void w.each(c.contextToolbars, function(e) { e.panel && e.panel.hide() }); var c, d, f, h, m; l = ["bc-tc", "tc-bc", "tl-bl", "bl-tl", "tr-br", "br-tr"], s = e.toolbar.panel, t && s.show(), d = e.element, f = I.getPos(x.getContentAreaContainer()), h = x.dom.getRect(d), "BODY" === (m = x.dom.getRoot()).nodeName && (h.x -= m.ownerDocument.documentElement.scrollLeft || m.scrollLeft, h.y -= m.ownerDocument.documentElement.scrollTop || m.scrollTop), h.x += f.x, h.y += f.y, r = h, i = I.getRect(s.getEl()), o = I.getRect(x.getContentAreaContainer() || x.getBody()); var g, p, v, b = O.getUiContainerDelta(s).getOr({ x: 0, y: 0 }); if (r.x += b.x, r.y += b.y, i.x += b.x, i.y += b.y, o.x += b.x, o.y += b.y, "inline" !== I.getStyle(e.element, "display", !0)) { var y = e.element.getBoundingClientRect(); r.w = y.width, r.h = y.height } x.inline || (o.w = x.getDoc().documentElement.offsetWidth), x.selection.controlSelection.isResizable(e.element) && r.w < 25 && (r = R.inflate(r, 0, 8)), n = R.findBestRelativePosition(i, r, o, l), r = R.clamp(r, o), n ? (a = R.relativePosition(i, r, n), F(s, U(u, a.x, a.y, r, o, i))) : (o.h += i.h, (r = R.intersect(o, r)) ? (n = R.findBestRelativePosition(i, r, o, ["bc-tc", "bl-tl", "br-tr"])) ? (a = R.relativePosition(i, r, n), F(s, U(u, a.x, a.y, r, o, i))) : F(s, U(u, r.x, r.y, r, o, i)) : s.hide()), g = s, v = function(e, t) { return e === t }, p = (p = n) ? p.substr(0, 2) : "", w.each({ t: "down", b: "up" }, function(e, t) { g.classes.toggle("arrow-" + e, v(t, p.substr(0, 1))) }), w.each({ l: "left", r: "right" }, function(e, t) { g.classes.toggle("arrow-" + e, v(t, p.substr(1, 1))) }) } }, r = function(e) { return function() { u.requestAnimationFrame(function() { x.selection && n(a(x.selection.getNode()), e) }) } }, t = function(e) { var t; if (e.toolbar.panel) return e.toolbar.panel.show(), void n(e); t = b.create({ type: "floatpanel", role: "dialog", classes: "tinymce tinymce-inline arrow", ariaLabel: "Inline toolbar", layout: "flex", direction: "column", align: "stretch", autohide: !1, autofix: !0, fixed: !0, border: 1, items: B(x, e.toolbar.items), oncancel: function() { x.focus() } }), O.setUiContainer(x, t), function(e) { if (!i) { var t = r(!0), n = O.getUiContainer(e); i = x.selection.getScrollContainer() || x.getWin(), I.bind(i, "scroll", t), I.bind(n, "scroll", t), x.on("remove", function() { I.unbind(i, "scroll", t), I.unbind(n, "scroll", t) }) } }(t), (e.toolbar.panel = t).renderTo().reflow(), n(e) }, s = function() { w.each(o(), function(e) { e.panel && e.panel.hide() }) }, a = function(e) { var t, n, i, r = o(); for (t = (i = x.$(e).parents().add(e)).length - 1; 0 <= t; t--) for (n = r.length - 1; 0 <= n; n--) if (r[n].predicate(i[t])) return { toolbar: r[n], element: i[t] }; return null }; x.on("click keyup setContent ObjectResized", function(e) { ("setcontent" !== e.type || e.selection) && u.setEditorTimeout(x, function() { var e; (e = a(x.selection.getNode())) ? (s(), t(e)) : s() }) }), x.on("blur hide contextmenu", s), x.on("ObjectResizeStart", function() { var e = a(x.selection.getNode()); e && e.toolbar.panel && e.toolbar.panel.hide() }), x.on("ResizeEditor ResizeWindow", r(!0)), x.on("nodeChange", r(!1)), x.on("remove", function() { w.each(o(), function(e) { e.panel && e.panel.remove() }), x.contextToolbars = {} }), x.shortcuts.add("ctrl+shift+e > ctrl+shift+p", "", function() { var e = a(x.selection.getNode()); e && e.toolbar.panel && e.toolbar.panel.items()[0].focus() }) }, Y = function(t) { return function(e) { return function(e) { if (null === e) return "null"; var t = typeof e; return "object" === t && Array.prototype.isPrototypeOf(e) ? "array" : "object" === t && String.prototype.isPrototypeOf(e) ? "string" : t }(e) === t } }, $ = Y("function"), X = Y("number"), q = (r = Array.prototype.indexOf) === undefined ? function(e, t) { return ee(e, t) } : function(e, t) { return r.call(e, t) }, j = function(e, t) { return Q(e, t).isSome() }, J = function(e, t) { for (var n = e.length, i = new Array(n), r = 0; r < n; r++) { var o = e[r]; i[r] = t(o, r, e) } return i }, G = function(e, t) { for (var n = 0, i = e.length; n < i; n++) t(e[n], n, e) }, K = function(e, t) { for (var n = [], i = 0, r = e.length; i < r; i++) { var o = e[i]; t(o, i, e) && n.push(o) } return n }, Z = function(e, t) { for (var n = 0, i = e.length; n < i; n++) { var r = e[n]; if (t(r, n, e)) return D.some(r) } return D.none() }, Q = function(e, t) { for (var n = 0, i = e.length; n < i; n++) if (t(e[n], n, e)) return D.some(n); return D.none() }, ee = function(e, t) { for (var n = 0, i = e.length; n < i; ++n) if (e[n] === t) return n; return -1 }, te = Array.prototype.push, ne = (Array.prototype.slice, $(Array.from) && Array.from, { file: { title: "File", items: "newdocument restoredraft | preview | print" }, edit: { title: "Edit", items: "undo redo | cut copy paste pastetext | selectall" }, view: { title: "View", items: "code | visualaid visualchars visualblocks | spellchecker | preview fullscreen" }, insert: { title: "Insert", items: "image link media template codesample inserttable | charmap hr | pagebreak nonbreaking anchor toc | insertdatetime" }, format: { title: "Format", items: "bold italic underline strikethrough superscript subscript codeformat | blockformats align | removeformat" }, tools: { title: "Tools", items: "spellchecker spellcheckerlanguage | a11ycheck code" }, table: { title: "Table" }, help: { title: "Help" } }), ie = function(e, t) { return "|" === e ? { name: "|", item: { text: "|" } } : t ? { name: e, item: t } : null }, re = function(e) { return e && "|" === e.item.text }, oe = function(n, e, t, i) { var r, o, s, a, l, u, c; return e ? (o = e[i], a = !0) : o = ne[i], o && (r = { text: o.title }, s = [], w.each((o.items || "").split(/[ ,]/), function(e) { var t = ie(e, n[e]); t && s.push(t) }), a || w.each(n, function(e, t) { var n; e.context !== i || (n = t, Q(s, function(e) { return e.name === n }).isSome()) || ("before" === e.separator && s.push({ name: "|", item: { text: "|" } }), e.prependToContext ? s.unshift(ie(t, e)) : s.push(ie(t, e)), "after" === e.separator && s.push({ name: "|", item: { text: "|" } })) }), r.menu = J((l = t, u = K(s, function(e) { return !1 === l.hasOwnProperty(e.name) }), c = K(u, function(e, t, n) { return !re(e) || !re(n[t - 1]) }), K(c, function(e, t, n) { return !re(e) || 0 < t && t < n.length - 1 })), function(e) { return e.item }), !r.menu.length) ? null : r }, se = function(e) { for (var t, n = [], i = function(e) { var t, n = [], i = m(e); if (i) for (t in i) n.push(t); else for (t in ne) n.push(t); return n }(e), r = w.makeMap((t = e, t.getParam("removed_menuitems", "")).split(/[ ,]/)), o = c(e), s = "string" == typeof o ? o.split(/[ ,]/) : i, a = 0; a < s.length; a++) { var l = s[a], u = oe(e.menuItems, m(e), r, l); u && n.push(u) } return n }, ae = v.DOM, le = function(e) { return { width: e.clientWidth, height: e.clientHeight } }, ue = function(e, t, n) { var i, r, o, s; i = e.getContainer(), r = e.getContentAreaContainer().firstChild, o = le(i), s = le(r), null !== t && (t = Math.max(e.getParam("min_width", 100, "number"), t), t = Math.min(e.getParam("max_width", 65535, "number"), t), ae.setStyle(i, "width", t + (o.width - s.width)), ae.setStyle(r, "width", t)), n = Math.max(e.getParam("min_height", 100, "number"), n), n = Math.min(e.getParam("max_height", 65535, "number"), n), ae.setStyle(r, "height", n), x(e) }, ce = ue, de = function(e, t, n) { var i = e.getContentAreaContainer(); ue(e, i.clientWidth + t, i.clientHeight + n) }, fe = tinymce.util.Tools.resolve("tinymce.Env"), he = function(e, t, n) { var i, r = e.settings[n]; r && r((i = t.getEl("body"), { element: function() { return i } })) }, me = function(c, d, f) { return function(e) { var t, n, i, r, o, s = e.control, a = s.parents().filter("panel")[0], l = a.find("#" + d)[0], u = (t = f, n = d, w.grep(t, function(e) { return e.name === n })[0]); i = d, r = a, o = f, w.each(o, function(e) { var t = r.items().filter("#" + e.name)[0]; t && t.visible() && e.name !== i && (he(e, t, "onhide"), t.visible(!1)) }), s.parent().items().each(function(e) { e.active(!1) }), l && l.visible() ? (he(u, l, "onhide"), l.hide(), s.active(!1)) : (l ? l.show() : (l = b.create({ type: "container", name: d, layout: "stack", classes: "sidebar-panel", html: "" }), a.prepend(l), he(u, l, "onrender")), he(u, l, "onshow"), s.active(!0)), x(c) } }, ge = function(e) { return !(fe.ie && !(11 <= fe.ie) || !e.sidebars) && 0 < e.sidebars.length }, pe = function(n) { return { type: "panel", name: "sidebar", layout: "stack", classes: "sidebar", items: [{ type: "toolbar", layout: "stack", classes: "sidebar-toolbar", items: w.map(n.sidebars, function(e) { var t = e.settings; return { type: "button", icon: t.icon, image: t.image, tooltip: t.tooltip, onclick: me(n, e.name, n.sidebars) } }) }] } }, ve = function(e) { var t = function() { e._skinLoaded = !0, s(e) }; return function() { e.initialized ? t() : e.on("init", t) } }, be = v.DOM, ye = function(e) { return { type: "panel", name: "iframe", layout: "stack", classes: "edit-area", border: e, html: "" } }, xe = function(t, e, n) { var i, r, o, s, a; if (!1 === g(t) && n.skinUiCss ? be.styleSheetLoader.load(n.skinUiCss, ve(t)) : ve(t)(), i = e.panel = b.create({ type: "panel", role: "application", classes: "tinymce", style: "visibility: hidden", layout: "stack", border: 1, items: [{ type: "container", classes: "top-part", items: [!1 === d(t) ? null : { type: "menubar", border: "0 0 1 0", items: se(t) }, L(t, f(t))] }, ge(t) ? (s = t, { type: "panel", layout: "stack", classes: "edit-aria-container", border: "1 0 0 0", items: [ye("0"), pe(s)] }) : ye("1 0 0 0")] }), O.setUiContainer(t, i), "none" !== p(t) && (r = { type: "resizehandle", direction: p(t), onResizeStart: function() { var e = t.getContentAreaContainer().firstChild; o = { width: e.clientWidth, height: e.clientHeight } }, onResize: function(e) { "both" === p(t) ? ce(t, o.width + e.deltaX, o.height + e.deltaY) : ce(t, null, o.height + e.deltaY) } }), t.getParam("statusbar", !0, "boolean")) { ////去掉 tinymce 驱动 //var l = y.translate(["Powered by {0}", 'tinymce']), var l = y.translate(["", '']), u = t.getParam("branding", !0, "boolean") ? { type: "label", classes: "branding", html: " " + l } : null; i.add({ type: "panel", name: "statusbar", classes: "statusbar", layout: "flow", border: "1 0 0 0", ariaRoot: !0, items: [{ type: "elementpath", editor: t }, r, u] }) } return _(t), t.on("SwitchMode", (a = i, function(e) { a.find("*").disabled("readonly" === e.mode) })), i.renderBefore(n.targetNode).reflow(), t.getParam("readonly", !1, "boolean") && t.setMode("readonly"), n.width && be.setStyle(i.getEl(), "width", n.width), t.on("remove", function() { i.remove(), i = null }), C(t, i), V(t), { iframeContainer: i.find("#iframe")[0].getEl(), editorContainer: i.getEl() } }, we = tinymce.util.Tools.resolve("tinymce.dom.DomQuery"), _e = 0, Ce = { id: function() { return "mceu_" + _e++ }, create: function(e, t, n) { var i = document.createElement(e); return v.DOM.setAttribs(i, t), "string" == typeof n ? i.innerHTML = n : w.each(n, function(e) { e.nodeType && i.appendChild(e) }), i }, createFragment: function(e) { return v.DOM.createFragment(e) }, getWindowSize: function() { return v.DOM.getViewPort() }, getSize: function(e) { var t, n; if (e.getBoundingClientRect) { var i = e.getBoundingClientRect(); t = Math.max(i.width || i.right - i.left, e.offsetWidth), n = Math.max(i.height || i.bottom - i.bottom, e.offsetHeight) } else t = e.offsetWidth, n = e.offsetHeight; return { width: t, height: n } }, getPos: function(e, t) { return v.DOM.getPos(e, t || Ce.getContainer()) }, getContainer: function() { return fe.container ? fe.container : document.body }, getViewPort: function(e) { return v.DOM.getViewPort(e) }, get: function(e) { return document.getElementById(e) }, addClass: function(e, t) { return v.DOM.addClass(e, t) }, removeClass: function(e, t) { return v.DOM.removeClass(e, t) }, hasClass: function(e, t) { return v.DOM.hasClass(e, t) }, toggleClass: function(e, t, n) { return v.DOM.toggleClass(e, t, n) }, css: function(e, t, n) { return v.DOM.setStyle(e, t, n) }, getRuntimeStyle: function(e, t) { return v.DOM.getStyle(e, t, !0) }, on: function(e, t, n, i) { return v.DOM.bind(e, t, n, i) }, off: function(e, t, n) { return v.DOM.unbind(e, t, n) }, fire: function(e, t, n) { return v.DOM.fire(e, t, n) }, innerHtml: function(e, t) { v.DOM.setHTML(e, t) } }, Re = function(e) { return "static" === Ce.getRuntimeStyle(e, "position") }, Ee = function(e) { return e.state.get("fixed") }; function ke(e, t, n) { var i, r, o, s, a, l, u, c, d, f; return d = Te(), o = (r = Ce.getPos(t, O.getUiContainer(e))).x, s = r.y, Ee(e) && Re(document.body) && (o -= d.x, s -= d.y), i = e.getEl(), a = (f = Ce.getSize(i)).width, l = f.height, u = (f = Ce.getSize(t)).width, c = f.height, "b" === (n = (n || "").split(""))[0] && (s += c), "r" === n[1] && (o += u), "c" === n[0] && (s += Math.round(c / 2)), "c" === n[1] && (o += Math.round(u / 2)), "b" === n[3] && (s -= l), "r" === n[4] && (o -= a), "c" === n[3] && (s -= Math.round(l / 2)), "c" === n[4] && (o -= Math.round(a / 2)), { x: o, y: s, w: a, h: l } } var Te = function() { var e = window, t = Math.max(e.pageXOffset, document.body.scrollLeft, document.documentElement.scrollLeft), n = Math.max(e.pageYOffset, document.body.scrollTop, document.documentElement.scrollTop); return { x: t, y: n, w: t + (e.innerWidth || document.documentElement.clientWidth), h: n + (e.innerHeight || document.documentElement.clientHeight) } }, He = function(e) { var t, n = O.getUiContainer(e); return n && !Ee(e) ? { x: 0, y: 0, w: (t = n).scrollWidth - 1, h: t.scrollHeight - 1 } : Te() }, Se = { testMoveRel: function(e, t) { for (var n = He(this), i = 0; i < t.length; i++) { var r = ke(this, e, t[i]); if (Ee(this)) { if (0 < r.x && r.x + r.w < n.w && 0 < r.y && r.y + r.h < n.h) return t[i] } else if (r.x > n.x && r.x + r.w < n.w && r.y > n.y && r.y + r.h < n.h) return t[i] } return t[0] }, moveRel: function(e, t) { "string" != typeof t && (t = this.testMoveRel(e, t)); var n = ke(this, e, t); return this.moveTo(n.x, n.y) }, moveBy: function(e, t) { var n = this.layoutRect(); return this.moveTo(n.x + e, n.y + t), this }, moveTo: function(e, t) { var n = this; function i(e, t, n) { return e < 0 ? 0 : t < e + n && (e = t - n) < 0 ? 0 : e } if (n.settings.constrainToViewport) { var r = He(this), o = n.layoutRect(); e = i(e, r.w, o.w), t = i(t, r.h, o.h) } var s = O.getUiContainer(n); return s && Re(s) && !Ee(n) && (e -= s.scrollLeft, t -= s.scrollTop), s && (e += 1, t += 1), n.state.get("rendered") ? n.layoutRect({ x: e, y: t }).repaint() : (n.settings.x = e, n.settings.y = t), n.fire("move", { x: e, y: t }), n } }, Me = tinymce.util.Tools.resolve("tinymce.util.Class"), Ne = tinymce.util.Tools.resolve("tinymce.util.EventDispatcher"), Pe = function(e) { var t; if (e) return "number" == typeof e ? { top: e = e || 0, left: e, bottom: e, right: e } : (1 === (t = (e = e.split(" ")).length) ? e[1] = e[2] = e[3] = e[0] : 2 === t ? (e[2] = e[0], e[3] = e[1]) : 3 === t && (e[3] = e[1]), { top: parseInt(e[0], 10) || 0, right: parseInt(e[1], 10) || 0, bottom: parseInt(e[2], 10) || 0, left: parseInt(e[3], 10) || 0 }) }, De = function(i, e) { function t(e) { var t = parseFloat(function(e) { var t = i.ownerDocument.defaultView; if (t) { var n = t.getComputedStyle(i, null); return n ? (e = e.replace(/[A-Z]/g, function(e) { return "-" + e }), n.getPropertyValue(e)) : null } return i.currentStyle[e] }(e)); return isNaN(t) ? 0 : t } return { top: t(e + "TopWidth"), right: t(e + "RightWidth"), bottom: t(e + "BottomWidth"), left: t(e + "LeftWidth") } }; function We() {} function Oe(e) { this.cls = [], this.cls._map = {}, this.onchange = e || We, this.prefix = "" } w.extend(Oe.prototype, { add: function(e) { return e && !this.contains(e) && (this.cls._map[e] = !0, this.cls.push(e), this._change()), this }, remove: function(e) { if (this.contains(e)) { var t = void 0; for (t = 0; t < this.cls.length && this.cls[t] !== e; t++); this.cls.splice(t, 1), delete this.cls._map[e], this._change() } return this }, toggle: function(e, t) { var n = this.contains(e); return n !== t && (n ? this.remove(e) : this.add(e), this._change()), this }, contains: function(e) { return !!this.cls._map[e] }, _change: function() { delete this.clsValue, this.onchange.call(this) } }), Oe.prototype.toString = function() { var e; if (this.clsValue) return this.clsValue; e = ""; for (var t = 0; t < this.cls.length; t++) 0 < t && (e += " "), e += this.prefix + this.cls[t]; return e }; var Ae, Be, Le, Ie = /^([\w\\*]+)?(?:#([\w\-\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i, ze = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, Fe = /^\s*|\s*$/g, Ue = Me.extend({ init: function(e) { var o = this.match; function s(e, t, n) { var i; function r(e) { e && t.push(e) } return r(function(t) { if (t) return t = t.toLowerCase(), function(e) { return "*" === t || e.type === t } }((i = Ie.exec(e.replace(Fe, "")))[1])), r(function(t) { if (t) return function(e) { return e._name === t } }(i[2])), r(function(n) { if (n) return n = n.split("."), function(e) { for (var t = n.length; t--;) if (!e.classes.contains(n[t])) return !1; return !0 } }(i[3])), r(function(n, i, r) { if (n) return function(e) { var t = e[n] ? e[n]() : ""; return i ? "=" === i ? t === r : "*=" === i ? 0 <= t.indexOf(r) : "~=" === i ? 0 <= (" " + t + " ").indexOf(" " + r + " ") : "!=" === i ? t !== r : "^=" === i ? 0 === t.indexOf(r) : "$=" === i && t.substr(t.length - r.length) === r : !! r } }(i[4], i[5], i[6])), r(function(i) { var t; if (i) return (i = /(?:not\((.+)\))|(.+)/i.exec(i))[1] ? (t = a(i[1], []), function(e) { return !o(e, t) }) : (i = i[2], function(e, t, n) { return "first" === i ? 0 === t : "last" === i ? t === n - 1 : "even" === i ? t % 2 == 0 : "odd" === i ? t % 2 == 1 : !! e[i] && e[i]() }) }(i[7])), t.pseudo = !! i[7], t.direct = n, t } function a(e, t) { var n, i, r, o = []; do { if (ze.exec(""), (i = ze.exec(e)) && (e = i[3], o.push(i[1]), i[2])) { n = i[3]; break } } while (i); for (n && a(n, t), e = [], r = 0; r < o.length; r++)">" !== o[r] && e.push(s(o[r], [], ">" === o[r - 1])); return t.push(e), t } this._selectors = a(e, []) }, match: function(e, t) { var n, i, r, o, s, a, l, u, c, d, f, h, m; for (n = 0, i = (t = t || this._selectors).length; n < i; n++) { for (m = e, h = 0, r = (o = (s = t[n]).length) - 1; 0 <= r; r--) for (u = s[r]; m;) { if (u.pseudo) for (c = d = (f = m.parent().items()).length; c-- && f[c] !== m;); for (a = 0, l = u.length; a < l; a++) if (!u[a](m, c, d)) { a = l + 1; break } if (a === l) { h++; break } if (r === o - 1) break; m = m.parent() } if (h === o) return !0 } return !1 }, find: function(e) { var t, n, u = [], i = this._selectors; function c(e, t, n) { var i, r, o, s, a, l = t[n]; for (i = 0, r = e.length; i < r; i++) { for (a = e[i], o = 0, s = l.length; o < s; o++) if (!l[o](a, i, r)) { o = s + 1; break } if (o === s) n === t.length - 1 ? u.push(a) : a.items && c(a.items(), t, n + 1); else if (l.direct) return; a.items && c(a.items(), t, n) } } if (e.items) { for (t = 0, n = i.length; t < n; t++) c(e.items(), i[t], 0); 1 < n && (u = function(e) { for (var t, n = [], i = e.length; i--;)(t = e[i]).__checked || (n.push(t), t.__checked = 1); for (i = n.length; i--;) delete n[i].__checked; return n }(u)) } return Ae || (Ae = Ue.Collection), new Ae(u) } }), Ve = Array.prototype.push, Ye = Array.prototype.slice; Le = { length: 0, init: function(e) { e && this.add(e) }, add: function(e) { return w.isArray(e) ? Ve.apply(this, e) : e instanceof Be ? this.add(e.toArray()) : Ve.call(this, e), this }, set: function(e) { var t, n = this, i = n.length; for (n.length = 0, n.add(e), t = n.length; t < i; t++) delete n[t]; return n }, filter: function(t) { var e, n, i, r, o = []; for ("string" == typeof t ? (t = new Ue(t), r = function(e) { return t.match(e) }) : r = t, e = 0, n = this.length; e < n; e++) r(i = this[e]) && o.push(i); return new Be(o) }, slice: function() { return new Be(Ye.apply(this, arguments)) }, eq: function(e) { return -1 === e ? this.slice(e) : this.slice(e, +e + 1) }, each: function(e) { return w.each(this, e), this }, toArray: function() { return w.toArray(this) }, indexOf: function(e) { for (var t = this.length; t-- && this[t] !== e;); return t }, reverse: function() { return new Be(w.toArray(this).reverse()) }, hasClass: function(e) { return !!this[0] && this[0].classes.contains(e) }, prop: function(t, n) { var e; return n !== undefined ? (this.each(function(e) { e[t] && e[t](n) }), this) : (e = this[0]) && e[t] ? e[t]() : void 0 }, exec: function(t) { var n = w.toArray(arguments).slice(1); return this.each(function(e) { e[t] && e[t].apply(e, n) }), this }, remove: function() { for (var e = this.length; e--;) this[e].remove(); return this }, addClass: function(t) { return this.each(function(e) { e.classes.add(t) }) }, removeClass: function(t) { return this.each(function(e) { e.classes.remove(t) }) } }, w.each("fire on off show hide append prepend before after reflow".split(" "), function(n) { Le[n] = function() { var t = w.toArray(arguments); return this.each(function(e) { n in e && e[n].apply(e, t) }), this } }), w.each("text name disabled active selected checked visible parent value data".split(" "), function(t) { Le[t] = function(e) { return this.prop(t, e) } }), Be = Me.extend(Le); var $e = Ue.Collection = Be, Xe = function(e) { this.create = e.create }; Xe.create = function(r, o) { return new Xe({ create: function(t, n) { var i, e = function(e) { t.set(n, e.value) }; return t.on("change:" + n, function(e) { r.set(o, e.value) }), r.on("change:" + o, e), (i = t._bindings) || (i = t._bindings = [], t.on("destroy", function() { for (var e = i.length; e--;) i[e]() })), i.push(function() { r.off("change:" + o, e) }), r.get(o) } }) }; var qe = tinymce.util.Tools.resolve("tinymce.util.Observable"); function je(e) { return 0 < e.nodeType } var Je, Ge, Ke = Me.extend({ Mixins: [qe], init: function(e) { var t, n; for (t in e = e || {})(n = e[t]) instanceof Xe && (e[t] = n.create(this, t)); this.data = e }, set: function(t, n) { var i, r, o = this.data[t]; if (n instanceof Xe && (n = n.create(this, t)), "object" == typeof t) { for (i in t) this.set(i, t[i]); return this } return function e(t, n) { var i, r; if (t === n) return !0; if (null === t || null === n) return t === n; if ("object" != typeof t || "object" != typeof n) return t === n; if (w.isArray(n)) { if (t.length !== n.length) return !1; for (i = t.length; i--;) if (!e(t[i], n[i])) return !1 } if (je(t) || je(n)) return t === n; for (i in r = {}, n) { if (!e(t[i], n[i])) return !1; r[i] = !0 } for (i in t) if (!r[i] && !e(t[i], n[i])) return !1; return !0 }(o, n) || (this.data[t] = n, r = { target: this, name: t, value: n, oldValue: o }, this.fire("change:" + t, r), this.fire("change", r)), this }, get: function(e) { return this.data[e] }, has: function(e) { return e in this.data }, bind: function(e) { return Xe.create(this, e) }, destroy: function() { this.fire("destroy") } }), Ze = {}, Qe = { add: function(e) { var t = e.parent(); if (t) { if (!t._layout || t._layout.isNative()) return; Ze[t._id] || (Ze[t._id] = t), Je || (Je = !0, u.requestAnimationFrame(function() { var e, t; for (e in Je = !1, Ze)(t = Ze[e]).state.get("rendered") && t.reflow(); Ze = {} }, document.body)) } }, remove: function(e) { Ze[e._id] && delete Ze[e._id] } }, et = "onmousewheel" in document, tt = !1, nt = 0, it = { Statics: { classPrefix: "mce-" }, isRtl: function() { return Ge.rtl }, classPrefix: "mce-", init: function(t) { var e, n, i = this; function r(e) { var t; for (e = e.split(" "), t = 0; t < e.length; t++) i.classes.add(e[t]) } i.settings = t = w.extend({}, i.Defaults, t), i._id = t.id || "mceu_" + nt++, i._aria = { role: t.role }, i._elmCache = {}, i.$ = we, i.state = new Ke({ visible: !0, active: !1, disabled: !1, value: "" }), i.data = new Ke(t.data), i.classes = new Oe(function() { i.state.get("rendered") && (i.getEl().className = this.toString()) }), i.classes.prefix = i.classPrefix, (e = t.classes) && (i.Defaults && (n = i.Defaults.classes) && e !== n && r(n), r(e)), w.each("title text name visible disabled active value".split(" "), function(e) { e in t && i[e](t[e]) }), i.on("click", function() { if (i.disabled()) return !1 }), i.settings = t, i.borderBox = Pe(t.border), i.paddingBox = Pe(t.padding), i.marginBox = Pe(t.margin), t.hidden && i.hide() }, Properties: "parent,name", getContainerElm: function() { var e = O.getUiContainer(this); return e || Ce.getContainer() }, getParentCtrl: function(e) { for (var t, n = this.getRoot().controlIdLookup; e && n && !(t = n[e.id]);) e = e.parentNode; return t }, initLayoutRect: function() { var e, t, n, i, r, o, s, a, l, u, c = this, d = c.settings, f = c.getEl(); e = c.borderBox = c.borderBox || De(f, "border"), c.paddingBox = c.paddingBox || De(f, "padding"), c.marginBox = c.marginBox || De(f, "margin"), u = Ce.getSize(f), a = d.minWidth, l = d.minHeight, r = a || u.width, o = l || u.height, n = d.width, i = d.height, s = void 0 !== (s = d.autoResize) ? s : !n && !i, n = n || r, i = i || o; var h = e.left + e.right, m = e.top + e.bottom, g = d.maxWidth || 65535, p = d.maxHeight || 65535; return c._layoutRect = t = { x: d.x || 0, y: d.y || 0, w: n, h: i, deltaW: h, deltaH: m, contentW: n - h, contentH: i - m, innerW: n - h, innerH: i - m, startMinWidth: a || 0, startMinHeight: l || 0, minW: Math.min(r, g), minH: Math.min(o, p), maxW: g, maxH: p, autoResize: s, scrollW: 0 }, c._lastLayoutRect = {}, t }, layoutRect: function(e) { var t, n, i, r, o, s = this, a = s._layoutRect; return a || (a = s.initLayoutRect()), e ? (i = a.deltaW, r = a.deltaH, e.x !== undefined && (a.x = e.x), e.y !== undefined && (a.y = e.y), e.minW !== undefined && (a.minW = e.minW), e.minH !== undefined && (a.minH = e.minH), (n = e.w) !== undefined && (n = (n = n < a.minW ? a.minW : n) > a.maxW ? a.maxW : n, a.w = n, a.innerW = n - i), (n = e.h) !== undefined && (n = (n = n < a.minH ? a.minH : n) > a.maxH ? a.maxH : n, a.h = n, a.innerH = n - r), (n = e.innerW) !== undefined && (n = (n = n < a.minW - i ? a.minW - i : n) > a.maxW - i ? a.maxW - i : n, a.innerW = n, a.w = n + i), (n = e.innerH) !== undefined && (n = (n = n < a.minH - r ? a.minH - r : n) > a.maxH - r ? a.maxH - r : n, a.innerH = n, a.h = n + r), e.contentW !== undefined && (a.contentW = e.contentW), e.contentH !== undefined && (a.contentH = e.contentH), (t = s._lastLayoutRect).x === a.x && t.y === a.y && t.w === a.w && t.h === a.h || ((o = Ge.repaintControls) && o.map && !o.map[s._id] && (o.push(s), o.map[s._id] = !0), t.x = a.x, t.y = a.y, t.w = a.w, t.h = a.h), s) : a }, repaint: function() { var e, t, n, i, r, o, s, a, l, u, c = this; l = document.createRange ? function(e) { return e } : Math.round, e = c.getEl().style, i = c._layoutRect, a = c._lastRepaintRect || {}, o = (r = c.borderBox).left + r.right, s = r.top + r.bottom, i.x !== a.x && (e.left = l(i.x) + "px", a.x = i.x), i.y !== a.y && (e.top = l(i.y) + "px", a.y = i.y), i.w !== a.w && (u = l(i.w - o), e.width = (0 <= u ? u : 0) + "px", a.w = i.w), i.h !== a.h && (u = l(i.h - s), e.height = (0 <= u ? u : 0) + "px", a.h = i.h), c._hasBody && i.innerW !== a.innerW && (u = l(i.innerW), (n = c.getEl("body")) && ((t = n.style).width = (0 <= u ? u : 0) + "px"), a.innerW = i.innerW), c._hasBody && i.innerH !== a.innerH && (u = l(i.innerH), (n = n || c.getEl("body")) && ((t = t || n.style).height = (0 <= u ? u : 0) + "px"), a.innerH = i.innerH), c._lastRepaintRect = a, c.fire("repaint", {}, !1) }, updateLayoutRect: function() { var e = this; e.parent()._lastRect = null, Ce.css(e.getEl(), { width: "", height: "" }), e._layoutRect = e._lastRepaintRect = e._lastLayoutRect = null, e.initLayoutRect() }, on: function(e, t) { var n, i, r, o = this; return rt(o).on(e, "string" != typeof(n = t) ? n : function(e) { return i || o.parentsAndSelf().each(function(e) { var t = e.settings.callbacks; if (t && (i = t[n])) return r = e, !1 }), i ? i.call(r, e) : (e.action = n, void this.fire("execute", e)) }), o }, off: function(e, t) { return rt(this).off(e, t), this }, fire: function(e, t, n) { if ((t = t || {}).control || (t.control = this), t = rt(this).fire(e, t), !1 !== n && this.parent) for (var i = this.parent(); i && !t.isPropagationStopped();) i.fire(e, t, !1), i = i.parent(); return t }, hasEventListeners: function(e) { return rt(this).has(e) }, parents: function(e) { var t, n = new $e; for (t = this.parent(); t; t = t.parent()) n.add(t); return e && (n = n.filter(e)), n }, parentsAndSelf: function(e) { return new $e(this).add(this.parents(e)) }, next: function() { var e = this.parent().items(); return e[e.indexOf(this) + 1] }, prev: function() { var e = this.parent().items(); return e[e.indexOf(this) - 1] }, innerHtml: function(e) { return this.$el.html(e), this }, getEl: function(e) { var t = e ? this._id + "-" + e : this._id; return this._elmCache[t] || (this._elmCache[t] = we("#" + t)[0]), this._elmCache[t] }, show: function() { return this.visible(!0) }, hide: function() { return this.visible(!1) }, focus: function() { try { this.getEl().focus() } catch (e) {} return this }, blur: function() { return this.getEl().blur(), this }, aria: function(e, t) { var n = this, i = n.getEl(n.ariaTarget); return void 0 === t ? n._aria[e] : (n._aria[e] = t, n.state.get("rendered") && i.setAttribute("role" === e ? e : "aria-" + e, t), n) }, encode: function(e, t) { return !1 !== t && (e = this.translate(e)), (e || "").replace(/[&<>"]/g, function(e) { return "&#" + e.charCodeAt(0) + ";" }) }, translate: function(e) { return Ge.translate ? Ge.translate(e) : e }, before: function(e) { var t = this.parent(); return t && t.insert(e, t.items().indexOf(this), !0), this }, after: function(e) { var t = this.parent(); return t && t.insert(e, t.items().indexOf(this)), this }, remove: function() { var t, e, n = this, i = n.getEl(), r = n.parent(); if (n.items) { var o = n.items().toArray(); for (e = o.length; e--;) o[e].remove() } r && r.items && (t = [], r.items().each(function(e) { e !== n && t.push(e) }), r.items().set(t), r._lastRect = null), n._eventsRoot && n._eventsRoot === n && we(i).off(); var s = n.getRoot().controlIdLookup; return s && delete s[n._id], i && i.parentNode && i.parentNode.removeChild(i), n.state.set("rendered", !1), n.state.destroy(), n.fire("remove"), n }, renderBefore: function(e) { return we(e).before(this.renderHtml()), this.postRender(), this }, renderTo: function(e) { return we(e || this.getContainerElm()).append(this.renderHtml()), this.postRender(), this }, preRender: function() {}, render: function() {}, renderHtml: function() { return '
    ' }, postRender: function() { var e, t, n, i, r, o = this, s = o.settings; for (i in o.$el = we(o.getEl()), o.state.set("rendered", !0), s) 0 === i.indexOf("on") && o.on(i.substr(2), s[i]); if (o._eventsRoot) { for (n = o.parent(); !r && n; n = n.parent()) r = n._eventsRoot; if (r) for (i in r._nativeEvents) o._nativeEvents[i] = !0 } ot(o), s.style && (e = o.getEl()) && (e.setAttribute("style", s.style), e.style.cssText = s.style), o.settings.border && (t = o.borderBox, o.$el.css({ "border-top-width": t.top, "border-right-width": t.right, "border-bottom-width": t.bottom, "border-left-width": t.left })); var a = o.getRoot(); for (var l in a.controlIdLookup || (a.controlIdLookup = {}), (a.controlIdLookup[o._id] = o)._aria) o.aria(l, o._aria[l]); !1 === o.state.get("visible") && (o.getEl().style.display = "none"), o.bindStates(), o.state.on("change:visible", function(e) { var t, n = e.value; o.state.get("rendered") && (o.getEl().style.display = !1 === n ? "none" : "", o.getEl().getBoundingClientRect()), (t = o.parent()) && (t._lastRect = null), o.fire(n ? "show" : "hide"), Qe.add(o) }), o.fire("postrender", {}, !1) }, bindStates: function() {}, scrollIntoView: function(e) { var t, n, i, r, o, s, a = this.getEl(), l = a.parentNode, u = function(e, t) { var n, i, r = e; for (n = i = 0; r && r !== t && r.nodeType;) n += r.offsetLeft || 0, i += r.offsetTop || 0, r = r.offsetParent; return { x: n, y: i } }(a, l); return t = u.x, n = u.y, i = a.offsetWidth, r = a.offsetHeight, o = l.clientWidth, s = l.clientHeight, "end" === e ? (t -= o - i, n -= s - r) : "center" === e && (t -= o / 2 - i / 2, n -= s / 2 - r / 2), l.scrollLeft = t, l.scrollTop = n, this }, getRoot: function() { for (var e, t = this, n = []; t;) { if (t.rootControl) { e = t.rootControl; break } n.push(t), t = (e = t).parent() } e || (e = this); for (var i = n.length; i--;) n[i].rootControl = e; return e }, reflow: function() { Qe.remove(this); var e = this.parent(); return e && e._layout && !e._layout.isNative() && e.reflow(), this } }; function rt(n) { return n._eventDispatcher || (n._eventDispatcher = new Ne({ scope: n, toggleEvent: function(e, t) { t && Ne.isNative(e) && (n._nativeEvents || (n._nativeEvents = {}), n._nativeEvents[e] = !0, n.state.get("rendered") && ot(n)) } })), n._eventDispatcher } function ot(a) { var e, t, n, l, i, r; function o(e) { var t = a.getParentCtrl(e.target); t && t.fire(e.type, e) } function s() { var e = l._lastHoverCtrl; e && (e.fire("mouseleave", { target: e.getEl() }), e.parents().each(function(e) { e.fire("mouseleave", { target: e.getEl() }) }), l._lastHoverCtrl = null) } function u(e) { var t, n, i, r = a.getParentCtrl(e.target), o = l._lastHoverCtrl, s = 0; if (r !== o) { if ((n = (l._lastHoverCtrl = r).parents().toArray().reverse()).push(r), o) { for ((i = o.parents().toArray().reverse()).push(o), s = 0; s < i.length && n[s] === i[s]; s++); for (t = i.length - 1; s <= t; t--)(o = i[t]).fire("mouseleave", { target: o.getEl() }) } for (t = s; t < n.length; t++)(r = n[t]).fire("mouseenter", { target: r.getEl() }) } } function c(e) { e.preventDefault(), "mousewheel" === e.type ? (e.deltaY = -.025 * e.wheelDelta, e.wheelDeltaX && (e.deltaX = -.025 * e.wheelDeltaX)) : (e.deltaX = 0, e.deltaY = e.detail), e = a.fire("wheel", e) } if (i = a._nativeEvents) { for ((n = a.parents().toArray()).unshift(a), e = 0, t = n.length; !l && e < t; e++) l = n[e]._eventsRoot; for (l || (l = n[n.length - 1] || a), a._eventsRoot = l, t = e, e = 0; e < t; e++) n[e]._eventsRoot = l; var d = l._delegates; for (r in d || (d = l._delegates = {}), i) { if (!i) return !1; "wheel" !== r || tt ? ("mouseenter" === r || "mouseleave" === r ? l._hasMouseEnter || (we(l.getEl()).on("mouseleave", s).on("mouseover", u), l._hasMouseEnter = 1) : d[r] || (we(l.getEl()).on(r, o), d[r] = !0), i[r] = !1) : et ? we(a.getEl()).on("mousewheel", c) : we(a.getEl()).on("DOMMouseScroll", c) } } } w.each("text title visible disabled active value".split(" "), function(t) { it[t] = function(e) { return 0 === arguments.length ? this.state.get(t) : (void 0 !== e && this.state.set(t, e), this) } }); var st = Ge = Me.extend(it), at = function(e) { return !!e.getAttribute("data-mce-tabstop") }; function lt(e) { var o, r, n = e.root; function i(e) { return e && 1 === e.nodeType } try { o = document.activeElement } catch (t) { o = document.body } function s(e) { return i(e = e || o) ? e.getAttribute("role") : null } function a(e) { for (var t, n = e || o; n = n.parentNode;) if (t = s(n)) return t } function l(e) { var t = o; if (i(t)) return t.getAttribute("aria-" + e) } function u(e) { var t = e.tagName.toUpperCase(); return "INPUT" === t || "TEXTAREA" === t || "SELECT" === t } function c(t) { var r = []; return function e(t) { if (1 === t.nodeType && "none" !== t.style.display && !t.disabled) { var n; (u(n = t) && !n.hidden || at(n) || /^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell|slider)$/.test(s(n))) && r.push(t); for (var i = 0; i < t.childNodes.length; i++) e(t.childNodes[i]) } }(t || n.getEl()), r } function d(e) { var t, n; (n = (e = e || r).parents().toArray()).unshift(e); for (var i = 0; i < n.length && !(t = n[i]).settings.ariaRoot; i++); return t } function f(e, t) { return e < 0 ? e = t.length - 1 : e >= t.length && (e = 0), t[e] && t[e].focus(), e } function h(e, t) { var n = -1, i = d(); t = t || c(i.getEl()); for (var r = 0; r < t.length; r++) t[r] === o && (n = r); n += e, i.lastAriaIndex = f(n, t) } function m() { "tablist" === a() ? h(-1, c(o.parentNode)) : r.parent().submenu ? b() : h(-1) } function g() { var e = s(), t = a(); "tablist" === t ? h(1, c(o.parentNode)) : "menuitem" === e && "menu" === t && l("haspopup") ? y() : h(1) } function p() { h(-1) } function v() { var e = s(), t = a(); "menuitem" === e && "menubar" === t ? y() : "button" === e && l("haspopup") ? y({ key: "down" }) : h(1) } function b() { r.fire("cancel") } function y(e) { e = e || {}, r.fire("click", { target: o, aria: e }) } return r = n.getParentCtrl(o), n.on("keydown", function(e) { function t(e, t) { u(o) || at(o) || "slider" !== s(o) && !1 !== t(e) && e.preventDefault() } if (!e.isDefaultPrevented()) switch (e.keyCode) { case 37: t(e, m); break; case 39: t(e, g); break; case 38: t(e, p); break; case 40: t(e, v); break; case 27: b(); break; case 14: case 13: case 32: t(e, y); break; case 9: ! function(e) { if ("tablist" === a()) { var t = c(r.getEl("body"))[0]; t && t.focus() } else h(e.shiftKey ? -1 : 1) }(e), e.preventDefault() } }), n.on("focusin", function(e) { o = e.target, r = e.control }), { focusFirst: function(e) { var t = d(e), n = c(t.getEl()); t.settings.ariaRemember && "lastAriaIndex" in t ? f(t.lastAriaIndex, n) : f(0, n) } } } var ut = {}, ct = st.extend({ init: function(e) { var t = this; t._super(e), (e = t.settings).fixed && t.state.set("fixed", !0), t._items = new $e, t.isRtl() && t.classes.add("rtl"), t.bodyClasses = new Oe(function() { t.state.get("rendered") && (t.getEl("body").className = this.toString()) }), t.bodyClasses.prefix = t.classPrefix, t.classes.add("container"), t.bodyClasses.add("container-body"), e.containerCls && t.classes.add(e.containerCls), t._layout = b.create((e.layout || "") + "layout"), t.settings.items ? t.add(t.settings.items) : t.add(t.render()), t._hasBody = !0 }, items: function() { return this._items }, find: function(e) { return (e = ut[e] = ut[e] || new Ue(e)).find(this) }, add: function(e) { return this.items().add(this.create(e)).parent(this), this }, focus: function(e) { var t, n, i, r = this; if (!e || !(n = r.keyboardNav || r.parents().eq(-1)[0].keyboardNav)) return i = r.find("*"), r.statusbar && i.add(r.statusbar.items()), i.each(function(e) { if (e.settings.autofocus) return t = null, !1; e.canFocus && (t = t || e) }), t && t.focus(), r; n.focusFirst(r) }, replace: function(e, t) { for (var n, i = this.items(), r = i.length; r--;) if (i[r] === e) { i[r] = t; break } 0 <= r && ((n = t.getEl()) && n.parentNode.removeChild(n), (n = e.getEl()) && n.parentNode.removeChild(n)), t.parent(this) }, create: function(e) { var t, n = this, i = []; return w.isArray(e) || (e = [e]), w.each(e, function(e) { e && (e instanceof st || ("string" == typeof e && (e = { type: e }), t = w.extend({}, n.settings.defaults, e), e.type = t.type = t.type || e.type || n.settings.defaultType || (t.defaults ? t.defaults.type : null), e = b.create(t)), i.push(e)) }), i }, renderNew: function() { var i = this; return i.items().each(function(e, t) { var n; e.parent(i), e.state.get("rendered") || ((n = i.getEl("body")).hasChildNodes() && t <= n.childNodes.length - 1 ? we(n.childNodes[t]).before(e.renderHtml()) : we(n).append(e.renderHtml()), e.postRender(), Qe.add(e)) }), i._layout.applyClasses(i.items().filter(":visible")), i._lastRect = null, i }, append: function(e) { return this.add(e).renderNew() }, prepend: function(e) { return this.items().set(this.create(e).concat(this.items().toArray())), this.renderNew() }, insert: function(e, t, n) { var i, r, o; return e = this.create(e), i = this.items(), !n && t < i.length - 1 && (t += 1), 0 <= t && t < i.length && (r = i.slice(0, t).toArray(), o = i.slice(t).toArray(), i.set(r.concat(e, o))), this.renderNew() }, fromJSON: function(e) { for (var t in e) this.find("#" + t).value(e[t]); return this }, toJSON: function() { var i = {}; return this.find("*").each(function(e) { var t = e.name(), n = e.value(); t && void 0 !== n && (i[t] = n) }), i }, renderHtml: function() { var e = this, t = e._layout, n = this.settings.role; return e.preRender(), t.preRender(e), '
    ' + (e.settings.html || "") + t.renderHtml(e) + "
    " }, postRender: function() { var e, t = this; return t.items().exec("postRender"), t._super(), t._layout.postRender(t), t.state.set("rendered", !0), t.settings.style && t.$el.css(t.settings.style), t.settings.border && (e = t.borderBox, t.$el.css({ "border-top-width": e.top, "border-right-width": e.right, "border-bottom-width": e.bottom, "border-left-width": e.left })), t.parent() || (t.keyboardNav = lt({ root: t })), t }, initLayoutRect: function() { var e = this._super(); return this._layout.recalc(this), e }, recalc: function() { var e = this, t = e._layoutRect, n = e._lastRect; if (!n || n.w !== t.w || n.h !== t.h) return e._layout.recalc(e), t = e.layoutRect(), e._lastRect = { x: t.x, y: t.y, w: t.w, h: t.h }, !0 }, reflow: function() { var e; if (Qe.remove(this), this.visible()) { for (st.repaintControls = [], st.repaintControls.map = {}, this.recalc(), e = st.repaintControls.length; e--;) st.repaintControls[e].repaint(); "flow" !== this.settings.layout && "stack" !== this.settings.layout && this.repaint(), st.repaintControls = [] } return this } }); function dt(e) { var t, n; if (e.changedTouches) for (t = "screenX screenY pageX pageY clientX clientY".split(" "), n = 0; n < t.length; n++) e[t[n]] = e.changedTouches[0][t[n]] } function ft(e, h) { var m, g, t, p, v, b, y, x = h.document || document; h = h || {}; var w = x.getElementById(h.handle || e); t = function(e) { var t, n, i, r, o, s, a, l, u, c, d, f = (t = x, u = Math.max, n = t.documentElement, i = t.body, r = u(n.scrollWidth, i.scrollWidth), o = u(n.clientWidth, i.clientWidth), s = u(n.offsetWidth, i.offsetWidth), a = u(n.scrollHeight, i.scrollHeight), l = u(n.clientHeight, i.clientHeight), { width: r < s ? o : r, height: a < u(n.offsetHeight, i.offsetHeight) ? l : a }); dt(e), e.preventDefault(), g = e.button, c = w, b = e.screenX, y = e.screenY, d = window.getComputedStyle ? window.getComputedStyle(c, null).getPropertyValue("cursor") : c.runtimeStyle.cursor, m = we("
    ").css({ position: "absolute", top: 0, left: 0, width: f.width, height: f.height, zIndex: 2147483647, opacity: 1e-4, cursor: d }).appendTo(x.body), we(x).on("mousemove touchmove", v).on("mouseup touchend", p), h.start(e) }, v = function(e) { if (dt(e), e.button !== g) return p(e); e.deltaX = e.screenX - b, e.deltaY = e.screenY - y, e.preventDefault(), h.drag(e) }, p = function(e) { dt(e), we(x).off("mousemove touchmove", v).off("mouseup touchend", p), m.remove(), h.stop && h.stop(e) }, this.destroy = function() { we(w).off() }, we(w).on("mousedown touchstart", t) } var ht, mt, gt, pt, vt = { init: function() { this.on("repaint", this.renderScroll) }, renderScroll: function() { var p = this, v = 2; function n() { var m, g, e; function t(e, t, n, i, r, o) { var s, a, l, u, c, d, f, h; if (a = p.getEl("scroll" + e)) { if (f = t.toLowerCase(), h = n.toLowerCase(), we(p.getEl("absend")).css(f, p.layoutRect()[i] - 1), !r) return void we(a).css("display", "none"); we(a).css("display", "block"), s = p.getEl("body"), l = p.getEl("scroll" + e + "t"), u = s["client" + n] - 2 * v, c = (u -= m && g ? a["client" + o] : 0) / s["scroll" + n], (d = {})[f] = s["offset" + t] + v, d[h] = u, we(a).css(d), (d = {})[f] = s["scroll" + t] * c, d[h] = u * c, we(l).css(d) } } e = p.getEl("body"), m = e.scrollWidth > e.clientWidth, g = e.scrollHeight > e.clientHeight, t("h", "Left", "Width", "contentW", m, "Height"), t("v", "Top", "Height", "contentH", g, "Width") } p.settings.autoScroll && (p._hasScroll || (p._hasScroll = !0, function() { function e(s, a, l, u, c) { var d, e = p._id + "-scroll" + s, t = p.classPrefix; we(p.getEl()).append('
    '), p.draghelper = new ft(e + "t", { start: function() { d = p.getEl("body")["scroll" + a], we("#" + e).addClass(t + "active") }, drag: function(e) { var t, n, i, r, o = p.layoutRect(); n = o.contentW > o.innerW, i = o.contentH > o.innerH, r = p.getEl("body")["client" + l] - 2 * v, t = (r -= n && i ? p.getEl("scroll" + s)["client" + c] : 0) / p.getEl("body")["scroll" + l], p.getEl("body")["scroll" + a] = d + e["delta" + u] / t }, stop: function() { we("#" + e).removeClass(t + "active") } }) } p.classes.add("scroll"), e("v", "Top", "Height", "Y", "Width"), e("h", "Left", "Width", "X", "Height") }(), p.on("wheel", function(e) { var t = p.getEl("body"); t.scrollLeft += 10 * (e.deltaX || 0), t.scrollTop += 10 * e.deltaY, n() }), we(p.getEl("body")).on("scroll", n)), n()) } }, bt = ct.extend({ Defaults: { layout: "fit", containerCls: "panel" }, Mixins: [vt], renderHtml: function() { var e = this, t = e._layout, n = e.settings.html; return e.preRender(), t.preRender(e), void 0 === n ? n = '
    ' + t.renderHtml(e) + "
    " : ("function" == typeof n && (n = n.call(e)), e._hasBody = !1), '
    ' + (e._preBodyHtml || "") + n + "
    " } }), yt = { resizeToContent: function() { this._layoutRect.autoResize = !0, this._lastRect = null, this.reflow() }, resizeTo: function(e, t) { if (e <= 1 || t <= 1) { var n = Ce.getWindowSize(); e = e <= 1 ? e * n.w : e, t = t <= 1 ? t * n.h : t } return this._layoutRect.autoResize = !1, this.layoutRect({ minW: e, minH: t, w: e, h: t }).reflow() }, resizeBy: function(e, t) { var n = this.layoutRect(); return this.resizeTo(n.w + e, n.h + t) } }, xt = [], wt = []; function _t(e, t) { for (; e;) { if (e === t) return !0; e = e.parent() } } function Ct() { ht || (ht = function(e) { 2 !== e.button && function(e) { for (var t = xt.length; t--;) { var n = xt[t], i = n.getParentCtrl(e.target); if (n.settings.autohide) { if (i && (_t(i, n) || n.parent() === i)) continue; (e = n.fire("autohide", { target: e.target })).isDefaultPrevented() || n.hide() } } }(e) }, we(document).on("click touchstart", ht)) } function Rt(r) { var e = Ce.getViewPort().y; function t(e, t) { for (var n, i = 0; i < xt.length; i++) if (xt[i] !== r) for (n = xt[i].parent(); n && (n = n.parent());) n === r && xt[i].fixed(e).moveBy(0, t).repaint() } r.settings.autofix && (r.state.get("fixed") ? r._autoFixY > e && (r.fixed(!1).layoutRect({ y: r._autoFixY }).repaint(), t(!1, r._autoFixY - e)) : (r._autoFixY = r.layoutRect().y, r._autoFixY < e && (r.fixed(!0).layoutRect({ y: 0 }).repaint(), t(!0, e - r._autoFixY)))) } function Et(e, t) { var n, i, r = kt.zIndex || 65535; if (e) wt.push(t); else for (n = wt.length; n--;) wt[n] === t && wt.splice(n, 1); if (wt.length) for (n = 0; n < wt.length; n++) wt[n].modal && (r++, i = wt[n]), wt[n].getEl().style.zIndex = r, wt[n].zIndex = r, r++; var o = we("#" + t.classPrefix + "modal-block", t.getContainerElm())[0]; i ? we(o).css("z-index", i.zIndex - 1) : o && (o.parentNode.removeChild(o), pt = !1), kt.currentZIndex = r } var kt = bt.extend({ Mixins: [Se, yt], init: function(e) { var i = this; i._super(e), (i._eventsRoot = i).classes.add("floatpanel"), e.autohide && (Ct(), function() { if (!gt) { var e = document.documentElement, t = e.clientWidth, n = e.clientHeight; gt = function() { document.all && t === e.clientWidth && n === e.clientHeight || (t = e.clientWidth, n = e.clientHeight, kt.hideAll()) }, we(window).on("resize", gt) } }(), xt.push(i)), e.autofix && (mt || (mt = function() { var e; for (e = xt.length; e--;) Rt(xt[e]) }, we(window).on("scroll", mt)), i.on("move", function() { Rt(this) })), i.on("postrender show", function(e) { if (e.control === i) { var t, n = i.classPrefix; i.modal && !pt && ((t = we("#" + n + "modal-block", i.getContainerElm()))[0] || (t = we('
    ').appendTo(i.getContainerElm())), u.setTimeout(function() { t.addClass(n + "in"), we(i.getEl()).addClass(n + "in") }), pt = !0), Et(!0, i) } }), i.on("show", function() { i.parents().each(function(e) { if (e.state.get("fixed")) return i.fixed(!0), !1 }) }), e.popover && (i._preBodyHtml = '
    ', i.classes.add("popover").add("bottom").add(i.isRtl() ? "end" : "start")), i.aria("label", e.ariaLabel), i.aria("labelledby", i._id), i.aria("describedby", i.describedBy || i._id + "-none") }, fixed: function(e) { var t = this; if (t.state.get("fixed") !== e) { if (t.state.get("rendered")) { var n = Ce.getViewPort(); e ? t.layoutRect().y -= n.y : t.layoutRect().y += n.y } t.classes.toggle("fixed", e), t.state.set("fixed", e) } return t }, show: function() { var e, t = this._super(); for (e = xt.length; e-- && xt[e] !== this;); return -1 === e && xt.push(this), t }, hide: function() { return Tt(this), Et(!1, this), this._super() }, hideAll: function() { kt.hideAll() }, close: function() { return this.fire("close").isDefaultPrevented() || (this.remove(), Et(!1, this)), this }, remove: function() { Tt(this), this._super() }, postRender: function() { return this.settings.bodyRole && this.getEl("body").setAttribute("role", this.settings.bodyRole), this._super() } }); function Tt(e) { var t; for (t = xt.length; t--;) xt[t] === e && xt.splice(t, 1); for (t = wt.length; t--;) wt[t] === e && wt.splice(t, 1) } kt.hideAll = function() { for (var e = xt.length; e--;) { var t = xt[e]; t && t.settings.autohide && (t.hide(), xt.splice(e, 1)) } }; var Ht = function(e, t) { return !(!e || t.settings.ui_container) }, St = function(s, e, t) { var a, n, l = v.DOM, i = s.getParam("fixed_toolbar_container"); i && (n = l.select(i)[0]); var r = function() { if (a && a.moveRel && a.visible() && !a._fixed) { var e = s.selection.getScrollContainer(), t = s.getBody(), n = 0, i = 0; if (e) { var r = l.getPos(t), o = l.getPos(e); n = Math.max(0, o.x - r.x), i = Math.max(0, o.y - r.y) } a.fixed(!1).moveRel(t, s.rtl ? ["tr-br", "br-tr"] : ["tl-bl", "bl-tl", "tr-br"]).moveBy(n, i) } }, o = function() { a && (a.show(), r(), l.addClass(s.getBody(), "mce-edit-focus")) }, u = function() { a && (a.hide(), kt.hideAll(), l.removeClass(s.getBody(), "mce-edit-focus")) }, c = function() { a ? a.visible() || o() : (a = e.panel = b.create({ type: n ? "panel" : "floatpanel", role: "application", classes: "tinymce tinymce-inline", layout: "flex", direction: "column", align: "stretch", autohide: !1, autofix: Ht(n, s), fixed: Ht(n, s), border: 1, items: [!1 === d(s) ? null : { type: "menubar", border: "0 0 1 0", items: se(s) }, L(s, f(s))] }), O.setUiContainer(s, a), _(s), n ? a.renderTo(n).reflow() : a.renderTo().reflow(), C(s, a), o(), V(s), s.on("nodeChange", r), s.on("ResizeWindow", r), s.on("activate", o), s.on("deactivate", u), s.nodeChanged()) }; return s.settings.content_editable = !0, s.on("focus", function() { !1 === g(s) && t.skinUiCss ? l.styleSheetLoader.load(t.skinUiCss, c, c) : c() }), s.on("blur hide", u), s.on("remove", function() { a && (a.remove(), a = null) }), !1 === g(s) && t.skinUiCss ? l.styleSheetLoader.load(t.skinUiCss, ve(s)) : ve(s)(), {} }; function Mt(i, r) { var o, s, a = this, l = st.classPrefix; a.show = function(e, t) { function n() { o && (we(i).append('
    '), t && t()) } return a.hide(), o = !0, e ? s = u.setTimeout(n, e) : n(), a }, a.hide = function() { var e = i.lastChild; return u.clearTimeout(s), e && -1 !== e.className.indexOf("throbber") && e.parentNode.removeChild(e), o = !1, a } } var Nt = function(e, t) { var n; e.on("ProgressState", function(e) { n = n || new Mt(t.panel.getEl("body")), e.state ? n.show(e.time) : n.hide() }) }, Pt = function(e, t, n) { var i = function(e) { var t = e.settings, n = t.skin, i = t.skin_url; if (!1 !== n) { var r = n || "lightgray"; i = i ? e.documentBaseURI.toAbsolute(i) : h.baseURL + "/skins/" + r } return i }(e); return i && (n.skinUiCss = i + "/skin.min.css", e.contentCSS.push(i + "/content" + (e.inline ? ".inline" : "") + ".min.css")), Nt(e, t), e.getParam("inline", !1, "boolean") ? St(e, t, n) : xe(e, t, n) }, Dt = st.extend({ Mixins: [Se], Defaults: { classes: "widget tooltip tooltip-n" }, renderHtml: function() { var e = this, t = e.classPrefix; return '" }, bindStates: function() { var t = this; return t.state.on("change:text", function(e) { t.getEl().lastChild.innerHTML = t.encode(e.value) }), t._super() }, repaint: function() { var e, t; e = this.getEl().style, t = this._layoutRect, e.left = t.x + "px", e.top = t.y + "px", e.zIndex = 131070 } }), Wt = st.extend({ init: function(i) { var r = this; r._super(i), i = r.settings, r.canFocus = !0, i.tooltip && !1 !== Wt.tooltips && (r.on("mouseenter", function(e) { var t = r.tooltip().moveTo(-65535); if (e.control === r) { var n = t.text(i.tooltip).show().testMoveRel(r.getEl(), ["bc-tc", "bc-tl", "bc-tr"]); t.classes.toggle("tooltip-n", "bc-tc" === n), t.classes.toggle("tooltip-nw", "bc-tl" === n), t.classes.toggle("tooltip-ne", "bc-tr" === n), t.moveRel(r.getEl(), n) } else t.hide() }), r.on("mouseleave mousedown click", function() { r.tooltip().remove(), r._tooltip = null })), r.aria("label", i.ariaLabel || i.tooltip) }, tooltip: function() { return this._tooltip || (this._tooltip = new Dt({ type: "tooltip" }), O.inheritUiContainer(this, this._tooltip), this._tooltip.renderTo()), this._tooltip }, postRender: function() { var e = this, t = e.settings; e._super(), e.parent() || !t.width && !t.height || (e.initLayoutRect(), e.repaint()), t.autofocus && e.focus() }, bindStates: function() { var t = this; function n(e) { t.aria("disabled", e), t.classes.toggle("disabled", e) } function i(e) { t.aria("pressed", e), t.classes.toggle("active", e) } return t.state.on("change:disabled", function(e) { n(e.value) }), t.state.on("change:active", function(e) { i(e.value) }), t.state.get("disabled") && n(!0), t.state.get("active") && i(!0), t._super() }, remove: function() { this._super(), this._tooltip && (this._tooltip.remove(), this._tooltip = null) } }), Ot = Wt.extend({ Defaults: { value: 0 }, init: function(e) { this._super(e), this.classes.add("progress"), this.settings.filter || (this.settings.filter = function(e) { return Math.round(e) }) }, renderHtml: function() { var e = this._id, t = this.classPrefix; return '
    0%
    ' }, postRender: function() { return this._super(), this.value(this.settings.value), this }, bindStates: function() { var t = this; function n(e) { e = t.settings.filter(e), t.getEl().lastChild.innerHTML = e + "%", t.getEl().firstChild.firstChild.style.width = e + "%" } return t.state.on("change:value", function(e) { n(e.value) }), n(t.state.get("value")), t._super() } }), At = function(e, t) { e.getEl().lastChild.textContent = t + (e.progressBar ? " " + e.progressBar.value() + "%" : "") }, Bt = st.extend({ Mixins: [Se], Defaults: { classes: "widget notification" }, init: function(e) { var t = this; t._super(e), t.maxWidth = e.maxWidth, e.text && t.text(e.text), e.icon && (t.icon = e.icon), e.color && (t.color = e.color), e.type && t.classes.add("notification-" + e.type), e.timeout && (e.timeout < 0 || 0 < e.timeout) && !e.closeButton ? t.closeButton = !1 : (t.classes.add("has-close"), t.closeButton = !0), e.progressBar && (t.progressBar = new Ot), t.on("click", function(e) { -1 !== e.target.className.indexOf(t.classPrefix + "close") && t.close() }) }, renderHtml: function() { var e, t = this, n = t.classPrefix, i = "", r = "", o = ""; return t.icon && (i = ''), e = ' style="max-width: ' + t.maxWidth + "px;" + (t.color ? "background-color: " + t.color + ';"' : '"'), t.closeButton && (r = ''), t.progressBar && (o = t.progressBar.renderHtml()), '' }, postRender: function() { var e = this; return u.setTimeout(function() { e.$el.addClass(e.classPrefix + "in"), At(e, e.state.get("text")) }, 100), e._super() }, bindStates: function() { var t = this; return t.state.on("change:text", function(e) { t.getEl().firstChild.innerHTML = e.value, At(t, e.value) }), t.progressBar && (t.progressBar.bindStates(), t.progressBar.state.on("change:value", function(e) { At(t, t.state.get("text")) })), t._super() }, close: function() { return this.fire("close").isDefaultPrevented() || this.remove(), this }, repaint: function() { var e, t; e = this.getEl().style, t = this._layoutRect, e.left = t.x + "px", e.top = t.y + "px", e.zIndex = 65534 } }); function Lt(o) { var s = function(e) { return e.inline ? e.getElement() : e.getContentAreaContainer() }; return { open: function(e, t) { var n, i = w.extend(e, { maxWidth: (n = s(o), Ce.getSize(n).width) }), r = new Bt(i); return 0 < (r.args = i).timeout && (r.timer = setTimeout(function() { r.close(), t() }, i.timeout)), r.on("close", function() { t() }), r.renderTo(), r }, close: function(e) { e.close() }, reposition: function(e) { G(e, function(e) { e.moveTo(0, 0) }), function(n) { if (0 < n.length) { var e = n.slice(0, 1)[0], t = s(o); e.moveRel(t, "tc-tc"), G(n, function(e, t) { 0 < t && e.moveRel(n[t - 1].getEl(), "bc-tc") }) } }(e) }, getArgs: function(e) { return e.args } } } var It = [], zt = ""; function Ft(e) { var t, n = we("meta[name=viewport]")[0]; !1 !== fe.overrideViewPort && (n || ((n = document.createElement("meta")).setAttribute("name", "viewport"), document.getElementsByTagName("head")[0].appendChild(n)), (t = n.getAttribute("content")) && void 0 !== zt && (zt = t), n.setAttribute("content", e ? "width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0" : zt)) } function Ut(e, t) { (function() { for (var e = 0; e < It.length; e++) if (It[e]._fullscreen) return !0; return !1 })() && !1 === t && we([document.documentElement, document.body]).removeClass(e + "fullscreen") } var Vt = kt.extend({ modal: !0, Defaults: { border: 1, layout: "flex", containerCls: "panel", role: "dialog", callbacks: { submit: function() { this.fire("submit", { data: this.toJSON() }) }, close: function() { this.close() } } }, init: function(e) { var n = this; n._super(e), n.isRtl() && n.classes.add("rtl"), n.classes.add("window"), n.bodyClasses.add("window-body"), n.state.set("fixed", !0), e.buttons && (n.statusbar = new bt({ layout: "flex", border: "1 0 0 0", spacing: 3, padding: 10, align: "center", pack: n.isRtl() ? "start" : "end", defaults: { type: "button" }, items: e.buttons }), n.statusbar.classes.add("foot"), n.statusbar.parent(n)), n.on("click", function(e) { var t = n.classPrefix + "close"; (Ce.hasClass(e.target, t) || Ce.hasClass(e.target.parentNode, t)) && n.close() }), n.on("cancel", function() { n.close() }), n.on("move", function(e) { e.control === n && kt.hideAll() }), n.aria("describedby", n.describedBy || n._id + "-none"), n.aria("label", e.title), n._fullscreen = !1 }, recalc: function() { var e, t, n, i, r = this, o = r.statusbar; r._fullscreen && (r.layoutRect(Ce.getWindowSize()), r.layoutRect().contentH = r.layoutRect().innerH), r._super(), e = r.layoutRect(), r.settings.title && !r._fullscreen && (t = e.headerW) > e.w && (n = e.x - Math.max(0, t / 2), r.layoutRect({ w: t, x: n }), i = !0), o && (o.layoutRect({ w: r.layoutRect().innerW }).recalc(), (t = o.layoutRect().minW + e.deltaW) > e.w && (n = e.x - Math.max(0, t - e.w), r.layoutRect({ w: t, x: n }), i = !0)), i && r.recalc() }, initLayoutRect: function() { var e, t = this, n = t._super(), i = 0; if (t.settings.title && !t._fullscreen) { e = t.getEl("head"); var r = Ce.getSize(e); n.headerW = r.width, n.headerH = r.height, i += n.headerH } t.statusbar && (i += t.statusbar.layoutRect().h), n.deltaH += i, n.minH += i, n.h += i; var o = Ce.getWindowSize(); return n.x = t.settings.x || Math.max(0, o.w / 2 - n.w / 2), n.y = t.settings.y || Math.max(0, o.h / 2 - n.h / 2), n }, renderHtml: function() { var e = this, t = e._layout, n = e._id, i = e.classPrefix, r = e.settings, o = "", s = "", a = r.html; return e.preRender(), t.preRender(e), r.title && (o = '
    ' + e.encode(r.title) + '
    '), r.url && (a = ''), void 0 === a && (a = t.renderHtml(e)), e.statusbar && (s = e.statusbar.renderHtml()), '
    ' + o + '
    ' + a + "
    " + s + "
    " }, fullscreen: function(e) { var n, t, i = this, r = document.documentElement, o = i.classPrefix; if (e !== i._fullscreen) if (we(window).on("resize", function() { var e; if (i._fullscreen) if (n) i._timer || (i._timer = u.setTimeout(function() { var e = Ce.getWindowSize(); i.moveTo(0, 0).resizeTo(e.w, e.h), i._timer = 0 }, 50)); else { e = (new Date).getTime(); var t = Ce.getWindowSize(); i.moveTo(0, 0).resizeTo(t.w, t.h), 50 < (new Date).getTime() - e && (n = !0) } }), t = i.layoutRect(), i._fullscreen = e) { i._initial = { x: t.x, y: t.y, w: t.w, h: t.h }, i.borderBox = Pe("0"), i.getEl("head").style.display = "none", t.deltaH -= t.headerH + 2, we([r, document.body]).addClass(o + "fullscreen"), i.classes.add("fullscreen"); var s = Ce.getWindowSize(); i.moveTo(0, 0).resizeTo(s.w, s.h) } else i.borderBox = Pe(i.settings.border), i.getEl("head").style.display = "", t.deltaH += t.headerH, we([r, document.body]).removeClass(o + "fullscreen"), i.classes.remove("fullscreen"), i.moveTo(i._initial.x, i._initial.y).resizeTo(i._initial.w, i._initial.h); return i.reflow() }, postRender: function() { var t, n = this; setTimeout(function() { n.classes.add("in"), n.fire("open") }, 0), n._super(), n.statusbar && n.statusbar.postRender(), n.focus(), this.dragHelper = new ft(n._id + "-dragh", { start: function() { t = { x: n.layoutRect().x, y: n.layoutRect().y } }, drag: function(e) { n.moveTo(t.x + e.deltaX, t.y + e.deltaY) } }), n.on("submit", function(e) { e.isDefaultPrevented() || n.close() }), It.push(n), Ft(!0) }, submit: function() { return this.fire("submit", { data: this.toJSON() }) }, remove: function() { var e, t = this; for (t.dragHelper.destroy(), t._super(), t.statusbar && this.statusbar.remove(), Ut(t.classPrefix, !1), e = It.length; e--;) It[e] === t && It.splice(e, 1); Ft(0 < It.length) }, getContentWindow: function() { var e = this.getEl().getElementsByTagName("iframe")[0]; return e ? e.contentWindow : null } }); ! function() { if (!fe.desktop) { var n = { w: window.innerWidth, h: window.innerHeight }; u.setInterval(function() { var e = window.innerWidth, t = window.innerHeight; n.w === e && n.h === t || (n = { w: e, h: t }, we(window).trigger("resize")) }, 100) } we(window).on("resize", function() { var e, t, n = Ce.getWindowSize(); for (e = 0; e < It.length; e++) t = It[e].layoutRect(), It[e].moveTo(It[e].settings.x || Math.max(0, n.w / 2 - t.w / 2), It[e].settings.y || Math.max(0, n.h / 2 - t.h / 2)) }) }(); var Yt = Vt.extend({ init: function(e) { e = { border: 1, padding: 20, layout: "flex", pack: "center", align: "center", containerCls: "panel", autoScroll: !0, buttons: { type: "button", text: "Ok", action: "ok" }, items: { type: "label", multiline: !0, maxWidth: 500, maxHeight: 200 } }, this._super(e) }, Statics: { OK: 1, OK_CANCEL: 2, YES_NO: 3, YES_NO_CANCEL: 4, msgBox: function(e) { var t, i = e.callback || function() {}; function n(e, t, n) { return { type: "button", text: e, subtype: n ? "primary" : "", onClick: function(e) { e.control.parents()[1].close(), i(t) } } } switch (e.buttons) { case Yt.OK_CANCEL: t = [n("Ok", !0, !0), n("Cancel", !1)]; break; case Yt.YES_NO: case Yt.YES_NO_CANCEL: t = [n("Yes", 1, !0), n("No", 0)], e.buttons === Yt.YES_NO_CANCEL && t.push(n("Cancel", -1)); break; default: t = [n("Ok", !0, !0)] } return new Vt({ padding: 20, x: e.x, y: e.y, minWidth: 300, minHeight: 100, layout: "flex", pack: "center", align: "center", buttons: t, title: e.title, role: "alertdialog", items: { type: "label", multiline: !0, maxWidth: 500, maxHeight: 200, text: e.text }, onPostRender: function() { this.aria("describedby", this.items()[0]._id) }, onClose: e.onClose, onCancel: function() { i(!1) } }).renderTo(document.body).reflow() }, alert: function(e, t) { return "string" == typeof e && (e = { text: e }), e.callback = t, Yt.msgBox(e) }, confirm: function(e, t) { return "string" == typeof e && (e = { text: e }), e.callback = t, e.buttons = Yt.OK_CANCEL, Yt.msgBox(e) } } }), $t = function(n) { return { renderUI: function(e) { return Pt(n, this, e) }, resizeTo: function(e, t) { return ce(n, e, t) }, resizeBy: function(e, t) { return de(n, e, t) }, getNotificationManagerImpl: function() { return Lt(n) }, getWindowManagerImpl: function() { return { open: function(n, e, t) { var i; return n.title = n.title || " ", n.url = n.url || n.file, n.url && (n.width = parseInt(n.width || 320, 10), n.height = parseInt(n.height || 240, 10)), n.body && (n.items = { defaults: n.defaults, type: n.bodyType || "form", items: n.body, data: n.data, callbacks: n.commands }), n.url || n.buttons || (n.buttons = [{ text: "Ok", subtype: "primary", onclick: function() { i.find("form")[0].submit() } }, { text: "Cancel", onclick: function() { i.close() } }]), (i = new Vt(n)).on("close", function() { t(i) }), n.data && i.on("postRender", function() { this.find("*").each(function(e) { var t = e.name(); t in n.data && e.value(n.data[t]) }) }), i.features = n || {}, i.params = e || {}, i = i.renderTo(document.body).reflow() }, alert: function(e, t, n) { var i; return (i = Yt.alert(e, function() { t() })).on("close", function() { n(i) }), i }, confirm: function(e, t, n) { var i; return (i = Yt.confirm(e, function(e) { t(e) })).on("close", function() { n(i) }), i }, close: function(e) { e.close() }, getParams: function(e) { return e.params }, setParams: function(e, t) { e.params = t } } } } }, Xt = Me.extend({ Defaults: { firstControlClass: "first", lastControlClass: "last" }, init: function(e) { this.settings = w.extend({}, this.Defaults, e) }, preRender: function(e) { e.bodyClasses.add(this.settings.containerClass) }, applyClasses: function(e) { var t, n, i, r, o = this.settings; t = o.firstControlClass, n = o.lastControlClass, e.each(function(e) { e.classes.remove(t).remove(n).add(o.controlClass), e.visible() && (i || (i = e), r = e) }), i && i.classes.add(t), r && r.classes.add(n) }, renderHtml: function(e) { var t = ""; return this.applyClasses(e.items()), e.items().each(function(e) { t += e.renderHtml() }), t }, recalc: function() {}, postRender: function() {}, isNative: function() { return !1 } }), qt = Xt.extend({ Defaults: { containerClass: "abs-layout", controlClass: "abs-layout-item" }, recalc: function(e) { e.items().filter(":visible").each(function(e) { var t = e.settings; e.layoutRect({ x: t.x, y: t.y, w: t.w, h: t.h }), e.recalc && e.recalc() }) }, renderHtml: function(e) { return '
    ' + this._super(e) } }), jt = Wt.extend({ Defaults: { classes: "widget btn", role: "button" }, init: function(e) { var t, n = this; n._super(e), e = n.settings, t = n.settings.size, n.on("click mousedown", function(e) { e.preventDefault() }), n.on("touchstart", function(e) { n.fire("click", e), e.preventDefault() }), e.subtype && n.classes.add(e.subtype), t && n.classes.add("btn-" + t), e.icon && n.icon(e.icon) }, icon: function(e) { return arguments.length ? (this.state.set("icon", e), this) : this.state.get("icon") }, repaint: function() { var e, t = this.getEl().firstChild; t && ((e = t.style).width = e.height = "100%"), this._super() }, renderHtml: function() { var e, t, n = this, i = n._id, r = n.classPrefix, o = n.state.get("icon"), s = n.state.get("text"), a = "", l = n.settings; return (e = l.image) ? (o = "none", "string" != typeof e && (e = window.getSelection ? e[0] : e[1]), e = " style=\"background-image: url('" + e + "')\"") : e = "", s && (n.classes.add("btn-has-text"), a = '' + n.encode(s) + ""), o = o ? r + "ico " + r + "i-" + o : "", t = "boolean" == typeof l.active ? ' aria-pressed="' + l.active + '"' : "", '
    " }, bindStates: function() { var o = this, n = o.$, i = o.classPrefix + "txt"; function s(e) { var t = n("span." + i, o.getEl()); e ? (t[0] || (n("button:first", o.getEl()).append(''), t = n("span." + i, o.getEl())), t.html(o.encode(e))) : t.remove(), o.classes.toggle("btn-has-text", !! e) } return o.state.on("change:text", function(e) { s(e.value) }), o.state.on("change:icon", function(e) { var t = e.value, n = o.classPrefix; t = (o.settings.icon = t) ? n + "ico " + n + "i-" + o.settings.icon : ""; var i = o.getEl().firstChild, r = i.getElementsByTagName("i")[0]; t ? (r && r === i.firstChild || (r = document.createElement("i"), i.insertBefore(r, i.firstChild)), r.className = t) : r && i.removeChild(r), s(o.state.get("text")) }), o._super() } }), Jt = jt.extend({ init: function(e) { e = w.extend({ text: "Browse...", multiple: !1, accept: null }, e), this._super(e), this.classes.add("browsebutton"), e.multiple && this.classes.add("multiple") }, postRender: function() { var n = this, t = Ce.create("input", { type: "file", id: n._id + "-browse", accept: n.settings.accept }); n._super(), we(t).on("change", function(e) { var t = e.target.files; n.value = function() { return t.length ? n.settings.multiple ? t : t[0] : null }, e.preventDefault(), t.length && n.fire("change", e) }), we(t).on("click", function(e) { e.stopPropagation() }), we(n.getEl("button")).on("click", function(e) { e.stopPropagation(), t.click() }), n.getEl().appendChild(t) }, remove: function() { we(this.getEl("button")).off(), we(this.getEl("input")).off(), this._super() } }), Gt = ct.extend({ Defaults: { defaultType: "button", role: "group" }, renderHtml: function() { var e = this, t = e._layout; return e.classes.add("btn-group"), e.preRender(), t.preRender(e), '
    ' + (e.settings.html || "") + t.renderHtml(e) + "
    " } }), Kt = Wt.extend({ Defaults: { classes: "checkbox", role: "checkbox", checked: !1 }, init: function(e) { var t = this; t._super(e), t.on("click mousedown", function(e) { e.preventDefault() }), t.on("click", function(e) { e.preventDefault(), t.disabled() || t.checked(!t.checked()) }), t.checked(t.settings.checked) }, checked: function(e) { return arguments.length ? (this.state.set("checked", e), this) : this.state.get("checked") }, value: function(e) { return arguments.length ? this.checked(e) : this.checked() }, renderHtml: function() { var e = this, t = e._id, n = e.classPrefix; return '
    ' + e.encode(e.state.get("text")) + "
    " }, bindStates: function() { var o = this; function t(e) { o.classes.toggle("checked", e), o.aria("checked", e) } return o.state.on("change:text", function(e) { o.getEl("al").firstChild.data = o.translate(e.value) }), o.state.on("change:checked change:value", function(e) { o.fire("change"), t(e.value) }), o.state.on("change:icon", function(e) { var t = e.value, n = o.classPrefix; if (void 0 === t) return o.settings.icon; t = (o.settings.icon = t) ? n + "ico " + n + "i-" + o.settings.icon : ""; var i = o.getEl().firstChild, r = i.getElementsByTagName("i")[0]; t ? (r && r === i.firstChild || (r = document.createElement("i"), i.insertBefore(r, i.firstChild)), r.className = t) : r && i.removeChild(r) }), o.state.get("checked") && t(!0), o._super() } }), Zt = tinymce.util.Tools.resolve("tinymce.util.VK"), Qt = Wt.extend({ init: function(i) { var r = this; r._super(i), i = r.settings, r.classes.add("combobox"), r.subinput = !0, r.ariaTarget = "inp", i.menu = i.menu || i.values, i.menu && (i.icon = "caret"), r.on("click", function(e) { var t = e.target, n = r.getEl(); if (we.contains(n, t) || t === n) for (; t && t !== n;) t.id && -1 !== t.id.indexOf("-open") && (r.fire("action"), i.menu && (r.showMenu(), e.aria && r.menu.items()[0].focus())), t = t.parentNode }), r.on("keydown", function(e) { var t; 13 === e.keyCode && "INPUT" === e.target.nodeName && (e.preventDefault(), r.parents().reverse().each(function(e) { if (e.toJSON) return t = e, !1 }), r.fire("submit", { data: t.toJSON() })) }), r.on("keyup", function(e) { if ("INPUT" === e.target.nodeName) { var t = r.state.get("value"), n = e.target.value; n !== t && (r.state.set("value", n), r.fire("autocomplete", e)) } }), r.on("mouseover", function(e) { var t = r.tooltip().moveTo(-65535); if (r.statusLevel() && -1 !== e.target.className.indexOf(r.classPrefix + "status")) { var n = r.statusMessage() || "Ok", i = t.text(n).show().testMoveRel(e.target, ["bc-tc", "bc-tl", "bc-tr"]); t.classes.toggle("tooltip-n", "bc-tc" === i), t.classes.toggle("tooltip-nw", "bc-tl" === i), t.classes.toggle("tooltip-ne", "bc-tr" === i), t.moveRel(e.target, i) } }) }, statusLevel: function(e) { return 0 < arguments.length && this.state.set("statusLevel", e), this.state.get("statusLevel") }, statusMessage: function(e) { return 0 < arguments.length && this.state.set("statusMessage", e), this.state.get("statusMessage") }, showMenu: function() { var e, t = this, n = t.settings; t.menu || ((e = n.menu || []).length ? e = { type: "menu", items: e } : e.type = e.type || "menu", t.menu = b.create(e).parent(t).renderTo(t.getContainerElm()), t.fire("createmenu"), t.menu.reflow(), t.menu.on("cancel", function(e) { e.control === t.menu && t.focus() }), t.menu.on("show hide", function(e) { e.control.items().each(function(e) { e.active(e.value() === t.value()) }) }).fire("show"), t.menu.on("select", function(e) { t.value(e.control.value()) }), t.on("focusin", function(e) { "INPUT" === e.target.tagName.toUpperCase() && t.menu.hide() }), t.aria("expanded", !0)), t.menu.show(), t.menu.layoutRect({ w: t.layoutRect().w }), t.menu.moveRel(t.getEl(), t.isRtl() ? ["br-tr", "tr-br"] : ["bl-tl", "tl-bl"]) }, focus: function() { this.getEl("inp").focus() }, repaint: function() { var e, t, n = this, i = n.getEl(), r = n.getEl("open"), o = n.layoutRect(), s = 0, a = i.firstChild; n.statusLevel() && "none" !== n.statusLevel() && (s = parseInt(Ce.getRuntimeStyle(a, "padding-right"), 10) - parseInt(Ce.getRuntimeStyle(a, "padding-left"), 10)), e = r ? o.w - Ce.getSize(r).width - 10 : o.w - 10; var l = document; return l.all && (!l.documentMode || l.documentMode <= 8) && (t = n.layoutRect().h - 2 + "px"), we(a).css({ width: e - s, lineHeight: t }), n._super(), n }, postRender: function() { var t = this; return we(this.getEl("inp")).on("change", function(e) { t.state.set("value", e.target.value), t.fire("change", e) }), t._super() }, renderHtml: function() { var e, t, n, i = this, r = i._id, o = i.settings, s = i.classPrefix, a = i.state.get("value") || "", l = "", u = ""; return "spellcheck" in o && (u += ' spellcheck="' + o.spellcheck + '"'), o.maxLength && (u += ' maxlength="' + o.maxLength + '"'), o.size && (u += ' size="' + o.size + '"'), o.subtype && (u += ' type="' + o.subtype + '"'), n = '', i.disabled() && (u += ' disabled="disabled"'), (e = o.icon) && "caret" !== e && (e = s + "ico " + s + "i-" + o.icon), t = i.state.get("text"), (e || t) && (l = '
    ", i.classes.add("has-open")), '
    ' + n + l + "
    " }, value: function(e) { return arguments.length ? (this.state.set("value", e), this) : (this.state.get("rendered") && this.state.set("value", this.getEl("inp").value), this.state.get("value")) }, showAutoComplete: function(e, i) { var r = this; if (0 !== e.length) { r.menu ? r.menu.items().remove() : r.menu = b.create({ type: "menu", classes: "combobox-menu", layout: "flow" }).parent(r).renderTo(), w.each(e, function(e) { var t, n; r.menu.add({ text: e.title, url: e.previewUrl, match: i, classes: "menu-item-ellipsis", onclick: (t = e.value, n = e.title, function() { r.fire("selectitem", { title: n, value: t }) }) }) }), r.menu.renderNew(), r.hideMenu(), r.menu.on("cancel", function(e) { e.control.parent() === r.menu && (e.stopPropagation(), r.focus(), r.hideMenu()) }), r.menu.on("select", function() { r.focus() }); var t = r.layoutRect().w; r.menu.layoutRect({ w: t, minW: 0, maxW: t }), r.menu.repaint(), r.menu.reflow(), r.menu.show(), r.menu.moveRel(r.getEl(), r.isRtl() ? ["br-tr", "tr-br"] : ["bl-tl", "tl-bl"]) } else r.hideMenu() }, hideMenu: function() { this.menu && this.menu.hide() }, bindStates: function() { var r = this; r.state.on("change:value", function(e) { r.getEl("inp").value !== e.value && (r.getEl("inp").value = e.value) }), r.state.on("change:disabled", function(e) { r.getEl("inp").disabled = e.value }), r.state.on("change:statusLevel", function(e) { var t = r.getEl("status"), n = r.classPrefix, i = e.value; Ce.css(t, "display", "none" === i ? "none" : ""), Ce.toggleClass(t, n + "i-checkmark", "ok" === i), Ce.toggleClass(t, n + "i-warning", "warn" === i), Ce.toggleClass(t, n + "i-error", "error" === i), r.classes.toggle("has-status", "none" !== i), r.repaint() }), Ce.on(r.getEl("status"), "mouseleave", function() { r.tooltip().hide() }), r.on("cancel", function(e) { r.menu && r.menu.visible() && (e.stopPropagation(), r.hideMenu()) }); var n = function(e, t) { t && 0 < t.items().length && t.items().eq(e)[0].focus() }; return r.on("keydown", function(e) { var t = e.keyCode; "INPUT" === e.target.nodeName && (t === Zt.DOWN ? (e.preventDefault(), r.fire("autocomplete"), n(0, r.menu)) : t === Zt.UP && (e.preventDefault(), n(-1, r.menu))) }), r._super() }, remove: function() { we(this.getEl("inp")).off(), this.menu && this.menu.remove(), this._super() } }), en = Qt.extend({ init: function(e) { var t = this; e.spellcheck = !1, e.onaction && (e.icon = "none"), t._super(e), t.classes.add("colorbox"), t.on("change keyup postrender", function() { t.repaintColor(t.value()) }) }, repaintColor: function(e) { var t = this.getEl("open"), n = t ? t.getElementsByTagName("i")[0] : null; if (n) try { n.style.background = e } catch (i) {} }, bindStates: function() { var t = this; return t.state.on("change:value", function(e) { t.state.get("rendered") && t.repaintColor(e.value) }), t._super() } }), tn = jt.extend({ showPanel: function() { var t = this, e = t.settings; if (t.classes.add("opened"), t.panel) t.panel.show(); else { var n = e.panel; n.type && (n = { layout: "grid", items: n }), n.role = n.role || "dialog", n.popover = !0, n.autohide = !0, n.ariaRoot = !0, t.panel = new kt(n).on("hide", function() { t.classes.remove("opened") }).on("cancel", function(e) { e.stopPropagation(), t.focus(), t.hidePanel() }).parent(t).renderTo(t.getContainerElm()), t.panel.fire("show"), t.panel.reflow() } var i = t.panel.testMoveRel(t.getEl(), e.popoverAlign || (t.isRtl() ? ["bc-tc", "bc-tl", "bc-tr"] : ["bc-tc", "bc-tr", "bc-tl", "tc-bc", "tc-br", "tc-bl"])); t.panel.classes.toggle("start", "l" === i.substr(-1)), t.panel.classes.toggle("end", "r" === i.substr(-1)); var r = "t" === i.substr(0, 1); t.panel.classes.toggle("bottom", !r), t.panel.classes.toggle("top", r), t.panel.moveRel(t.getEl(), i) }, hidePanel: function() { this.panel && this.panel.hide() }, postRender: function() { var t = this; return t.aria("haspopup", !0), t.on("click", function(e) { e.control === t && (t.panel && t.panel.visible() ? t.hidePanel() : (t.showPanel(), t.panel.focus( !! e.aria))) }), t._super() }, remove: function() { return this.panel && (this.panel.remove(), this.panel = null), this._super() } }), nn = v.DOM, rn = tn.extend({ init: function(e) { this._super(e), this.classes.add("splitbtn"), this.classes.add("colorbutton") }, color: function(e) { return e ? (this._color = e, this.getEl("preview").style.backgroundColor = e, this) : this._color }, resetColor: function() { return this._color = null, this.getEl("preview").style.backgroundColor = null, this }, renderHtml: function() { var e = this, t = e._id, n = e.classPrefix, i = e.state.get("text"), r = e.settings.icon ? n + "ico " + n + "i-" + e.settings.icon : "", o = e.settings.image ? " style=\"background-image: url('" + e.settings.image + "')\"" : "", s = ""; return i && (e.classes.add("btn-has-text"), s = '' + e.encode(i) + ""), '
    ' }, postRender: function() { var t = this, n = t.settings.onclick; return t.on("click", function(e) { e.aria && "down" === e.aria.key || e.control !== t || nn.getParent(e.target, "." + t.classPrefix + "open") || (e.stopImmediatePropagation(), n.call(t, e)) }), delete t.settings.onclick, t._super() } }), on = tinymce.util.Tools.resolve("tinymce.util.Color"), sn = Wt.extend({ Defaults: { classes: "widget colorpicker" }, init: function(e) { this._super(e) }, postRender: function() { var n, i, r, o, s, a = this, l = a.color(); function u(e, t) { var n, i, r = Ce.getPos(e); return n = t.pageX - r.x, i = t.pageY - r.y, { x: n = Math.max(0, Math.min(n / e.clientWidth, 1)), y: i = Math.max(0, Math.min(i / e.clientHeight, 1)) } } function c(e, t) { var n = (360 - e.h) / 360; Ce.css(r, { top: 100 * n + "%" }), t || Ce.css(s, { left: e.s + "%", top: 100 - e.v + "%" }), o.style.background = on({ s: 100, v: 100, h: e.h }).toHex(), a.color().parse({ s: e.s, v: e.v, h: e.h }) } function e(e) { var t; t = u(o, e), n.s = 100 * t.x, n.v = 100 * (1 - t.y), c(n), a.fire("change") } function t(e) { var t; t = u(i, e), (n = l.toHsv()).h = 360 * (1 - t.y), c(n, !0), a.fire("change") } i = a.getEl("h"), r = a.getEl("hp"), o = a.getEl("sv"), s = a.getEl("svp"), a._repaint = function() { c(n = l.toHsv()) }, a._super(), a._svdraghelper = new ft(a._id + "-sv", { start: e, drag: e }), a._hdraghelper = new ft(a._id + "-h", { start: t, drag: t }), a._repaint() }, rgb: function() { return this.color().toRgb() }, value: function(e) { if (!arguments.length) return this.color().toHex(); this.color().parse(e), this._rendered && this._repaint() }, color: function() { return this._color || (this._color = on()), this._color }, renderHtml: function() { var e, t = this._id, o = this.classPrefix, s = "#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000"; return e = '
    ' + function() { var e, t, n, i, r = ""; for (n = "filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=", e = 0, t = (i = s.split(",")).length - 1; e < t; e++) r += '
    '; return r }() + '
    ', '
    ' + e + "
    " } }), an = Wt.extend({ init: function(e) { e = w.extend({ height: 100, text: "Drop an image here", multiple: !1, accept: null }, e), this._super(e), this.classes.add("dropzone"), e.multiple && this.classes.add("multiple") }, renderHtml: function() { var e, t, n = this.settings; return e = { id: this._id, hidefocus: "1" }, t = Ce.create("div", e, "" + this.translate(n.text) + ""), n.height && Ce.css(t, "height", n.height + "px"), n.width && Ce.css(t, "width", n.width + "px"), t.className = this.classes, t.outerHTML }, postRender: function() { var i = this, e = function(e) { e.preventDefault(), i.classes.toggle("dragenter"), i.getEl().className = i.classes }; i._super(), i.$el.on("dragover", function(e) { e.preventDefault() }), i.$el.on("dragenter", e), i.$el.on("dragleave", e), i.$el.on("drop", function(e) { if (e.preventDefault(), !i.state.get("disabled")) { var t = function(e) { var t = i.settings.accept; if ("string" != typeof t) return e; var n = new RegExp("(" + t.split(/\s*,\s*/).join("|") + ")$", "i"); return w.grep(e, function(e) { return n.test(e.name) }) }(e.dataTransfer.files); i.value = function() { return t.length ? i.settings.multiple ? t : t[0] : null }, t.length && i.fire("change", e) } }) }, remove: function() { this.$el.off(), this._super() } }), ln = Wt.extend({ init: function(e) { var n = this; e.delimiter || (e.delimiter = "\xbb"), n._super(e), n.classes.add("path"), n.canFocus = !0, n.on("click", function(e) { var t; (t = e.target.getAttribute("data-index")) && n.fire("select", { value: n.row()[t], index: t }) }), n.row(n.settings.row) }, focus: function() { return this.getEl().firstChild.focus(), this }, row: function(e) { return arguments.length ? (this.state.set("row", e), this) : this.state.get("row") }, renderHtml: function() { return '
    ' + this._getDataPathHtml(this.state.get("row")) + "
    " }, bindStates: function() { var t = this; return t.state.on("change:row", function(e) { t.innerHtml(t._getDataPathHtml(e.value)) }), t._super() }, _getDataPathHtml: function(e) { var t, n, i = e || [], r = "", o = this.classPrefix; for (t = 0, n = i.length; t < n; t++) r += (0 < t ? '" : "") + '
    ' + i[t].name + "
    "; return r || (r = '
    \xa0
    '), r } }), un = ln.extend({ postRender: function() { var o = this, s = o.settings.editor; function a(e) { if (1 === e.nodeType) { if ("BR" === e.nodeName || e.getAttribute("data-mce-bogus")) return !0; if ("bookmark" === e.getAttribute("data-mce-type")) return !0 } return !1 } return !1 !== s.settings.elementpath && (o.on("select", function(e) { s.focus(), s.selection.select(this.row()[e.index].element), s.nodeChanged() }), s.on("nodeChange", function(e) { for (var t = [], n = e.parents, i = n.length; i--;) if (1 === n[i].nodeType && !a(n[i])) { var r = s.fire("ResolveName", { name: n[i].nodeName.toLowerCase(), target: n[i] }); if (r.isDefaultPrevented() || t.push({ name: r.name, element: n[i] }), r.isPropagationStopped()) break } o.row(t) })), o._super() } }), cn = ct.extend({ Defaults: { layout: "flex", align: "center", defaults: { flex: 1 } }, renderHtml: function() { var e = this, t = e._layout, n = e.classPrefix; return e.classes.add("formitem"), t.preRender(e), '
    ' + (e.settings.title ? '
    ' + e.settings.title + "
    " : "") + '
    ' + (e.settings.html || "") + t.renderHtml(e) + "
    " } }), dn = ct.extend({ Defaults: { containerCls: "form", layout: "flex", direction: "column", align: "stretch", flex: 1, padding: 15, labelGap: 30, spacing: 10, callbacks: { submit: function() { this.submit() } } }, preRender: function() { var i = this, e = i.items(); i.settings.formItemDefaults || (i.settings.formItemDefaults = { layout: "flex", autoResize: "overflow", defaults: { flex: 1 } }), e.each(function(e) { var t, n = e.settings.label; n && ((t = new cn(w.extend({ items: { type: "label", id: e._id + "-l", text: n, flex: 0, forId: e._id, disabled: e.disabled() } }, i.settings.formItemDefaults))).type = "formitem", e.aria("labelledby", e._id + "-l"), "undefined" == typeof e.settings.flex && (e.settings.flex = 1), i.replace(e, t), t.add(e)) }) }, submit: function() { return this.fire("submit", { data: this.toJSON() }) }, postRender: function() { this._super(), this.fromJSON(this.settings.data) }, bindStates: function() { var n = this; function e() { var e, t, i = 0, r = []; if (!1 !== n.settings.labelGapCalc) for (("children" === n.settings.labelGapCalc ? n.find("formitem") : n.items()).filter("formitem").each(function(e) { var t = e.items()[0], n = t.getEl().clientWidth; i = i < n ? n : i, r.push(t) }), t = n.settings.labelGap || 0, e = r.length; e--;) r[e].settings.minWidth = i + t } n._super(), n.on("show", e), e() } }), fn = dn.extend({ Defaults: { containerCls: "fieldset", layout: "flex", direction: "column", align: "stretch", flex: 1, padding: "25 15 5 15", labelGap: 30, spacing: 10, border: 1 }, renderHtml: function() { var e = this, t = e._layout, n = e.classPrefix; return e.preRender(), t.preRender(e), '
    ' + (e.settings.title ? '' + e.settings.title + "" : "") + '
    ' + (e.settings.html || "") + t.renderHtml(e) + "
    " } }), hn = 0, mn = function(e) { if (null === e || e === undefined) throw new Error("Node cannot be null or undefined"); return { dom: k(e) } }, gn = { fromHtml: function(e, t) { var n = (t || document).createElement("div"); if (n.innerHTML = e, !n.hasChildNodes() || 1 < n.childNodes.length) throw console.error("HTML does not have a single root node", e), "HTML must have a single root node"; return mn(n.childNodes[0]) }, fromTag: function(e, t) { var n = (t || document).createElement(e); return mn(n) }, fromText: function(e, t) { var n = (t || document).createTextNode(e); return mn(n) }, fromDom: mn, fromPoint: function(e, t, n) { var i = e.dom(); return D.from(i.elementFromPoint(t, n)).map(mn) } }, pn = function(n) { var i, r = !1; return function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; return r || (r = !0, i = n.apply(null, e)), i } }, vn = { ATTRIBUTE: Node.ATTRIBUTE_NODE, CDATA_SECTION: Node.CDATA_SECTION_NODE, COMMENT: Node.COMMENT_NODE, DOCUMENT: Node.DOCUMENT_NODE, DOCUMENT_TYPE: Node.DOCUMENT_TYPE_NODE, DOCUMENT_FRAGMENT: Node.DOCUMENT_FRAGMENT_NODE, ELEMENT: Node.ELEMENT_NODE, TEXT: Node.TEXT_NODE, PROCESSING_INSTRUCTION: Node.PROCESSING_INSTRUCTION_NODE, ENTITY_REFERENCE: Node.ENTITY_REFERENCE_NODE, ENTITY: Node.ENTITY_NODE, NOTATION: Node.NOTATION_NODE }, bn = function(e) { return e.dom().nodeType }, yn = function(t) { return function(e) { return bn(e) === t } }, xn = (yn(vn.ELEMENT), yn(vn.TEXT), yn(vn.DOCUMENT), pn(function() { return xn(gn.fromDom(document)) }), function(e) { var t = e.dom().body; if (null === t || t === undefined) throw "Body is not available yet"; return gn.fromDom(t) }), wn = ("undefined" != typeof window ? window : Function("return this;")(), function(e, t) { var n = function(e, t) { for (var n = 0; n < e.length; n++) { var i = e[n]; if (i.test(t)) return i } return undefined }(e, t); if (!n) return { major: 0, minor: 0 }; var i = function(e) { return Number(t.replace(n, "$" + e)) }; return Cn(i(1), i(2)) }), _n = function() { return Cn(0, 0) }, Cn = function(e, t) { return { major: e, minor: t } }, Rn = { nu: Cn, detect: function(e, t) { var n = String(t).toLowerCase(); return 0 === e.length ? _n() : wn(e, n) }, unknown: _n }, En = "Firefox", kn = function(e, t) { return function() { return t === e } }, Tn = function(e) { var t = e.current; return { current: t, version: e.version, isEdge: kn("Edge", t), isChrome: kn("Chrome", t), isIE: kn("IE", t), isOpera: kn("Opera", t), isFirefox: kn(En, t), isSafari: kn("Safari", t) } }, Hn = { unknown: function() { return Tn({ current: undefined, version: Rn.unknown() }) }, nu: Tn, edge: k("Edge"), chrome: k("Chrome"), ie: k("IE"), opera: k("Opera"), firefox: k(En), safari: k("Safari") }, Sn = "Windows", Mn = "Android", Nn = "Solaris", Pn = "FreeBSD", Dn = function(e, t) { return function() { return t === e } }, Wn = function(e) { var t = e.current; return { current: t, version: e.version, isWindows: Dn(Sn, t), isiOS: Dn("iOS", t), isAndroid: Dn(Mn, t), isOSX: Dn("OSX", t), isLinux: Dn("Linux", t), isSolaris: Dn(Nn, t), isFreeBSD: Dn(Pn, t) } }, On = { unknown: function() { return Wn({ current: undefined, version: Rn.unknown() }) }, nu: Wn, windows: k(Sn), ios: k("iOS"), android: k(Mn), linux: k("Linux"), osx: k("OSX"), solaris: k(Nn), freebsd: k(Pn) }, An = function(e, t) { var n = String(t).toLowerCase(); return Z(e, function(e) { return e.search(n) }) }, Bn = function(e, n) { return An(e, n).map(function(e) { var t = Rn.detect(e.versionRegexes, n); return { current: e.name, version: t } }) }, Ln = function(e, n) { return An(e, n).map(function(e) { var t = Rn.detect(e.versionRegexes, n); return { current: e.name, version: t } }) }, In = function(e, t) { return -1 !== e.indexOf(t) }, zn = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, Fn = function(t) { return function(e) { return In(e, t) } }, Un = [{ name: "Edge", versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], search: function(e) { return In(e, "edge/") && In(e, "chrome") && In(e, "safari") && In(e, "applewebkit") } }, { name: "Chrome", versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, zn], search: function(e) { return In(e, "chrome") && !In(e, "chromeframe") } }, { name: "IE", versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/], search: function(e) { return In(e, "msie") || In(e, "trident") } }, { name: "Opera", versionRegexes: [zn, /.*?opera\/([0-9]+)\.([0-9]+).*/], search: Fn("opera") }, { name: "Firefox", versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], search: Fn("firefox") }, { name: "Safari", versionRegexes: [zn, /.*?cpu os ([0-9]+)_([0-9]+).*/], search: function(e) { return (In(e, "safari") || In(e, "mobile/")) && In(e, "applewebkit") } }], Vn = [{ name: "Windows", search: Fn("win"), versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/] }, { name: "iOS", search: function(e) { return In(e, "iphone") || In(e, "ipad") }, versionRegexes: [/.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/] }, { name: "Android", search: Fn("android"), versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/] }, { name: "OSX", search: Fn("os x"), versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/] }, { name: "Linux", search: Fn("linux"), versionRegexes: [] }, { name: "Solaris", search: Fn("sunos"), versionRegexes: [] }, { name: "FreeBSD", search: Fn("freebsd"), versionRegexes: [] }], Yn = { browsers: k(Un), oses: k(Vn) }, $n = function(e) { var t, n, i, r, o, s, a, l, u, c, d, f = Yn.browsers(), h = Yn.oses(), m = Bn(f, e).fold(Hn.unknown, Hn.nu), g = Ln(h, e).fold(On.unknown, On.nu); return { browser: m, os: g, deviceType: (n = m, i = e, r = (t = g).isiOS() && !0 === /ipad/i.test(i), o = t.isiOS() && !r, s = t.isAndroid() && 3 === t.version.major, a = t.isAndroid() && 4 === t.version.major, l = r || s || a && !0 === /mobile/i.test(i), u = t.isiOS() || t.isAndroid(), c = u && !l, d = n.isSafari() && t.isiOS() && !1 === /safari/i.test(i), { isiPad: k(r), isiPhone: k(o), isTablet: k(l), isPhone: k(c), isTouch: k(u), isAndroid: t.isAndroid, isiOS: t.isiOS, isWebView: k(d) }) } }, Xn = pn(function() { var e = navigator.userAgent; return $n(e) }), qn = vn.ELEMENT, jn = vn.DOCUMENT, Jn = function(e) { return e.nodeType !== qn && e.nodeType !== jn || 0 === e.childElementCount }, Gn = { all: function(e, t) { var n = t === undefined ? document : t.dom(); return Jn(n) ? [] : J(n.querySelectorAll(e), gn.fromDom) }, is: function(e, t) { var n = e.dom(); if (n.nodeType !== qn) return !1; if (n.matches !== undefined) return n.matches(t); if (n.msMatchesSelector !== undefined) return n.msMatchesSelector(t); if (n.webkitMatchesSelector !== undefined) return n.webkitMatchesSelector(t); if (n.mozMatchesSelector !== undefined) return n.mozMatchesSelector(t); throw new Error("Browser lacks native selectors") }, one: function(e, t) { var n = t === undefined ? document : t.dom(); return Jn(n) ? D.none() : D.from(n.querySelector(e)).map(gn.fromDom) } }, Kn = (Xn().browser.isIE(), function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t] }("element", "offset"), function(e, t) { return Gn.all(t, e) }), Zn = w.trim, Qn = function(t) { return function(e) { if (e && 1 === e.nodeType) { if (e.contentEditable === t) return !0; if (e.getAttribute("data-mce-contenteditable") === t) return !0 } return !1 } }, ei = Qn("true"), ti = Qn("false"), ni = function(e, t, n, i, r) { return { type: e, title: t, url: n, level: i, attach: r } }, ii = function(e) { return e.innerText || e.textContent }, ri = function(e) { return e.id ? e.id : (t = "h", n = (new Date).getTime(), t + "_" + Math.floor(1e9 * Math.random()) + ++hn + String(n)); var t, n }, oi = function(e) { return (t = e) && "A" === t.nodeName && (t.id || t.name) && ai(e); var t }, si = function(e) { return e && /^(H[1-6])$/.test(e.nodeName) }, ai = function(e) { return function(e) { for (; e = e.parentNode;) { var t = e.contentEditable; if (t && "inherit" !== t) return ei(e) } return !1 }(e) && !ti(e) }, li = function(e) { return si(e) && ai(e) }, ui = function(e) { var t, n = ri(e); return ni("header", ii(e), "#" + n, si(t = e) ? parseInt(t.nodeName.substr(1), 10) : 0, function() { e.id = n }) }, ci = function(e) { var t = e.id || e.name, n = ii(e); return ni("anchor", n || "#" + t, "#" + t, 0, E) }, di = function(e) { var t, n; return t = "h1,h2,h3,h4,h5,h6,a:not([href])", n = e, J(Kn(gn.fromDom(n), t), function(e) { return e.dom() }) }, fi = function(e) { return 0 < Zn(e.title).length }, hi = function(e) { var t, n = di(e); return K((t = n, J(K(t, li), ui)).concat(J(K(n, oi), ci)), fi) }, mi = {}, gi = function(e) { return { title: e.title, value: { title: { raw: e.title }, url: e.url, attach: e.attach } } }, pi = function(e, t) { return { title: e, value: { title: e, url: t, attach: E } } }, vi = function(e, t, n) { var i = t in e ? e[t] : n; return !1 === i ? null : i }, bi = function(e, i, r, t) { var n, o, s, a, l, u, c = { title: "-" }, d = function(e) { var t = e.hasOwnProperty(r) ? e[r] : [], n = K(t, function(e) { return t = e, !j(i, function(e) { return e.url === t }); var t }); return w.map(n, function(e) { return { title: e, value: { title: e, url: e, attach: E } } }) }, f = function(t) { var e, n = K(i, function(e) { return e.type === t }); return e = n, w.map(e, gi) }; return !1 === t.typeahead_urls ? [] : "file" === r ? (n = [xi(e, d(mi)), xi(e, f("header")), xi(e, (a = f("anchor"), l = vi(t, "anchor_top", "#top"), u = vi(t, "anchor_bottom", "#bottom"), null !== l && a.unshift(pi("", l)), null !== u && a.push(pi("", u)), a))], o = function(e, t) { return 0 === e.length || 0 === t.length ? e.concat(t) : e.concat(c, t) }, s = [], G(n, function(e) { s = o(s, e) }), s) : xi(e, d(mi)) }, yi = function(e, t) { var n, i, r, o = mi[t]; /^https?/.test(e) && (o ? (n = o, i = e, r = q(n, i), -1 === r ? D.none() : D.some(r)).isNone() && (mi[t] = o.slice(0, 5).concat(e)) : mi[t] = [e]) }, xi = function(e, t) { var n = e.toLowerCase(), i = w.grep(t, function(e) { return -1 !== e.title.toLowerCase().indexOf(n) }); return 1 === i.length && i[0].title === e ? [] : i }, wi = function(o, e, n) { var i = e.filepicker_validator_handler; i && o.state.on("change:value", function(e) { var t; 0 !== (t = e.value).length ? i({ url: t, type: n }, function(e) { var t, n, i, r = (n = (t = e).status, i = t.message, "valid" === n ? { status: "ok", message: i } : "unknown" === n ? { status: "warn", message: i } : "invalid" === n ? { status: "warn", message: i } : { status: "none", message: "" }); o.statusMessage(r.message), o.statusLevel(r.status) }) : o.statusLevel("none") }) }, _i = Qt.extend({ Statics: { clearHistory: function() { mi = {} } }, init: function(e) { var t, n, i, r, o, s, a, l, u = this, c = window.tinymce ? window.tinymce.activeEditor : h.activeEditor, d = c.settings, f = e.filetype; e.spellcheck = !1, (i = d.file_picker_types || d.file_browser_callback_types) && (i = w.makeMap(i, /[, ]/)), i && !i[f] || (!(n = d.file_picker_callback) || i && !i[f] ? !(n = d.file_browser_callback) || i && !i[f] || (t = function() { n(u.getEl("inp").id, u.value(), f, window) }) : t = function() { var e = u.fire("beforecall").meta; e = w.extend({ filetype: f }, e), n.call(c, function(e, t) { u.value(e).fire("change", { meta: t }) }, u.value(), e) }), t && (e.icon = "browse", e.onaction = t), u._super(e), u.classes.add("filepicker"), r = u, o = d, s = c.getBody(), a = f, l = function(e) { var t = hi(s), n = bi(e, t, a, o); r.showAutoComplete(n, e) }, r.on("autocomplete", function() { l(r.value()) }), r.on("selectitem", function(e) { var t = e.value; r.value(t.url); var n, i = (n = t.title).raw ? n.raw : n; "image" === a ? r.fire("change", { meta: { alt: i, attach: t.attach } }) : r.fire("change", { meta: { text: i, attach: t.attach } }), r.focus() }), r.on("click", function(e) { 0 === r.value().length && "INPUT" === e.target.nodeName && l("") }), r.on("PostRender", function() { r.getRoot().on("submit", function(e) { e.isDefaultPrevented() || yi(r.value(), a) }) }), wi(u, d, f) } }), Ci = qt.extend({ recalc: function(e) { var t = e.layoutRect(), n = e.paddingBox; e.items().filter(":visible").each(function(e) { e.layoutRect({ x: n.left, y: n.top, w: t.innerW - n.right - n.left, h: t.innerH - n.top - n.bottom }), e.recalc && e.recalc() }) } }), Ri = qt.extend({ recalc: function(e) { var t, n, i, r, o, s, a, l, u, c, d, f, h, m, g, p, v, b, y, x, w, _, C, R, E, k, T, H, S, M, N, P, D, W, O, A, B, L = [], I = Math.max, z = Math.min; for (i = e.items().filter(":visible"), r = e.layoutRect(), o = e.paddingBox, s = e.settings, f = e.isRtl() ? s.direction || "row-reversed" : s.direction, a = s.align, l = e.isRtl() ? s.pack || "end" : s.pack, u = s.spacing || 0, "row-reversed" !== f && "column-reverse" !== f || (i = i.set(i.toArray().reverse()), f = f.split("-")[0]), "column" === f ? (R = "y", _ = "h", C = "minH", E = "maxH", T = "innerH", k = "top", H = "deltaH", S = "contentH", W = "left", P = "w", M = "x", N = "innerW", D = "minW", O = "right", A = "deltaW", B = "contentW") : (R = "x", _ = "w", C = "minW", E = "maxW", T = "innerW", k = "left", H = "deltaW", S = "contentW", W = "top", P = "h", M = "y", N = "innerH", D = "minH", O = "bottom", A = "deltaH", B = "contentH"), d = r[T] - o[k] - o[k], w = c = 0, t = 0, n = i.length; t < n; t++) m = (h = i[t]).layoutRect(), d -= t < n - 1 ? u : 0, 0 < (g = h.settings.flex) && (c += g, m[E] && L.push(h), m.flex = g), d -= m[C], w < (p = o[W] + m[D] + o[O]) && (w = p); if ((y = {})[C] = d < 0 ? r[C] - d + r[H] : r[T] - d + r[H], y[D] = w + r[A], y[S] = r[T] - d, y[B] = w, y.minW = z(y.minW, r.maxW), y.minH = z(y.minH, r.maxH), y.minW = I(y.minW, r.startMinWidth), y.minH = I(y.minH, r.startMinHeight), !r.autoResize || y.minW === r.minW && y.minH === r.minH) { for (b = d / c, t = 0, n = L.length; t < n; t++)(v = (m = (h = L[t]).layoutRect())[E]) < (p = m[C] + m.flex * b) ? (d -= m[E] - m[C], c -= m.flex, m.flex = 0, m.maxFlexSize = v) : m.maxFlexSize = 0; for (b = d / c, x = o[k], y = {}, 0 === c && ("end" === l ? x = d + o[k] : "center" === l ? (x = Math.round(r[T] / 2 - (r[T] - d) / 2) + o[k]) < 0 && (x = o[k]) : "justify" === l && (x = o[k], u = Math.floor(d / (i.length - 1)))), y[M] = o[W], t = 0, n = i.length; t < n; t++) p = (m = (h = i[t]).layoutRect()).maxFlexSize || m[C], "center" === a ? y[M] = Math.round(r[N] / 2 - m[P] / 2) : "stretch" === a ? (y[P] = I(m[D] || 0, r[N] - o[W] - o[O]), y[M] = o[W]) : "end" === a && (y[M] = r[N] - m[P] - o.top), 0 < m.flex && (p += m.flex * b), y[_] = p, y[R] = x, h.layoutRect(y), h.recalc && h.recalc(), x += p + u } else if (y.w = y.minW, y.h = y.minH, e.layoutRect(y), this.recalc(e), null === e._lastRect) { var F = e.parent(); F && (F._lastRect = null, F.recalc()) } } }), Ei = Xt.extend({ Defaults: { containerClass: "flow-layout", controlClass: "flow-layout-item", endClass: "break" }, recalc: function(e) { e.items().filter(":visible").each(function(e) { e.recalc && e.recalc() }) }, isNative: function() { return !0 } }), ki = function(e, t) { return Gn.one(t, e) }, Ti = function(e, t) { return function() { e.execCommand("mceToggleFormat", !1, t) } }, Hi = function(e, t, n) { var i = function(e) { n(e, t) }; e.formatter ? e.formatter.formatChanged(t, i) : e.on("init", function() { e.formatter.formatChanged(t, i) }) }, Si = function(e, n) { return function(t) { Hi(e, n, function(e) { t.control.active(e) }) } }, Mi = function(i) { var t = ["alignleft", "aligncenter", "alignright", "alignjustify"], r = "alignleft", e = [{ text: "Left", icon: "alignleft", onclick: Ti(i, "alignleft") }, { text: "Center", icon: "aligncenter", onclick: Ti(i, "aligncenter") }, { text: "Right", icon: "alignright", onclick: Ti(i, "alignright") }, { text: "Justify", icon: "alignjustify", onclick: Ti(i, "alignjustify") }]; i.addMenuItem("align", { text: "Align", menu: e }), i.addButton("align", { type: "menubutton", icon: r, menu: e, onShowMenu: function(e) { var n = e.control.menu; w.each(t, function(t, e) { n.items().eq(e).each(function(e) { return e.active(i.formatter.match(t)) }) }) }, onPostRender: function(e) { var n = e.control; w.each(t, function(t, e) { Hi(i, t, function(e) { n.icon(r), e && n.icon(t) }) }) } }), w.each({ alignleft: ["Align left", "JustifyLeft"], aligncenter: ["Align center", "JustifyCenter"], alignright: ["Align right", "JustifyRight"], alignjustify: ["Justify", "JustifyFull"], alignnone: ["No alignment", "JustifyNone"] }, function(e, t) { i.addButton(t, { active: !1, tooltip: e[0], cmd: e[1], onPostRender: Si(i, t) }) }) }, Ni = function(e) { return e ? e.split(",")[0] : "" }, Pi = function(l, u) { return function() { var a = this; a.state.set("value", null), l.on("init nodeChange", function(e) { var t, n, i, r, o = l.queryCommandValue("FontName"), s = (t = u, r = (n = o) ? n.toLowerCase() : "", w.each(t, function(e) { e.value.toLowerCase() === r && (i = e.value) }), w.each(t, function(e) { i || Ni(e.value).toLowerCase() !== Ni(r).toLowerCase() || (i = e.value) }), i); a.value(s || null), !s && o && a.text(Ni(o)) }) } }, Di = function(n) { n.addButton("fontselect", function() { var e, t = (e = function(e) { for (var t = (e = e.replace(/;$/, "").split(";")).length; t--;) e[t] = e[t].split("="); return e }(n.settings.font_formats || "Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"), w.map(e, function(e) { return { text: { raw: e[0] }, value: e[1], textStyle: -1 === e[1].indexOf("dings") ? "font-family:" + e[1] : "" } })); return { type: "listbox", text: "Font Family", tooltip: "Font Family", values: t, fixedWidth: !0, onPostRender: Pi(n, t), onselect: function(e) { e.control.settings.value && n.execCommand("FontName", !1, e.control.settings.value) } } }) }, Wi = function(e) { Di(e) }, Oi = function(e, t) { return /[0-9.]+px$/.test(e) ? (n = 72 * parseInt(e, 10) / 96, i = t || 0, r = Math.pow(10, i), Math.round(n * r) / r + "pt") : e; var n, i, r }, Ai = function(e, t, n) { var i; return w.each(e, function(e) { e.value === n ? i = n : e.value === t && (i = t) }), i }, Bi = function(n) { n.addButton("fontsizeselect", function() { var e, s, a, t = (e = n.settings.fontsize_formats || "8pt 10pt 12pt 14pt 18pt 24pt 36pt", w.map(e.split(" "), function(e) { var t = e, n = e, i = e.split("="); return 1 < i.length && (t = i[0], n = i[1]), { text: t, value: n } })); return { type: "listbox", text: "Font Sizes", tooltip: "Font Sizes", values: t, fixedWidth: !0, onPostRender: (s = n, a = t, function() { var o = this; s.on("init nodeChange", function(e) { var t, n, i, r; if (t = s.queryCommandValue("FontSize")) for (i = 3; !r && 0 <= i; i--) n = Oi(t, i), r = Ai(a, n, t); o.value(r || null), r || o.text(n) }) }), onclick: function(e) { e.control.settings.value && n.execCommand("FontSize", !1, e.control.settings.value) } } }) }, Li = function(e) { Bi(e) }, Ii = function(n, e) { var i = e.length; return w.each(e, function(e) { e.menu && (e.hidden = 0 === Ii(n, e.menu)); var t = e.format; t && (e.hidden = !n.formatter.canApply(t)), e.hidden && i-- }), i }, zi = function(n, e) { var i = e.items().length; return e.items().each(function(e) { e.menu && e.visible(0 < zi(n, e.menu)), !e.menu && e.settings.menu && e.visible(0 < Ii(n, e.settings.menu)); var t = e.settings.format; t && e.visible(n.formatter.canApply(t)), e.visible() || i-- }), i }, Fi = function(e) { var i, r, o, t, s, n, a, l, u = (r = 0, o = [], t = [{ title: "Headings", items: [{ title: "Heading 1", format: "h1" }, { title: "Heading 2", format: "h2" }, { title: "Heading 3", format: "h3" }, { title: "Heading 4", format: "h4" }, { title: "Heading 5", format: "h5" }, { title: "Heading 6", format: "h6" }] }, { title: "Inline", items: [{ title: "Bold", icon: "bold", format: "bold" }, { title: "Italic", icon: "italic", format: "italic" }, { title: "Underline", icon: "underline", format: "underline" }, { title: "Strikethrough", icon: "strikethrough", format: "strikethrough" }, { title: "Superscript", icon: "superscript", format: "superscript" }, { title: "Subscript", icon: "subscript", format: "subscript" }, { title: "Code", icon: "code", format: "code" }] }, { title: "Blocks", items: [{ title: "Paragraph", format: "p" }, { title: "Blockquote", format: "blockquote" }, { title: "Div", format: "div" }, { title: "Pre", format: "pre" }] }, { title: "Alignment", items: [{ title: "Left", icon: "alignleft", format: "alignleft" }, { title: "Center", icon: "aligncenter", format: "aligncenter" }, { title: "Right", icon: "alignright", format: "alignright" }, { title: "Justify", icon: "alignjustify", format: "alignjustify" }] }], s = function(e) { var i = []; if (e) return w.each(e, function(e) { var t = { text: e.title, icon: e.icon }; if (e.items) t.menu = s(e.items); else { var n = e.format || "custom" + r++; e.format || (e.name = n, o.push(e)), t.format = n, t.cmd = e.cmd } i.push(t) }), i }, (i = e).on("init", function() { w.each(o, function(e) { i.formatter.register(e.name, e) }) }), { type: "menu", items: i.settings.style_formats_merge ? i.settings.style_formats ? s(t.concat(i.settings.style_formats)) : s(t) : s(i.settings.style_formats || t), onPostRender: function(e) { i.fire("renderFormatsMenu", { control: e.control }) }, itemDefaults: { preview: !0, textStyle: function() { if (this.settings.format) return i.formatter.getCssText(this.settings.format) }, onPostRender: function() { var n = this; n.parent().on("show", function() { var e, t; (e = n.settings.format) && (n.disabled(!i.formatter.canApply(e)), n.active(i.formatter.match(e))), (t = n.settings.cmd) && n.active(i.queryCommandState(t)) }) }, onclick: function() { this.settings.format && Ti(i, this.settings.format)(), this.settings.cmd && i.execCommand(this.settings.cmd) } } }); n = u, e.addMenuItem("formats", { text: "Formats", menu: n }), l = u, (a = e).addButton("styleselect", { type: "menubutton", text: "Formats", menu: l, onShowMenu: function() { a.settings.style_formats_autohide && zi(a, this.menu) } }) }, Ui = function(n, e) { return function() { var r, o, s, t = []; return w.each(e, function(e) { t.push({ text: e[0], value: e[1], textStyle: function() { return n.formatter.getCssText(e[1]) } }) }), { type: "listbox", text: e[0][0], values: t, fixedWidth: !0, onselect: function(e) { if (e.control) { var t = e.control.value(); Ti(n, t)() } }, onPostRender: (r = n, o = t, function() { var t = this; r.on("nodeChange", function(e) { var n = r.formatter, i = null; w.each(e.parents, function(t) { if (w.each(o, function(e) { if (s ? n.matchNode(t, s, { value: e.value }) && (i = e.value) : n.matchNode(t, e.value) && (i = e.value), i) return !1 }), i) return !1 }), t.value(i) }) }) } } }, Vi = function(e) { var t, n, i = function(e) { for (var t = (e = e.replace(/;$/, "").split(";")).length; t--;) e[t] = e[t].split("="); return e }(e.settings.block_formats || "Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre"); e.addMenuItem("blockformats", { text: "Blocks", menu: (t = e, n = i, w.map(n, function(e) { return { text: e[0], onclick: Ti(t, e[1]), textStyle: function() { return t.formatter.getCssText(e[1]) } } })) }), e.addButton("formatselect", Ui(e, i)) }, Yi = function(t, e) { var n, i; if ("string" == typeof e) i = e.split(" "); else if (w.isArray(e)) return function(e) { for (var t = [], n = 0, i = e.length; n < i; ++n) { if (!Array.prototype.isPrototypeOf(e[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + e); te.apply(t, e[n]) } return t }(w.map(e, function(e) { return Yi(t, e) })); return n = w.grep(i, function(e) { return "|" === e || e in t.menuItems }), w.map(n, function(e) { return "|" === e ? { text: "-" } : t.menuItems[e] }) }, $i = function(e) { return e && "-" === e.text }, Xi = function(e) { var t = K(e, function(e, t, n) { return !$i(e) || !$i(n[t - 1]) }); return K(t, function(e, t, n) { return !$i(e) || 0 < t && t < n.length - 1 }) }, qi = function(e) { var t, n, i, r, o = e.settings.insert_button_items; return Xi(o ? Yi(e, o) : (t = e, n = "insert", i = [{ text: "-" }], r = w.grep(t.menuItems, function(e) { return e.context === n }), w.each(r, function(e) { "before" === e.separator && i.push({ text: "|" }), e.prependToContext ? i.unshift(e) : i.push(e), "after" === e.separator && i.push({ text: "|" }) }), i)) }, ji = function(e) { var t; (t = e).addButton("insert", { type: "menubutton", icon: "insert", menu: [], oncreatemenu: function() { this.menu.add(qi(t)), this.menu.renderNew() } }) }, Ji = function(e) { var n, i, r; n = e, w.each({ bold: "Bold", italic: "Italic", underline: "Underline", strikethrough: "Strikethrough", subscript: "Subscript", superscript: "Superscript" }, function(e, t) { n.addButton(t, { active: !1, tooltip: e, onPostRender: Si(n, t), onclick: Ti(n, t) }) }), i = e, w.each({ outdent: ["Decrease indent", "Outdent"], indent: ["Increase indent", "Indent"], cut: ["Cut", "Cut"], copy: ["Copy", "Copy"], paste: ["Paste", "Paste"], help: ["Help", "mceHelp"], selectall: ["Select all", "SelectAll"], visualaid: ["Visual aids", "mceToggleVisualAid"], newdocument: ["新建文件", "mceNewDocument"], removeformat: ["Clear formatting", "RemoveFormat"], remove: ["Remove", "Delete"] }, function(e, t) { i.addButton(t, { tooltip: e[0], cmd: e[1] }) }), r = e, w.each({ blockquote: ["Blockquote", "mceBlockQuote"], subscript: ["Subscript", "Subscript"], superscript: ["Superscript", "Superscript"] }, function(e, t) { r.addButton(t, { active: !1, tooltip: e[0], cmd: e[1], onPostRender: Si(r, t) }) }) }, Gi = function(e) { var n; Ji(e), n = e, w.each({ bold: ["Bold", "Bold", "Meta+B"], italic: ["Italic", "Italic", "Meta+I"], underline: ["Underline", "Underline", "Meta+U"], strikethrough: ["Strikethrough", "Strikethrough"], subscript: ["Subscript", "Subscript"], superscript: ["Superscript", "Superscript"], removeformat: ["Clear formatting", "RemoveFormat"], newdocument: ["新建文件", "mceNewDocument"], cut: ["Cut", "Cut", "Meta+X"], copy: ["Copy", "Copy", "Meta+C"], paste: ["Paste", "Paste", "Meta+V"], selectall: ["Select all", "SelectAll", "Meta+A"] }, function(e, t) { n.addMenuItem(t, { text: e[0], icon: t, shortcut: e[2], cmd: e[1] }) }), n.addMenuItem("codeformat", { text: "Code", icon: "code", onclick: Ti(n, "code") }) }, Ki = function(n, i) { return function() { var e = this, t = function() { var e = "redo" === i ? "hasRedo" : "hasUndo"; return !!n.undoManager && n.undoManager[e]() }; e.disabled(!t()), n.on("Undo Redo AddUndo TypingUndo ClearUndos SwitchMode", function() { e.disabled(n.readonly || !t()) }) } }, Zi = function(e) { var t, n; (t = e).addMenuItem("undo", { text: "Undo", icon: "undo", shortcut: "Meta+Z", onPostRender: Ki(t, "undo"), cmd: "undo" }), t.addMenuItem("redo", { text: "Redo", icon: "redo", shortcut: "Meta+Y", onPostRender: Ki(t, "redo"), cmd: "redo" }), (n = e).addButton("undo", { tooltip: "Undo", onPostRender: Ki(n, "undo"), cmd: "undo" }), n.addButton("redo", { tooltip: "Redo", onPostRender: Ki(n, "redo"), cmd: "redo" }) }, Qi = function(e) { var t, n; (t = e).addMenuItem("visualaid", { text: "Visual aids", selectable: !0, onPostRender: (n = t, function() { var t = this; n.on("VisualAid", function(e) { t.active(e.hasVisual) }), t.active(n.hasVisual) }), cmd: "mceToggleVisualAid" }) }, er = { setup: function(e) { var t; e.rtl && (st.rtl = !0), e.on("mousedown", function() { kt.hideAll() }), (t = e).settings.ui_container && (fe.container = ki(gn.fromDom(document.body), t.settings.ui_container).fold(k(null), function(e) { return e.dom() })), Wt.tooltips = !fe.iOS, st.translate = function(e) { return h.translate(e) }, Vi(e), Mi(e), Gi(e), Zi(e), Li(e), Wi(e), Fi(e), Qi(e), ji(e) } }, tr = qt.extend({ recalc: function(e) { var t, n, i, r, o, s, a, l, u, c, d, f, h, m, g, p, v, b, y, x, w, _, C, R, E, k, T, H, S = [], M = []; t = e.settings, r = e.items().filter(":visible"), o = e.layoutRect(), i = t.columns || Math.ceil(Math.sqrt(r.length)), n = Math.ceil(r.length / i), b = t.spacingH || t.spacing || 0, y = t.spacingV || t.spacing || 0, x = t.alignH || t.align, w = t.alignV || t.align, p = e.paddingBox, H = "reverseRows" in t ? t.reverseRows : e.isRtl(), x && "string" == typeof x && (x = [x]), w && "string" == typeof w && (w = [w]); for (d = 0; d < i; d++) S.push(0); for (f = 0; f < n; f++) M.push(0); for (f = 0; f < n; f++) for (d = 0; d < i && (c = r[f * i + d]); d++) R = (u = c.layoutRect()).minW, E = u.minH, S[d] = R > S[d] ? R : S[d], M[f] = E > M[f] ? E : M[f]; for (k = o.innerW - p.left - p.right, d = _ = 0; d < i; d++) _ += S[d] + (0 < d ? b : 0), k -= (0 < d ? b : 0) + S[d]; for (T = o.innerH - p.top - p.bottom, f = C = 0; f < n; f++) C += M[f] + (0 < f ? y : 0), T -= (0 < f ? y : 0) + M[f]; if (_ += p.left + p.right, C += p.top + p.bottom, (l = {}).minW = _ + (o.w - o.innerW), l.minH = C + (o.h - o.innerH), l.contentW = l.minW - o.deltaW, l.contentH = l.minH - o.deltaH, l.minW = Math.min(l.minW, o.maxW), l.minH = Math.min(l.minH, o.maxH), l.minW = Math.max(l.minW, o.startMinWidth), l.minH = Math.max(l.minH, o.startMinHeight), !o.autoResize || l.minW === o.minW && l.minH === o.minH) { var N; o.autoResize && ((l = e.layoutRect(l)).contentW = l.minW - o.deltaW, l.contentH = l.minH - o.deltaH), N = "start" === t.packV ? 0 : 0 < T ? Math.floor(T / n) : 0; var P = 0, D = t.flexWidths; if (D) for (d = 0; d < D.length; d++) P += D[d]; else P = i; var W = k / P; for (d = 0; d < i; d++) S[d] += D ? D[d] * W : W; for (m = p.top, f = 0; f < n; f++) { for (h = p.left, a = M[f] + N, d = 0; d < i && (c = r[H ? f * i + i - 1 - d : f * i + d]); d++) g = c.settings, u = c.layoutRect(), s = Math.max(S[d], u.startMinWidth), u.x = h, u.y = m, "center" === (v = g.alignH || (x ? x[d] || x[0] : null)) ? u.x = h + s / 2 - u.w / 2 : "right" === v ? u.x = h + s - u.w : "stretch" === v && (u.w = s), "center" === (v = g.alignV || (w ? w[d] || w[0] : null)) ? u.y = m + a / 2 - u.h / 2 : "bottom" === v ? u.y = m + a - u.h : "stretch" === v && (u.h = a), c.layoutRect(u), h += s + b, c.recalc && c.recalc(); m += a + y } } else if (l.w = l.minW, l.h = l.minH, e.layoutRect(l), this.recalc(e), null === e._lastRect) { var O = e.parent(); O && (O._lastRect = null, O.recalc()) } } }), nr = Wt.extend({ renderHtml: function() { var e = this; return e.classes.add("iframe"), e.canFocus = !1, '' }, src: function(e) { this.getEl().src = e }, html: function(e, t) { var n = this, i = this.getEl().contentWindow.document.body; return i ? (i.innerHTML = e, t && t()) : u.setTimeout(function() { n.html(e) }), this } }), ir = Wt.extend({ init: function(e) { this._super(e), this.classes.add("widget").add("infobox"), this.canFocus = !1 }, severity: function(e) { this.classes.remove("error"), this.classes.remove("warning"), this.classes.remove("success"), this.classes.add(e) }, help: function(e) { this.state.set("help", e) }, renderHtml: function() { var e = this, t = e.classPrefix; return '
    ' + e.encode(e.state.get("text")) + '
    ' }, bindStates: function() { var t = this; return t.state.on("change:text", function(e) { t.getEl("body").firstChild.data = t.encode(e.value), t.state.get("rendered") && t.updateLayoutRect() }), t.state.on("change:help", function(e) { t.classes.toggle("has-help", e.value), t.state.get("rendered") && t.updateLayoutRect() }), t._super() } }), rr = Wt.extend({ init: function(e) { var t = this; t._super(e), t.classes.add("widget").add("label"), t.canFocus = !1, e.multiline && t.classes.add("autoscroll"), e.strong && t.classes.add("strong") }, initLayoutRect: function() { var e = this, t = e._super(); return e.settings.multiline && (Ce.getSize(e.getEl()).width > t.maxW && (t.minW = t.maxW, e.classes.add("multiline")), e.getEl().style.width = t.minW + "px", t.startMinH = t.h = t.minH = Math.min(t.maxH, Ce.getSize(e.getEl()).height)), t }, repaint: function() { return this.settings.multiline || (this.getEl().style.lineHeight = this.layoutRect().h + "px"), this._super() }, severity: function(e) { this.classes.remove("error"), this.classes.remove("warning"), this.classes.remove("success"), this.classes.add(e) }, renderHtml: function() { var e, t, n = this, i = n.settings.forId, r = n.settings.html ? n.settings.html : n.encode(n.state.get("text")); return !i && (t = n.settings.forName) && (e = n.getRoot().find("#" + t)[0]) && (i = e._id), i ? '" : '' + r + "" }, bindStates: function() { var t = this; return t.state.on("change:text", function(e) { t.innerHtml(t.encode(e.value)), t.state.get("rendered") && t.updateLayoutRect() }), t._super() } }), or = ct.extend({ Defaults: { role: "toolbar", layout: "flow" }, init: function(e) { this._super(e), this.classes.add("toolbar") }, postRender: function() { return this.items().each(function(e) { e.classes.add("toolbar-item") }), this._super() } }), sr = or.extend({ Defaults: { role: "menubar", containerCls: "menubar", ariaRoot: !0, defaults: { type: "menubutton" } } }), ar = jt.extend({ init: function(e) { var t = this; t._renderOpen = !0, t._super(e), e = t.settings, t.classes.add("menubtn"), e.fixedWidth && t.classes.add("fixed-width"), t.aria("haspopup", !0), t.state.set("menu", e.menu || t.render()) }, showMenu: function(e) { var t, n = this; if (n.menu && n.menu.visible() && !1 !== e) return n.hideMenu(); n.menu || (t = n.state.get("menu") || [], n.classes.add("opened"), t.length ? t = { type: "menu", animate: !0, items: t } : (t.type = t.type || "menu", t.animate = !0), t.renderTo ? n.menu = t.parent(n).show().renderTo() : n.menu = b.create(t).parent(n).renderTo(), n.fire("createmenu"), n.menu.reflow(), n.menu.on("cancel", function(e) { e.control.parent() === n.menu && (e.stopPropagation(), n.focus(), n.hideMenu()) }), n.menu.on("select", function() { n.focus() }), n.menu.on("show hide", function(e) { e.control === n.menu && (n.activeMenu("show" === e.type), n.classes.toggle("opened", "show" === e.type)), n.aria("expanded", "show" === e.type) }).fire("show")), n.menu.show(), n.menu.layoutRect({ w: n.layoutRect().w }), n.menu.repaint(), n.menu.moveRel(n.getEl(), n.isRtl() ? ["br-tr", "tr-br"] : ["bl-tl", "tl-bl"]), n.fire("showmenu") }, hideMenu: function() { this.menu && (this.menu.items().each(function(e) { e.hideMenu && e.hideMenu() }), this.menu.hide()) }, activeMenu: function(e) { this.classes.toggle("active", e) }, renderHtml: function() { var e, t = this, n = t._id, i = t.classPrefix, r = t.settings.icon, o = t.state.get("text"), s = ""; return (e = t.settings.image) ? (r = "none", "string" != typeof e && (e = window.getSelection ? e[0] : e[1]), e = " style=\"background-image: url('" + e + "')\"") : e = "", o && (t.classes.add("btn-has-text"), s = '' + t.encode(o) + ""), r = t.settings.icon ? i + "ico " + i + "i-" + r : "", t.aria("role", t.parent() instanceof sr ? "menuitem" : "button"), '
    ' }, postRender: function() { var r = this; return r.on("click", function(e) { e.control === r && function(e, t) { for (; e;) { if (t === e) return !0; e = e.parentNode } return !1 }(e.target, r.getEl()) && (r.focus(), r.showMenu(!e.aria), e.aria && r.menu.items().filter(":visible")[0].focus()) }), r.on("mouseenter", function(e) { var t, n = e.control, i = r.parent(); n && i && n instanceof ar && n.parent() === i && (i.items().filter("MenuButton").each(function(e) { e.hideMenu && e !== n && (e.menu && e.menu.visible() && (t = !0), e.hideMenu()) }), t && (n.focus(), n.showMenu())) }), r._super() }, bindStates: function() { var e = this; return e.state.on("change:menu", function() { e.menu && e.menu.remove(), e.menu = null }), e._super() }, remove: function() { this._super(), this.menu && this.menu.remove() } }), lr = kt.extend({ Defaults: { defaultType: "menuitem", border: 1, layout: "stack", role: "application", bodyRole: "menu", ariaRoot: !0 }, init: function(e) { if (e.autohide = !0, e.constrainToViewport = !0, "function" == typeof e.items && (e.itemsFactory = e.items, e.items = []), e.itemDefaults) for (var t = e.items, n = t.length; n--;) t[n] = w.extend({}, e.itemDefaults, t[n]); this._super(e), this.classes.add("menu"), e.animate && 11 !== fe.ie && this.classes.add("animate") }, repaint: function() { return this.classes.toggle("menu-align", !0), this._super(), this.getEl().style.height = "", this.getEl("body").style.height = "", this }, cancel: function() { this.hideAll(), this.fire("select") }, load: function() { var t, n = this; function i() { n.throbber && (n.throbber.hide(), n.throbber = null) } n.settings.itemsFactory && (n.throbber || (n.throbber = new Mt(n.getEl("body"), !0), 0 === n.items().length ? (n.throbber.show(), n.fire("loading")) : n.throbber.show(100, function() { n.items().remove(), n.fire("loading") }), n.on("hide close", i)), n.requestTime = t = (new Date).getTime(), n.settings.itemsFactory(function(e) { 0 !== e.length ? n.requestTime === t && (n.getEl().style.width = "", n.getEl("body").style.width = "", i(), n.items().remove(), n.getEl("body").innerHTML = "", n.add(e), n.renderNew(), n.fire("loaded")) : n.hide() })) }, hideAll: function() { return this.find("menuitem").exec("hideMenu"), this._super() }, preRender: function() { var n = this; return n.items().each(function(e) { var t = e.settings; if (t.icon || t.image || t.selectable) return !(n._hasIcons = !0) }), n.settings.itemsFactory && n.on("postrender", function() { n.settings.itemsFactory && n.load() }), n.on("show hide", function(e) { e.control === n && ("show" === e.type ? u.setTimeout(function() { n.classes.add("in") }, 0) : n.classes.remove("in")) }), n._super() } }), ur = ar.extend({ init: function(i) { var t, r, o, n, s = this; s._super(i), i = s.settings, s._values = t = i.values, t && ("undefined" != typeof i.value && function e(t) { for (var n = 0; n < t.length; n++) { if (r = t[n].selected || i.value === t[n].value) return o = o || t[n].text, s.state.set("value", t[n].value), !0; if (t[n].menu && e(t[n].menu)) return !0 } }(t), !r && 0 < t.length && (o = t[0].text, s.state.set("value", t[0].value)), s.state.set("menu", t)), s.state.set("text", i.text || o), s.classes.add("listbox"), s.on("select", function(e) { var t = e.control; n && (e.lastControl = n), i.multiple ? t.active(!t.active()) : s.value(e.control.value()), n = t }) }, value: function(t) { return 0 === arguments.length ? this.state.get("value") : (void 0 === t || (this.settings.values ? 0 < w.grep(this.settings.values, function(e) { return e.value === t }).length ? this.state.set("value", t) : null === t && this.state.set("value", null) : this.state.set("value", t)), this) }, bindStates: function() { var i = this; return i.on("show", function(e) { var t, n; t = e.control, n = i.value(), t instanceof lr && t.items().each(function(e) { e.hasMenus() || e.active(e.value() === n) }) }), i.state.on("change:value", function(t) { var n = function e(t, n) { var i; if (t) for (var r = 0; r < t.length; r++) { if (t[r].value === n) return t[r]; if (t[r].menu && (i = e(t[r].menu, n))) return i } }(i.state.get("menu"), t.value); n ? i.text(n.text) : i.text(i.settings.text) }), i._super() } }), cr = Wt.extend({ Defaults: { border: 0, role: "menuitem" }, init: function(e) { var t, n = this; n._super(e), e = n.settings, n.classes.add("menu-item"), e.menu && n.classes.add("menu-item-expand"), e.preview && n.classes.add("menu-item-preview"), "-" !== (t = n.state.get("text")) && "|" !== t || (n.classes.add("menu-item-sep"), n.aria("role", "separator"), n.state.set("text", "-")), e.selectable && (n.aria("role", "menuitemcheckbox"), n.classes.add("menu-item-checkbox"), e.icon = "selected"), e.preview || e.selectable || n.classes.add("menu-item-normal"), n.on("mousedown", function(e) { e.preventDefault() }), e.menu && !e.ariaHideMenu && n.aria("haspopup", !0) }, hasMenus: function() { return !!this.settings.menu }, showMenu: function() { var t, n = this, e = n.settings, i = n.parent(); if (i.items().each(function(e) { e !== n && e.hideMenu() }), e.menu) { (t = n.menu) ? t.show() : ((t = e.menu).length ? t = { type: "menu", items: t } : t.type = t.type || "menu", i.settings.itemDefaults && (t.itemDefaults = i.settings.itemDefaults), (t = n.menu = b.create(t).parent(n).renderTo()).reflow(), t.on("cancel", function(e) { e.stopPropagation(), n.focus(), t.hide() }), t.on("show hide", function(e) { e.control.items && e.control.items().each(function(e) { e.active(e.settings.selected) }) }).fire("show"), t.on("hide", function(e) { e.control === t && n.classes.remove("selected") }), t.submenu = !0), t._parentMenu = i, t.classes.add("menu-sub"); var r = t.testMoveRel(n.getEl(), n.isRtl() ? ["tl-tr", "bl-br", "tr-tl", "br-bl"] : ["tr-tl", "br-bl", "tl-tr", "bl-br"]); t.moveRel(n.getEl(), r), r = "menu-sub-" + (t.rel = r), t.classes.remove(t._lastRel).add(r), t._lastRel = r, n.classes.add("selected"), n.aria("expanded", !0) } }, hideMenu: function() { var e = this; return e.menu && (e.menu.items().each(function(e) { e.hideMenu && e.hideMenu() }), e.menu.hide(), e.aria("expanded", !1)), e }, renderHtml: function() { var e, t = this, n = t._id, i = t.settings, r = t.classPrefix, o = t.state.get("text"), s = t.settings.icon, a = "", l = i.shortcut, u = t.encode(i.url); function c(e) { return e.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") } function d(e) { var t = i.match || ""; return t ? e.replace(new RegExp(c(t), "gi"), function(e) { return "!mce~match[" + e + "]mce~match!" }) : e } function f(e) { return e.replace(new RegExp(c("!mce~match["), "g"), "").replace(new RegExp(c("]mce~match!"), "g"), "") } return s && t.parent().classes.add("menu-has-icons"), i.image && (a = " style=\"background-image: url('" + i.image + "')\""), l && (l = function(e) { var t, n, i = {}; for (i = fe.mac ? { alt: "⌥", ctrl: "⌘", shift: "⇧", meta: "⌘" } : { meta: "Ctrl" }, e = e.split("+"), t = 0; t < e.length; t++)(n = i[e[t].toLowerCase()]) && (e[t] = n); return e.join("+") }(l)), s = r + "ico " + r + "i-" + (t.settings.icon || "none"), e = "-" !== o ? '\xa0" : "", o = f(t.encode(d(o))), u = f(t.encode(d(u))), '
    ' + e + ("-" !== o ? '' + o + "" : "") + (l ? '
    ' + l + "
    " : "") + (i.menu ? '
    ' : "") + (u ? '" : "") + "
    " }, postRender: function() { var t = this, n = t.settings, e = n.textStyle; if ("function" == typeof e && (e = e.call(this)), e) { var i = t.getEl("text"); i && (i.setAttribute("style", e), t._textStyle = e) } return t.on("mouseenter click", function(e) { e.control === t && (n.menu || "click" !== e.type ? (t.showMenu(), e.aria && t.menu.focus(!0)) : (t.fire("select"), u.requestAnimationFrame(function() { t.parent().hideAll() }))) }), t._super(), t }, hover: function() { return this.parent().items().each(function(e) { e.classes.remove("selected") }), this.classes.toggle("selected", !0), this }, active: function(e) { return function(e, t) { var n = e._textStyle; if (n) { var i = e.getEl("text"); i.setAttribute("style", n), t && (i.style.color = "", i.style.backgroundColor = "") } }(this, e), void 0 !== e && this.aria("checked", e), this._super(e) }, remove: function() { this._super(), this.menu && this.menu.remove() } }), dr = Kt.extend({ Defaults: { classes: "radio", role: "radio" } }), fr = Wt.extend({ renderHtml: function() { var e = this, t = e.classPrefix; return e.classes.add("resizehandle"), "both" === e.settings.direction && e.classes.add("resizehandle-both"), e.canFocus = !1, '
    ' }, postRender: function() { var t = this; t._super(), t.resizeDragHelper = new ft(this._id, { start: function() { t.fire("ResizeStart") }, drag: function(e) { "both" !== t.settings.direction && (e.deltaX = 0), t.fire("Resize", e) }, stop: function() { t.fire("ResizeEnd") } }) }, remove: function() { return this.resizeDragHelper && this.resizeDragHelper.destroy(), this._super() } }); function hr(e) { var t = ""; if (e) for (var n = 0; n < e.length; n++) t += '"; return t } var mr = Wt.extend({ Defaults: { classes: "selectbox", role: "selectbox", options: [] }, init: function(e) { var n = this; n._super(e), n.settings.size && (n.size = n.settings.size), n.settings.options && (n._options = n.settings.options), n.on("keydown", function(e) { var t; 13 === e.keyCode && (e.preventDefault(), n.parents().reverse().each(function(e) { if (e.toJSON) return t = e, !1 }), n.fire("submit", { data: t.toJSON() })) }) }, options: function(e) { return arguments.length ? (this.state.set("options", e), this) : this.state.get("options") }, renderHtml: function() { var e, t = this, n = ""; return e = hr(t._options), t.size && (n = ' size = "' + t.size + '"'), '" }, bindStates: function() { var t = this; return t.state.on("change:options", function(e) { t.getEl().innerHTML = hr(e.value) }), t._super() } }); function gr(e, t, n) { return e < t && (e = t), n < e && (e = n), e } function pr(e, t, n) { e.setAttribute("aria-" + t, n) } function vr(e, t) { var n, i, r, o, s; "v" === e.settings.orientation ? (r = "top", i = "height", n = "h") : (r = "left", i = "width", n = "w"), s = e.getEl("handle"), o = ((e.layoutRect()[n] || 100) - Ce.getSize(s)[i]) * ((t - e._minValue) / (e._maxValue - e._minValue)) + "px", s.style[r] = o, s.style.height = e.layoutRect().h + "px", pr(s, "valuenow", t), pr(s, "valuetext", "" + e.settings.previewFilter(t)), pr(s, "valuemin", e._minValue), pr(s, "valuemax", e._maxValue) } var br = Wt.extend({ init: function(e) { var t = this; e.previewFilter || (e.previewFilter = function(e) { return Math.round(100 * e) / 100 }), t._super(e), t.classes.add("slider"), "v" === e.orientation && t.classes.add("vertical"), t._minValue = X(e.minValue) ? e.minValue : 0, t._maxValue = X(e.maxValue) ? e.maxValue : 100, t._initValue = t.state.get("value") }, renderHtml: function() { var e = this._id, t = this.classPrefix; return '
    ' }, reset: function() { this.value(this._initValue).repaint() }, postRender: function() { var e, t, n, i, r, o, s, a, l, u, c, d, f, h, m = this; e = m._minValue, t = m._maxValue, "v" === m.settings.orientation ? (n = "screenY", i = "top", r = "height", o = "h") : (n = "screenX", i = "left", r = "width", o = "w"), m._super(), function(o, s) { function t(e) { var t, n, i, r; t = gr(t = (((t = m.value()) + (r = n = o)) / ((i = s) - r) + .05 * e) * (i - n) - n, o, s), m.value(t), m.fire("dragstart", { value: t }), m.fire("drag", { value: t }), m.fire("dragend", { value: t }) } m.on("keydown", function(e) { switch (e.keyCode) { case 37: case 38: t(-1); break; case 39: case 40: t(1) } }) }(e, t), s = e, a = t, l = m.getEl("handle"), m._dragHelper = new ft(m._id, { handle: m._id + "-handle", start: function(e) { u = e[n], c = parseInt(m.getEl("handle").style[i], 10), d = (m.layoutRect()[o] || 100) - Ce.getSize(l)[r], m.fire("dragstart", { value: h }) }, drag: function(e) { var t = e[n] - u; f = gr(c + t, 0, d), l.style[i] = f + "px", h = s + f / d * (a - s), m.value(h), m.tooltip().text("" + m.settings.previewFilter(h)).show().moveRel(l, "bc tc"), m.fire("drag", { value: h }) }, stop: function() { m.tooltip().hide(), m.fire("dragend", { value: h }) } }) }, repaint: function() { this._super(), vr(this, this.value()) }, bindStates: function() { var t = this; return t.state.on("change:value", function(e) { vr(t, e.value) }), t._super() } }), yr = Wt.extend({ renderHtml: function() { return this.classes.add("spacer"), this.canFocus = !1, '
    ' } }), xr = ar.extend({ Defaults: { classes: "widget btn splitbtn", role: "button" }, repaint: function() { var e, t, n = this.getEl(), i = this.layoutRect(); return this._super(), e = n.firstChild, t = n.lastChild, we(e).css({ width: i.w - Ce.getSize(t).width, height: i.h - 2 }), we(t).css({ height: i.h - 2 }), this }, activeMenu: function(e) { we(this.getEl().lastChild).toggleClass(this.classPrefix + "active", e) }, renderHtml: function() { var e, t, n = this, i = n._id, r = n.classPrefix, o = n.state.get("icon"), s = n.state.get("text"), a = n.settings, l = ""; return (e = a.image) ? (o = "none", "string" != typeof e && (e = window.getSelection ? e[0] : e[1]), e = " style=\"background-image: url('" + e + "')\"") : e = "", o = a.icon ? r + "ico " + r + "i-" + o : "", s && (n.classes.add("btn-has-text"), l = '' + n.encode(s) + ""), t = "boolean" == typeof a.active ? ' aria-pressed="' + a.active + '"' : "", '
    ' }, postRender: function() { var n = this.settings.onclick; return this.on("click", function(e) { var t = e.target; if (e.control === this) for (; t;) { if (e.aria && "down" !== e.aria.key || "BUTTON" === t.nodeName && -1 === t.className.indexOf("open")) return e.stopImmediatePropagation(), void(n && n.call(this, e)); t = t.parentNode } }), delete this.settings.onclick, this._super() } }), wr = Ei.extend({ Defaults: { containerClass: "stack-layout", controlClass: "stack-layout-item", endClass: "break" }, isNative: function() { return !0 } }), _r = bt.extend({ Defaults: { layout: "absolute", defaults: { type: "panel" } }, activateTab: function(n) { var e; this.activeTabId && (e = this.getEl(this.activeTabId), we(e).removeClass(this.classPrefix + "active"), e.setAttribute("aria-selected", "false")), this.activeTabId = "t" + n, (e = this.getEl("t" + n)).setAttribute("aria-selected", "true"), we(e).addClass(this.classPrefix + "active"), this.items()[n].show().fire("showtab"), this.reflow(), this.items().each(function(e, t) { n !== t && e.hide() }) }, renderHtml: function() { var i = this, e = i._layout, r = "", o = i.classPrefix; return i.preRender(), e.preRender(i), i.items().each(function(e, t) { var n = i._id + "-t" + t; e.aria("role", "tabpanel"), e.aria("labelledby", n), r += '" }), '
    ' + r + '
    ' + e.renderHtml(i) + "
    " }, postRender: function() { var i = this; i._super(), i.settings.activeTab = i.settings.activeTab || 0, i.activateTab(i.settings.activeTab), this.on("click", function(e) { var t = e.target.parentNode; if (t && t.id === i._id + "-head") for (var n = t.childNodes.length; n--;) t.childNodes[n] === e.target && i.activateTab(n) }) }, initLayoutRect: function() { var e, t, n, i = this; t = (t = Ce.getSize(i.getEl("head")).width) < 0 ? 0 : t, n = 0, i.items().each(function(e) { t = Math.max(t, e.layoutRect().minW), n = Math.max(n, e.layoutRect().minH) }), i.items().each(function(e) { e.settings.x = 0, e.settings.y = 0, e.settings.w = t, e.settings.h = n, e.layoutRect({ x: 0, y: 0, w: t, h: n }) }); var r = Ce.getSize(i.getEl("head")).height; return i.settings.minWidth = t, i.settings.minHeight = n + r, (e = i._super()).deltaH += r, e.innerH = e.h - e.deltaH, e } }), Cr = Wt.extend({ init: function(e) { var n = this; n._super(e), n.classes.add("textbox"), e.multiline ? n.classes.add("multiline") : (n.on("keydown", function(e) { var t; 13 === e.keyCode && (e.preventDefault(), n.parents().reverse().each(function(e) { if (e.toJSON) return t = e, !1 }), n.fire("submit", { data: t.toJSON() })) }), n.on("keyup", function(e) { n.state.set("value", e.target.value) })) }, repaint: function() { var e, t, n, i, r, o = this, s = 0; e = o.getEl().style, t = o._layoutRect, r = o._lastRepaintRect || {}; var a = document; return !o.settings.multiline && a.all && (!a.documentMode || a.documentMode <= 8) && (e.lineHeight = t.h - s + "px"), i = (n = o.borderBox).left + n.right + 8, s = n.top + n.bottom + (o.settings.multiline ? 8 : 0), t.x !== r.x && (e.left = t.x + "px", r.x = t.x), t.y !== r.y && (e.top = t.y + "px", r.y = t.y), t.w !== r.w && (e.width = t.w - i + "px", r.w = t.w), t.h !== r.h && (e.height = t.h - s + "px", r.h = t.h), o._lastRepaintRect = r, o.fire("repaint", {}, !1), o }, renderHtml: function() { var t, e, n = this, i = n.settings; return t = { id: n._id, hidefocus: "1" }, w.each(["rows", "spellcheck", "maxLength", "size", "readonly", "min", "max", "step", "list", "pattern", "placeholder", "required", "multiple"], function(e) { t[e] = i[e] }), n.disabled() && (t.disabled = "disabled"), i.subtype && (t.type = i.subtype), (e = Ce.create(i.multiline ? "textarea" : "input", t)).value = n.state.get("value"), e.className = n.classes.toString(), e.outerHTML }, value: function(e) { return arguments.length ? (this.state.set("value", e), this) : (this.state.get("rendered") && this.state.set("value", this.getEl().value), this.state.get("value")) }, postRender: function() { var t = this; t.getEl().value = t.state.get("value"), t._super(), t.$el.on("change", function(e) { t.state.set("value", e.target.value), t.fire("change", e) }) }, bindStates: function() { var t = this; return t.state.on("change:value", function(e) { t.getEl().value !== e.value && (t.getEl().value = e.value) }), t.state.on("change:disabled", function(e) { t.getEl().disabled = e.value }), t._super() }, remove: function() { this.$el.off(), this._super() } }), Rr = function() { return { Selector: Ue, Collection: $e, ReflowQueue: Qe, Control: st, Factory: b, KeyboardNavigation: lt, Container: ct, DragHelper: ft, Scrollable: vt, Panel: bt, Movable: Se, Resizable: yt, FloatPanel: kt, Window: Vt, MessageBox: Yt, Tooltip: Dt, Widget: Wt, Progress: Ot, Notification: Bt, Layout: Xt, AbsoluteLayout: qt, Button: jt, ButtonGroup: Gt, Checkbox: Kt, ComboBox: Qt, ColorBox: en, PanelButton: tn, ColorButton: rn, ColorPicker: sn, Path: ln, ElementPath: un, FormItem: cn, Form: dn, FieldSet: fn, FilePicker: _i, FitLayout: Ci, FlexLayout: Ri, FlowLayout: Ei, FormatControls: er, GridLayout: tr, Iframe: nr, InfoBox: ir, Label: rr, Toolbar: or, MenuBar: sr, MenuButton: ar, MenuItem: cr, Throbber: Mt, Menu: lr, ListBox: ur, Radio: dr, ResizeHandle: fr, SelectBox: mr, Slider: br, Spacer: yr, SplitButton: xr, StackLayout: wr, TabPanel: _r, TextBox: Cr, DropZone: an, BrowseButton: Jt } }, Er = function(n) { n.ui ? w.each(Rr(), function(e, t) { n.ui[t] = e }) : n.ui = Rr() }; w.each(Rr(), function(e, t) { b.add(t, e) }), Er(window.tinymce ? window.tinymce : {}), o.add("modern", function(e) { return er.setup(e), $t(e) }) }(); ! function() { "use strict"; var t = tinymce.util.Tools.resolve("tinymce.PluginManager"), a = tinymce.util.Tools.resolve("tinymce.util.Tools"), s = function(t, e, n) { var r = "UL" === e ? "InsertUnorderedList" : "InsertOrderedList"; t.execCommand(r, !1, !1 === n ? null : { "list-style-type": n }) }, o = function(n) { n.addCommand("ApplyUnorderedListStyle", function(t, e) { s(n, "UL", e["list-style-type"]) }), n.addCommand("ApplyOrderedListStyle", function(t, e) { s(n, "OL", e["list-style-type"]) }) }, e = function(t) { var e = t.getParam("advlist_number_styles", "default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman"); return e ? e.split(/[ ,]/) : [] }, n = function(t) { var e = t.getParam("advlist_bullet_styles", "default,circle,disc,square"); return e ? e.split(/[ ,]/) : [] }, u = function(t) { return t && /^(TH|TD)$/.test(t.nodeName) }, c = function(r) { return function(t) { return t && /^(OL|UL|DL)$/.test(t.nodeName) && (n = t, (e = r).$.contains(e.getBody(), n)); var e, n } }, d = function(t) { var e = t.dom.getParent(t.selection.getNode(), "ol,ul"); return t.dom.getStyle(e, "listStyleType") || "" }, p = function(t) { return a.map(t, function(t) { return { text: t.replace(/\-/g, " ").replace(/\b\w/g, function(t) { return t.toUpperCase() }), data: "default" === t ? "" : t } }) }, f = function(i, l) { return function(t) { var o = t.control; i.on("NodeChange", function(t) { var e = function(t, e) { for (var n = 0; n < t.length; n++) if (e(t[n])) return n; return -1 }(t.parents, u), n = -1 !== e ? t.parents.slice(0, e) : t.parents, r = a.grep(n, c(i)); o.active(0 < r.length && r[0].nodeName === l) }) } }, m = function(e, t, n, r, o, i) { var l; e.addButton(t, { active: !1, type: "splitbutton", tooltip: n, menu: p(i), onPostRender: f(e, o), onshow: (l = e, function(t) { var e = d(l); t.control.items().each(function(t) { t.active(t.settings.data === e) }) }), onselect: function(t) { s(e, o, t.control.settings.data) }, onclick: function() { e.execCommand(r) } }) }, r = function(t, e, n, r, o, i) { var l, a, s, u, c; 0 < i.length ? m(t, e, n, r, o, i) : (a = e, s = n, u = r, c = o, (l = t).addButton(a, { active: !1, type: "button", tooltip: s, onPostRender: f(l, c), onclick: function() { l.execCommand(u) } })) }, i = function(t) { r(t, "numlist", "Numbered list", "InsertOrderedList", "OL", e(t)), r(t, "bullist", "Bullet list", "InsertUnorderedList", "UL", n(t)) }; t.add("advlist", function(t) { var e, n, r; n = "lists", r = (e = t).settings.plugins ? e.settings.plugins : "", -1 !== a.inArray(r.split(/[ ,]/), n) && (i(t), o(t)) }) }(); ! function() { "use strict"; var t = tinymce.util.Tools.resolve("tinymce.PluginManager"), a = function(t) { return /^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t) }, e = function(t) { var e = t.selection.getNode(); return "A" === e.tagName && "" === t.dom.getAttrib(e, "href") ? e.id || e.name : "" }, i = function(t, e) { var n = t.selection.getNode(); "A" === n.tagName && "" === t.dom.getAttrib(n, "href") ? (n.removeAttribute("name"), n.id = e, t.undoManager.add()) : (t.focus(), t.selection.collapse(!0), t.execCommand("mceInsertContent", !1, t.dom.createHTML("a", { id: e }))) }, n = function(r) { var t = e(r); r.windowManager.open({ title: "Anchor", body: { type: "textbox", name: "id", size: 40, label: "Id", value: t }, onsubmit: function(t) { var e, n, o = t.data.id; e = r, (a(n = o) ? (i(e, n), 0) : (e.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."), 1)) && t.preventDefault() } }) }, o = function(t) { t.addCommand("mceAnchor", function() { n(t) }) }, r = function(o) { return function(t) { for (var e = 0; e < t.length; e++)(n = t[e]).attr("href") || !n.attr("id") && !n.attr("name") || n.firstChild || t[e].attr("contenteditable", o); var n } }, c = function(t) { t.on("PreInit", function() { t.parser.addNodeFilter("a", r("false")), t.serializer.addNodeFilter("a", r(null)) }) }, d = function(t) { t.addButton("anchor", { icon: "anchor", tooltip: "Anchor", cmd: "mceAnchor", stateSelector: "a:not([href])" }), t.addMenuItem("anchor", { icon: "anchor", text: "Anchor", context: "insert", cmd: "mceAnchor" }) }; t.add("anchor", function(t) { c(t), o(t), d(t) }) }(); ! function() { "use strict"; var e = tinymce.util.Tools.resolve("tinymce.PluginManager"), i = tinymce.util.Tools.resolve("tinymce.Env"), m = function(e) { return e.getParam("autolink_pattern", /^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i) }, y = function(e) { return e.getParam("default_link_target", "") }, o = function(e, t) { if (t < 0 && (t = 0), 3 === e.nodeType) { var n = e.data.length; n < t && (t = n) } return t }, k = function(e, t, n) { 1 !== t.nodeType || t.hasChildNodes() ? e.setStart(t, o(t, n)) : e.setStartBefore(t) }, p = function(e, t, n) { 1 !== t.nodeType || t.hasChildNodes() ? e.setEnd(t, o(t, n)) : e.setEndAfter(t) }, r = function(e, t, n) { var i, o, r, a, f, s, d, l, c, u, g = m(e), h = y(e); if ("A" !== e.selection.getNode().tagName) { if ((i = e.selection.getRng(!0).cloneRange()).startOffset < 5) { if (!(l = i.endContainer.previousSibling)) { if (!i.endContainer.firstChild || !i.endContainer.firstChild.nextSibling) return; l = i.endContainer.firstChild.nextSibling } if (c = l.length, k(i, l, c), p(i, l, c), i.endOffset < 5) return; o = i.endOffset, a = l } else { if (3 !== (a = i.endContainer).nodeType && a.firstChild) { for (; 3 !== a.nodeType && a.firstChild;) a = a.firstChild; 3 === a.nodeType && (k(i, a, 0), p(i, a, a.nodeValue.length)) } o = 1 === i.endOffset ? 2 : i.endOffset - 1 - t } for (r = o; k(i, a, 2 <= o ? o - 2 : 0), p(i, a, 1 <= o ? o - 1 : 0), o -= 1, " " !== (u = i.toString()) && "" !== u && 160 !== u.charCodeAt(0) && 0 <= o - 2 && u !== n;); var C; (C = i.toString()) === n || " " === C || 160 === C.charCodeAt(0) ? (k(i, a, o), p(i, a, r), o += 1) : (0 === i.startOffset ? k(i, a, 0) : k(i, a, o), p(i, a, r)), "." === (s = i.toString()).charAt(s.length - 1) && p(i, a, r - 1), (d = (s = i.toString().trim()).match(g)) && ("www." === d[1] ? d[1] = "http://www." : /@$/.test(d[1]) && !/^mailto:/.test(d[1]) && (d[1] = "mailto:" + d[1]), f = e.selection.getBookmark(), e.selection.setRng(i), e.execCommand("createlink", !1, d[1] + d[2]), h && e.dom.setAttrib(e.selection.getNode(), "target", h), e.selection.moveToBookmark(f), e.nodeChanged()) } }, t = function(t) { var n; t.on("keydown", function(e) { 13 !== e.keyCode || r(t, -1, "") }), i.ie ? t.on("focus", function() { if (!n) { n = !0; try { t.execCommand("AutoUrlDetect", !1, !0) } catch (e) {} } }) : (t.on("keypress", function(e) { 41 !== e.keyCode || r(t, -1, "(") }), t.on("keyup", function(e) { 32 !== e.keyCode || r(t, 0, "") })) }; e.add("autolink", function(e) { t(e) }) }(); ! function() { "use strict"; var i = function(t) { var e = t, n = function() { return e }; return { get: n, set: function(t) { e = t }, clone: function() { return i(n()) } } }, t = tinymce.util.Tools.resolve("tinymce.PluginManager"), y = tinymce.util.Tools.resolve("tinymce.Env"), r = tinymce.util.Tools.resolve("tinymce.util.Delay"), h = function(t) { return parseInt(t.getParam("autoresize_min_height", t.getElement().offsetHeight), 10) }, v = function(t) { return parseInt(t.getParam("autoresize_max_height", 0), 10) }, o = function(t) { return t.getParam("autoresize_overflow_padding", 1) }, a = function(t) { return t.getParam("autoresize_bottom_margin", 50) }, n = function(t) { return t.getParam("autoresize_on_init", !0) }, u = function(t, e, n, i, o) { r.setEditorTimeout(t, function() { _(t, e), n-- ? u(t, e, n, i, o) : o && o() }, i) }, S = function(t, e) { var n = t.getBody(); n && (n.style.overflowY = e ? "" : "hidden", e || (n.scrollTop = 0)) }, _ = function(t, e) { var n, i, o, r, a, u, s, l, g, c, f, d = t.dom; if (i = t.getDoc()) if ((m = t).plugins.fullscreen && m.plugins.fullscreen.isFullscreen()) S(t, !0); else { var m; o = i.body, r = h(t), u = d.getStyle(o, "margin-top", !0), s = d.getStyle(o, "margin-bottom", !0), l = d.getStyle(o, "padding-top", !0), g = d.getStyle(o, "padding-bottom", !0), c = d.getStyle(o, "border-top-width", !0), f = d.getStyle(o, "border-bottom-width", !0), a = o.offsetHeight + parseInt(u, 10) + parseInt(s, 10) + parseInt(l, 10) + parseInt(g, 10) + parseInt(c, 10) + parseInt(f, 10), (isNaN(a) || a <= 0) && (a = y.ie ? o.scrollHeight : y.webkit && 0 === o.clientHeight ? 0 : o.offsetHeight), a > h(t) && (r = a); var p = v(t); p && p < a ? (r = p, S(t, !0)) : S(t, !1), r !== e.get() && (n = r - e.get(), d.setStyle(t.iframeElement, "height", r + "px"), e.set(r), y.webkit && n < 0 && _(t, e)) } }, s = { setup: function(i, e) { i.on("init", function() { var t, e, n = i.dom; t = o(i), e = a(i), !1 !== t && n.setStyles(i.getBody(), { paddingLeft: t, paddingRight: t }), !1 !== e && n.setStyles(i.getBody(), { paddingBottom: e }) }), i.on("nodechange setcontent keyup FullscreenStateChanged", function(t) { _(i, e) }), n(i) && i.on("init", function() { u(i, e, 20, 100, function() { u(i, e, 5, 1e3) }) }) }, resize: _ }, l = function(t, e) { t.addCommand("mceAutoResize", function() { s.resize(t, e) }) }; t.add("autoresize", function(t) { if (!t.inline) { var e = i(0); l(t, e), s.setup(t, e) } }) }(); ! function() { "use strict"; var n = function(t) { var e = t, r = function() { return e }; return { get: r, set: function(t) { e = t }, clone: function() { return n(r()) } } }, t = tinymce.util.Tools.resolve("tinymce.PluginManager"), a = tinymce.util.Tools.resolve("tinymce.util.LocalStorage"), o = tinymce.util.Tools.resolve("tinymce.util.Tools"), r = function(t) { return t.fire("RestoreDraft") }, i = function(t) { return t.fire("StoreDraft") }, s = function(t) { return t.fire("RemoveDraft") }, e = function(t, e) { return ((t = /^(\d+)([ms]?)$/.exec("" + (t || e)))[2] ? { s: 1e3, m: 6e4 }[t[2]] : 1) * parseInt(t, 10) }, u = function(t) { return t.getParam("autosave_ask_before_unload", !0) }, f = function(t) { var e = t.getParam("autosave_prefix", "tinymce-autosave-{path}{query}{hash}-{id}-"); return e = (e = (e = (e = e.replace(/\{path\}/g, document.location.pathname)).replace(/\{query\}/g, document.location.search)).replace(/\{hash\}/g, document.location.hash)).replace(/\{id\}/g, t.id) }, c = function(t) { return e(t.settings.autosave_interval, "30s") }, l = function(t) { return e(t.settings.autosave_retention, "20m") }, m = function(t, e) { var r = t.settings.forced_root_block; return "" === (e = o.trim(void 0 === e ? t.getBody().innerHTML : e)) || new RegExp("^<" + r + "[^>]*>((\xa0| |[ \t]|]*>)+?|)|
    $", "i").test(e) }, v = function(t) { var e = parseInt(a.getItem(f(t) + "time"), 10) || 0; return !((new Date).getTime() - e > l(t) && (d(t, !1), 1)) }, d = function(t, e) { var r = f(t); a.removeItem(r + "draft"), a.removeItem(r + "time"), !1 !== e && s(t) }, D = function(t) { var e = f(t); !m(t) && t.isDirty() && (a.setItem(e + "draft", t.getContent({ format: "raw", no_events: !0 })), a.setItem(e + "time", (new Date).getTime().toString()), i(t)) }, g = function(t) { var e = f(t); v(t) && (t.setContent(a.getItem(e + "draft"), { format: "raw" }), r(t)) }, y = { isEmpty: m, hasDraft: v, removeDraft: d, storeDraft: D, restoreDraft: g, startStoreDraft: function(t, e) { var r = c(t); e.get() || (setInterval(function() { t.removed || D(t) }, r), e.set(!0)) }, restoreLastDraft: function(t) { t.undoManager.transact(function() { g(t), d(t) }), t.focus() } }, p = function(e, r) { return function() { var t = Array.prototype.slice.call(arguments); return e.apply(null, [r].concat(t)) } }, h = function(t) { return { hasDraft: p(y.hasDraft, t), storeDraft: p(y.storeDraft, t), restoreDraft: p(y.restoreDraft, t), removeDraft: p(y.removeDraft, t), isEmpty: p(y.isEmpty, t) } }, _ = tinymce.util.Tools.resolve("tinymce.EditorManager"); _._beforeUnloadHandler = function() { var e; return o.each(_.get(), function(t) { t.plugins.autosave && t.plugins.autosave.storeDraft(), !e && t.isDirty() && u(t) && (e = t.translate("You have unsaved changes are you sure you want to navigate away?")) }), e }; var b = function(t) { window.onbeforeunload = _._beforeUnloadHandler }, I = function(r, n) { return function(t) { var e = t.control; e.disabled(!y.hasDraft(r)), r.on("StoreDraft RestoreDraft RemoveDraft", function() { e.disabled(!y.hasDraft(r)) }), y.startStoreDraft(r, n) } }, w = function(t, e) { t.addButton("restoredraft", { title: "Restore last draft", onclick: function() { y.restoreLastDraft(t) }, onPostRender: I(t, e) }), t.addMenuItem("restoredraft", { text: "Restore last draft", onclick: function() { y.restoreLastDraft(t) }, onPostRender: I(t, e), context: "file" }) }; t.add("autosave", function(t) { var e = n(!1); return b(t), w(t, e), h(t) }) }(); ! function() { "use strict"; var o = tinymce.util.Tools.resolve("tinymce.PluginManager"), t = tinymce.util.Tools.resolve("tinymce.util.Tools"), e = function(e) { e = t.trim(e); var o = function(o, t) { e = e.replace(o, t) }; return o(/(.*?)<\/a>/gi, "[url=$1]$2[/url]"), o(/(.*?)<\/font>/gi, "[code][color=$1]$2[/color][/code]"), o(/(.*?)<\/font>/gi, "[quote][color=$1]$2[/color][/quote]"), o(/(.*?)<\/font>/gi, "[code][color=$1]$2[/color][/code]"), o(/(.*?)<\/font>/gi, "[quote][color=$1]$2[/color][/quote]"), o(/(.*?)<\/span>/gi, "[color=$1]$2[/color]"), o(/(.*?)<\/font>/gi, "[color=$1]$2[/color]"), o(/(.*?)<\/span>/gi, "[size=$1]$2[/size]"), o(/(.*?)<\/font>/gi, "$1"), o(//gi, "[img]$1[/img]"), o(/(.*?)<\/span>/gi, "[code]$1[/code]"), o(/(.*?)<\/span>/gi, "[quote]$1[/quote]"), o(/(.*?)<\/strong>/gi, "[code][b]$1[/b][/code]"), o(/(.*?)<\/strong>/gi, "[quote][b]$1[/b][/quote]"), o(/(.*?)<\/em>/gi, "[code][i]$1[/i][/code]"), o(/(.*?)<\/em>/gi, "[quote][i]$1[/i][/quote]"), o(/(.*?)<\/u>/gi, "[code][u]$1[/u][/code]"), o(/(.*?)<\/u>/gi, "[quote][u]$1[/u][/quote]"), o(/<\/(strong|b)>/gi, "[/b]"), o(/<(strong|b)>/gi, "[b]"), o(/<\/(em|i)>/gi, "[/i]"), o(/<(em|i)>/gi, "[i]"), o(/<\/u>/gi, "[/u]"), o(/(.*?)<\/span>/gi, "[u]$1[/u]"), o(//gi, "[u]"), o(/]*>/gi, "[quote]"), o(/<\/blockquote>/gi, "[/quote]"), o(/
    /gi, "\n"), o(//gi, "\n"), o(/
    /gi, "\n"), o(/

    /gi, ""), o(/<\/p>/gi, "\n"), o(/ |\u00a0/gi, " "), o(/"/gi, '"'), o(/</gi, "<"), o(/>/gi, ">"), o(/&/gi, "&"), e }, i = function(e) { e = t.trim(e); var o = function(o, t) { e = e.replace(o, t) }; return o(/\n/gi, "
    "), o(/\[b\]/gi, ""), o(/\[\/b\]/gi, ""), o(/\[i\]/gi, ""), o(/\[\/i\]/gi, ""), o(/\[u\]/gi, ""), o(/\[\/u\]/gi, ""), o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi, '$2'), o(/\[url\](.*?)\[\/url\]/gi, '$1'), o(/\[img\](.*?)\[\/img\]/gi, ''), o(/\[color=(.*?)\](.*?)\[\/color\]/gi, '$2'), o(/\[code\](.*?)\[\/code\]/gi, '$1 '), o(/\[quote.*?\](.*?)\[\/quote\]/gi, '$1 '), e }; o.add("bbcode", function() { return { init: function(o) { o.on("beforeSetContent", function(o) { o.content = i(o.content) }), o.on("postProcess", function(o) { o.set && (o.content = i(o.content)), o.get && (o.content = e(o.content)) }) } } }) }(); ! function() { "use strict"; var e = tinymce.util.Tools.resolve("tinymce.PluginManager"), i = function(e, t) { return e.fire("insertCustomChar", { chr: t }) }, l = function(e, t) { var a = i(e, t).chr; e.execCommand("mceInsertContent", !1, a) }, a = tinymce.util.Tools.resolve("tinymce.util.Tools"), r = function(e) { return e.settings.charmap }, n = function(e) { return e.settings.charmap_append }, o = a.isArray, c = function(e) { return o(e) ? [].concat((t = e, a.grep(t, function(e) { return o(e) && 2 === e.length }))) : "function" == typeof e ? e() : []; var t }, s = function(e) { return function(e, t) { var a = r(e); a && (t = c(a)); var i = n(e); return i ? [].concat(t).concat(c(i)) : t }(e, [ ["160", "no-break space"], ["173", "soft hyphen"], ["34", "quotation mark"], ["162", "cent sign"], ["8364", "euro sign"], ["163", "pound sign"], ["165", "yen sign"], ["169", "copyright sign"], ["174", "registered sign"], ["8482", "trade mark sign"], ["8240", "per mille sign"], ["181", "micro sign"], ["183", "middle dot"], ["8226", "bullet"], ["8230", "three dot leader"], ["8242", "minutes / feet"], ["8243", "seconds / inches"], ["167", "section sign"], ["182", "paragraph sign"], ["223", "sharp s / ess-zed"], ["8249", "single left-pointing angle quotation mark"], ["8250", "single right-pointing angle quotation mark"], ["171", "left pointing guillemet"], ["187", "right pointing guillemet"], ["8216", "left single quotation mark"], ["8217", "right single quotation mark"], ["8220", "left double quotation mark"], ["8221", "right double quotation mark"], ["8218", "single low-9 quotation mark"], ["8222", "double low-9 quotation mark"], ["60", "less-than sign"], ["62", "greater-than sign"], ["8804", "less-than or equal to"], ["8805", "greater-than or equal to"], ["8211", "en dash"], ["8212", "em dash"], ["175", "macron"], ["8254", "overline"], ["164", "currency sign"], ["166", "broken bar"], ["168", "diaeresis"], ["161", "inverted exclamation mark"], ["191", "turned question mark"], ["710", "circumflex accent"], ["732", "small tilde"], ["176", "degree sign"], ["8722", "minus sign"], ["177", "plus-minus sign"], ["247", "division sign"], ["8260", "fraction slash"], ["215", "multiplication sign"], ["185", "superscript one"], ["178", "superscript two"], ["179", "superscript three"], ["188", "fraction one quarter"], ["189", "fraction one half"], ["190", "fraction three quarters"], ["402", "function / florin"], ["8747", "integral"], ["8721", "n-ary sumation"], ["8734", "infinity"], ["8730", "square root"], ["8764", "similar to"], ["8773", "approximately equal to"], ["8776", "almost equal to"], ["8800", "not equal to"], ["8801", "identical to"], ["8712", "element of"], ["8713", "not an element of"], ["8715", "contains as member"], ["8719", "n-ary product"], ["8743", "logical and"], ["8744", "logical or"], ["172", "not sign"], ["8745", "intersection"], ["8746", "union"], ["8706", "partial differential"], ["8704", "for all"], ["8707", "there exists"], ["8709", "diameter"], ["8711", "backward difference"], ["8727", "asterisk operator"], ["8733", "proportional to"], ["8736", "angle"], ["180", "acute accent"], ["184", "cedilla"], ["170", "feminine ordinal indicator"], ["186", "masculine ordinal indicator"], ["8224", "dagger"], ["8225", "double dagger"], ["192", "A - grave"], ["193", "A - acute"], ["194", "A - circumflex"], ["195", "A - tilde"], ["196", "A - diaeresis"], ["197", "A - ring above"], ["256", "A - macron"], ["198", "ligature AE"], ["199", "C - cedilla"], ["200", "E - grave"], ["201", "E - acute"], ["202", "E - circumflex"], ["203", "E - diaeresis"], ["274", "E - macron"], ["204", "I - grave"], ["205", "I - acute"], ["206", "I - circumflex"], ["207", "I - diaeresis"], ["298", "I - macron"], ["208", "ETH"], ["209", "N - tilde"], ["210", "O - grave"], ["211", "O - acute"], ["212", "O - circumflex"], ["213", "O - tilde"], ["214", "O - diaeresis"], ["216", "O - slash"], ["332", "O - macron"], ["338", "ligature OE"], ["352", "S - caron"], ["217", "U - grave"], ["218", "U - acute"], ["219", "U - circumflex"], ["220", "U - diaeresis"], ["362", "U - macron"], ["221", "Y - acute"], ["376", "Y - diaeresis"], ["562", "Y - macron"], ["222", "THORN"], ["224", "a - grave"], ["225", "a - acute"], ["226", "a - circumflex"], ["227", "a - tilde"], ["228", "a - diaeresis"], ["229", "a - ring above"], ["257", "a - macron"], ["230", "ligature ae"], ["231", "c - cedilla"], ["232", "e - grave"], ["233", "e - acute"], ["234", "e - circumflex"], ["235", "e - diaeresis"], ["275", "e - macron"], ["236", "i - grave"], ["237", "i - acute"], ["238", "i - circumflex"], ["239", "i - diaeresis"], ["299", "i - macron"], ["240", "eth"], ["241", "n - tilde"], ["242", "o - grave"], ["243", "o - acute"], ["244", "o - circumflex"], ["245", "o - tilde"], ["246", "o - diaeresis"], ["248", "o slash"], ["333", "o macron"], ["339", "ligature oe"], ["353", "s - caron"], ["249", "u - grave"], ["250", "u - acute"], ["251", "u - circumflex"], ["252", "u - diaeresis"], ["363", "u - macron"], ["253", "y - acute"], ["254", "thorn"], ["255", "y - diaeresis"], ["563", "y - macron"], ["913", "Alpha"], ["914", "Beta"], ["915", "Gamma"], ["916", "Delta"], ["917", "Epsilon"], ["918", "Zeta"], ["919", "Eta"], ["920", "Theta"], ["921", "Iota"], ["922", "Kappa"], ["923", "Lambda"], ["924", "Mu"], ["925", "Nu"], ["926", "Xi"], ["927", "Omicron"], ["928", "Pi"], ["929", "Rho"], ["931", "Sigma"], ["932", "Tau"], ["933", "Upsilon"], ["934", "Phi"], ["935", "Chi"], ["936", "Psi"], ["937", "Omega"], ["945", "alpha"], ["946", "beta"], ["947", "gamma"], ["948", "delta"], ["949", "epsilon"], ["950", "zeta"], ["951", "eta"], ["952", "theta"], ["953", "iota"], ["954", "kappa"], ["955", "lambda"], ["956", "mu"], ["957", "nu"], ["958", "xi"], ["959", "omicron"], ["960", "pi"], ["961", "rho"], ["962", "final sigma"], ["963", "sigma"], ["964", "tau"], ["965", "upsilon"], ["966", "phi"], ["967", "chi"], ["968", "psi"], ["969", "omega"], ["8501", "alef symbol"], ["982", "pi symbol"], ["8476", "real part symbol"], ["978", "upsilon - hook symbol"], ["8472", "Weierstrass p"], ["8465", "imaginary part"], ["8592", "leftwards arrow"], ["8593", "upwards arrow"], ["8594", "rightwards arrow"], ["8595", "downwards arrow"], ["8596", "left right arrow"], ["8629", "carriage return"], ["8656", "leftwards double arrow"], ["8657", "upwards double arrow"], ["8658", "rightwards double arrow"], ["8659", "downwards double arrow"], ["8660", "left right double arrow"], ["8756", "therefore"], ["8834", "subset of"], ["8835", "superset of"], ["8836", "not a subset of"], ["8838", "subset of or equal to"], ["8839", "superset of or equal to"], ["8853", "circled plus"], ["8855", "circled times"], ["8869", "perpendicular"], ["8901", "dot operator"], ["8968", "left ceiling"], ["8969", "right ceiling"], ["8970", "left floor"], ["8971", "right floor"], ["9001", "left-pointing angle bracket"], ["9002", "right-pointing angle bracket"], ["9674", "lozenge"], ["9824", "black spade suit"], ["9827", "black club suit"], ["9829", "black heart suit"], ["9830", "black diamond suit"], ["8194", "en space"], ["8195", "em space"], ["8201", "thin space"], ["8204", "zero width non-joiner"], ["8205", "zero width joiner"], ["8206", "left-to-right mark"], ["8207", "right-to-left mark"] ]) }, t = function(t) { return { getCharMap: function() { return s(t) }, insertChar: function(e) { l(t, e) } } }, u = function(e) { var t, a, i, r = Math.min(e.length, 25), n = Math.ceil(e.length / r); for (t = '', i = 0; i < n; i++) { for (t += "", a = 0; a < r; a++) { var o = i * r + a; if (o < e.length) { var l = e[o], c = parseInt(l[0], 10), s = l ? String.fromCharCode(c) : " "; t += '" } else t += "" } return t += "" }, d = function(e) { for (; e;) { if ("TD" === e.nodeName) return e; e = e.parentNode } }, m = function(n) { var o, e = { type: "container", html: u(s(n)), onclick: function(e) { var t = e.target; if (/^(TD|DIV)$/.test(t.nodeName)) { var a = d(t).firstChild; if (a && a.hasAttribute("data-chr")) { var i = a.getAttribute("data-chr"), r = parseInt(i, 10); isNaN(r) || l(n, String.fromCharCode(r)), e.ctrlKey || o.close() } } }, onmouseover: function(e) { var t = d(e.target); t && t.firstChild ? (o.find("#preview").text(t.firstChild.firstChild.data), o.find("#previewTitle").text(t.title)) : (o.find("#preview").text(" "), o.find("#previewTitle").text(" ")) } }; o = n.windowManager.open({ title: "Special character", spacing: 10, padding: 10, items: [e, { type: "container", layout: "flex", direction: "column", align: "center", spacing: 5, minWidth: 160, minHeight: 160, items: [{ type: "label", name: "preview", text: " ", style: "font-size: 40px; text-align: center", border: 1, minWidth: 140, minHeight: 80 }, { type: "spacer", minHeight: 20 }, { type: "label", name: "previewTitle", text: " ", style: "white-space: pre-wrap;", border: 1, minWidth: 140 }] }], buttons: [{ text: "Close", onclick: function() { o.close() } }] }) }, g = function(e) { e.addCommand("mceShowCharmap", function() { m(e) }) }, p = function(e) { e.addButton("charmap", { icon: "charmap", tooltip: "Special character", cmd: "mceShowCharmap" }), e.addMenuItem("charmap", { icon: "charmap", text: "Special character", cmd: "mceShowCharmap", context: "insert" }) }; e.add("charmap", function(e) { return g(e), p(e), t(e) }) }(); ! function() { "use strict"; var t = tinymce.util.Tools.resolve("tinymce.PluginManager"), n = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"), o = function(t) { return t.getParam("code_dialog_width", 600) }, i = function(t) { return t.getParam("code_dialog_height", Math.min(n.DOM.getViewPort().h - 200, 500)) }, c = function(t, n) { t.focus(), t.undoManager.transact(function() { t.setContent(n) }), t.selection.setCursorLocation(), t.nodeChanged() }, d = function(t) { return t.getContent({ source_view: !0 }) }, e = function(n) { var t = o(n), e = i(n); n.windowManager.open({ title: "Source code", body: { type: "textbox", name: "code", multiline: !0, minWidth: t, minHeight: e, spellcheck: !1, style: "direction: ltr; text-align: left" }, onSubmit: function(t) { c(n, t.data.code) } }).find("#code").value(d(n)) }, u = function(t) { t.addCommand("mceCodeEditor", function() { e(t) }) }, a = function(t) { t.addButton("code", { icon: "code", tooltip: "Source code", onclick: function() { e(t) } }), t.addMenuItem("code", { icon: "code", text: "Source code", onclick: function() { e(t) } }) }; t.add("code", function(t) { return u(t), a(t), {} }) }(); ! function() { "use strict"; var n = function(e) { var t = e, a = function() { return t }; return { get: a, set: function(e) { t = e }, clone: function() { return n(a()) } } }, e = tinymce.util.Tools.resolve("tinymce.PluginManager"), i = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"), s = function(e) { return e.settings.codesample_content_css }, a = function(e) { return e.settings.codesample_languages }, o = function(e) { return Math.min(i.DOM.getViewPort().w, e.getParam("codesample_dialog_width", 800)) }, l = function(e) { return Math.min(i.DOM.getViewPort().w, e.getParam("codesample_dialog_height", 650)) }, t = {}, r = t, u = void 0 !== t ? t : "undefined" != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope ? self : {}, c = function() { var c = /\blang(?:uage)?-(?!\*)(\w+)\b/i, S = u.Prism = { util: { encode: function(e) { return e instanceof o ? new o(e.type, S.util.encode(e.content), e.alias) : "Array" === S.util.type(e) ? e.map(S.util.encode) : e.replace(/&/g, "&").replace(/ e.length) break e; if (!(h instanceof n)) { c.lastIndex = 0; var m = c.exec(h); if (m) { g && (d = m[1].length); var b = m.index - 1 + d, y = b + (m = m[0].slice(d)).length, v = h.slice(0, b + 1), k = h.slice(y + 1), w = [f, 1]; v && w.push(v); var x = new n(s, u ? S.tokenize(m, u) : m, p); w.push(x), k && w.push(k), Array.prototype.splice.apply(i, w) } } } } } return i }, hooks: { all: {}, add: function(e, t) { var a = S.hooks.all; a[e] = a[e] || [], a[e].push(t) }, run: function(e, t) { var a = S.hooks.all[e]; if (a && a.length) for (var n = 0, i = void 0; i = a[n++];) i(t) } } }, o = S.Token = function(e, t, a) { this.type = e, this.content = t, this.alias = a }; if (o.stringify = function(t, a, e) { if ("string" == typeof t) return t; if ("Array" === S.util.type(t)) return t.map(function(e) { return o.stringify(e, a, t) }).join(""); var n = { type: t.type, content: o.stringify(t.content, a, e), tag: "span", classes: ["token", t.type], attributes: {}, language: a, parent: e }; if ("comment" === n.type && (n.attributes.spellcheck = "true"), t.alias) { var i = "Array" === S.util.type(t.alias) ? t.alias : [t.alias]; Array.prototype.push.apply(n.classes, i) } S.hooks.run("wrap", n); var r = ""; for (var s in n.attributes) r += (r ? " " : "") + s + '="' + (n.attributes[s] || "") + '"'; return "<" + n.tag + ' class="' + n.classes.join(" ") + '" ' + r + ">" + n.content + "" }, !u.document) return u.addEventListener && u.addEventListener("message", function(e) { var t = JSON.parse(e.data), a = t.language, n = t.code, i = t.immediateClose; u.postMessage(S.highlight(n, S.languages[a], a)), i && u.close() }, !1), u.Prism }(); void 0 !== r && (r.Prism = c), c.languages.markup = { comment: //, prolog: /<\?[\w\W]+?\?>/, doctype: //, cdata: //i, tag: { pattern: /<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i, inside: { tag: { pattern: /^<\/?[^\s>\/]+/i, inside: { punctuation: /^<\/?/, namespace: /^[^\s>\/:]+:/ } }, "attr-value": { pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i, inside: { punctuation: /[=>"']/ } }, punctuation: /\/?>/, "attr-name": { pattern: /[^\s>\/]+/, inside: { namespace: /^[^\s>\/:]+:/ } } } }, entity: /&#?[\da-z]{1,8};/i }, c.hooks.add("wrap", function(e) { "entity" === e.type && (e.attributes.title = e.content.replace(/&/, "&")) }), c.languages.xml = c.languages.markup, c.languages.html = c.languages.markup, c.languages.mathml = c.languages.markup, c.languages.svg = c.languages.markup, c.languages.css = { comment: /\/\*[\w\W]*?\*\//, atrule: { pattern: /@[\w-]+?.*?(;|(?=\s*\{))/i, inside: { rule: /@[\w-]+/ } }, url: /url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i, selector: /[^\{\}\s][^\{\};]*?(?=\s*\{)/, string: /("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/, property: /(\b|\B)[\w-]+(?=\s*:)/i, important: /\B!important\b/i, "function": /[-a-z0-9]+(?=\()/i, punctuation: /[(){};:]/ }, c.languages.css.atrule.inside.rest = c.util.clone(c.languages.css), c.languages.markup && (c.languages.insertBefore("markup", "tag", { style: { pattern: /[\w\W]*?<\/style>/i, inside: { tag: { pattern: /|<\/style>/i, inside: c.languages.markup.tag.inside }, rest: c.languages.css }, alias: "language-css" } }), c.languages.insertBefore("inside", "attr-value", { "style-attr": { pattern: /\s*style=("|').*?\1/i, inside: { "attr-name": { pattern: /^\s*style/i, inside: c.languages.markup.tag.inside }, punctuation: /^\s*=\s*['"]|['"]\s*$/, "attr-value": { pattern: /.+/i, inside: c.languages.css } }, alias: "language-css" } }, c.languages.markup.tag)), c.languages.clike = { comment: [{ pattern: /(^|[^\\])\/\*[\w\W]*?\*\//, lookbehind: !0 }, { pattern: /(^|[^\\:])\/\/.*/, lookbehind: !0 }], string: /(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, "class-name": { pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i, lookbehind: !0, inside: { punctuation: /(\.|\\)/ } }, keyword: /\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/, "boolean": /\b(true|false)\b/, "function": /[a-z0-9_]+(?=\()/i, number: /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i, operator: /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, punctuation: /[{}[\];(),.:]/ }, c.languages.javascript = c.languages.extend("clike", { keyword: /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/, number: /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/, "function": /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i }), c.languages.insertBefore("javascript", "keyword", { regex: { pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, lookbehind: !0 } }), c.languages.insertBefore("javascript", "class-name", { "template-string": { pattern: /`(?:\\`|\\?[^`])*`/, inside: { interpolation: { pattern: /\$\{[^}]+\}/, inside: { "interpolation-punctuation": { pattern: /^\$\{|\}$/, alias: "punctuation" }, rest: c.languages.javascript } }, string: /[\s\S]+/ } } }), c.languages.markup && c.languages.insertBefore("markup", "tag", { script: { pattern: /[\w\W]*?<\/script>/i, inside: { tag: { pattern: /|<\/script>/i, inside: c.languages.markup.tag.inside }, rest: c.languages.javascript }, alias: "language-javascript" } }), c.languages.js = c.languages.javascript, c.languages.c = c.languages.extend("clike", { keyword: /\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/, operator: /\-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*\/]/, number: /\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i }), c.languages.insertBefore("c", "string", { macro: { pattern: /(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im, lookbehind: !0, alias: "property", inside: { string: { pattern: /(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/, lookbehind: !0 } } } }), delete c.languages.c["class-name"], delete c.languages.c["boolean"], c.languages.csharp = c.languages.extend("clike", { keyword: /\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/, string: [/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/, /("|')(\\?.)*?\1/], number: /\b-?(0x[\da-f]+|\d*\.?\d+)\b/i }), c.languages.insertBefore("csharp", "keyword", { preprocessor: { pattern: /(^\s*)#.*/m, lookbehind: !0 } }), c.languages.cpp = c.languages.extend("c", { keyword: /\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/, "boolean": /\b(true|false)\b/, operator: /[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/ }), c.languages.insertBefore("cpp", "keyword", { "class-name": { pattern: /(class\s+)[a-z0-9_]+/i, lookbehind: !0 } }), c.languages.java = c.languages.extend("clike", { keyword: /\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/, number: /\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i, operator: { pattern: /(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m, lookbehind: !0 } }), c.languages.php = c.languages.extend("clike", { keyword: /\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i, constant: /\b[A-Z0-9_]{2,}\b/, comment: { pattern: /(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/, lookbehind: !0 } }), c.languages.insertBefore("php", "class-name", { "shell-comment": { pattern: /(^|[^\\])#.*/, lookbehind: !0, alias: "comment" } }), c.languages.insertBefore("php", "keyword", { delimiter: /\?>|<\?(?:php)?/i, variable: /\$\w+\b/i, "package": { pattern: /(\\|namespace\s+|use\s+)[\w\\]+/, lookbehind: !0, inside: { punctuation: /\\/ } } }), c.languages.insertBefore("php", "operator", { property: { pattern: /(->)[\w]+/, lookbehind: !0 } }), c.languages.markup && (c.hooks.add("before-highlight", function(t) { "php" === t.language && (t.tokenStack = [], t.backupCode = t.code, t.code = t.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi, function(e) { return t.tokenStack.push(e), "{{{PHP" + t.tokenStack.length + "}}}" })) }), c.hooks.add("before-insert", function(e) { "php" === e.language && (e.code = e.backupCode, delete e.backupCode) }), c.hooks.add("after-highlight", function(e) { if ("php" === e.language) { for (var t = 0, a = void 0; a = e.tokenStack[t]; t++) e.highlightedCode = e.highlightedCode.replace("{{{PHP" + (t + 1) + "}}}", c.highlight(a, e.grammar, "php").replace(/\$/g, "$$$$")); e.element.innerHTML = e.highlightedCode } }), c.hooks.add("wrap", function(e) { "php" === e.language && "markup" === e.type && (e.content = e.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g, '$1')) }), c.languages.insertBefore("php", "comment", { markup: { pattern: /<[^?]\/?(.*?)>/, inside: c.languages.markup }, php: /\{\{\{PHP[0-9]+\}\}\}/ })), c.languages.python = { comment: { pattern: /(^|[^\\])#.*/, lookbehind: !0 }, string: /"""[\s\S]+?"""|'''[\s\S]+?'''|("|')(?:\\?.)*?\1/, "function": { pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g, lookbehind: !0 }, "class-name": { pattern: /(\bclass\s+)[a-z0-9_]+/i, lookbehind: !0 }, keyword: /\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/, "boolean": /\b(?:True|False)\b/, number: /\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i, operator: /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/, punctuation: /[{}[\];(),.:]/ }, function(e) { e.languages.ruby = e.languages.extend("clike", { comment: /#(?!\{[^\r\n]*?\}).*/, keyword: /\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/ }); var t = { pattern: /#\{[^}]+\}/, inside: { delimiter: { pattern: /^#\{|\}$/, alias: "tag" }, rest: e.util.clone(e.languages.ruby) } }; e.languages.insertBefore("ruby", "keyword", { regex: [{ pattern: /%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/, inside: { interpolation: t } }, { pattern: /%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/, inside: { interpolation: t } }, { pattern: /%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/, inside: { interpolation: t } }, { pattern: /%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/, inside: { interpolation: t } }, { pattern: /%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/, inside: { interpolation: t } }, { pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/, lookbehind: !0 }], variable: /[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/, symbol: /:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/ }), e.languages.insertBefore("ruby", "number", { builtin: /\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/, constant: /\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/ }), e.languages.ruby.string = [{ pattern: /%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/, inside: { interpolation: t } }, { pattern: /%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/, inside: { interpolation: t } }, { pattern: /%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/, inside: { interpolation: t } }, { pattern: /%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/, inside: { interpolation: t } }, { pattern: /%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/, inside: { interpolation: t } }, { pattern: /("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/, inside: { interpolation: t } }] }(c); var g = { isCodeSample: function(e) { return e && "PRE" === e.nodeName && -1 !== e.className.indexOf("language-") }, trimArg: function(a) { return function(e, t) { return a(t) } } }, d = function(e) { var t = e.selection.getNode(); return g.isCodeSample(t) ? t : null }, p = d, f = function(t, a, n) { t.undoManager.transact(function() { var e = d(t); n = i.DOM.encode(n), e ? (t.dom.setAttrib(e, "class", "language-" + a), e.innerHTML = n, c.highlightElement(e), t.selection.select(e)) : (t.insertContent('

    ' + n + "
    "), t.selection.select(t.$("#__new").removeAttr("id")[0])) }) }, h = function(e) { var t = d(e); return t ? t.textContent : "" }, m = function(e) { var t = a(e); return t || [{ text: "HTML/XML", value: "markup" }, { text: "JavaScript", value: "javascript" }, { text: "CSS", value: "css" }, { text: "PHP", value: "php" }, { text: "Ruby", value: "ruby" }, { text: "Python", value: "python" }, { text: "Java", value: "java" }, { text: "C", value: "c" }, { text: "C#", value: "csharp" }, { text: "C++", value: "cpp" }] }, b = function(e) { var t, a = p(e); return a && (t = a.className.match(/language-(\w+)/)) ? t[1] : "" }, y = function(t) { var e = o(t), a = l(t), n = b(t), i = m(t), r = h(t); t.windowManager.open({ title: "Insert/Edit code sample", minWidth: e, minHeight: a, layout: "flex", direction: "column", align: "stretch", body: [{ type: "listbox", name: "language", label: "Language", maxWidth: 200, value: n, values: i }, { type: "textbox", name: "code", multiline: !0, spellcheck: !1, ariaLabel: "Code view", flex: 1, style: "direction: ltr; text-align: left", classes: "monospace", value: r, autofocus: !0 }], onSubmit: function(e) { f(t, e.data.language, e.data.code) } }) }, v = function(t) { t.addCommand("codesample", function() { var e = t.selection.getNode(); t.selection.isCollapsed() || g.isCodeSample(e) ? y(t) : t.formatter.toggle("code") }) }, k = function(a) { var i = a.$; a.on("PreProcess", function(e) { i("pre[contenteditable=false]", e.node).filter(g.trimArg(g.isCodeSample)).each(function(e, t) { var a = i(t), n = t.textContent; a.attr("class", i.trim(a.attr("class"))), a.removeAttr("contentEditable"), a.empty().append(i("").each(function() { this.textContent = n })) }) }), a.on("SetContent", function() { var e = i("pre").filter(g.trimArg(g.isCodeSample)).filter(function(e, t) { return "false" !== t.contentEditable }); e.length && a.undoManager.transact(function() { e.each(function(e, t) { i(t).find("br").each(function(e, t) { t.parentNode.replaceChild(a.getDoc().createTextNode("\n"), t) }), t.contentEditable = !1, t.innerHTML = a.dom.encode(t.textContent), c.highlightElement(t), t.className = i.trim(t.className) }) }) }) }, w = function(e, t, a, n) { var i, r = s(e); e.inline && a.get() || !e.inline && n.get() || (e.inline ? a.set(!0) : n.set(!0), !1 !== r && (i = e.dom.create("link", { rel: "stylesheet", href: r || t + "/css/prism.css" }), e.getDoc().getElementsByTagName("head")[0].appendChild(i))) }, x = function(e) { e.addButton("codesample", { cmd: "codesample", title: "Insert/Edit code sample" }), e.addMenuItem("codesample", { cmd: "codesample", text: "Code sample", icon: "codesample" }) }, S = n(!1); e.add("codesample", function(t, e) { var a = n(!1); k(t), x(t), v(t), t.on("init", function() { w(t, e, S, a) }), t.on("dblclick", function(e) { g.isCodeSample(e.target) && y(t) }) }) }(); ! function() { "use strict"; var e = tinymce.util.Tools.resolve("tinymce.PluginManager"), l = tinymce.util.Tools.resolve("tinymce.util.Color"), a = function(e, n) { e.find("#preview")[0].getEl().style.background = n }, o = function(e, n) { var i = l(n), t = i.toRgb(); e.fromJSON({ r: t.r, g: t.g, b: t.b, hex: i.toHex().substr(1) }), a(e, i.toHex()) }, t = function(e, n, i) { var t = e.windowManager.open({ title: "Color", items: { type: "container", layout: "flex", direction: "row", align: "stretch", padding: 5, spacing: 10, items: [{ type: "colorpicker", value: i, onchange: function() { var e = this.rgb(); t && (t.find("#r").value(e.r), t.find("#g").value(e.g), t.find("#b").value(e.b), t.find("#hex").value(this.value().substr(1)), a(t, this.value())) } }, { type: "form", padding: 0, labelGap: 5, defaults: { type: "textbox", size: 7, value: "0", flex: 1, spellcheck: !1, onchange: function() { var e, n, i = t.find("colorpicker")[0]; if (e = this.name(), n = this.value(), "hex" === e) return o(t, n = "#" + n), void i.value(n); n = { r: t.find("#r").value(), g: t.find("#g").value(), b: t.find("#b").value() }, i.value(n), o(t, n) } }, items: [{ name: "r", label: "R", autofocus: 1 }, { name: "g", label: "G" }, { name: "b", label: "B" }, { name: "hex", label: "#", value: "000000" }, { name: "preview", type: "container", border: 1 }] }] }, onSubmit: function() { n("#" + t.toJSON().hex) } }); o(t, i) }; e.add("colorpicker", function(i) { i.settings.color_picker_callback || (i.settings.color_picker_callback = function(e, n) { t(i, e, n) }) }) }(); ! function() { "use strict"; var o = function(t) { var n = t, e = function() { return n }; return { get: e, set: function(t) { n = t }, clone: function() { return o(e()) } } }, t = tinymce.util.Tools.resolve("tinymce.PluginManager"), i = function(t) { return { isContextMenuVisible: function() { return t.get() } } }, r = function(t) { return t.settings.contextmenu_never_use_native }, u = function(t) { return t.getParam("contextmenu", "link openlink image inserttable | cell row column deletetable") }, l = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"), s = function(t) { return l.DOM.select(t.settings.ui_container)[0] }, a = function(t, n) { return { x: t, y: n } }, f = function(t, n, e) { return a(t.x + n, t.y + e) }, m = function(t, n) { if (t && "static" !== l.DOM.getStyle(t, "position", !0)) { var e = l.DOM.getPos(t), o = e.x - t.scrollLeft, i = e.y - t.scrollTop; return f(n, -o, -i) } return f(n, 0, 0) }, c = function(t, n) { if (t.inline) return m(s(t), a((u = n).pageX, u.pageY)); var e, o, i, r, u, c = (e = t.getContentAreaContainer(), o = a((r = n).clientX, r.clientY), i = l.DOM.getPos(e), f(o, i.x, i.y)); return m(s(t), c) }, g = tinymce.util.Tools.resolve("tinymce.ui.Factory"), v = tinymce.util.Tools.resolve("tinymce.util.Tools"), y = function(t, n, e, o) { null === o.get() ? o.set(function(e, n) { var t, o, i = []; o = u(e), v.each(o.split(/[ ,]/), function(t) { var n = e.menuItems[t]; "|" === t && (n = { text: t }), n && (n.shortcut = "", i.push(n)) }); for (var r = 0; r < i.length; r++)"|" === i[r].text && (0 !== r && r !== i.length - 1 || i.splice(r, 1)); return (t = g.create("menu", { items: i, context: "contextmenu", classes: "contextmenu" })).uiContainer = s(e), t.renderTo(s(e)), t.on("hide", function(t) { t.control === this && n.set(!1) }), e.on("remove", function() { t.remove(), t = null }), t }(t, e)) : o.get().show(), o.get().moveTo(n.x, n.y), e.set(!0) }, x = function(e, o, i) { e.on("contextmenu", function(t) { var n; n = e, (!t.ctrlKey || r(n)) && (t.preventDefault(), y(e, c(e, t), o, i)) }) }; t.add("contextmenu", function(t) { var n = o(null), e = o(!1); return x(t, e, n), i(e) }) }(); ! function() { "use strict"; var t = tinymce.util.Tools.resolve("tinymce.PluginManager"), c = tinymce.util.Tools.resolve("tinymce.util.Tools"), e = function(t, e) { var i, n = t.dom, o = t.selection.getSelectedBlocks(); o.length && (i = n.getAttrib(o[0], "dir"), c.each(o, function(t) { n.getParent(t.parentNode, '*[dir="' + e + '"]', n.getRoot()) || n.setAttrib(t, "dir", i !== e ? e : null) }), t.nodeChanged()) }, i = function(t) { t.addCommand("mceDirectionLTR", function() { e(t, "ltr") }), t.addCommand("mceDirectionRTL", function() { e(t, "rtl") }) }, n = function(e) { var i = []; return c.each("h1 h2 h3 h4 h5 h6 div p".split(" "), function(t) { i.push(t + "[dir=" + e + "]") }), i.join(",") }, o = function(t) { t.addButton("ltr", { title: "Left to right", cmd: "mceDirectionLTR", stateSelector: n("ltr") }), t.addButton("rtl", { title: "Right to left", cmd: "mceDirectionRTL", stateSelector: n("rtl") }) }; t.add("directionality", function(t) { i(t), o(t) }) }(); ! function() { "use strict"; var t = tinymce.util.Tools.resolve("tinymce.PluginManager"), e = tinymce.util.Tools.resolve("tinymce.util.Tools"), n = [ ["cool", "cry", "embarassed", "foot-in-mouth"], ["frown", "innocent", "kiss", "laughing"], ["money-mouth", "sealed", "smile", "surprised"], ["tongue-out", "undecided", "wink", "yell"] ], i = function(i) { var o; return o = '', e.each(n, function(t) { o += "", e.each(t, function(t) { var e = i + "/img/smiley-" + t + ".gif"; o += '' }), o += "" }), o += "
    " }, o = function(a, t) { var e = i(t); a.addButton("emoticons", { type: "panelbutton", panel: { role: "application", autohide: !0, html: e, onclick: function(t) { var e, i, o, n = a.dom.getParent(t.target, "a"); n && (e = a, i = n.getAttribute("data-mce-url"), o = n.getAttribute("data-mce-alt"), e.insertContent(e.dom.createHTML("img", { src: i, alt: o })), this.hide()) } }, tooltip: "Emoticons" }) }; t.add("emoticons", function(t, e) { o(t, e) }) }(); ! function() { "use strict"; var l = function(e) { var t = e, n = function() { return t }; return { get: n, set: function(e) { t = e }, clone: function() { return l(n()) } } }, e = tinymce.util.Tools.resolve("tinymce.PluginManager"), g = tinymce.util.Tools.resolve("tinymce.util.Tools"), t = tinymce.util.Tools.resolve("tinymce.html.DomParser"), f = tinymce.util.Tools.resolve("tinymce.html.Node"), m = tinymce.util.Tools.resolve("tinymce.html.Serializer"), h = function(e) { return e.getParam("fullpage_hide_in_source_view") }, r = function(e) { return e.getParam("fullpage_default_xml_pi") }, o = function(e) { return e.getParam("fullpage_default_encoding") }, a = function(e) { return e.getParam("fullpage_default_font_family") }, c = function(e) { return e.getParam("fullpage_default_font_size") }, s = function(e) { return e.getParam("fullpage_default_text_color") }, u = function(e) { return e.getParam("fullpage_default_title") }, d = function(e) { return e.getParam("fullpage_default_doctype", "") }, p = function(e) { return t({ validate: !1, root_name: "#document" }).parse(e) }, y = p, v = function(e, t) { var n, l, i = p(t), r = {}; function o(e, t) { return e.attr(t) || "" } return r.fontface = a(e), r.fontsize = c(e), 7 === (n = i.firstChild).type && (r.xml_pi = !0, (l = /encoding="([^"]+)"/.exec(n.value)) && (r.docencoding = l[1])), (n = i.getAll("#doctype")[0]) && (r.doctype = ""), (n = i.getAll("title")[0]) && n.firstChild && (r.title = n.firstChild.value), g.each(i.getAll("meta"), function(e) { var t, n = e.attr("name"), l = e.attr("http-equiv"); n ? r[n.toLowerCase()] = e.attr("content") : "Content-Type" === l && (t = /charset\s*=\s*(.*)\s*/gi.exec(e.attr("content"))) && (r.docencoding = t[1]) }), (n = i.getAll("html")[0]) && (r.langcode = o(n, "lang") || o(n, "xml:lang")), r.stylesheets = [], g.each(i.getAll("link"), function(e) { "stylesheet" === e.attr("rel") && r.stylesheets.push(e.attr("href")) }), (n = i.getAll("body")[0]) && (r.langdir = o(n, "dir"), r.style = o(n, "style"), r.visited_color = o(n, "vlink"), r.link_color = o(n, "link"), r.active_color = o(n, "alink")), r }, _ = function(e, r, t) { var o, n, l, a, i, c = e.dom; function s(e, t, n) { e.attr(t, n || undefined) } function u(e) { n.firstChild ? n.insert(e, n.firstChild) : n.append(e) } o = p(t), (n = o.getAll("head")[0]) || (a = o.getAll("html")[0], n = new f("head", 1), a.firstChild ? a.insert(n, a.firstChild, !0) : a.append(n)), a = o.firstChild, r.xml_pi ? (i = 'version="1.0"', r.docencoding && (i += ' encoding="' + r.docencoding + '"'), 7 !== a.type && (a = new f("xml", 7), o.insert(a, o.firstChild, !0)), a.value = i) : a && 7 === a.type && a.remove(), a = o.getAll("#doctype")[0], r.doctype ? (a || (a = new f("#doctype", 10), r.xml_pi ? o.insert(a, o.firstChild) : u(a)), a.value = r.doctype.substring(9, r.doctype.length - 1)) : a && a.remove(), a = null, g.each(o.getAll("meta"), function(e) { "Content-Type" === e.attr("http-equiv") && (a = e) }), r.docencoding ? (a || ((a = new f("meta", 1)).attr("http-equiv", "Content-Type"), a.shortEnded = !0, u(a)), a.attr("content", "text/html; charset=" + r.docencoding)) : a && a.remove(), a = o.getAll("title")[0], r.title ? (a ? a.empty() : u(a = new f("title", 1)), a.append(new f("#text", 3)).value = r.title) : a && a.remove(), g.each("keywords,description,author,copyright,robots".split(","), function(e) { var t, n, l = o.getAll("meta"), i = r[e]; for (t = 0; t < l.length; t++) if ((n = l[t]).attr("name") === e) return void(i ? n.attr("content", i) : n.remove()); i && ((a = new f("meta", 1)).attr("name", e), a.attr("content", i), a.shortEnded = !0, u(a)) }); var d = {}; return g.each(o.getAll("link"), function(e) { "stylesheet" === e.attr("rel") && (d[e.attr("href")] = e) }), g.each(r.stylesheets, function(e) { d[e] || ((a = new f("link", 1)).attr({ rel: "stylesheet", text: "text/css", href: e }), a.shortEnded = !0, u(a)), delete d[e] }), g.each(d, function(e) { e.remove() }), (a = o.getAll("body")[0]) && (s(a, "dir", r.langdir), s(a, "style", r.style), s(a, "vlink", r.visited_color), s(a, "link", r.link_color), s(a, "alink", r.active_color), c.setAttribs(e.getBody(), { style: r.style, dir: r.dir, vLink: r.visited_color, link: r.link_color, aLink: r.active_color })), (a = o.getAll("html")[0]) && (s(a, "lang", r.langcode), s(a, "xml:lang", r.langcode)), n.firstChild || n.remove(), (l = m({ validate: !1, indent: !0, apply_source_formatting: !0, indent_before: "head,html,body,meta,title,script,link,style", indent_after: "head,html,body,meta,title,script,link,style" }).serialize(o)).substring(0, l.indexOf("")) }, n = function(n, l) { var i = v(n, l.get()); n.windowManager.open({ title: "Document properties", data: i, defaults: { type: "textbox", size: 40 }, body: [{ name: "title", label: "Title" }, { name: "keywords", label: "Keywords" }, { name: "description", label: "Description" }, { name: "robots", label: "Robots" }, { name: "author", label: "Author" }, { name: "docencoding", label: "Encoding" }], onSubmit: function(e) { var t = _(n, g.extend(i, e.data), l.get()); l.set(t) } }) }, i = function(e, t) { e.addCommand("mceFullPageProperties", function() { n(e, t) }) }, b = function(e, t) { return g.each(e, function(e) { t = t.replace(e, function(e) { return "\x3c!--mce:protected " + escape(e) + "--\x3e" }) }), t }, x = function(e) { return e.replace(//g, function(e, t) { return unescape(t) }) }, k = g.each, C = function(e) { return e.replace(/<\/?[A-Z]+/g, function(e) { return e.toLowerCase() }) }, A = function(e) { var t, n = "", l = ""; if (r(e)) { var i = o(e); n += '\n' } return n += d(e), n += "\n\n\n", (t = u(e)) && (n += "" + t + "\n"), (t = o(e)) && (n += '\n'), (t = a(e)) && (l += "font-family: " + t + ";"), (t = c(e)) && (l += "font-size: " + t + ";"), (t = s(e)) && (l += "color: " + t + ";"), n += "\n\n" }, w = function(r, o, a) { r.on("BeforeSetContent", function(e) { ! function(e, t, n, l) { var i, r, o, a, c, s = "", u = e.dom; if (!(l.selection || (o = b(e.settings.protect, l.content), "raw" === l.format && t.get() || l.source_view && h(e)))) { 0 !== o.length || l.source_view || (o = g.trim(t.get()) + "\n" + g.trim(o) + "\n" + g.trim(n.get())), -1 !== (i = (o = o.replace(/<(\/?)BODY/gi, "<$1body")).indexOf("", i), t.set(C(o.substring(0, i + 1))), -1 === (r = o.indexOf("\n")), a = y(t.get()), k(a.getAll("style"), function(e) { e.firstChild && (s += e.firstChild.value) }), (c = a.getAll("body")[0]) && u.setAttribs(e.getBody(), { style: c.attr("style") || "", dir: c.attr("dir") || "", vLink: c.attr("vlink") || "", link: c.attr("link") || "", aLink: c.attr("alink") || "" }), u.remove("fullpage_styles"); var d = e.getDoc().getElementsByTagName("head")[0]; s && (u.add(d, "style", { id: "fullpage_styles" }, s), (c = u.get("fullpage_styles")).styleSheet && (c.styleSheet.cssText = s)); var f = {}; g.each(d.getElementsByTagName("link"), function(e) { "stylesheet" === e.rel && e.getAttribute("data-mce-fullpage") && (f[e.href] = e) }), g.each(a.getAll("link"), function(e) { var t = e.attr("href"); if (!t) return !0; f[t] || "stylesheet" !== e.attr("rel") || u.add(d, "link", { rel: "stylesheet", text: "text/css", href: t, "data-mce-fullpage": "1" }), delete f[t] }), g.each(f, function(e) { e.parentNode.removeChild(e) }) } }(r, o, a, e) }), r.on("GetContent", function(e) { var t, n, l, i; t = r, n = o.get(), l = a.get(), (i = e).selection || i.source_view && h(t) || (i.content = x(g.trim(n) + "\n" + g.trim(i.content) + "\n" + g.trim(l))) }) }, P = function(e) { e.addButton("fullpage", { title: "Document properties", cmd: "mceFullPageProperties" }), e.addMenuItem("fullpage", { text: "Document properties", cmd: "mceFullPageProperties", context: "file" }) }; e.add("fullpage", function(e) { var t = l(""), n = l(""); i(e, t), P(e), w(e, t, n) }) }(); ! function() { "use strict"; var i = function(e) { var n = e, t = function() { return n }; return { get: t, set: function(e) { n = e }, clone: function() { return i(t()) } } }, e = tinymce.util.Tools.resolve("tinymce.PluginManager"), t = function(e) { return { isFullscreen: function() { return null !== e.get() } } }, n = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"), m = function(e, n) { e.fire("FullscreenStateChanged", { state: n }) }, g = n.DOM, r = function(e, n) { var t, r, l, i, o, c, s = document.body, u = document.documentElement, d = n.get(), a = function() { var e, n, t, i; g.setStyle(l, "height", (t = window, i = document.body, i.offsetWidth && (e = i.offsetWidth, n = i.offsetHeight), t.innerWidth && t.innerHeight && (e = t.innerWidth, n = t.innerHeight), { w: e, h: n }).h - (r.clientHeight - l.clientHeight)) }, h = function() { g.unbind(window, "resize", a) }; if (t = (r = e.getContainer()).style, i = (l = e.getContentAreaContainer().firstChild).style, d) i.width = d.iframeWidth, i.height = d.iframeHeight, d.containerWidth && (t.width = d.containerWidth), d.containerHeight && (t.height = d.containerHeight), g.removeClass(s, "mce-fullscreen"), g.removeClass(u, "mce-fullscreen"), g.removeClass(r, "mce-fullscreen"), o = d.scrollPos, window.scrollTo(o.x, o.y), g.unbind(window, "resize", d.resizeHandler), e.off("remove", d.removeHandler), n.set(null), m(e, !1); else { var f = { scrollPos: (c = g.getViewPort(), { x: c.x, y: c.y }), containerWidth: t.width, containerHeight: t.height, iframeWidth: i.width, iframeHeight: i.height, resizeHandler: a, removeHandler: h }; i.width = i.height = "100%", t.width = t.height = "", g.addClass(s, "mce-fullscreen"), g.addClass(u, "mce-fullscreen"), g.addClass(r, "mce-fullscreen"), g.bind(window, "resize", a), e.on("remove", h), a(), n.set(f), m(e, !0) } }, l = function(e, n) { e.addCommand("mceFullScreen", function() { r(e, n) }) }, o = function(t) { return function(e) { var n = e.control; t.on("FullscreenStateChanged", function(e) { n.active(e.state) }) } }, c = function(e) { e.addMenuItem("fullscreen", { text: "Fullscreen", shortcut: "Ctrl+Shift+F", selectable: !0, cmd: "mceFullScreen", onPostRender: o(e), context: "view" }), e.addButton("fullscreen", { active: !1, tooltip: "Fullscreen", cmd: "mceFullScreen", onPostRender: o(e) }) }; e.add("fullscreen", function(e) { var n = i(null); return e.settings.inline || (l(e, n), c(e), e.addShortcut("Ctrl+Shift+F", "", "mceFullScreen")), t(n) }) }(); ! function() { "use strict"; var e, t, n, r, o, a, i = tinymce.util.Tools.resolve("tinymce.PluginManager"), l = function(e) { return function() { return e } }, c = function(a) { for (var e = [], t = 1; t < arguments.length; t++) e[t - 1] = arguments[t]; for (var i = new Array(arguments.length - 1), n = 1; n < arguments.length; n++) i[n - 1] = arguments[n]; return function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; for (var n = new Array(arguments.length), r = 0; r < n.length; r++) n[r] = arguments[r]; var o = i.concat(n); return a.apply(null, o) } }, u = l(!1), s = l(!0), f = u, m = s, d = function() { return p }, p = (r = { fold: function(e, t) { return e() }, is: f, isSome: f, isNone: m, getOr: n = function(e) { return e }, getOrThunk: t = function(e) { return e() }, getOrDie: function(e) { throw new Error(e || "error: getOrDie called on none.") }, getOrNull: function() { return null }, getOrUndefined: function() { return undefined }, or: n, orThunk: t, map: d, ap: d, each: function() {}, bind: d, flatten: d, exists: f, forall: m, filter: d, equals: e = function(e) { return e.isNone() }, equals_: e, toArray: function() { return [] }, toString: l("none()") }, Object.freeze && Object.freeze(r), r), h = function(n) { var e = function() { return n }, t = function() { return o }, r = function(e) { return e(n) }, o = { fold: function(e, t) { return t(n) }, is: function(e) { return n === e }, isSome: m, isNone: f, getOr: e, getOrThunk: e, getOrDie: e, getOrNull: e, getOrUndefined: e, or: t, orThunk: t, map: function(e) { return h(e(n)) }, ap: function(e) { return e.fold(d, function(e) { return h(e(n)) }) }, each: function(e) { e(n) }, bind: r, flatten: e, exists: r, forall: r, filter: function(e) { return e(n) ? o : p }, equals: function(e) { return e.is(n) }, equals_: function(e, t) { return e.fold(f, function(e) { return t(n, e) }) }, toArray: function() { return [n] }, toString: function() { return "some(" + n + ")" } }; return o }, y = { some: h, none: d, from: function(e) { return null === e || e === undefined ? p : h(e) } }, g = (o = "function", function(e) { return function(e) { if (null === e) return "null"; var t = typeof e; return "object" === t && Array.prototype.isPrototypeOf(e) ? "array" : "object" === t && String.prototype.isPrototypeOf(e) ? "string" : t }(e) === o }), k = (a = Array.prototype.indexOf) === undefined ? function(e, t) { return x(e, t) } : function(e, t) { return a.call(e, t) }, v = function(e, t) { return -1 < k(e, t) }, b = function(e, t) { for (var n = e.length, r = new Array(n), o = 0; o < n; o++) { var a = e[o]; r[o] = t(a, o, e) } return r }, x = function(e, t) { for (var n = 0, r = e.length; n < r; ++n) if (e[n] === t) return n; return -1 }, w = (Array.prototype.slice, g(Array.from) && Array.from, tinymce.util.Tools.resolve("tinymce.util.I18n")), A = tinymce.util.Tools.resolve("tinymce.Env"), C = A.mac ? "\u2318" : "Ctrl", S = A.mac ? "Ctrl + Alt" : "Shift + Alt", O = { shortcuts: [{ shortcut: C + " + B", action: "Bold" }, { shortcut: C + " + I", action: "Italic" }, { shortcut: C + " + U", action: "Underline" }, { shortcut: C + " + A", action: "Select all" }, { shortcut: C + " + Y or " + C + " + Shift + Z", action: "Redo" }, { shortcut: C + " + Z", action: "Undo" }, { shortcut: S + " + 1", action: "Header 1" }, { shortcut: S + " + 2", action: "Header 2" }, { shortcut: S + " + 3", action: "Header 3" }, { shortcut: S + " + 4", action: "Header 4" }, { shortcut: S + " + 5", action: "Header 5" }, { shortcut: S + " + 6", action: "Header 6" }, { shortcut: S + " + 7", action: "Paragraph" }, { shortcut: S + " + 8", action: "Div" }, { shortcut: S + " + 9", action: "Address" }, { shortcut: "Alt + F9", action: "Focus to menubar" }, { shortcut: "Alt + F10", action: "Focus to toolbar" }, { shortcut: "Alt + F11", action: "Focus to element path" }, { shortcut: "Ctrl + Shift + P > Ctrl + Shift + P", action: "Focus to contextual toolbar" }, { shortcut: C + " + K", action: "Insert link (if link plugin activated)" }, { shortcut: C + " + S", action: "Save (if save plugin activated)" }, { shortcut: C + " + F", action: "Find (if searchreplace plugin activated)" }] }, P = function() { var e = b(O.shortcuts, function(e) { return '' + w.translate(e.action) + "" + e.shortcut + ""; var t }).join(""); return { title: "Handy Shortcuts", type: "container", style: "overflow-y: auto; overflow-x: hidden; max-height: 250px", items: [{ type: "container", html: '
    " + e + "
    ' + w.translate("Action") + "" + w.translate("Shortcut") + "
    " }] } }, T = Object.keys, _ = [{ key: "advlist", name: "Advanced List" }, { key: "anchor", name: "Anchor" }, { key: "autolink", name: "Autolink" }, { key: "autoresize", name: "Autoresize" }, { key: "autosave", name: "Autosave" }, { key: "bbcode", name: "BBCode" }, { key: "charmap", name: "Character Map" }, { key: "code", name: "Code" }, { key: "codesample", name: "Code Sample" }, { key: "colorpicker", name: "Color Picker" }, { key: "compat3x", name: "3.x Compatibility" }, { key: "contextmenu", name: "Context Menu" }, { key: "directionality", name: "Directionality" }, { key: "emoticons", name: "Emoticons" }, { key: "fullpage", name: "Full Page" }, { key: "fullscreen", name: "Full Screen" }, { key: "help", name: "Help" }, { key: "hr", name: "Horizontal Rule" }, { key: "image", name: "Image" }, { key: "imagetools", name: "Image Tools" }, { key: "importcss", name: "Import CSS" }, { key: "insertdatetime", name: "Insert Date/Time" }, { key: "legacyoutput", name: "Legacy Output" }, { key: "link", name: "Link" }, { key: "lists", name: "Lists" }, { key: "media", name: "Media" }, { key: "nonbreaking", name: "Nonbreaking" }, { key: "noneditable", name: "Noneditable" }, { key: "pagebreak", name: "Page Break" }, { key: "paste", name: "Paste" }, { key: "preview", name: "Preview" }, { key: "print", name: "Print" }, { key: "save", name: "Save" }, { key: "searchreplace", name: "Search and Replace" }, { key: "spellchecker", name: "Spell Checker" }, { key: "tabfocus", name: "Tab Focus" }, { key: "table", name: "Table" }, { key: "template", name: "Template" }, { key: "textcolor", name: "Text Color" }, { key: "textpattern", name: "Text Pattern" }, { key: "toc", name: "Table of Contents" }, { key: "visualblocks", name: "Visual Blocks" }, { key: "visualchars", name: "Visual Characters" }, { key: "wordcount", name: "Word Count" }], H = c(function(e, o) { return e.replace(/\$\{([^{}]*)\}/g, function(e, t) { var n, r = o[t]; return "string" == (n = typeof r) || "number" === n ? r.toString() : e }) }, '${name}'), F = function(t, n) { return function(e, t) { for (var n = 0, r = e.length; n < r; n++) { var o = e[n]; if (t(o, n, e)) return y.some(o) } return y.none() }(_, function(e) { return e.key === n }).fold(function() { var e = t.plugins[n].getMetadata; return "function" == typeof e ? H(e()) : n }, function(e) { return H({ name: e.name, url: "https://www.tinymce.com/docs/plugins/" + e.key }) }) }, M = function(t) { var e, n, r, o = (r = T((e = t).plugins), e.settings.forced_plugins === undefined ? r : function(e, t) { for (var n = [], r = 0, o = e.length; r < o; r++) { var a = e[r]; t(a, r, e) && n.push(a) } return n }(r, (n = c(v, e.settings.forced_plugins), function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; return !n.apply(null, arguments) }))), a = b(o, function(e) { return "
  • " + F(t, e) + "
  • " }), i = a.length, l = a.join(""); return "

    " + w.translate(["Plugins installed ({0}):", i]) + "

      " + l + "
    " }, E = function(e) { return { title: "Plugins", type: "container", style: "overflow-y: auto; overflow-x: hidden;", layout: "flex", padding: 10, spacing: 10, items: [(t = e, { type: "container", html: '
    ' + M(t) + "
    ", flex: 1 }), { type: "container", html: '

    ' + w.translate("Premium plugins:") + '

    • PowerPaste
    • Spell Checker Pro
    • Accessibility Checker
    • Advanced Code Editor
    • Enhanced Media Embed
    • Link Checker

    ' + w.translate("Learn more...") + "

    ", flex: 1 }] }; var t }, I = tinymce.util.Tools.resolve("tinymce.EditorManager"), j = function() { var e, t, n = 'TinyMCE ' + (e = I.majorVersion, t = I.minorVersion, 0 === e.indexOf("@") ? "X.X.X" : e + "." + t) + ""; return [{ type: "label", html: w.translate(["You are using {0}", n]) }, { type: "spacer", flex: 1 }, { text: "Close", onclick: function() { this.parent().parent().close() } }] }, L = function(e, t) { return function() { e.windowManager.open({ title: "Help", bodyType: "tabpanel", layout: "flex", body: [P(), E(e)], buttons: j(), onPostRender: function() { this.getEl("title").innerHTML = 'TinyMCE Logo' } }) } }, B = function(e, t) { e.addCommand("mceHelp", L(e, t)) }, N = function(e, t) { e.addButton("help", { icon: "help", onclick: L(e, t) }), e.addMenuItem("help", { text: "Help", icon: "help", context: "help", onclick: L(e, t) }) }; i.add("help", function(e, t) { N(e, t), B(e, t), e.shortcuts.add("Alt+0", "Open help dialog", "mceHelp") }) }(); ! function() { "use strict"; var n = tinymce.util.Tools.resolve("tinymce.PluginManager"), t = function(n) { n.addCommand("InsertHorizontalRule", function() { n.execCommand("mceInsertContent", !1, "
    ") }) }, o = function(n) { n.addButton("hr", { icon: "hr", tooltip: "Horizontal line", cmd: "InsertHorizontalRule" }), n.addMenuItem("hr", { icon: "hr", text: "Horizontal line", cmd: "InsertHorizontalRule", context: "insert" }) }; n.add("hr", function(n) { t(n), o(n) }) }(); ! function() { "use strict"; var e = tinymce.util.Tools.resolve("tinymce.PluginManager"), d = function(e) { return !1 !== e.settings.image_dimensions }, i = function(e) { return !0 === e.settings.image_advtab }, g = function(e) { return e.getParam("image_prepend_url", "") }, n = function(e) { return e.getParam("image_class_list") }, r = function(e) { return !1 !== e.settings.image_description }, a = function(e) { return !0 === e.settings.image_title }, o = function(e) { return !0 === e.settings.image_caption }, l = function(e) { return e.getParam("image_list", !1) }, u = function(e) { return e.getParam("images_upload_url", !1) }, c = function(e) { return e.getParam("images_upload_handler", !1) }, s = function(e) { return e.getParam("images_upload_url") }, m = function(e) { return e.getParam("images_upload_handler") }, f = function(e) { return e.getParam("images_upload_base_path") }, p = function(e) { return e.getParam("images_upload_credentials") }, h = "undefined" != typeof window ? window : Function("return this;")(), v = function(e, t) { return function(e, t) { for (var n = t !== undefined && null !== t ? t : h, r = 0; r < e.length && n !== undefined && null !== n; ++r) n = n[e[r]]; return n }(e.split("."), t) }, t = { getOrDie: function(e, t) { var n = v(e, t); if (n === undefined || null === n) throw e + " not available on this browser"; return n } }; function b() { return new(t.getOrDie("FileReader")) } var y, x = tinymce.util.Tools.resolve("tinymce.util.Promise"), w = tinymce.util.Tools.resolve("tinymce.util.Tools"), C = tinymce.util.Tools.resolve("tinymce.util.XHR"), S = function(e, t) { return Math.max(parseInt(e, 10), parseInt(t, 10)) }, N = function(e, n) { var r = document.createElement("img"); function t(e, t) { r.parentNode && r.parentNode.removeChild(r), n({ width: e, height: t }) } r.onload = function() { t(S(r.width, r.clientWidth), S(r.height, r.clientHeight)) }, r.onerror = function() { t(0, 0) }; var a = r.style; a.visibility = "hidden", a.position = "fixed", a.bottom = a.left = "0px", a.width = a.height = "auto", document.body.appendChild(r), r.src = e }, _ = function(e, a, t) { return function n(e, r) { return r = r || [], w.each(e, function(e) { var t = { text: e.text || e.title }; e.menu ? t.menu = n(e.menu) : (t.value = e.value, a(t)), r.push(t) }), r }(e, t || []) }, A = function(e) { return e && (e = e.replace(/px$/, "")), e }, T = function(e) { return 0 < e.length && /^[0-9]+$/.test(e) && (e += "px"), e }, R = function(e) { if (e.margin) { var t = e.margin.split(" "); switch (t.length) { case 1: e["margin-top"] = e["margin-top"] || t[0], e["margin-right"] = e["margin-right"] || t[0], e["margin-bottom"] = e["margin-bottom"] || t[0], e["margin-left"] = e["margin-left"] || t[0]; break; case 2: e["margin-top"] = e["margin-top"] || t[0], e["margin-right"] = e["margin-right"] || t[1], e["margin-bottom"] = e["margin-bottom"] || t[0], e["margin-left"] = e["margin-left"] || t[1]; break; case 3: e["margin-top"] = e["margin-top"] || t[0], e["margin-right"] = e["margin-right"] || t[1], e["margin-bottom"] = e["margin-bottom"] || t[2], e["margin-left"] = e["margin-left"] || t[1]; break; case 4: e["margin-top"] = e["margin-top"] || t[0], e["margin-right"] = e["margin-right"] || t[1], e["margin-bottom"] = e["margin-bottom"] || t[2], e["margin-left"] = e["margin-left"] || t[3] } delete e.margin } return e }, I = function(e, t) { var n = l(e); "string" == typeof n ? C.send({ url: n, success: function(e) { t(JSON.parse(e)) } }) : "function" == typeof n ? n(t) : t(n) }, O = function(e, t, n) { function r() { n.onload = n.onerror = null, e.selection && (e.selection.select(n), e.nodeChanged()) } n.onload = function() { t.width || t.height || !d(e) || e.dom.setAttribs(n, { width: n.clientWidth, height: n.clientHeight }), r() }, n.onerror = r }, L = function(r) { return new x(function(e, t) { var n = new b; n.onload = function() { e(n.result) }, n.onerror = function() { t(b.error.message) }, n.readAsDataURL(r) }) }, P = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"), U = Object.prototype.hasOwnProperty, E = (y = function(e, t) { return t }, function() { for (var e = new Array(arguments.length), t = 0; t < e.length; t++) e[t] = arguments[t]; if (0 === e.length) throw new Error("Can't merge zero objects"); for (var n = {}, r = 0; r < e.length; r++) { var a = e[r]; for (var o in a) U.call(a, o) && (n[o] = y(n[o], a[o])) } return n }), k = P.DOM, M = function(e) { return e.style.marginLeft && e.style.marginRight && e.style.marginLeft === e.style.marginRight ? A(e.style.marginLeft) : "" }, D = function(e) { return e.style.marginTop && e.style.marginBottom && e.style.marginTop === e.style.marginBottom ? A(e.style.marginTop) : "" }, z = function(e) { return e.style.borderWidth ? A(e.style.borderWidth) : "" }, B = function(e, t) { return e.hasAttribute(t) ? e.getAttribute(t) : "" }, H = function(e, t) { return e.style[t] ? e.style[t] : "" }, j = function(e) { return null !== e.parentNode && "FIGURE" === e.parentNode.nodeName }, F = function(e, t, n) { e.setAttribute(t, n) }, W = function(e) { var t, n, r, a; j(e) ? (a = (r = e).parentNode, k.insertAfter(r, a), k.remove(a)) : (t = e, n = k.create("figure", { "class": "image" }), k.insertAfter(n, t), n.appendChild(t), n.appendChild(k.create("figcaption", { contentEditable: !0 }, "Caption")), n.contentEditable = "false") }, J = function(e, t) { var n = e.getAttribute("style"), r = t(null !== n ? n : ""); 0 < r.length ? (e.setAttribute("style", r), e.setAttribute("data-mce-style", r)) : e.removeAttribute("style") }, V = function(e, r) { return function(e, t, n) { e.style[t] ? (e.style[t] = T(n), J(e, r)) : F(e, t, n) } }, G = function(e, t) { return e.style[t] ? A(e.style[t]) : B(e, t) }, $ = function(e, t) { var n = T(t); e.style.marginLeft = n, e.style.marginRight = n }, X = function(e, t) { var n = T(t); e.style.marginTop = n, e.style.marginBottom = n }, q = function(e, t) { var n = T(t); e.style.borderWidth = n }, K = function(e, t) { e.style.borderStyle = t }, Q = function(e) { return "FIGURE" === e.nodeName }, Y = function(e, t) { var n = document.createElement("img"); return F(n, "style", t.style), (M(n) || "" !== t.hspace) && $(n, t.hspace), (D(n) || "" !== t.vspace) && X(n, t.vspace), (z(n) || "" !== t.border) && q(n, t.border), (H(n, "borderStyle") || "" !== t.borderStyle) && K(n, t.borderStyle), e(n.getAttribute("style")) }, Z = function(e, t) { return { src: B(t, "src"), alt: B(t, "alt"), title: B(t, "title"), width: G(t, "width"), height: G(t, "height"), "class": B(t, "class"), style: e(B(t, "style")), caption: j(t), hspace: M(t), vspace: D(t), border: z(t), borderStyle: H(t, "borderStyle") } }, ee = function(e, t, n, r, a) { n[r] !== t[r] && a(e, r, n[r]) }, te = function(r, a) { return function(e, t, n) { r(e, n), J(e, a) } }, ne = function(e, t, n) { var r = Z(e, n); ee(n, r, t, "caption", function(e, t, n) { return W(e) }), ee(n, r, t, "src", F), ee(n, r, t, "alt", F), ee(n, r, t, "title", F), ee(n, r, t, "width", V(0, e)), ee(n, r, t, "height", V(0, e)), ee(n, r, t, "class", F), ee(n, r, t, "style", te(function(e, t) { return F(e, "style", t) }, e)), ee(n, r, t, "hspace", te($, e)), ee(n, r, t, "vspace", te(X, e)), ee(n, r, t, "border", te(q, e)), ee(n, r, t, "borderStyle", te(K, e)) }, re = function(e, t) { var n = e.dom.styles.parse(t), r = R(n), a = e.dom.styles.parse(e.dom.styles.serialize(r)); return e.dom.styles.serialize(a) }, ae = function(e) { var t = e.selection.getNode(), n = e.dom.getParent(t, "figure.image"); return n ? e.dom.select("img", n)[0] : t && ("IMG" !== t.nodeName || t.getAttribute("data-mce-object") || t.getAttribute("data-mce-placeholder")) ? null : t }, oe = function(t, e) { var n = t.dom, r = n.getParent(e.parentNode, function(e) { return t.schema.getTextBlockElements()[e.nodeName] }); return r ? n.split(r, e) : e }, ie = function(t) { var e = ae(t); return e ? Z(function(e) { return re(t, e) }, e) : { src: "", alt: "", title: "", width: "", height: "", "class": "", style: "", caption: !1, hspace: "", vspace: "", border: "", borderStyle: "" } }, le = function(t, e) { var n = function(e, t) { var n = document.createElement("img"); if (ne(e, E(t, { caption: !1 }), n), F(n, "alt", t.alt), t.caption) { var r = k.create("figure", { "class": "image" }); return r.appendChild(n), r.appendChild(k.create("figcaption", { contentEditable: !0 }, "Caption")), r.contentEditable = "false", r } return n }(function(e) { return re(t, e) }, e); t.dom.setAttrib(n, "data-mce-id", "__mcenew"), t.focus(), t.selection.setContent(n.outerHTML); var r = t.dom.select('*[data-mce-id="__mcenew"]')[0]; if (t.dom.setAttrib(r, "data-mce-id", null), Q(r)) { var a = oe(t, r); t.selection.select(a) } else t.selection.select(r) }, ue = function(e, t) { var n = ae(e); n ? t.src ? function(t, e) { var n, r = ae(t); if (ne(function(e) { return re(t, e) }, e, r), n = r, t.dom.setAttrib(n, "src", n.getAttribute("src")), Q(r.parentNode)) { var a = r.parentNode; oe(t, a), t.selection.select(r.parentNode) } else t.selection.select(r), O(t, e, r) }(e, t) : function(e, t) { if (t) { var n = e.dom.is(t.parentNode, "figure.image") ? t.parentNode : t; e.dom.remove(n), e.focus(), e.nodeChanged(), e.dom.isEmpty(e.getBody()) && (e.setContent(""), e.selection.setCursorLocation()) } }(e, n) : t.src && le(e, t) }, ce = function(n, r) { r.find("#style").each(function(e) { var t = Y(function(e) { return re(n, e) }, E({ src: "", alt: "", title: "", width: "", height: "", "class": "", style: "", caption: !1, hspace: "", vspace: "", border: "", borderStyle: "" }, r.toJSON())); e.value(t) }) }, se = function(t) { return { title: "Advanced", type: "form", pack: "start", items: [{ label: "Style", name: "style", type: "textbox", onchange: (o = t, function(e) { var t = o.dom, n = e.control.rootControl; if (i(o)) { var r = n.toJSON(), a = t.parseStyle(r.style); n.find("#vspace").value(""), n.find("#hspace").value(""), ((a = R(a))["margin-top"] && a["margin-bottom"] || a["margin-right"] && a["margin-left"]) && (a["margin-top"] === a["margin-bottom"] ? n.find("#vspace").value(A(a["margin-top"])) : n.find("#vspace").value(""), a["margin-right"] === a["margin-left"] ? n.find("#hspace").value(A(a["margin-right"])) : n.find("#hspace").value("")), a["border-width"] ? n.find("#border").value(A(a["border-width"])) : n.find("#border").value(""), a["border-style"] ? n.find("#borderStyle").value(a["border-style"]) : n.find("#borderStyle").value(""), n.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(a)))) } }) }, { type: "form", layout: "grid", packV: "start", columns: 2, padding: 0, defaults: { type: "textbox", maxWidth: 50, onchange: function(e) { ce(t, e.control.rootControl) } }, items: [{ label: "Vertical space", name: "vspace" }, { label: "Border width", name: "border" }, { label: "Horizontal space", name: "hspace" }, { label: "Border style", type: "listbox", name: "borderStyle", width: 90, maxWidth: 90, onselect: function(e) { ce(t, e.control.rootControl) }, values: [{ text: "Select...", value: "" }, { text: "Solid", value: "solid" }, { text: "Dotted", value: "dotted" }, { text: "Dashed", value: "dashed" }, { text: "Double", value: "double" }, { text: "Groove", value: "groove" }, { text: "Ridge", value: "ridge" }, { text: "Inset", value: "inset" }, { text: "Outset", value: "outset" }, { text: "None", value: "none" }, { text: "Hidden", value: "hidden" }] }] }] }; var o }, de = function(e, t) { e.state.set("oldVal", e.value()), t.state.set("oldVal", t.value()) }, ge = function(e, t) { var n = e.find("#width")[0], r = e.find("#height")[0], a = e.find("#constrain")[0]; n && r && a && t(n, r, a.checked()) }, me = function(e, t, n) { var r = e.state.get("oldVal"), a = t.state.get("oldVal"), o = e.value(), i = t.value(); n && r && a && o && i && (o !== r ? (i = Math.round(o / r * i), isNaN(i) || t.value(i)) : (o = Math.round(i / a * o), isNaN(o) || e.value(o))), de(e, t) }, fe = function(e) { ge(e, me) }, pe = function() { var e = function(e) { fe(e.control.rootControl) }; return { type: "container", label: "Dimensions", layout: "flex", align: "center", spacing: 5, items: [{ name: "width", type: "textbox", maxLength: 5, size: 5, onchange: e, ariaLabel: "Width" }, { type: "label", text: "x" }, { name: "height", type: "textbox", maxLength: 5, size: 5, onchange: e, ariaLabel: "Height" }, { name: "constrain", type: "checkbox", checked: !0, text: "Constrain proportions" }] } }, he = function(e) { ge(e, de) }, ve = fe, be = function(e) { e.meta = e.control.rootControl.toJSON() }, ye = function(s, e) { var t = [{ name: "src", type: "filepicker", filetype: "image", label: "Source", autofocus: !0, onchange: function(e) { var t, n, r, a, o, i, l, u, c; n = s, i = (t = e).meta || {}, l = t.control, u = l.rootControl, (c = u.find("#image-list")[0]) && c.value(n.convertURL(l.value(), "src")), w.each(i, function(e, t) { u.find("#" + t).value(e) }), i.width || i.height || (r = n.convertURL(l.value(), "src"), a = g(n), o = new RegExp("^(?:[a-z]+:)?//", "i"), a && !o.test(r) && r.substring(0, a.length) !== a && (r = a + r), l.value(r), N(n.documentBaseURI.toAbsolute(l.value()), function(e) { e.width && e.height && d(n) && (u.find("#width").value(e.width), u.find("#height").value(e.height), he(u)) })) }, onbeforecall: be }, e]; return r(s) && t.push({ name: "alt", type: "textbox", label: "Image description" }), a(s) && t.push({ name: "title", type: "textbox", label: "Image Title" }), d(s) && t.push(pe()), n(s) && t.push({ name: "class", type: "listbox", label: "Class", values: _(n(s), function(e) { e.value && (e.textStyle = function() { return s.formatter.getCssText({ inline: "img", classes: [e.value] }) }) }) }), o(s) && t.push({ name: "caption", type: "checkbox", label: "Caption" }), t }, xe = function(e, t) { return { title: "General", type: "form", items: ye(e, t) } }, we = ye, Ce = function() { return t.getOrDie("URL") }, Se = function(e) { return Ce().createObjectURL(e) }, Ne = function(e) { Ce().revokeObjectURL(e) }, _e = tinymce.util.Tools.resolve("tinymce.ui.Factory"); function Ae() { return new(t.getOrDie("XMLHttpRequest")) } var Te = function() {}; function Re(i) { var t = function(e, r, a, t) { var o, n; (o = new Ae).open("POST", i.url), o.withCredentials = i.credentials, o.upload.onprogress = function(e) { t(e.loaded / e.total * 100) }, o.onerror = function() { a("Image upload failed due to a XHR Transport error. Code: " + o.status) }, o.onload = function() { var e, t, n; o.status < 200 || 300 <= o.status ? a("HTTP Error: " + o.status) : (e = JSON.parse(o.responseText)) && "string" == typeof e.location ? r((t = i.basePath, n = e.location, t ? t.replace(/\/$/, "") + "/" + n.replace(/^\//, "") : n)) : a("Invalid JSON: " + o.responseText) }, (n = new FormData).append("file", e.blob(), e.filename()), o.send(n) }; return i = w.extend({ credentials: !1, handler: t }, i), { upload: function(e) { return i.url || i.handler !== t ? (r = e, a = i.handler, new x(function(e, t) { try { a(r, e, t, Te) } catch (n) { t(n.message) } })) : x.reject("Upload url missing from the settings."); var r, a } } } var Ie = function(u) { return function(e) { var t = _e.get("Throbber"), n = e.control.rootControl, r = new t(n.getEl()), a = e.control.value(), o = Se(a), i = Re({ url: s(u), basePath: f(u), credentials: p(u), handler: m(u) }), l = function() { r.hide(), Ne(o) }; return r.show(), L(a).then(function(e) { var t = u.editorUpload.blobCache.create({ blob: a, blobUri: o, name: a.name ? a.name.replace(/\.[^\.]+$/, "") : null, base64: e.split(",")[1] }); return i.upload(t).then(function(e) { var t = n.find("#src"); return t.value(e), n.find("tabpanel")[0].activateTab(0), t.fire("change"), l(), e }) })["catch"](function(e) { u.windowManager.alert(e), l() }) } }, Oe = ".jpg,.jpeg,.png,.gif", Le = function(e) { return { title: "Upload", type: "form", layout: "flex", direction: "column", align: "stretch", padding: "20 20 20 20", items: [{ type: "container", layout: "flex", direction: "column", align: "center", spacing: 10, items: [{ text: "Browse for an image", type: "browsebutton", accept: Oe, onchange: Ie(e) }, { text: "OR", type: "label" }] }, { text: "Drop an image here", type: "dropzone", accept: Oe, height: 100, onchange: Ie(e) }] } }, Pe = function(o) { for (var e = [], t = 1; t < arguments.length; t++) e[t - 1] = arguments[t]; for (var i = new Array(arguments.length - 1), n = 1; n < arguments.length; n++) i[n - 1] = arguments[n]; return function() { for (var e = [], t = 0; t < arguments.length; t++) e[t] = arguments[t]; for (var n = new Array(arguments.length), r = 0; r < n.length; r++) n[r] = arguments[r]; var a = i.concat(n); return o.apply(null, a) } }, Ue = function(t, e) { var n = e.control.getRoot(); ve(n), t.undoManager.transact(function() { var e = E(ie(t), n.toJSON()); ue(t, e) }), t.editorUpload.uploadImagesAuto() }; function Ee(o) { function e(e) { var n, t, r = ie(o); if (e && (t = { type: "listbox", label: "Image list", name: "image-list", values: _(e, function(e) { e.value = o.convertURL(e.value || e.url, "src") }, [{ text: "None", value: "" }]), value: r.src && o.convertURL(r.src, "src"), onselect: function(e) { var t = n.find("#alt"); (!t.value() || e.lastControl && t.value() === e.lastControl.text()) && t.value(e.control.text()), n.find("#src").value(e.control.value()).fire("change") }, onPostRender: function() { t = this } }), i(o) || u(o) || c(o)) { var a = [xe(o, t)]; i(o) && a.push(se(o)), (u(o) || c(o)) && a.push(Le(o)), n = o.windowManager.open({ title: "Insert/edit image", data: r, bodyType: "tabpanel", body: a, onSubmit: Pe(Ue, o) }) } else n = o.windowManager.open({ title: "Insert/edit image", data: r, body: we(o, t), onSubmit: Pe(Ue, o) }); he(n) } return { open: function() { I(o, e) } } } var ke = function(e) { e.addCommand("mceImage", Ee(e).open) }, Me = function(o) { return function(e) { for (var t, n, r = e.length, a = function(e) { e.attr("contenteditable", o ? "true" : null) }; r--;) t = e[r], (n = t.attr("class")) && /\bimage\b/.test(n) && (t.attr("contenteditable", o ? "false" : null), w.each(t.getAll("figcaption"), a)) } }, De = function(e) { e.on("preInit", function() { e.parser.addNodeFilter("figure", Me(!0)), e.serializer.addNodeFilter("figure", Me(!1)) }) }, ze = function(e) { e.addButton("image", { icon: "image", tooltip: "Insert/edit image", onclick: Ee(e).open, stateSelector: "img:not([data-mce-object],[data-mce-placeholder]),figure.image" }), e.addMenuItem("image", { icon: "image", text: "Image", onclick: Ee(e).open, context: "insert", prependToContext: !0 }) }; e.add("image", function(e) { De(e), ze(e), ke(e) }) }(); ! function() { "use strict"; var r = function(t) { var e = t, n = function() { return e }; return { get: n, set: function(t) { e = t }, clone: function() { return r(n()) } } }, t = tinymce.util.Tools.resolve("tinymce.PluginManager"), $ = tinymce.util.Tools.resolve("tinymce.util.Tools"); function n(t, e) { return i(document.createElement("canvas"), t, e) } function o(t) { return t.getContext("2d") } function i(t, e, n) { return t.width = e, t.height = n, t } var a, u, c, l, h = { create: n, clone: function(t) { var e; return o(e = n(t.width, t.height)).drawImage(t, 0, 0), e }, resize: i, get2dContext: o, get3dContext: function(t) { var e = null; try { e = t.getContext("webgl") || t.getContext("experimental-webgl") } catch (n) {} return e || (e = null), e } }, p = { getWidth: function(t) { return t.naturalWidth || t.width }, getHeight: function(t) { return t.naturalHeight || t.height } }, g = window.Promise ? window.Promise : function() { var t = function(t) { if ("object" != typeof this) throw new TypeError("Promises must be constructed via new"); if ("function" != typeof t) throw new TypeError("not a function"); this._state = null, this._value = null, this._deferreds = [], l(t, r(o, this), r(a, this)) }, e = t.immediateFn || "function" == typeof setImmediate && setImmediate || function(t) { setTimeout(t, 1) }; function r(t, e) { return function() { t.apply(e, arguments) } } var n = Array.isArray || function(t) { return "[object Array]" === Object.prototype.toString.call(t) }; function i(r) { var o = this; null !== this._state ? e(function() { var t = o._state ? r.onFulfilled : r.onRejected; if (null !== t) { var e; try { e = t(o._value) } catch (n) { return void r.reject(n) } r.resolve(e) } else(o._state ? r.resolve : r.reject)(o._value) }) : this._deferreds.push(r) } function o(t) { try { if (t === this) throw new TypeError("A promise cannot be resolved with itself."); if (t && ("object" == typeof t || "function" == typeof t)) { var e = t.then; if ("function" == typeof e) return void l(r(e, t), r(o, this), r(a, this)) } this._state = !0, this._value = t, u.call(this) } catch (n) { a.call(this, n) } } function a(t) { this._state = !1, this._value = t, u.call(this) } function u() { for (var t = 0, e = this._deferreds.length; t < e; t++) i.call(this, this._deferreds[t]); this._deferreds = null } function c(t, e, n, r) { this.onFulfilled = "function" == typeof t ? t : null, this.onRejected = "function" == typeof e ? e : null, this.resolve = n, this.reject = r } function l(t, e, n) { var r = !1; try { t(function(t) { r || (r = !0, e(t)) }, function(t) { r || (r = !0, n(t)) }) } catch (o) { if (r) return; r = !0, n(o) } } return t.prototype["catch"] = function(t) { return this.then(null, t) }, t.prototype.then = function(n, r) { var o = this; return new t(function(t, e) { i.call(o, new c(n, r, t, e)) }) }, t.all = function() { var c = Array.prototype.slice.call(1 === arguments.length && n(arguments[0]) ? arguments[0] : arguments); return new t(function(o, i) { if (0 === c.length) return o([]); var a = c.length; function u(e, t) { try { if (t && ("object" == typeof t || "function" == typeof t)) { var n = t.then; if ("function" == typeof n) return void n.call(t, function(t) { u(e, t) }, i) } c[e] = t, 0 == --a && o(c) } catch (r) { i(r) } } for (var t = 0; t < c.length; t++) u(t, c[t]) }) }, t.resolve = function(e) { return e && "object" == typeof e && e.constructor === t ? e : new t(function(t) { t(e) }) }, t.reject = function(n) { return new t(function(t, e) { e(n) }) }, t.race = function(o) { return new t(function(t, e) { for (var n = 0, r = o.length; n < r; n++) o[n].then(t, e) }) }, t }(), s = function(t) { return function() { return t } }, f = function(i) { for (var t = [], e = 1; e < arguments.length; e++) t[e - 1] = arguments[e]; for (var a = new Array(arguments.length - 1), n = 1; n < arguments.length; n++) a[n - 1] = arguments[n]; return function() { for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]; for (var n = new Array(arguments.length), r = 0; r < n.length; r++) n[r] = arguments[r]; var o = a.concat(n); return i.apply(null, o) } }, d = s(!1), m = s(!0), y = d, v = m, b = function() { return w }, w = (l = { fold: function(t, e) { return t() }, is: y, isSome: y, isNone: v, getOr: c = function(t) { return t }, getOrThunk: u = function(t) { return t() }, getOrDie: function(t) { throw new Error(t || "error: getOrDie called on none.") }, getOrNull: function() { return null }, getOrUndefined: function() { return undefined }, or: c, orThunk: u, map: b, ap: b, each: function() {}, bind: b, flatten: b, exists: y, forall: v, filter: b, equals: a = function(t) { return t.isNone() }, equals_: a, toArray: function() { return [] }, toString: s("none()") }, Object.freeze && Object.freeze(l), l), x = function(n) { var t = function() { return n }, e = function() { return o }, r = function(t) { return t(n) }, o = { fold: function(t, e) { return e(n) }, is: function(t) { return n === t }, isSome: v, isNone: y, getOr: t, getOrThunk: t, getOrDie: t, getOrNull: t, getOrUndefined: t, or: e, orThunk: e, map: function(t) { return x(t(n)) }, ap: function(t) { return t.fold(b, function(t) { return x(t(n)) }) }, each: function(t) { t(n) }, bind: r, flatten: t, exists: r, forall: r, filter: function(t) { return t(n) ? o : w }, equals: function(t) { return t.is(n) }, equals_: function(t, e) { return t.fold(y, function(t) { return e(n, t) }) }, toArray: function() { return [n] }, toString: function() { return "some(" + n + ")" } }; return o }, I = { some: x, none: b, from: function(t) { return null === t || t === undefined ? w : x(t) } }, T = "undefined" != typeof window ? window : Function("return this;")(), R = function(t, e) { return function(t, e) { for (var n = e !== undefined && null !== e ? e : T, r = 0; r < t.length && n !== undefined && null !== n; ++r) n = n[t[r]]; return n }(t.split("."), e) }, S = { getOrDie: function(t, e) { var n = R(t, e); if (n === undefined || null === n) throw t + " not available on this browser"; return n } }; function O() { return new(S.getOrDie("FileReader")) } var F = { atob: function(t) { return S.getOrDie("atob")(t) }, requestAnimationFrame: function(t) { S.getOrDie("requestAnimationFrame")(t) } }; function C(u) { return new g(function(t, e) { var n = URL.createObjectURL(u), r = new Image, o = function() { r.removeEventListener("load", i), r.removeEventListener("error", a) }; function i() { o(), t(r) } function a() { o(), e("Unable to load data of type " + u.type + ": " + n) } r.addEventListener("load", i), r.addEventListener("error", a), r.src = n, r.complete && i() }) } function E(r) { return new g(function(t, n) { var e = new XMLHttpRequest; e.open("GET", r, !0), e.responseType = "blob", e.onload = function() { 200 == this.status && t(this.response) }, e.onerror = function() { var t, e = this; n(0 === this.status ? ((t = new Error("No access to download image")).code = 18, t.name = "SecurityError", t) : new Error("Error " + e.status + " downloading image")) }, e.send() }) } function D(t) { var e = t.split(","), n = /data:([^;]+)/.exec(e[0]); if (!n) return I.none(); for (var r, o, i, a = n[1], u = e[1], c = F.atob(u), l = c.length, s = Math.ceil(l / 1024), f = new Array(s), d = 0; d < s; ++d) { for (var h = 1024 * d, p = Math.min(h + 1024, l), g = new Array(p - h), m = h, y = 0; m < p; ++y, ++m) g[y] = c[m].charCodeAt(0); f[d] = (r = g, new(S.getOrDie("Uint8Array"))(r)) } return I.some((o = f, i = { type: a }, new(S.getOrDie("Blob"))(o, i))) } function A(n) { return new g(function(t, e) { D(n).fold(function() { e("uri is not base64: " + n) }, t) }) } function _(n) { return new g(function(t) { var e = new O; e.onloadend = function() { t(e.result) }, e.readAsDataURL(n) }) } var k = { blobToImage: C, imageToBlob: function(t) { var e = t.src; return 0 === e.indexOf("data:") ? A(e) : E(e) }, blobToArrayBuffer: function(n) { return new g(function(t) { var e = new O; e.onloadend = function() { t(e.result) }, e.readAsArrayBuffer(n) }) }, blobToDataUri: _, blobToBase64: function(t) { return _(t).then(function(t) { return t.split(",")[1] }) }, dataUriToBlobSync: D, canvasToBlob: function(t, n, r) { return n = n || "image/png", HTMLCanvasElement.prototype.toBlob ? new g(function(e) { t.toBlob(function(t) { e(t) }, n, r) }) : A(t.toDataURL(n, r)) }, canvasToDataURL: function(t, e, n) { return e = e || "image/png", t.then(function(t) { return t.toDataURL(e, n) }) }, blobToCanvas: function(t) { return C(t).then(function(t) { var e, n; return e = t, URL.revokeObjectURL(e.src), n = h.create(p.getWidth(t), p.getHeight(t)), h.get2dContext(n).drawImage(t, 0, 0), n }) }, uriToBlob: function(t) { return 0 === t.indexOf("blob:") ? E(t) : 0 === t.indexOf("data:") ? A(t) : null } }, L = function(t) { return k.blobToImage(t) }, P = function(t) { return k.imageToBlob(t) }; function B(t, e, n) { var r = e.type; function o(e, n) { return t.then(function(t) { return k.canvasToDataURL(t, e, n) }) } return { getType: s(r), toBlob: function() { return g.resolve(e) }, toDataURL: function() { return n }, toBase64: function() { return n.split(",")[1] }, toAdjustedBlob: function(e, n) { return t.then(function(t) { return k.canvasToBlob(t, e, n) }) }, toAdjustedDataURL: o, toAdjustedBase64: function(t, e) { return o(t, e).then(function(t) { return t.split(",")[1] }) }, toCanvas: function() { return t.then(h.clone) } } } function H(e) { return k.blobToDataUri(e).then(function(t) { return B(k.blobToCanvas(e), e, t) }) } var M = { fromBlob: H, fromCanvas: function(e, t) { return k.canvasToBlob(e, t).then(function(t) { return B(g.resolve(e), t, e.toDataURL()) }) }, fromImage: function(t) { return k.imageToBlob(t).then(function(t) { return H(t) }) }, fromBlobAndUrlSync: function(t, e) { return B(k.blobToCanvas(t), t, e) } }; function N(t, e, n) { return n < (t = parseFloat(t)) ? t = n : t < e && (t = e), t } var U = [0, .01, .02, .04, .05, .06, .07, .08, .1, .11, .12, .14, .15, .16, .17, .18, .2, .21, .22, .24, .25, .27, .28, .3, .32, .34, .36, .38, .4, .42, .44, .46, .48, .5, .53, .56, .59, .62, .65, .68, .71, .74, .77, .8, .83, .86, .89, .92, .95, .98, 1, 1.06, 1.12, 1.18, 1.24, 1.3, 1.36, 1.42, 1.48, 1.54, 1.6, 1.66, 1.72, 1.78, 1.84, 1.9, 1.96, 2, 2.12, 2.25, 2.37, 2.5, 2.62, 2.75, 2.87, 3, 3.2, 3.4, 3.6, 3.8, 4, 4.3, 4.7, 4.9, 5, 5.5, 6, 6.5, 6.8, 7, 7.3, 7.5, 7.8, 8, 8.4, 8.7, 9, 9.4, 9.6, 9.8, 10]; function j(t, e) { var n, r, o, i, a = [], u = new Array(10); for (n = 0; n < 5; n++) { for (r = 0; r < 5; r++) a[r] = e[r + 5 * n]; for (r = 0; r < 5; r++) { for (o = i = 0; o < 5; o++) i += t[r + 5 * o] * a[o]; u[r + 5 * n] = i } } return u } function G(t, n) { return n = N(n, 0, 1), t.map(function(t, e) { return e % 6 == 0 ? t = 1 - (1 - t) * n : t *= n, N(t, 0, 1) }) } var z = { identity: function() { return [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1] }, adjust: G, multiply: j, adjustContrast: function(t, e) { var n; return e = N(e, -1, 1), j(t, [(n = (e *= 100) < 0 ? 127 + e / 100 * 127 : 127 * (n = 0 == (n = e % 1) ? U[e] : U[Math.floor(e)] * (1 - n) + U[Math.floor(e) + 1] * n) + 127) / 127, 0, 0, 0, .5 * (127 - n), 0, n / 127, 0, 0, .5 * (127 - n), 0, 0, n / 127, 0, .5 * (127 - n), 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]) }, adjustBrightness: function(t, e) { return j(t, [1, 0, 0, 0, e = N(255 * e, -255, 255), 0, 1, 0, 0, e, 0, 0, 1, 0, e, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]) }, adjustSaturation: function(t, e) { var n; return j(t, [.3086 * (1 - (n = 1 + (0 < (e = N(e, -1, 1)) ? 3 * e : e))) + n, .6094 * (1 - n), .082 * (1 - n), 0, 0, .3086 * (1 - n), .6094 * (1 - n) + n, .082 * (1 - n), 0, 0, .3086 * (1 - n), .6094 * (1 - n), .082 * (1 - n) + n, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]) }, adjustHue: function(t, e) { var n, r, o, i, a; return e = N(e, -180, 180) / 180 * Math.PI, j(t, [(o = .213) + .787 * (n = Math.cos(e)) + (r = Math.sin(e)) * -o, (i = .715) + n * -i + r * -i, (a = .072) + n * -a + .928 * r, 0, 0, o + n * -o + .143 * r, i + n * (1 - i) + .14 * r, a + n * -a + -.283 * r, 0, 0, o + n * -o + -.787 * r, i + n * -i + r * i, a + .928 * n + r * a, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]) }, adjustColors: function(t, e, n, r) { return j(t, [e = N(e, 0, 2), 0, 0, 0, 0, 0, n = N(n, 0, 2), 0, 0, 0, 0, 0, r = N(r, 0, 2), 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]) }, adjustSepia: function(t, e) { return j(t, G([.393, .769, .189, 0, 0, .349, .686, .168, 0, 0, .272, .534, .131, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], e = N(e, 0, 1))) }, adjustGrayscale: function(t, e) { return j(t, G([.33, .34, .33, 0, 0, .33, .34, .33, 0, 0, .33, .34, .33, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1], e = N(e, 0, 1))) } }; function V(a, u) { return a.toCanvas().then(function(t) { return e = t, n = a.getType(), r = u, i = h.get2dContext(e), o = function(t, e) { var n, r, o, i, a, u = t.data, c = e[0], l = e[1], s = e[2], f = e[3], d = e[4], h = e[5], p = e[6], g = e[7], m = e[8], y = e[9], v = e[10], b = e[11], w = e[12], x = e[13], I = e[14], T = e[15], R = e[16], S = e[17], O = e[18], F = e[19]; for (a = 0; a < u.length; a += 4) n = u[a], r = u[a + 1], o = u[a + 2], i = u[a + 3], u[a] = n * c + r * l + o * s + i * f + d, u[a + 1] = n * h + r * p + o * g + i * m + y, u[a + 2] = n * v + r * b + o * w + i * x + I, u[a + 3] = n * T + r * R + o * S + i * O + F; return t }(i.getImageData(0, 0, e.width, e.height), r), i.putImageData(o, 0, 0), M.fromCanvas(e, n); var e, n, r, o, i }) } function W(u, c) { return u.toCanvas().then(function(t) { return e = t, n = u.getType(), r = c, a = h.get2dContext(e), o = a.getImageData(0, 0, e.width, e.height), i = a.getImageData(0, 0, e.width, e.height), i = function(t, e, n) { var r, o, i, a, u, c, l, s, f, d, h, p, g, m, y, v, b; function w(t, e, n) { return n < t ? t = n : t < e && (t = e), t } for (i = Math.round(Math.sqrt(n.length)), a = Math.floor(i / 2), r = t.data, o = e.data, v = t.width, b = t.height, c = 0; c < b; c++) for (u = 0; u < v; u++) { for (l = s = f = 0, h = 0; h < i; h++) for (d = 0; d < i; d++) p = w(u + d - a, 0, v - 1), g = w(c + h - a, 0, b - 1), m = 4 * (g * v + p), y = n[h * i + d], l += r[m] * y, s += r[m + 1] * y, f += r[m + 2] * y; o[m = 4 * (c * v + u)] = w(l, 0, 255), o[m + 1] = w(s, 0, 255), o[m + 2] = w(f, 0, 255) } return e }(o, i, r), a.putImageData(i, 0, 0), M.fromCanvas(e, n); var e, n, r, o, i, a }) } function q(u) { return function(e, n) { return e.toCanvas().then(function(t) { return function(t, e, n) { var r, o, i = h.get2dContext(t), a = new Array(256); for (o = 0; o < a.length; o++) a[o] = u(o, n); return r = function(t, e) { var n, r = t.data; for (n = 0; n < r.length; n += 4) r[n] = e[r[n]], r[n + 1] = e[r[n + 1]], r[n + 2] = e[r[n + 2]]; return t }(i.getImageData(0, 0, t.width, t.height), a), i.putImageData(r, 0, 0), M.fromCanvas(t, e) }(t, e.getType(), n) }) } } function Y(n) { return function(t, e) { return V(t, n(z.identity(), e)) } } function X(e) { return function(t) { return W(t, e) } } var J, K = { invert: (J = [-1, 0, 0, 0, 255, 0, -1, 0, 0, 255, 0, 0, -1, 0, 255, 0, 0, 0, 1, 0], function(t) { return V(t, J) }), brightness: Y(z.adjustBrightness), hue: Y(z.adjustHue), saturate: Y(z.adjustSaturation), contrast: Y(z.adjustContrast), grayscale: Y(z.adjustGrayscale), sepia: Y(z.adjustSepia), colorize: function(t, e, n, r) { return V(t, z.adjustColors(z.identity(), e, n, r)) }, sharpen: X([0, -1, 0, -1, 5, -1, 0, -1, 0]), emboss: X([-2, -1, 0, -1, 1, 1, 0, 1, 2]), gamma: q(function(t, e) { return 255 * Math.pow(t / 255, 1 - e) }), exposure: q(function(t, e) { return 255 * (1 - Math.exp(-t / 255 * e)) }), colorFilter: V, convoluteFilter: W }, Z = { scale: function e(t, n, r) { var o = p.getWidth(t), i = p.getHeight(t), a = n / o, u = r / i, c = !1; (a < .5 || 2 < a) && (a = a < .5 ? .5 : 2, c = !0), (u < .5 || 2 < u) && (u = u < .5 ? .5 : 2, c = !0); var l, s, f, d = (l = t, s = a, f = u, new g(function(t) { var e = p.getWidth(l), n = p.getHeight(l), r = Math.floor(e * s), o = Math.floor(n * f), i = h.create(r, o), a = h.get2dContext(i); a.drawImage(l, 0, 0, e, n, 0, 0, r, o), t(i) })); return c ? d.then(function(t) { return e(t, n, r) }) : d } }, Q = { rotate: function(c, l) { return c.toCanvas().then(function(t) { return e = t, n = c.getType(), r = l, o = h.create(e.width, e.height), i = h.get2dContext(o), 90 != (r = r < (u = a = 0) ? 360 + r : r) && 270 != r || h.resize(o, o.height, o.width), 90 != r && 180 != r || (a = o.width), 270 != r && 180 != r || (u = o.height), i.translate(a, u), i.rotate(r * Math.PI / 180), i.drawImage(e, 0, 0), M.fromCanvas(o, n); var e, n, r, o, i, a, u }) }, flip: function(a, u) { return a.toCanvas().then(function(t) { return e = t, n = a.getType(), r = u, o = h.create(e.width, e.height), i = h.get2dContext(o), "v" == r ? (i.scale(1, -1), i.drawImage(e, 0, -o.height)) : (i.scale(-1, 1), i.drawImage(e, -o.width, 0)), M.fromCanvas(o, n); var e, n, r, o, i }) }, crop: function(c, l, s, f, d) { return c.toCanvas().then(function(t) { return e = t, n = c.getType(), r = l, o = s, i = f, a = d, u = h.create(i, a), h.get2dContext(u).drawImage(e, -r, -o), M.fromCanvas(u, n); var e, n, r, o, i, a, u }) }, resize: function(e, n, r) { return e.toCanvas().then(function(t) { return Z.scale(t, n, r).then(function(t) { return M.fromCanvas(t, e.getType()) }) }) } }, tt = function() { function t(t) { this.littleEndian = !1, this._dv = new DataView(t) } return t.prototype.readByteAt = function(t) { return this._dv.getUint8(t) }, t.prototype.read = function(t, e) { if (t + e > this.length()) return null; for (var n = this.littleEndian ? 0 : -8 * (e - 1), r = 0, o = 0; r < e; r++) o |= this.readByteAt(t + r) << Math.abs(n + 8 * r); return o }, t.prototype.BYTE = function(t) { return this.read(t, 1) }, t.prototype.SHORT = function(t) { return this.read(t, 2) }, t.prototype.LONG = function(t) { return this.read(t, 4) }, t.prototype.SLONG = function(t) { var e = this.read(t, 4); return 2147483647 < e ? e - 4294967296 : e }, t.prototype.CHAR = function(t) { return String.fromCharCode(this.read(t, 1)) }, t.prototype.STRING = function(t, e) { return this.asArray("CHAR", t, e).join("") }, t.prototype.SEGMENT = function(t, e) { var n = this._dv.buffer; switch (arguments.length) { case 2: return n.slice(t, t + e); case 1: return n.slice(t); default: return n } }, t.prototype.asArray = function(t, e, n) { for (var r = [], o = 0; o < n; o++) r[o] = this[t](e + o); return r }, t.prototype.length = function() { return this._dv ? this._dv.byteLength : 0 }, t }(), et = { 274: "Orientation", 270: "ImageDescription", 271: "Make", 272: "Model", 305: "Software", 34665: "ExifIFDPointer", 34853: "GPSInfoIFDPointer" }, nt = { 36864: "ExifVersion", 40961: "ColorSpace", 40962: "PixelXDimension", 40963: "PixelYDimension", 36867: "DateTimeOriginal", 33434: "ExposureTime", 33437: "FNumber", 34855: "ISOSpeedRatings", 37377: "ShutterSpeedValue", 37378: "ApertureValue", 37383: "MeteringMode", 37384: "LightSource", 37385: "Flash", 37386: "FocalLength", 41986: "ExposureMode", 41987: "WhiteBalance", 41990: "SceneCaptureType", 41988: "DigitalZoomRatio", 41992: "Contrast", 41993: "Saturation", 41994: "Sharpness" }, rt = { 0: "GPSVersionID", 1: "GPSLatitudeRef", 2: "GPSLatitude", 3: "GPSLongitudeRef", 4: "GPSLongitude" }, ot = { 513: "JPEGInterchangeFormat", 514: "JPEGInterchangeFormatLength" }, it = { ColorSpace: { 1: "sRGB", 0: "Uncalibrated" }, MeteringMode: { 0: "Unknown", 1: "Average", 2: "CenterWeightedAverage", 3: "Spot", 4: "MultiSpot", 5: "Pattern", 6: "Partial", 255: "Other" }, LightSource: { 1: "Daylight", 2: "Fliorescent", 3: "Tungsten", 4: "Flash", 9: "Fine weather", 10: "Cloudy weather", 11: "Shade", 12: "Daylight fluorescent (D 5700 - 7100K)", 13: "Day white fluorescent (N 4600 -5400K)", 14: "Cool white fluorescent (W 3900 - 4500K)", 15: "White fluorescent (WW 3200 - 3700K)", 17: "Standard light A", 18: "Standard light B", 19: "Standard light C", 20: "D55", 21: "D65", 22: "D75", 23: "D50", 24: "ISO studio tungsten", 255: "Other" }, Flash: { 0: "Flash did not fire", 1: "Flash fired", 5: "Strobe return light not detected", 7: "Strobe return light detected", 9: "Flash fired, compulsory flash mode", 13: "Flash fired, compulsory flash mode, return light not detected", 15: "Flash fired, compulsory flash mode, return light detected", 16: "Flash did not fire, compulsory flash mode", 24: "Flash did not fire, auto mode", 25: "Flash fired, auto mode", 29: "Flash fired, auto mode, return light not detected", 31: "Flash fired, auto mode, return light detected", 32: "No flash function", 65: "Flash fired, red-eye reduction mode", 69: "Flash fired, red-eye reduction mode, return light not detected", 71: "Flash fired, red-eye reduction mode, return light detected", 73: "Flash fired, compulsory flash mode, red-eye reduction mode", 77: "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected", 79: "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected", 89: "Flash fired, auto mode, red-eye reduction mode", 93: "Flash fired, auto mode, return light not detected, red-eye reduction mode", 95: "Flash fired, auto mode, return light detected, red-eye reduction mode" }, ExposureMode: { 0: "Auto exposure", 1: "Manual exposure", 2: "Auto bracket" }, WhiteBalance: { 0: "Auto white balance", 1: "Manual white balance" }, SceneCaptureType: { 0: "Standard", 1: "Landscape", 2: "Portrait", 3: "Night scene" }, Contrast: { 0: "Normal", 1: "Soft", 2: "Hard" }, Saturation: { 0: "Normal", 1: "Low saturation", 2: "High saturation" }, Sharpness: { 0: "Normal", 1: "Soft", 2: "Hard" }, GPSLatitudeRef: { N: "North latitude", S: "South latitude" }, GPSLongitudeRef: { E: "East longitude", W: "West longitude" } }, at = function() { function t(t) { this._offsets = { tiffHeader: 10, IFD0: null, IFD1: null, exifIFD: null, gpsIFD: null }, this._tiffTags = {}; var e = this; if (e._reader = new tt(t), e._idx = e._offsets.tiffHeader, 65505 !== e.SHORT(0) || "EXIF\0" !== e.STRING(4, 5).toUpperCase()) throw new Error("Exif data cannot be read or not available."); if (e._reader.littleEndian = 18761 == e.SHORT(e._idx), 42 !== e.SHORT(e._idx += 2)) throw new Error("Invalid Exif data."); e._offsets.IFD0 = e._offsets.tiffHeader + e.LONG(e._idx += 2), e._tiffTags = e.extractTags(e._offsets.IFD0, et), "ExifIFDPointer" in e._tiffTags && (e._offsets.exifIFD = e._offsets.tiffHeader + e._tiffTags.ExifIFDPointer, delete e._tiffTags.ExifIFDPointer), "GPSInfoIFDPointer" in e._tiffTags && (e._offsets.gpsIFD = e._offsets.tiffHeader + e._tiffTags.GPSInfoIFDPointer, delete e._tiffTags.GPSInfoIFDPointer); var n = e.LONG(e._offsets.IFD0 + 12 * e.SHORT(e._offsets.IFD0) + 2); n && (e._offsets.IFD1 = e._offsets.tiffHeader + n) } return t.prototype.BYTE = function(t) { return this._reader.BYTE(t) }, t.prototype.SHORT = function(t) { return this._reader.SHORT(t) }, t.prototype.LONG = function(t) { return this._reader.LONG(t) }, t.prototype.SLONG = function(t) { return this._reader.SLONG(t) }, t.prototype.CHAR = function(t) { return this._reader.CHAR(t) }, t.prototype.STRING = function(t, e) { return this._reader.STRING(t, e) }, t.prototype.SEGMENT = function(t, e) { return this._reader.SEGMENT(t, e) }, t.prototype.asArray = function(t, e, n) { for (var r = [], o = 0; o < n; o++) r[o] = this[t](e + o); return r }, t.prototype.length = function() { return this._reader.length() }, t.prototype.UNDEFINED = function() { return this.BYTE.apply(this, arguments) }, t.prototype.RATIONAL = function(t) { return this.LONG(t) / this.LONG(t + 4) }, t.prototype.SRATIONAL = function(t) { return this.SLONG(t) / this.SLONG(t + 4) }, t.prototype.ASCII = function(t) { return this.CHAR(t) }, t.prototype.TIFF = function() { return this._tiffTags }, t.prototype.EXIF = function() { var t = null; if (this._offsets.exifIFD) { try { t = this.extractTags(this._offsets.exifIFD, nt) } catch (r) { return null } if (t.ExifVersion && Array.isArray(t.ExifVersion)) { for (var e = 0, n = ""; e < t.ExifVersion.length; e++) n += String.fromCharCode(t.ExifVersion[e]); t.ExifVersion = n } } return t }, t.prototype.GPS = function() { var t = null; if (this._offsets.gpsIFD) { try { t = this.extractTags(this._offsets.gpsIFD, rt) } catch (e) { return null } t.GPSVersionID && Array.isArray(t.GPSVersionID) && (t.GPSVersionID = t.GPSVersionID.join(".")) } return t }, t.prototype.thumb = function() { var t = this; if (t._offsets.IFD1) try { var e = t.extractTags(t._offsets.IFD1, ot); if ("JPEGInterchangeFormat" in e) return t.SEGMENT(t._offsets.tiffHeader + e.JPEGInterchangeFormat, e.JPEGInterchangeFormatLength) } catch (n) {} return null }, t.prototype.extractTags = function(t, e) { var n, r, o, i, a, u, c, l, s = this, f = [], d = {}, h = { 1: "BYTE", 7: "UNDEFINED", 2: "ASCII", 3: "SHORT", 4: "LONG", 5: "RATIONAL", 9: "SLONG", 10: "SRATIONAL" }, p = { BYTE: 1, UNDEFINED: 1, ASCII: 1, SHORT: 2, LONG: 4, RATIONAL: 8, SLONG: 4, SRATIONAL: 8 }; for (n = s.SHORT(t), r = 0; r < n; r++) if (f = [], c = t + 2 + 12 * r, (o = e[s.SHORT(c)]) !== undefined) { if (i = h[s.SHORT(c += 2)], a = s.LONG(c += 2), !(u = p[i])) throw new Error("Invalid Exif data."); if (c += 4, 4 < u * a && (c = s.LONG(c) + s._offsets.tiffHeader), c + u * a >= s.length()) throw new Error("Invalid Exif data."); "ASCII" !== i ? (f = s.asArray(i, c, a), l = 1 == a ? f[0] : f, it.hasOwnProperty(o) && "object" != typeof l ? d[o] = it[o][l] : d[o] = l) : d[o] = s.STRING(c, a).replace(/\0$/, "").trim() } return d }, t }(), ut = function(t) { var e, n, r = [], o = 0; for (e = 2; e <= t.length();) if (65488 <= (n = t.SHORT(e)) && n <= 65495) e += 2; else { if (65498 === n || 65497 === n) break; o = t.SHORT(e + 2) + 2, 65505 <= n && n <= 65519 && r.push({ hex: n, name: "APP" + (15 & n), start: e, length: o, segment: t.SEGMENT(e, o) }), e += o } return r }, ct = function(u) { return k.blobToArrayBuffer(u).then(function(t) { try { var e = new tt(t); if (65496 === e.SHORT(0)) { var n = ut(e), r = n.filter(function(t) { return "APP1" === t.name }), o = {}; if (!r.length) return g.reject("Headers did not include required information"); var i = new at(r[0].segment); return (o = { tiff: i.TIFF(), exif: i.EXIF(), gps: i.GPS(), thumb: i.thumb() }).rawHeaders = n, o } return g.reject("Image was not a jpeg") } catch (a) { return g.reject("Unsupported format or not an image: " + u.type + " (Exception: " + a.message + ")") } }) }, lt = function(t, e) { return Q.rotate(t, e) }, st = { invert: function(t) { return K.invert(t) }, sharpen: function(t) { return K.sharpen(t) }, emboss: function(t) { return K.emboss(t) }, brightness: function(t, e) { return K.brightness(t, e) }, hue: function(t, e) { return K.hue(t, e) }, saturate: function(t, e) { return K.saturate(t, e) }, contrast: function(t, e) { return K.contrast(t, e) }, grayscale: function(t, e) { return K.grayscale(t, e) }, sepia: function(t, e) { return K.sepia(t, e) }, colorize: function(t, e, n, r) { return K.colorize(t, e, n, r) }, gamma: function(t, e) { return K.gamma(t, e) }, exposure: function(t, e) { return K.exposure(t, e) }, flip: function(t, e) { return Q.flip(t, e) }, crop: function(t, e, n, r, o) { return Q.crop(t, e, n, r, o) }, resize: function(t, e, n) { return Q.resize(t, e, n) }, rotate: lt, exifRotate: function(e) { return e.toBlob().then(ct).then(function(t) { switch (t.tiff.Orientation) { case 6: return lt(e, 90); case 3: return lt(e, 180); case 8: return lt(e, 270); default: return e } }, function() { return e }) } }, ft = function(t) { return t.toBlob() }, dt = { blobToImageResult: function(t) { return M.fromBlob(t) }, fromBlobAndUrlSync: function(t, e) { return M.fromBlobAndUrlSync(t, e) }, imageToImageResult: function(t) { return M.fromImage(t) }, imageResultToBlob: function(t, e, n) { return e === undefined && n === undefined ? ft(t) : t.toAdjustedBlob(e, n) }, imageResultToOriginalBlob: ft, imageResultToDataURL: function(t) { return t.toDataURL() } }, ht = function() { return S.getOrDie("URL") }, pt = { createObjectURL: function(t) { return ht().createObjectURL(t) }, revokeObjectURL: function(t) { ht().revokeObjectURL(t) } }, gt = tinymce.util.Tools.resolve("tinymce.util.Delay"), mt = tinymce.util.Tools.resolve("tinymce.util.Promise"), yt = tinymce.util.Tools.resolve("tinymce.util.URI"), vt = tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"), bt = tinymce.util.Tools.resolve("tinymce.ui.Factory"), wt = tinymce.util.Tools.resolve("tinymce.geom.Rect"), xt = function(n) { return new mt(function(t) { var e = function() { n.removeEventListener("load", e), t(n) }; n.complete ? t(n) : n.addEventListener("load", e) }) }, It = tinymce.util.Tools.resolve("tinymce.dom.DomQuery"), Tt = tinymce.util.Tools.resolve("tinymce.util.Observable"), Rt = tinymce.util.Tools.resolve("tinymce.util.VK"), St = 0, Ot = { create: function(t) { return new(bt.get("Control").extend({ Defaults: { classes: "imagepanel" }, selection: function(t) { return arguments.length ? (this.state.set("rect", t), this) : this.state.get("rect") }, imageSize: function() { var t = this.state.get("viewRect"); return { w: t.w, h: t.h } }, toggleCropRect: function(t) { this.state.set("cropEnabled", t) }, imageSrc: function(t) { var o = this, i = new Image; i.src = t, xt(i).then(function() { var t, e, n = o.state.get("viewRect"); if ((e = o.$el.find("img"))[0]) e.replaceWith(i); else { var r = document.createElement("div"); r.className = "mce-imagepanel-bg", o.getEl().appendChild(r), o.getEl().appendChild(i) } t = { x: 0, y: 0, w: i.naturalWidth, h: i.naturalHeight }, o.state.set("viewRect", t), o.state.set("rect", wt.inflate(t, -20, -20)), n && n.w === t.w && n.h === t.h || o.zoomFit(), o.repaintImage(), o.fire("load") }) }, zoom: function(t) { return arguments.length ? (this.state.set("zoom", t), this) : this.state.get("zoom") }, postRender: function() { return this.imageSrc(this.settings.imageSrc), this._super() }, zoomFit: function() { var t, e, n, r, o, i; t = this.$el.find("img"), e = this.getEl().clientWidth, n = this.getEl().clientHeight, r = t[0].naturalWidth, o = t[0].naturalHeight, 1 <= (i = Math.min((e - 10) / r, (n - 10) / o)) && (i = 1), this.zoom(i) }, repaintImage: function() { var t, e, n, r, o, i, a, u, c, l, s; s = this.getEl(), c = this.zoom(), l = this.state.get("rect"), a = this.$el.find("img"), u = this.$el.find(".mce-imagepanel-bg"), o = s.offsetWidth, i = s.offsetHeight, n = a[0].naturalWidth * c, r = a[0].naturalHeight * c, t = Math.max(0, o / 2 - n / 2), e = Math.max(0, i / 2 - r / 2), a.css({ left: t, top: e, width: n, height: r }), u.css({ left: t, top: e, width: n, height: r }), this.cropRect && (this.cropRect.setRect({ x: l.x * c + t, y: l.y * c + e, w: l.w * c, h: l.h * c }), this.cropRect.setClampRect({ x: t, y: e, w: n, h: r }), this.cropRect.setViewPortRect({ x: 0, y: 0, w: o, h: i })) }, bindStates: function() { var r = this; function n(t) { r.cropRect = function(l, n, s, r, o) { var f, a, t, i, e = "mce-", u = e + "crid-" + St++; function d(t, e) { return { x: e.x - t.x, y: e.y - t.y, w: e.w, h: e.h } } function c(t, e, n, r) { var o, i, a, u, c; o = e.x, i = e.y, a = e.w, u = e.h, o += n * t.deltaX, i += r * t.deltaY, (a += n * t.deltaW) < 20 && (a = 20), (u += r * t.deltaH) < 20 && (u = 20), c = l = wt.clamp({ x: o, y: i, w: a, h: u }, s, "move" === t.name), c = d(s, c), f.fire("updateRect", { rect: c }), g(c) } function h(e) { function t(t, e) { e.h < 0 && (e.h = 0), e.w < 0 && (e.w = 0), It("#" + u + "-" + t, r).css({ left: e.x, top: e.y, width: e.w, height: e.h }) } $.each(a, function(t) { It("#" + u + "-" + t.name, r).css({ left: e.w * t.xMul + e.x, top: e.h * t.yMul + e.y }) }), t("top", { x: n.x, y: n.y, w: n.w, h: e.y - n.y }), t("right", { x: e.x + e.w, y: e.y, w: n.w - e.x - e.w + n.x, h: e.h }), t("bottom", { x: n.x, y: e.y + e.h, w: n.w, h: n.h - e.y - e.h + n.y }), t("left", { x: n.x, y: e.y, w: e.x - n.x, h: e.h }), t("move", e) } function p(t) { h(l = t) } function g(t) { var e, n; p((e = s, { x: (n = t).x + e.x, y: n.y + e.y, w: n.w, h: n.h })) } return a = [{ name: "move", xMul: 0, yMul: 0, deltaX: 1, deltaY: 1, deltaW: 0, deltaH: 0, label: "Crop Mask" }, { name: "nw", xMul: 0, yMul: 0, deltaX: 1, deltaY: 1, deltaW: -1, deltaH: -1, label: "Top Left Crop Handle" }, { name: "ne", xMul: 1, yMul: 0, deltaX: 0, deltaY: 1, deltaW: 1, deltaH: -1, label: "Top Right Crop Handle" }, { name: "sw", xMul: 0, yMul: 1, deltaX: 1, deltaY: 0, deltaW: -1, deltaH: 1, label: "Bottom Left Crop Handle" }, { name: "se", xMul: 1, yMul: 1, deltaX: 0, deltaY: 0, deltaW: 1, deltaH: 1, label: "Bottom Right Crop Handle" }], i = ["top", "right", "bottom", "left"], It('
    ').appendTo(r), $.each(i, function(t) { It("#" + u, r).append('