/** * TinyMCE version 7.1.0 (2024-05-08) */ !(function () { "use strict"; var e = function (e) { if (null === e) return "null"; if (void 0 === e) return "undefined"; var t = typeof e; return "object" === t && (Array.prototype.isPrototypeOf(e) || (e.constructor && "Array" === e.constructor.name)) ? "array" : "object" === t && (String.prototype.isPrototypeOf(e) || (e.constructor && "String" === e.constructor.name)) ? "string" : t; }, t = function (e) { return {eq: e}; }, n = t(function (e, t) { return e === t; }), o = function (e) { return t(function (t, n) { if (t.length !== n.length) return !1; for (var o = t.length, r = 0; r < o; r++) if (!e.eq(t[r], n[r])) return !1; return !0; }); }, r = function (e) { return t(function (r, s) { var a = Object.keys(r), i = Object.keys(s); if ( !(function (e, n) { return (function (e, n) { return t(function (t, o) { return e.eq(n(t), n(o)); }); })(o(e), function (e) { return (function (e, t) { return Array.prototype.slice.call(e).sort(t); })(e, n); }); })(n).eq(a, i) ) return !1; for (var l = a.length, d = 0; d < l; d++) { var c = a[d]; if (!e.eq(r[c], s[c])) return !1; } return !0; }); }, s = t(function (t, n) { if (t === n) return !0; var a = e(t); return ( a === e(n) && ((function (e) { return -1 !== ["undefined", "boolean", "number", "string", "function", "xml", "null"].indexOf(e); })(a) ? t === n : "array" === a ? o(s).eq(t, n) : "object" === a && r(s).eq(t, n)) ); }); const a = Object.getPrototypeOf, i = (e, t, n) => { var o; return !!n(e, t.prototype) || (null === (o = e.constructor) || void 0 === o ? void 0 : o.name) === t.name; }, l = e => t => (e => { const t = typeof e; return null === e ? "null" : "object" === t && Array.isArray(e) ? "array" : "object" === t && i(e, String, (e, t) => t.isPrototypeOf(e)) ? "string" : t; })(t) === e, d = e => t => typeof t === e, c = e => t => e === t, u = (e, t) => f(e) && i(e, t, (e, t) => a(e) === t), m = l("string"), f = l("object"), g = e => u(e, Object), p = l("array"), h = c(null), b = d("boolean"), v = c(void 0), y = e => null == e, C = e => !y(e), w = d("function"), x = d("number"), E = (e, t) => { if (p(e)) { for (let n = 0, o = e.length; n < o; ++n) if (!t(e[n])) return !1; return !0; } return !1; }, k = () => {}, _ = (e, t) => (...n) => e(t.apply(null, n)), S = (e, t) => n => e(t(n)), N = e => () => e, R = e => e, A = (e, t) => e === t; function T(e, ...t) { return (...n) => { const o = t.concat(n); return e.apply(null, o); }; } const O = e => t => !e(t), B = e => () => { throw new Error(e); }, P = e => e(), D = e => { e(); }, L = N(!1), M = N(!0); class I { constructor(e, t) { (this.tag = e), (this.value = t); } static some(e) { return new I(!0, e); } static none() { return I.singletonNone; } fold(e, t) { return this.tag ? t(this.value) : e(); } isSome() { return this.tag; } isNone() { return !this.tag; } map(e) { return this.tag ? I.some(e(this.value)) : I.none(); } bind(e) { return this.tag ? e(this.value) : I.none(); } exists(e) { return this.tag && e(this.value); } forall(e) { return !this.tag || e(this.value); } filter(e) { return !this.tag || e(this.value) ? this : I.none(); } getOr(e) { return this.tag ? this.value : e; } or(e) { return this.tag ? this : e; } getOrThunk(e) { return this.tag ? this.value : e(); } orThunk(e) { return this.tag ? this : e(); } getOrDie(e) { if (this.tag) return this.value; throw new Error(null != e ? e : "Called getOrDie on None"); } static from(e) { return C(e) ? I.some(e) : I.none(); } getOrNull() { return this.tag ? this.value : null; } getOrUndefined() { return this.value; } each(e) { this.tag && e(this.value); } toArray() { return this.tag ? [this.value] : []; } toString() { return this.tag ? `some(${this.value})` : "none()"; } } I.singletonNone = new I(!1); const F = Array.prototype.slice, U = Array.prototype.indexOf, z = Array.prototype.push, j = (e, t) => U.call(e, t), H = (e, t) => j(e, t) > -1, $ = (e, t) => { for (let n = 0, o = e.length; n < o; n++) if (t(e[n], n)) return !0; return !1; }, V = (e, t) => { const n = e.length, o = new Array(n); for (let r = 0; r < n; r++) { const n = e[r]; o[r] = t(n, r); } return o; }, q = (e, t) => { for (let n = 0, o = e.length; n < o; n++) t(e[n], n); }, W = (e, t) => { for (let n = e.length - 1; n >= 0; n--) t(e[n], n); }, K = (e, t) => { const n = [], o = []; for (let r = 0, s = e.length; r < s; r++) { const s = e[r]; (t(s, r) ? n : o).push(s); } return {pass: n, fail: o}; }, Y = (e, t) => { const n = []; for (let o = 0, r = e.length; o < r; o++) { const r = e[o]; t(r, o) && n.push(r); } return n; }, G = (e, t, n) => ( W(e, (e, o) => { n = t(n, e, o); }), n ), X = (e, t, n) => ( q(e, (e, o) => { n = t(n, e, o); }), n ), Z = (e, t, n) => { for (let o = 0, r = e.length; o < r; o++) { const r = e[o]; if (t(r, o)) return I.some(r); if (n(r, o)) break; } return I.none(); }, Q = (e, t) => Z(e, t, L), J = (e, t) => { for (let n = 0, o = e.length; n < o; n++) if (t(e[n], n)) return I.some(n); return I.none(); }, ee = e => { const t = []; for (let n = 0, o = e.length; n < o; ++n) { if (!p(e[n])) throw new Error("Arr.flatten item " + n + " was not an array, input: " + e); z.apply(t, e[n]); } return t; }, te = (e, t) => ee(V(e, t)), ne = (e, t) => { for (let n = 0, o = e.length; n < o; ++n) if (!0 !== t(e[n], n)) return !1; return !0; }, oe = e => { const t = F.call(e, 0); return t.reverse(), t; }, re = (e, t) => Y(e, e => !H(t, e)), se = (e, t) => { const n = {}; for (let o = 0, r = e.length; o < r; o++) { const r = e[o]; n[String(r)] = t(r, o); } return n; }, ae = (e, t) => { const n = F.call(e, 0); return n.sort(t), n; }, ie = (e, t) => (t >= 0 && t < e.length ? I.some(e[t]) : I.none()), le = e => ie(e, 0), de = e => ie(e, e.length - 1), ce = w(Array.from) ? Array.from : e => F.call(e), ue = (e, t) => { for (let n = 0; n < e.length; n++) { const o = t(e[n], n); if (o.isSome()) return o; } return I.none(); }, me = (e, t) => { const n = [], o = w(t) ? e => $(n, n => t(n, e)) : e => H(n, e); for (let t = 0, r = e.length; t < r; t++) { const r = e[t]; o(r) || n.push(r); } return n; }, fe = Object.keys, ge = Object.hasOwnProperty, pe = (e, t) => { const n = fe(e); for (let o = 0, r = n.length; o < r; o++) { const r = n[o]; t(e[r], r); } }, he = (e, t) => be(e, (e, n) => ({k: n, v: t(e, n)})), be = (e, t) => { const n = {}; return ( pe(e, (e, o) => { const r = t(e, o); n[r.k] = r.v; }), n ); }, ve = e => (t, n) => { e[n] = t; }, ye = (e, t, n, o) => { pe(e, (e, r) => { (t(e, r) ? n : o)(e, r); }); }, Ce = (e, t) => { const n = {}; return ye(e, t, ve(n), k), n; }, we = (e, t) => { const n = []; return ( pe(e, (e, o) => { n.push(t(e, o)); }), n ); }, xe = e => we(e, R), Ee = (e, t) => (ke(e, t) ? I.from(e[t]) : I.none()), ke = (e, t) => ge.call(e, t), _e = (e, t) => ke(e, t) && void 0 !== e[t] && null !== e[t], Se = e => { const t = {}; return ( q(e, e => { t[e] = {}; }), fe(t) ); }, Ne = e => void 0 !== e.length, Re = Array.isArray, Ae = (e, t, n) => { if (!e) return !1; if (((n = n || e), Ne(e))) { for (let o = 0, r = e.length; o < r; o++) if (!1 === t.call(n, e[o], o, e)) return !1; } else for (const o in e) if (ke(e, o) && !1 === t.call(n, e[o], o, e)) return !1; return !0; }, Te = (e, t) => { const n = []; return ( Ae(e, (o, r) => { n.push(t(o, r, e)); }), n ); }, Oe = (e, t) => { const n = []; return ( Ae(e, (o, r) => { (t && !t(o, r, e)) || n.push(o); }), n ); }, Be = (e, t, n, o) => { let r = v(n) ? e[0] : n; for (let n = 0; n < e.length; n++) r = t.call(o, r, e[n], n); return r; }, Pe = (e, t, n) => { for (let o = 0, r = e.length; o < r; o++) if (t.call(n, e[o], o, e)) return o; return -1; }, De = e => e[e.length - 1], Le = e => { let t, n = !1; return (...o) => (n || ((n = !0), (t = e.apply(null, o))), t); }, Me = () => Ie(0, 0), Ie = (e, t) => ({major: e, minor: t}), Fe = { nu: Ie, detect: (e, t) => { const n = String(t).toLowerCase(); return 0 === e.length ? Me() : ((e, t) => { const n = ((e, t) => { for (let n = 0; n < e.length; n++) { const o = e[n]; if (o.test(t)) return o; } })(e, t); if (!n) return {major: 0, minor: 0}; const o = e => Number(t.replace(n, "$" + e)); return Ie(o(1), o(2)); })(e, n); }, unknown: Me }, Ue = (e, t) => { const n = String(t).toLowerCase(); return Q(e, e => e.search(n)); }, ze = (e, t, n) => "" === t || (e.length >= t.length && e.substr(n, n + t.length) === t), je = (e, t) => ($e(e, t) ? ((e, t) => e.substring(t))(e, t.length) : e), He = (e, t, n = 0, o) => { const r = e.indexOf(t, n); return -1 !== r && (!!v(o) || r + t.length <= o); }, $e = (e, t) => ze(e, t, 0), Ve = (e, t) => ze(e, t, e.length - t.length), qe = e => t => t.replace(e, ""), We = qe(/^\s+|\s+$/g), Ke = qe(/^\s+/g), Ye = qe(/\s+$/g), Ge = e => e.length > 0, Xe = e => !Ge(e), Ze = (e, t = 10) => { const n = parseInt(e, t); return isNaN(n) ? I.none() : I.some(n); }, Qe = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, Je = e => t => He(t, e), et = [ { name: "Edge", versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/], search: e => He(e, "edge/") && He(e, "chrome") && He(e, "safari") && He(e, "applewebkit") }, { name: "Chromium", brand: "Chromium", versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/, Qe], search: e => He(e, "chrome") && !He(e, "chromeframe") }, { name: "IE", versionRegexes: [/.*?msie\ ?([0-9]+)\.([0-9]+).*/, /.*?rv:([0-9]+)\.([0-9]+).*/], search: e => He(e, "msie") || He(e, "trident") }, {name: "Opera", versionRegexes: [Qe, /.*?opera\/([0-9]+)\.([0-9]+).*/], search: Je("opera")}, {name: "Firefox", versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/], search: Je("firefox")}, { name: "Safari", versionRegexes: [Qe, /.*?cpu os ([0-9]+)_([0-9]+).*/], search: e => (He(e, "safari") || He(e, "mobile/")) && He(e, "applewebkit") } ], tt = [ {name: "Windows", search: Je("win"), versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]}, { name: "iOS", search: e => He(e, "iphone") || He(e, "ipad"), versionRegexes: [ /.*?version\/\ ?([0-9]+)\.([0-9]+).*/, /.*cpu os ([0-9]+)_([0-9]+).*/, /.*cpu iphone os ([0-9]+)_([0-9]+).*/ ] }, {name: "Android", search: Je("android"), versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]}, {name: "macOS", search: Je("mac os x"), versionRegexes: [/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]}, {name: "Linux", search: Je("linux"), versionRegexes: []}, {name: "Solaris", search: Je("sunos"), versionRegexes: []}, {name: "FreeBSD", search: Je("freebsd"), versionRegexes: []}, {name: "ChromeOS", search: Je("cros"), versionRegexes: [/.*?chrome\/([0-9]+)\.([0-9]+).*/]} ], nt = {browsers: N(et), oses: N(tt)}, ot = "Edge", rt = "Chromium", st = "Opera", at = "Firefox", it = "Safari", lt = e => { const t = e.current, n = e.version, o = e => () => t === e; return { current: t, version: n, isEdge: o(ot), isChromium: o(rt), isIE: o("IE"), isOpera: o(st), isFirefox: o(at), isSafari: o(it) }; }, dt = () => lt({current: void 0, version: Fe.unknown()}), ct = lt, ut = (N(ot), N(rt), N("IE"), N(st), N(at), N(it), "Windows"), mt = "Android", ft = "Linux", gt = "macOS", pt = "Solaris", ht = "FreeBSD", bt = "ChromeOS", vt = e => { const t = e.current, n = e.version, o = e => () => t === e; return { current: t, version: n, isWindows: o(ut), isiOS: o("iOS"), isAndroid: o(mt), isMacOS: o(gt), isLinux: o(ft), isSolaris: o(pt), isFreeBSD: o(ht), isChromeOS: o(bt) }; }, yt = () => vt({current: void 0, version: Fe.unknown()}), Ct = vt, wt = (N(ut), N("iOS"), N(mt), N(ft), N(gt), N(pt), N(ht), N(bt), e => window.matchMedia(e).matches); let xt = Le(() => ((e, t, n) => { const o = nt.browsers(), r = nt.oses(), s = t .bind(e => ((e, t) => ue(t.brands, t => { const n = t.brand.toLowerCase(); return Q(e, e => { var t; return n === (null === (t = e.brand) || void 0 === t ? void 0 : t.toLowerCase()); }).map(e => ({current: e.name, version: Fe.nu(parseInt(t.version, 10), 0)})); }))(o, e) ) .orThunk(() => ((e, t) => Ue(e, t).map(e => { const n = Fe.detect(e.versionRegexes, t); return {current: e.name, version: n}; }))(o, e) ) .fold(dt, ct), a = ((e, t) => Ue(e, t).map(e => { const n = Fe.detect(e.versionRegexes, t); return {current: e.name, version: n}; }))(r, e).fold(yt, Ct), i = ((e, t, n, o) => { const r = e.isiOS() && !0 === /ipad/i.test(n), s = e.isiOS() && !r, a = e.isiOS() || e.isAndroid(), i = a || o("(pointer:coarse)"), l = r || (!s && a && o("(min-device-width:768px)")), d = s || (a && !l), c = t.isSafari() && e.isiOS() && !1 === /safari/i.test(n), u = !d && !l && !c; return { isiPad: N(r), isiPhone: N(s), isTablet: N(l), isPhone: N(d), isTouch: N(i), isAndroid: e.isAndroid, isiOS: e.isiOS, isWebView: N(c), isDesktop: N(u) }; })(a, s, e, n); return {browser: s, os: a, deviceType: i}; })(navigator.userAgent, I.from(navigator.userAgentData), wt) ); const Et = () => xt(), kt = navigator.userAgent, _t = Et(), St = _t.browser, Nt = _t.os, Rt = _t.deviceType, At = -1 !== kt.indexOf("Windows Phone"), Tt = { transparentSrc: "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", documentMode: St.isIE() ? document.documentMode || 7 : 10, cacheSuffix: null, container: null, canHaveCSP: !St.isIE(), windowsPhone: At, browser: { current: St.current, version: St.version, isChromium: St.isChromium, isEdge: St.isEdge, isFirefox: St.isFirefox, isIE: St.isIE, isOpera: St.isOpera, isSafari: St.isSafari }, os: { current: Nt.current, version: Nt.version, isAndroid: Nt.isAndroid, isChromeOS: Nt.isChromeOS, isFreeBSD: Nt.isFreeBSD, isiOS: Nt.isiOS, isLinux: Nt.isLinux, isMacOS: Nt.isMacOS, isSolaris: Nt.isSolaris, isWindows: Nt.isWindows }, deviceType: { isDesktop: Rt.isDesktop, isiPad: Rt.isiPad, isiPhone: Rt.isiPhone, isPhone: Rt.isPhone, isTablet: Rt.isTablet, isTouch: Rt.isTouch, isWebView: Rt.isWebView } }, Ot = /^\s*|\s*$/g, Bt = e => (y(e) ? "" : ("" + e).replace(Ot, "")), Pt = function (e, t, n, o) { (o = o || this), e && (n && (e = e[n]), Ae(e, (e, r) => !1 !== t.call(o, e, r, n) && (Pt(e, t, n, o), !0))); }, Dt = { trim: Bt, isArray: Re, is: (e, t) => (t ? !("array" !== t || !Re(e)) || typeof e === t : void 0 !== e), toArray: e => { if (Re(e)) return e; { const t = []; for (let n = 0, o = e.length; n < o; n++) t[n] = e[n]; return t; } }, makeMap: (e, t, n = {}) => { const o = m(e) ? e.split(t || ",") : e || []; let r = o.length; for (; r--; ) n[o[r]] = {}; return n; }, each: Ae, map: Te, grep: Oe, inArray: (e, t) => { if (e) for (let n = 0, o = e.length; n < o; n++) if (e[n] === t) return n; return -1; }, hasOwn: ke, extend: (e, ...t) => { for (let n = 0; n < t.length; n++) { const o = t[n]; for (const t in o) if (ke(o, t)) { const n = o[t]; void 0 !== n && (e[t] = n); } } return e; }, walk: Pt, resolve: (e, t = window) => { const n = e.split("."); for (let e = 0, o = n.length; e < o && (t = t[n[e]]); e++); return t; }, explode: (e, t) => (p(e) ? e : "" === e ? [] : Te(e.split(t || ","), Bt)), _addCacheSuffix: e => { const t = Tt.cacheSuffix; return t && (e += (-1 === e.indexOf("?") ? "?" : "&") + t), e; } }, Lt = (e, t, n = A) => e.exists(e => n(e, t)), Mt = (e, t, n = A) => It(e, t, n).getOr(e.isNone() && t.isNone()), It = (e, t, n) => (e.isSome() && t.isSome() ? I.some(n(e.getOrDie(), t.getOrDie())) : I.none()), Ft = (e, t) => (e ? I.some(t) : I.none()), Ut = "undefined" != typeof window ? window : Function("return this;")(), zt = (e, t) => ((e, t) => { let n = null != t ? t : Ut; for (let t = 0; t < e.length && null != n; ++t) n = n[e[t]]; return n; })(e.split("."), t), jt = Object.getPrototypeOf, Ht = e => { const t = zt("ownerDocument.defaultView", e); return ( f(e) && ((e => ((e, t) => { const n = ((e, t) => zt(e, t))(e, t); if (null == n) throw new Error(e + " not available on this browser"); return n; })("HTMLElement", e))(t).prototype.isPrototypeOf(e) || /^HTML\w*Element$/.test(jt(e).constructor.name)) ); }, $t = e => e.dom.nodeName.toLowerCase(), Vt = e => e.dom.nodeType, qt = e => t => Vt(t) === e, Wt = e => Kt(e) && Ht(e.dom), Kt = qt(1), Yt = qt(3), Gt = qt(9), Xt = qt(11), Zt = e => t => Kt(t) && $t(t) === e, Qt = (e, t, n) => { if (!(m(n) || b(n) || x(n))) throw ( (console.error("Invalid call to Attribute.set. Key ", t, ":: Value ", n, ":: Element ", e), new Error("Attribute value was not simple")) ); e.setAttribute(t, n + ""); }, Jt = (e, t, n) => { Qt(e.dom, t, n); }, en = (e, t) => { const n = e.dom; pe(t, (e, t) => { Qt(n, t, e); }); }, tn = (e, t) => { const n = e.dom.getAttribute(t); return null === n ? void 0 : n; }, nn = (e, t) => I.from(tn(e, t)), on = (e, t) => { const n = e.dom; return !(!n || !n.hasAttribute) && n.hasAttribute(t); }, rn = (e, t) => { e.dom.removeAttribute(t); }, sn = e => X(e.dom.attributes, (e, t) => ((e[t.name] = t.value), e), {}), an = (e, t) => { const n = tn(e, t); return void 0 === n || "" === n ? [] : n.split(" "); }, ln = e => void 0 !== e.dom.classList, dn = e => an(e, "class"), cn = (e, t) => ((e, t, n) => { const o = an(e, t).concat([n]); return Jt(e, t, o.join(" ")), !0; })(e, "class", t), un = (e, t) => ((e, t, n) => { const o = Y(an(e, t), e => e !== n); return o.length > 0 ? Jt(e, t, o.join(" ")) : rn(e, t), !1; })(e, "class", t), mn = (e, t) => { ln(e) ? e.dom.classList.add(t) : cn(e, t); }, fn = e => { 0 === (ln(e) ? e.dom.classList : dn(e)).length && rn(e, "class"); }, gn = (e, t) => { ln(e) ? e.dom.classList.remove(t) : un(e, t), fn(e); }, pn = (e, t) => ln(e) && e.dom.classList.contains(t), hn = e => { if (null == e) throw new Error("Node cannot be null or undefined"); return {dom: e}; }, bn = (e, t) => { const n = (t || document).createElement("div"); if (((n.innerHTML = e), !n.hasChildNodes() || n.childNodes.length > 1)) { const t = "HTML does not have a single root node"; throw (console.error(t, e), new Error(t)); } return hn(n.childNodes[0]); }, vn = (e, t) => { const n = (t || document).createElement(e); return hn(n); }, yn = (e, t) => { const n = (t || document).createTextNode(e); return hn(n); }, Cn = hn, wn = (e, t, n) => I.from(e.dom.elementFromPoint(t, n)).map(hn), xn = (e, t) => { const n = [], o = e => (n.push(e), t(e)); let r = t(e); do { r = r.bind(o); } while (r.isSome()); return n; }, En = (e, t) => { const n = e.dom; if (1 !== n.nodeType) return !1; { const e = n; if (void 0 !== e.matches) return e.matches(t); if (void 0 !== e.msMatchesSelector) return e.msMatchesSelector(t); if (void 0 !== e.webkitMatchesSelector) return e.webkitMatchesSelector(t); if (void 0 !== e.mozMatchesSelector) return e.mozMatchesSelector(t); throw new Error("Browser lacks native selectors"); } }, kn = e => (1 !== e.nodeType && 9 !== e.nodeType && 11 !== e.nodeType) || 0 === e.childElementCount, _n = (e, t) => e.dom === t.dom, Sn = (e, t) => { const n = e.dom, o = t.dom; return n !== o && n.contains(o); }, Nn = e => Cn(e.dom.ownerDocument), Rn = e => (Gt(e) ? e : Nn(e)), An = e => Cn(Rn(e).dom.defaultView), Tn = e => I.from(e.dom.parentNode).map(Cn), On = e => I.from(e.dom.parentElement).map(Cn), Bn = (e, t) => { const n = w(t) ? t : L; let o = e.dom; const r = []; for (; null !== o.parentNode && void 0 !== o.parentNode; ) { const e = o.parentNode, t = Cn(e); if ((r.push(t), !0 === n(t))) break; o = e; } return r; }, Pn = e => I.from(e.dom.previousSibling).map(Cn), Dn = e => I.from(e.dom.nextSibling).map(Cn), Ln = e => oe(xn(e, Pn)), Mn = e => xn(e, Dn), In = e => V(e.dom.childNodes, Cn), Fn = (e, t) => { const n = e.dom.childNodes; return I.from(n[t]).map(Cn); }, Un = e => Fn(e, 0), zn = e => Fn(e, e.dom.childNodes.length - 1), jn = e => e.dom.childNodes.length, Hn = e => Xt(e) && C(e.dom.host), $n = w(Element.prototype.attachShadow) && w(Node.prototype.getRootNode), Vn = N($n), qn = $n ? e => Cn(e.dom.getRootNode()) : Rn, Wn = e => Hn(e) ? e : (e => { const t = e.dom.head; if (null == t) throw new Error("Head is not available yet"); return Cn(t); })(Rn(e)), Kn = e => Cn(e.dom.host), Yn = e => { if (Vn() && C(e.target)) { const t = Cn(e.target); if (Kt(t) && Gn(t) && e.composed && e.composedPath) { const t = e.composedPath(); if (t) return le(t); } } return I.from(e.target); }, Gn = e => C(e.dom.shadowRoot), Xn = e => { const t = Yt(e) ? e.dom.parentNode : e.dom; if (null == t || null === t.ownerDocument) return !1; const n = t.ownerDocument; return (e => { const t = qn(e); return Hn(t) ? I.some(t) : I.none(); })(Cn(t)).fold(() => n.body.contains(t), S(Xn, Kn)); }; var Zn = (e, t, n, o, r) => (e(n, o) ? I.some(n) : w(r) && r(n) ? I.none() : t(n, o, r)); const Qn = (e, t, n) => { let o = e.dom; const r = w(n) ? n : L; for (; o.parentNode; ) { o = o.parentNode; const e = Cn(o); if (t(e)) return I.some(e); if (r(e)) break; } return I.none(); }, Jn = (e, t, n) => Zn((e, t) => t(e), Qn, e, t, n), eo = (e, t) => { const n = e => { for (let o = 0; o < e.childNodes.length; o++) { const r = Cn(e.childNodes[o]); if (t(r)) return I.some(r); const s = n(e.childNodes[o]); if (s.isSome()) return s; } return I.none(); }; return n(e.dom); }, to = (e, t, n) => Qn(e, e => En(e, t), n), no = (e, t) => ((e, t) => { const n = void 0 === t ? document : t.dom; return kn(n) ? I.none() : I.from(n.querySelector(e)).map(Cn); })(t, e), oo = (e, t, n) => Zn((e, t) => En(e, t), to, e, t, n), ro = (e, t = !1) => { return Xn(e) ? e.dom.isContentEditable : ((n = e), oo(n, "[contenteditable]")).fold(N(t), e => "true" === so(e)); var n; }, so = e => e.dom.contentEditable, ao = e => void 0 !== e.style && w(e.style.getPropertyValue), io = (e, t, n) => { if (!m(n)) throw ( (console.error("Invalid call to CSS.set. Property ", t, ":: Value ", n, ":: Element ", e), new Error("CSS value must be a string: " + n)) ); ao(e) && e.style.setProperty(t, n); }, lo = (e, t, n) => { const o = e.dom; io(o, t, n); }, co = (e, t) => { const n = e.dom; pe(t, (e, t) => { io(n, t, e); }); }, uo = (e, t) => { const n = e.dom, o = window.getComputedStyle(n).getPropertyValue(t); return "" !== o || Xn(e) ? o : mo(n, t); }, mo = (e, t) => (ao(e) ? e.style.getPropertyValue(t) : ""), fo = (e, t) => { const n = e.dom, o = mo(n, t); return I.from(o).filter(e => e.length > 0); }, go = e => { const t = {}, n = e.dom; if (ao(n)) for (let e = 0; e < n.style.length; e++) { const o = n.style.item(e); t[o] = n.style[o]; } return t; }, po = (e, t) => { ((e, t) => { ao(e) && e.style.removeProperty(t); })(e.dom, t), Lt(nn(e, "style").map(We), "") && rn(e, "style"); }, ho = (e, t) => { Tn(e).each(n => { n.dom.insertBefore(t.dom, e.dom); }); }, bo = (e, t) => { Dn(e).fold( () => { Tn(e).each(e => { yo(e, t); }); }, e => { ho(e, t); } ); }, vo = (e, t) => { Un(e).fold( () => { yo(e, t); }, n => { e.dom.insertBefore(t.dom, n.dom); } ); }, yo = (e, t) => { e.dom.appendChild(t.dom); }, Co = (e, t) => { ho(e, t), yo(t, e); }, wo = (e, t) => { q(t, t => { yo(e, t); }); }, xo = e => { (e.dom.textContent = ""), q(In(e), e => { Eo(e); }); }, Eo = e => { const t = e.dom; null !== t.parentNode && t.parentNode.removeChild(t); }, ko = e => { const t = In(e); var n, o; t.length > 0 && ((n = e), q((o = t), (e, t) => { const r = 0 === t ? n : o[t - 1]; bo(r, e); })), Eo(e); }, _o = e => V(e, Cn), So = e => e.dom.innerHTML, No = (e, t) => { const n = Nn(e).dom, o = Cn(n.createDocumentFragment()), r = ((e, t) => { const n = (t || document).createElement("div"); return (n.innerHTML = e), In(Cn(n)); })(t, n); wo(o, r), xo(e), yo(e, o); }, Ro = (e, t, n, o) => ((e, t, n, o, r) => { const s = ((e, t) => n => { e(n) && t( (e => { const t = Cn(Yn(e).getOr(e.target)), n = () => e.stopPropagation(), o = () => e.preventDefault(), r = _(o, n); return ((e, t, n, o, r, s, a) => ({target: e, x: t, y: n, stop: o, prevent: r, kill: s, raw: a}))( t, e.clientX, e.clientY, n, o, r, e ); })(n) ); })(n, o); return e.dom.addEventListener(t, s, false), {unbind: T(Ao, e, t, s, false)}; })(e, t, n, o), Ao = (e, t, n, o) => { e.dom.removeEventListener(t, n, o); }, To = (e, t) => ({left: e, top: t, translate: (n, o) => To(e + n, t + o)}), Oo = To, Bo = (e, t) => (void 0 !== e ? e : void 0 !== t ? t : 0), Po = e => { const t = e.dom, n = t.ownerDocument.body; return n === t ? Oo(n.offsetLeft, n.offsetTop) : Xn(e) ? (e => { const t = e.getBoundingClientRect(); return Oo(t.left, t.top); })(t) : Oo(0, 0); }, Do = e => { const t = void 0 !== e ? e.dom : document, n = t.body.scrollLeft || t.documentElement.scrollLeft, o = t.body.scrollTop || t.documentElement.scrollTop; return Oo(n, o); }, Lo = (e, t, n) => { const o = (void 0 !== n ? n.dom : document).defaultView; o && o.scrollTo(e, t); }, Mo = (e, t) => { Et().browser.isSafari() && w(e.dom.scrollIntoViewIfNeeded) ? e.dom.scrollIntoViewIfNeeded(!1) : e.dom.scrollIntoView(t); }, Io = (e, t, n, o) => ({x: e, y: t, width: n, height: o, right: e + n, bottom: t + o}), Fo = e => { const t = void 0 === e ? window : e, n = t.document, o = Do(Cn(n)); return (e => { const t = void 0 === e ? window : e; return Et().browser.isFirefox() ? I.none() : I.from(t.visualViewport); })(t).fold( () => { const e = t.document.documentElement, n = e.clientWidth, r = e.clientHeight; return Io(o.left, o.top, n, r); }, e => Io(Math.max(e.pageLeft, o.left), Math.max(e.pageTop, o.top), e.width, e.height) ); }, Uo = (e, t) => { let n = []; return ( q(In(e), e => { t(e) && (n = n.concat([e])), (n = n.concat(Uo(e, t))); }), n ); }, zo = (e, t) => ((e, t) => { const n = void 0 === t ? document : t.dom; return kn(n) ? [] : V(n.querySelectorAll(e), Cn); })(t, e), jo = (e, t, n) => Qn(e, t, n).isSome(), Ho = (e, t) => ((e, t) => { const n = e.dom; return n.parentNode ? ((e, t) => Q(e.dom.childNodes, e => t(Cn(e))).map(Cn))(Cn(n.parentNode), n => !_n(e, n) && t(n)) : I.none(); })(e, t).isSome(), $o = (e, t) => eo(e, t).isSome(); class Vo { constructor(e, t) { (this.node = e), (this.rootNode = t), (this.current = this.current.bind(this)), (this.next = this.next.bind(this)), (this.prev = this.prev.bind(this)), (this.prev2 = this.prev2.bind(this)); } current() { return this.node; } next(e) { return (this.node = this.findSibling(this.node, "firstChild", "nextSibling", e)), this.node; } prev(e) { return (this.node = this.findSibling(this.node, "lastChild", "previousSibling", e)), this.node; } prev2(e) { return (this.node = this.findPreviousNode(this.node, e)), this.node; } findSibling(e, t, n, o) { if (e) { if (!o && e[t]) return e[t]; if (e !== this.rootNode) { let t = e[n]; if (t) return t; for (let o = e.parentNode; o && o !== this.rootNode; o = o.parentNode) if (((t = o[n]), t)) return t; } } } findPreviousNode(e, t) { if (e) { const n = e.previousSibling; if (this.rootNode && n === this.rootNode) return; if (n) { if (!t) for (let e = n.lastChild; e; e = e.lastChild) if (!e.lastChild) return e; return n; } const o = e.parentNode; if (o && o !== this.rootNode) return o; } } } const qo = "\ufeff", Wo = "\xa0", Ko = e => e === qo, Yo = /^[ \t\r\n]*$/, Go = e => Yo.test(e), Xo = e => "\n" === e || "\r" === e, Zo = (e, t = 4, n = !0, o = !0) => { const r = ((e, t) => (t <= 0 ? "" : new Array(t + 1).join(" ")))(0, t), s = e.replace(/\t/g, r), a = X( s, (e, t) => (e => -1 !== " \f\t\v".indexOf(e))(t) || t === Wo ? e.pcIsSpace || ("" === e.str && n) || (e.str.length === s.length - 1 && o) || ((e, t) => t < e.length && t >= 0 && Xo(e[t]))(s, e.str.length + 1) ? {pcIsSpace: !1, str: e.str + Wo} : {pcIsSpace: !0, str: e.str + " "} : {pcIsSpace: Xo(t), str: e.str + t}, {pcIsSpace: !1, str: ""} ); return a.str; }, Qo = e => t => !!t && t.nodeType === e, Jo = e => !!e && !Object.getPrototypeOf(e), er = Qo(1), tr = e => er(e) && Wt(Cn(e)), nr = e => { const t = e.toLowerCase(); return e => C(e) && e.nodeName.toLowerCase() === t; }, or = e => { const t = e.map(e => e.toLowerCase()); return e => { if (e && e.nodeName) { const n = e.nodeName.toLowerCase(); return H(t, n); } return !1; }; }, rr = (e, t) => { const n = t.toLowerCase().split(" "); return t => { if (er(t)) { const o = t.ownerDocument.defaultView; if (o) for (let r = 0; r < n.length; r++) { const s = o.getComputedStyle(t, null); if ((s ? s.getPropertyValue(e) : null) === n[r]) return !0; } } return !1; }; }, sr = e => er(e) && e.hasAttribute("data-mce-bogus"), ar = e => er(e) && "TABLE" === e.tagName, ir = e => t => { if (tr(t)) { if (t.contentEditable === e) return !0; if (t.getAttribute("data-mce-contenteditable") === e) return !0; } return !1; }, lr = or(["textarea", "input"]), dr = Qo(3), cr = Qo(4), ur = Qo(7), mr = Qo(8), fr = Qo(9), gr = Qo(11), pr = nr("br"), hr = nr("img"), br = ir("true"), vr = ir("false"), yr = or(["td", "th"]), Cr = or(["td", "th", "caption"]), wr = or(["video", "audio", "object", "embed"]), xr = nr("li"), Er = nr("details"), kr = nr("summary"), _r = {skipBogus: !0, includeZwsp: !1, checkRootAsContent: !1}, Sr = ("data-mce-bookmark", e => er(e) && e.hasAttribute("data-mce-bookmark")); const Nr = (e, t, n, o) => dr(e) && !((e, t, n) => Go(e.data) && !((e, t, n) => { const o = Cn(t), r = Cn(e), s = n.getWhitespaceElements(); return jo(r, e => ke(s, $t(e)), T(_n, o)); })(e, t, n))(e, t, n) && (!o.includeZwsp || !(e => { for (const t of e) if (!Ko(t)) return !1; return !0; })(e.data)), Rr = (e, t, n, o) => (w(o.isContent) && o.isContent(t)) || ((e, t) => er(e) && ke(t.getNonEmptyElements(), e.nodeName))(t, e) || Sr(t) || (e => er(e) && "A" === e.nodeName && !e.hasAttribute("href") && (e.hasAttribute("name") || e.hasAttribute("id")))( t ) || Nr(t, n, e, o) || vr(t) || (br(t) && (e => On(Cn(e)).exists(e => !ro(e)))(t)), Ar = (e, t, n) => { const o = {..._r, ...n}; if (o.checkRootAsContent && Rr(e, t, t, o)) return !1; let r = t.firstChild, s = 0; if (!r) return !0; const a = new Vo(r, t); do { if (o.skipBogus && er(r)) { const e = r.getAttribute("data-mce-bogus"); if (e) { r = a.next("all" === e); continue; } } if (mr(r)) r = a.next(!0); else if (pr(r)) s++, (r = a.next()); else { if (Rr(e, r, t, o)) return !1; r = a.next(); } } while (r); return s <= 1; }, Tr = (e, t, n) => Ar(e, t.dom, {checkRootAsContent: !0, ...n}), Or = (e, t, n) => Rr(e, t, t, {includeZwsp: _r.includeZwsp, ...n}), Br = e => { let t = e; return { get: () => t, set: e => { t = e; } }; }, Pr = e => { const t = Br(I.none()), n = () => t.get().each(e => clearInterval(e)); return { clear: () => { n(), t.set(I.none()); }, isSet: () => t.get().isSome(), get: () => t.get(), set: o => { n(), t.set(I.some(setInterval(o, e))); } }; }, Dr = () => { const e = (e => { const t = Br(I.none()), n = () => t.get().each(e); return { clear: () => { n(), t.set(I.none()); }, isSet: () => t.get().isSome(), get: () => t.get(), set: e => { n(), t.set(I.some(e)); } }; })(k); return {...e, on: t => e.get().each(t)}; }, Lr = e => { const t = e.toLowerCase(); return "svg" === t ? "svg" : "math" === t ? "math" : "html"; }, Mr = e => "html" !== Lr(e), Ir = e => Mr(e.nodeName), Fr = e => Lr(e.nodeName), Ur = ["svg", "math"], zr = "data-mce-block", jr = e => V((e => Y(fe(e), e => !/[A-Z]/.test(e)))(e), e => { const t = CSS.escape(e); return `${t}:` + V(Ur, e => `not(${e} ${t})`).join(":"); }).join(","), Hr = (e, t) => C(t.querySelector(e)) ? (t.setAttribute(zr, "true"), "inline-boundary" === t.getAttribute("data-mce-selected") && t.removeAttribute("data-mce-selected"), !0) : (t.removeAttribute(zr), !1), $r = (e, t) => { const n = jr(e.getTransparentElements()), o = jr(e.getBlockElements()); return Y(t.querySelectorAll(n), e => Hr(o, e)); }, Vr = (e, t, n) => { var o; const r = n ? "lastChild" : "firstChild"; for (let n = t[r]; n; n = n[r]) if (Ar(e, n, {checkRootAsContent: !0})) return void (null === (o = n.parentNode) || void 0 === o || o.removeChild(n)); }, qr = (e, t, n) => { const o = e.getBlockElements(), r = Cn(t), s = e => $t(e) in o, a = e => _n(e, r); q(_o(n), t => { Qn(t, s, a).each(n => { const o = ((t, o) => Y(In(t), t => s(t) && !e.isValidChild($t(n), $t(t))))(t); if (o.length > 0) { const t = On(n); q(o, t => { Qn(t, s, a).each(n => { ((e, t, n) => { const o = document.createRange(), r = t.parentNode; if (r) { o.setStartBefore(t), o.setEndBefore(n); const s = o.extractContents(); Vr(e, s, !0), o.setStartAfter(n), o.setEndAfter(t); const a = o.extractContents(); Vr(e, a, !1), Ar(e, s, {checkRootAsContent: !0}) || r.insertBefore(s, t), Ar(e, n, {checkRootAsContent: !0}) || r.insertBefore(n, t), Ar(e, a, {checkRootAsContent: !0}) || r.insertBefore(a, t), r.removeChild(t); } })(e, n.dom, t.dom); }); }), t.each(t => $r(e, t.dom)); } }); }); }, Wr = (e, t) => { const n = $r(e, t); qr(e, t, n), ((e, t, n) => { q([...n, ...(Zr(e, t) ? [t] : [])], t => q(zo(Cn(t), t.nodeName.toLowerCase()), t => { Qr(e, t.dom) && ko(t); }) ); })(e, t, n); }, Kr = (e, t) => { if (Xr(e, t)) { const n = jr(e.getBlockElements()); Hr(n, t); } }, Yr = e => e.hasAttribute(zr), Gr = (e, t) => ke(e.getTransparentElements(), t), Xr = (e, t) => er(t) && Gr(e, t.nodeName), Zr = (e, t) => Xr(e, t) && Yr(t), Qr = (e, t) => Xr(e, t) && !Yr(t), Jr = (e, t) => 1 === t.type && Gr(e, t.name) && m(t.attr(zr)), es = Et().browser, ts = e => Q(e, Kt), ns = (e, t) => e.children && H(e.children, t), os = (e, t = {}) => { let n = 0; const o = {}, r = Cn(e), s = Rn(r), a = e => { yo(Wn(r), e); }, i = e => { const t = Wn(r); no(t, "#" + e).each(Eo); }, l = e => Ee(o, e).getOrThunk(() => ({id: "mce-u" + n++, passed: [], failed: [], count: 0})), d = e => new Promise((n, r) => { let i; const d = Dt._addCacheSuffix(e), c = l(d); (o[d] = c), c.count++; const u = (e, t) => { q(e, D), (c.status = t), (c.passed = []), (c.failed = []), i && ((i.onload = null), (i.onerror = null), (i = null)); }, m = () => u(c.passed, 2), f = () => u(c.failed, 3); if ((n && c.passed.push(n), r && c.failed.push(r), 1 === c.status)) return; if (2 === c.status) return void m(); if (3 === c.status) return void f(); c.status = 1; const g = vn("link", s.dom); en(g, {rel: "stylesheet", type: "text/css", id: c.id}), t.contentCssCors && Jt(g, "crossOrigin", "anonymous"), t.referrerPolicy && Jt(g, "referrerpolicy", t.referrerPolicy), (i = g.dom), (i.onload = m), (i.onerror = f), a(g), Jt(g, "href", d); }), c = e => { const t = Dt._addCacheSuffix(e); Ee(o, t).each(e => { 0 == --e.count && (delete o[t], i(e.id)); }); }; return { load: d, loadRawCss: (e, t) => { const n = l(e); (o[e] = n), n.count++; const r = vn("style", s.dom); en(r, {rel: "stylesheet", type: "text/css", id: n.id}), (r.dom.innerHTML = t), a(r); }, loadAll: e => Promise.allSettled(V(e, e => d(e).then(N(e)))).then(e => { const t = K(e, e => "fulfilled" === e.status); return t.fail.length > 0 ? Promise.reject(V(t.fail, e => e.reason)) : V(t.pass, e => e.value); }), unload: c, unloadRawCss: e => { Ee(o, e).each(t => { 0 == --t.count && (delete o[e], i(t.id)); }); }, unloadAll: e => { q(e, e => { c(e); }); }, _setReferrerPolicy: e => { t.referrerPolicy = e; }, _setContentCssCors: e => { t.contentCssCors = e; } }; }, rs = (() => { const e = new WeakMap(); return { forElement: (t, n) => { const o = qn(t).dom; return I.from(e.get(o)).getOrThunk(() => { const t = os(o, n); return e.set(o, t), t; }); } }; })(), ss = (e, t) => C(e) && (Or(t, e) || t.isInline(e.nodeName.toLowerCase())), as = e => (e => "span" === e.nodeName.toLowerCase())(e) && "bookmark" === e.getAttribute("data-mce-type"), is = (e, t, n, o) => { var r; const s = o || t; if (er(t) && as(t)) return t; const a = t.childNodes; for (let t = a.length - 1; t >= 0; t--) is(e, a[t], n, s); if (er(t)) { const e = t.childNodes; 1 === e.length && as(e[0]) && (null === (r = t.parentNode) || void 0 === r || r.insertBefore(e[0], t)); } return ( (e => gr(e) || fr(e))(t) || Or(n, t) || (e => !!er(e) && e.childNodes.length > 0)(t) || ((e, t, n) => dr(e) && e.data.length > 0 && ((e, t, n) => { const o = new Vo(e, t).prev(!1), r = new Vo(e, t).next(!1), s = v(o) || ss(o, n), a = v(r) || ss(r, n); return s && a; })(e, t, n))(t, s, n) || e.remove(t), t ); }, ls = Dt.makeMap, ds = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g, cs = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g, us = /[<>&\"\']/g, ms = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi, fs = { 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" }, gs = {'"': """, "'": "'", "<": "<", ">": ">", "&": "&", "`": "`"}, ps = {"<": "<", ">": ">", "&": "&", """: '"', "'": "'"}, hs = (e, t) => { const n = {}; if (e) { const o = e.split(","); t = t || 10; for (let e = 0; e < o.length; e += 2) { const r = String.fromCharCode(parseInt(o[e], t)); if (!gs[r]) { const t = "&" + o[e + 1] + ";"; (n[r] = t), (n[t] = r); } } return n; } }, bs = hs( "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 ), vs = (e, t) => e.replace(t ? ds : cs, e => gs[e] || e), ys = (e, t) => e.replace(t ? ds : cs, e => e.length > 1 ? "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : gs[e] || "&#" + e.charCodeAt(0) + ";" ), Cs = (e, t, n) => { const o = n || bs; return e.replace(t ? ds : cs, e => gs[e] || o[e] || e); }, ws = { encodeRaw: vs, encodeAllRaw: e => ("" + e).replace(us, e => gs[e] || e), encodeNumeric: ys, encodeNamed: Cs, getEncodeFunc: (e, t) => { const n = hs(t) || bs, o = ls(e.replace(/\+/g, ",")); return o.named && o.numeric ? (e, t) => e.replace(t ? ds : cs, e => void 0 !== gs[e] ? gs[e] : void 0 !== n[e] ? n[e] : e.length > 1 ? "&#" + (1024 * (e.charCodeAt(0) - 55296) + (e.charCodeAt(1) - 56320) + 65536) + ";" : "&#" + e.charCodeAt(0) + ";" ) : o.named ? t ? (e, t) => Cs(e, t, n) : Cs : o.numeric ? ys : vs; }, decode: e => e.replace(ms, (e, t) => t ? (t = "x" === t.charAt(0).toLowerCase() ? parseInt(t.substr(1), 16) : parseInt(t, 10)) > 65535 ? ((t -= 65536), String.fromCharCode(55296 + (t >> 10), 56320 + (1023 & t))) : fs[t] || String.fromCharCode(t) : ps[e] || bs[e] || (e => { const t = vn("div").dom; return (t.innerHTML = e), t.textContent || t.innerText || e; })(e) ) }, xs = (e, t) => ((e = Dt.trim(e)) ? e.split(t || " ") : []), Es = e => new RegExp("^" + e.replace(/([?+*])/g, ".$1") + "$"), ks = e => Object.freeze([ "id", "accesskey", "class", "dir", "lang", "style", "tabindex", "title", "role", ...("html4" !== e ? [ "contenteditable", "contextmenu", "draggable", "dropzone", "hidden", "spellcheck", "translate", "itemprop", "itemscope", "itemtype" ] : []), ...("html5-strict" !== e ? ["xml:lang"] : []) ]), _s = e => { let t, n; (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 && ((t += " article aside details dialog figure main header footer hgroup section nav a ins del canvas map"), (n += " audio canvas command data datalist mark meter output picture progress time wbr video ruby bdi keygen svg")), "html5-strict" !== e && ((n = [n, "acronym applet basefont big font strike tt"].join(" ")), (t = [t, "center dir isindex noframes"].join(" "))); const o = [t, n].join(" "); return {blockContent: t, phrasingContent: n, flowContent: o}; }, Ss = e => { const {blockContent: t, phrasingContent: n, flowContent: o} = _s(e), r = e => Object.freeze(e.split(" ")); return Object.freeze({blockContent: r(t), phrasingContent: r(n), flowContent: r(o)}); }, Ns = {html4: Le(() => Ss("html4")), html5: Le(() => Ss("html5")), "html5-strict": Le(() => Ss("html5-strict"))}, Rs = (e, t) => { const {blockContent: n, phrasingContent: o, flowContent: r} = Ns[e](); return "blocks" === t ? I.some(n) : "phrasing" === t ? I.some(o) : "flow" === t ? I.some(r) : I.none(); }, As = e => I.from( /^(@?)([A-Za-z0-9_\-.\u00b7\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u037d\u037f-\u1fff\u200c-\u200d\u203f-\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]+)$/.exec( e ) ).map(e => ({preset: "@" === e[1], name: e[2]})), Ts = {}, Os = Dt.makeMap, Bs = Dt.each, Ps = Dt.extend, Ds = Dt.explode, Ls = (e, t = {}) => { const n = Os(e, " ", Os(e.toUpperCase(), " ")); return Ps(n, t); }, Ms = e => Ls("td th li dt dd figcaption caption details summary", e.getTextBlockElements()), Is = (e, t) => { if (e) { const n = {}; return ( m(e) && (e = {"*": e}), Bs(e, (e, o) => { n[o] = n[o.toUpperCase()] = "map" === t ? Os(e, /[, ]/) : Ds(e, /[, ]/); }), n ); } }, Fs = (e = {}) => { var t; const n = {}, o = {}; let r = []; const s = {}, a = {}, i = (t, n, o) => { const r = e[t]; if (r) return Os(r, /[, ]/, Os(r.toUpperCase(), /[, ]/)); { let e = Ts[t]; return e || ((e = Ls(n, o)), (Ts[t] = e)), e; } }, l = null !== (t = e.schema) && void 0 !== t ? t : "html5", d = (e => { const t = ks(e), {phrasingContent: n, flowContent: o} = _s(e), r = {}, s = (e, t, n) => { r[e] = {attributes: se(t, N({})), attributesOrder: t, children: se(n, N({}))}; }, a = (e, n = "", o = "") => { const r = xs(o), a = xs(e); let i = a.length; const l = [...t, ...xs(n)]; for (; i--; ) s(a[i], l.slice(), r); }, i = (e, t) => { const n = xs(e), o = xs(t); let s = n.length; for (; s--; ) { const e = r[n[s]]; for (let t = 0, n = o.length; t < n; t++) (e.attributes[o[t]] = {}), e.attributesOrder.push(o[t]); } }; return ( "html5-strict" !== e && (q(xs("acronym applet basefont big font strike tt"), e => { a(e, "", n); }), q(xs("center dir isindex noframes"), e => { a(e, "", o); })), 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", o ), a("dd div", "", o), a("address dt caption", "", "html4" === e ? n : o), 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", o), a("ol", "reversed start type", "li"), a("ul", "", "li"), a("li", "value", o), a("dl", "", "dt dd"), a("a", "href target rel media hreflang type", "html4" === e ? n : o), a("q", "cite", n), a("ins del", "cite datetime", o), a("img", "src sizes srcset alt usemap ismap width height"), a("iframe", "src name width height", o), a("embed", "src type width height"), a("object", "data type typemustmatch name usemap form width height", [o, "param"].join(" ")), a("param", "name value"), a("map", "name", [o, "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", o), a("th", "colspan rowspan headers scope abbr", o), a("form", "accept-charset action autocomplete enctype method name novalidate target", o), a("fieldset", "disabled form name", [o, "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 ? o : 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", [o, "li"].join(" ")), a("noscript", "", o), "html4" !== e && (a("wbr"), a("ruby", "", [n, "rt rp"].join(" ")), a("figcaption", "", o), a("mark rt rp bdi", "", n), a("summary", "", [n, "h1 h2 h3 h4 h5 h6"].join(" ")), a("canvas", "width height", o), a("data", "value", n), a( "video", "src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered", [o, "track source"].join(" ") ), a( "audio", "src crossorigin preload autoplay mediagroup loop muted controls buffered volume", [o, "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 main header footer", "", o), a("hgroup", "", "h1 h2 h3 h4 h5 h6"), a("figure", "", [o, "figcaption"].join(" ")), a("time", "datetime", n), a("dialog", "open", o), 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", [o, "summary"].join(" ")), a("keygen", "autofocus challenge disabled form keytype name"), s( "svg", "id tabindex lang xml:space class style x y width height viewBox preserveAspectRatio zoomAndPan transform".split( " " ), [] )), "html5-strict" !== e && (i("script", "language xml:space"), i("style", "xml:space"), i("object", "declare classid code codebase codetype archive standby align border hspace vspace"), i("embed", "align name hspace vspace"), i("param", "valuetype type"), i("a", "charset name rev shape coords"), i("br", "clear"), i("applet", "codebase archive code object alt name width height align hspace vspace"), i("img", "name longdesc align border hspace vspace"), i("iframe", "longdesc frameborder marginwidth marginheight scrolling align"), i("font basefont", "size color face"), i("input", "usemap align"), i("select"), i("textarea"), i("h1 h2 h3 h4 h5 h6 div p legend caption", "align"), i("ul", "type compact"), i("li", "type"), i("ol dl menu dir", "compact"), i("pre", "width xml:space"), i("hr", "align noshade size width"), i("isindex", "prompt"), i("table", "summary width frame rules cellspacing cellpadding align bgcolor"), i("col", "width align char charoff valign"), i("colgroup", "width align char charoff valign"), i("thead", "align char charoff valign"), i("tr", "align char charoff valign bgcolor"), i("th", "axis align char charoff valign nowrap bgcolor width height"), i("form", "accept"), i("td", "abbr axis scope align char charoff valign nowrap bgcolor width height"), i("tfoot", "align char charoff valign"), i("tbody", "align char charoff valign"), i("area", "nohref"), i("body", "background bgcolor text link vlink alink")), "html4" !== e && (i("input button select textarea", "autofocus"), i("input textarea", "placeholder"), i("a", "download"), i("link script img", "crossorigin"), i("img", "loading"), i("iframe", "sandbox seamless allow allowfullscreen loading")), "html4" !== e && q([r.video, r.audio], e => { delete e.children.audio, delete e.children.video; }), q(xs("a form meter progress dfn"), e => { r[e] && delete r[e].children[e]; }), delete r.caption.children.table, delete r.script, r ); })(l); !1 === e.verify_html && (e.valid_elements = "*[*]"); const c = Is(e.valid_styles), u = Is(e.invalid_styles, "map"), g = Is(e.valid_classes, "map"), h = i("whitespace_elements", "pre script noscript style textarea video audio iframe object code"), v = i("self_closing_elements", "colgroup dd dt li option p td tfoot th thead tr"), y = i( "void_elements", "area base basefont br col frame hr img input isindex link meta param embed source wbr track" ), C = i( "boolean_attributes", "checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls allowfullscreen" ), w = "td th iframe video audio object script code", x = i("non_empty_elements", w + " pre svg textarea summary", y), E = i("move_caret_before_on_enter_elements", w + " table", y), k = "h1 h2 h3 h4 h5 h6", _ = i( "text_block_elements", k + " p div address pre form blockquote center dir fieldset header footer article section hgroup aside main nav figure" ), S = i( "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 html body multicol listing", _ ), R = i("text_inline_elements", "span strong b em i font s strike u var cite dfn code mark q sup sub samp"), A = i("transparent_elements", "a ins del canvas map"), T = i("wrap_block_elements", "pre " + k); Bs("script noscript iframe noframes noembed title style textarea xmp plaintext".split(" "), e => { a[e] = new RegExp("]*>", "gi"); }); const O = e => { const t = I.from(n["@"]), o = /[*?+]/; q( ((e, t) => { const n = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)])?$/; return te(xs(t, ","), t => { const o = n.exec(t); if (o) { const t = o[1], n = o[2], r = o[3], s = o[4], a = o[5], i = {attributes: {}, attributesOrder: []}; if ( (e.each(e => ((e, t) => { pe(e.attributes, (e, n) => { t.attributes[n] = e; }), t.attributesOrder.push(...e.attributesOrder); })(e, i) ), "#" === t ? (i.paddEmpty = !0) : "-" === t && (i.removeEmpty = !0), "!" === s && (i.removeEmptyAttrs = !0), a && ((e, t) => { const n = /^([!\-])?(\w+[\\:]:\w+|[^=~<]+)?(?:([=~<])(.*))?$/, o = /[*?+]/, {attributes: r, attributesOrder: s} = t; q(xs(e, "|"), e => { const a = n.exec(e); if (a) { const e = {}, n = a[1], i = a[2].replace(/[\\:]:/g, ":"), l = a[3], d = a[4]; if ( ("!" === n && ((t.attributesRequired = t.attributesRequired || []), t.attributesRequired.push(i), (e.required = !0)), "-" === n) ) return delete r[i], void s.splice(Dt.inArray(s, i), 1); if ( (l && ("=" === l ? ((t.attributesDefault = t.attributesDefault || []), t.attributesDefault.push({name: i, value: d}), (e.defaultValue = d)) : "~" === l ? ((t.attributesForced = t.attributesForced || []), t.attributesForced.push({name: i, value: d}), (e.forcedValue = d)) : "<" === l && (e.validValues = Dt.makeMap(d, "?"))), o.test(i)) ) { const n = e; (t.attributePatterns = t.attributePatterns || []), (n.pattern = Es(i)), t.attributePatterns.push(n); } else r[i] || s.push(i), (r[i] = e); } }); })(a, i), r && (i.outputName = n), "@" === n) ) { if (!e.isNone()) return []; e = I.some(i); } return [r ? {name: n, element: i, aliasName: r} : {name: n, element: i}]; } return []; }); })(t, null != e ? e : ""), ({name: e, element: t, aliasName: s}) => { if ((s && (n[s] = t), o.test(e))) { const n = t; (n.pattern = Es(e)), r.push(n); } else n[e] = t; } ); }, B = e => { (r = []), q(fe(n), e => { delete n[e]; }), O(e); }, P = (e, t) => { var r, a; delete Ts.text_block_elements, delete Ts.block_elements; const i = !!t.extends && !oe(t.extends), d = t.extends; if ( ((o[e] = d ? o[d] : {}), (s[e] = null != d ? d : e), (x[e.toUpperCase()] = {}), (x[e] = {}), i || ((S[e.toUpperCase()] = {}), (S[e] = {})), d && !n[e] && n[d]) ) { const t = (e => { const t = e => p(e) ? V(e, t) : (e => f(e) && e.source && "[object RegExp]" === Object.prototype.toString.call(e))(e) ? new RegExp(e.source, e.flags) : f(e) ? he(e, t) : e; return t(e); })(n[d]); delete t.removeEmptyAttrs, delete t.removeEmpty, (n[e] = t); } else n[e] = {attributesOrder: [], attributes: {}}; if (p(t.attributes)) { const o = e => { s.attributesOrder.push(e), (s.attributes[e] = {}); }, s = null !== (r = n[e]) && void 0 !== r ? r : {}; delete s.attributesDefault, delete s.attributesForced, delete s.attributePatterns, delete s.attributesRequired, (s.attributesOrder = []), (s.attributes = {}), q(t.attributes, e => { const t = ks(l); As(e).each(({preset: e, name: n}) => { e ? "global" === n && q(t, o) : o(n); }); }), (n[e] = s); } if (b(t.padEmpty)) { const o = null !== (a = n[e]) && void 0 !== a ? a : {}; (o.paddEmpty = t.padEmpty), (n[e] = o); } if (p(t.children)) { const n = {}, r = e => { n[e] = {}; }, s = e => { Rs(l, e).each(e => { q(e, r); }); }; q(t.children, e => { As(e).each(({preset: e, name: t}) => { e ? s(t) : r(t); }); }), (o[e] = n); } d && pe(o, (t, n) => { t[d] && ((o[n] = t = Ps({}, o[n])), (t[e] = t[d])); }); }, D = e => { f(e) ? pe(e, (e, t) => P(t, e)) : m(e) && (e => { q( (e => { const t = /^(~)?(.+)$/; return te(xs(e, ","), e => { const n = t.exec(e); return n ? [{cloneName: "~" === n[1] ? "span" : "div", name: n[2]}] : []; }); })(null != e ? e : ""), ({name: e, cloneName: t}) => { P(e, {extends: t}); } ); })(e); }, L = e => { q( (e => { const t = /^([+\-]?)([A-Za-z0-9_\-.\u00b7\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u037d\u037f-\u1fff\u200c-\u200d\u203f-\u2040\u2070-\u218f\u2c00-\u2fef\u3001-\ud7ff\uf900-\ufdcf\ufdf0-\ufffd]+)\[([^\]]+)]$/; return te(xs(e, ","), e => { const n = t.exec(e); if (n) { const e = n[1], t = e ? (e => ("-" === e ? "remove" : "add"))(e) : "replace"; return [{operation: t, name: n[2], validChildren: te(xs(n[3], "|"), e => As(e).toArray())}]; } return []; }); })(null != e ? e : ""), ({operation: e, name: t, validChildren: n}) => { const r = "replace" === e ? {"#comment": {}} : o[t], s = t => { "remove" === e ? delete r[t] : (r[t] = {}); }; q(n, ({preset: e, name: t}) => { e ? (e => { Rs(l, e).each(e => { q(e, s); }); })(t) : s(t); }), (o[t] = r); } ); }, M = e => { const t = n[e]; if (t) return t; let o = r.length; for (; o--; ) { const t = r[o]; if (t.pattern.test(e)) return t; } }, F = N(c), U = N(u), z = N(g), j = N(C), H = N(S), $ = N(_), W = N(R), K = N(Object.seal(y)), Y = N(v), G = N(x), X = N(E), Z = N(h), Q = N(A), J = N(T), ee = N(Object.seal(a)), ne = (e, t) => { const n = M(e); if (n) { if (!t) return !0; { if (n.attributes[t]) return !0; const e = n.attributePatterns; if (e) { let n = e.length; for (; n--; ) if (e[n].pattern.test(t)) return !0; } } } return !1; }, oe = e => ke(H(), e), re = e => !$e(e, "#") && ne(e) && !oe(e), ae = N(s); return ( e.valid_elements ? (B(e.valid_elements), Bs(d, (e, t) => { o[t] = e.children; })) : (Bs(d, (e, t) => { (n[t] = {attributes: e.attributes, attributesOrder: e.attributesOrder}), (o[t] = e.children); }), Bs(xs("strong/b em/i"), e => { const t = xs(e, "/"); n[t[1]].outputName = t[0]; }), Bs(R, (t, o) => { n[o] && (e.padd_empty_block_inline_children && (n[o].paddInEmptyBlock = !0), (n[o].removeEmpty = !0)); }), Bs(xs("ol ul blockquote a table tbody"), e => { n[e] && (n[e].removeEmpty = !0); }), Bs(xs("p h1 h2 h3 h4 h5 h6 th td pre div address caption li summary"), e => { n[e] && (n[e].paddEmpty = !0); }), Bs(xs("span"), e => { n[e].removeEmptyAttrs = !0; })), delete n.svg, D(e.custom_elements), L(e.valid_children), O(e.extended_valid_elements), L("+ol[ul|ol],+ul[ul|ol]"), Bs( { 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" }, (e, t) => { n[t] && (n[t].parentsRequired = xs(e)); } ), e.invalid_elements && Bs(Ds(e.invalid_elements), e => { n[e] && delete n[e]; }), M("span") || O("span[!data-mce-type|*]"), { type: l, children: o, elements: n, getValidStyles: F, getValidClasses: z, getBlockElements: H, getInvalidStyles: U, getVoidElements: K, getTextBlockElements: $, getTextInlineElements: W, getBoolAttrs: j, getElementRule: M, getSelfClosingElements: Y, getNonEmptyElements: G, getMoveCaretBeforeOnEnterElements: X, getWhitespaceElements: Z, getTransparentElements: Q, getSpecialElements: ee, isValidChild: (e, t) => { const n = o[e.toLowerCase()]; return !(!n || !n[t.toLowerCase()]); }, isValid: ne, isBlock: oe, isInline: re, isWrapper: e => ke(J(), e) || re(e), getCustomElements: ae, addValidElements: O, setValidElements: B, addCustomElements: D, addValidChildren: L } ); }, Us = e => { const t = e.toString(16); return (1 === t.length ? "0" + t : t).toUpperCase(); }, zs = e => (e => { return {value: ((t = e), je(t, "#").toUpperCase())}; var t; })(Us(e.red) + Us(e.green) + Us(e.blue)), js = /^\s*rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)\s*$/i, Hs = /^\s*rgba\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d?(?:\.\d+)?)\s*\)\s*$/i, $s = (e, t, n, o) => ({red: e, green: t, blue: n, alpha: o}), Vs = (e, t, n, o) => { const r = parseInt(e, 10), s = parseInt(t, 10), a = parseInt(n, 10), i = parseFloat(o); return $s(r, s, a, i); }, qs = e => { if ("transparent" === e) return I.some($s(0, 0, 0, 0)); const t = js.exec(e); if (null !== t) return I.some(Vs(t[1], t[2], t[3], "1")); const n = Hs.exec(e); return null !== n ? I.some(Vs(n[1], n[2], n[3], n[4])) : I.none(); }, Ws = e => `rgba(${e.red},${e.green},${e.blue},${e.alpha})`, Ks = e => qs(e) .map(zs) .map(e => "#" + e.value) .getOr(e), Ys = (e = {}, t) => { const n = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi, o = /\s*([^:]+):\s*([^;]+);?/g, r = /\s+$/, s = /rgba *\(/i, a = {}; let i, l; const d = qo; t && ((i = t.getValidStyles()), (l = t.getInvalidStyles())); const c = "\\\" \\' \\; \\: ; : \ufeff".split(" "); for (let e = 0; e < c.length; e++) (a[c[e]] = d + e), (a[d + e] = c[e]); const u = { parse: t => { const i = {}; let l = !1; const c = e.url_converter, m = e.url_converter_scope || u, f = (e, t, n) => { const o = i[e + "-top" + t]; if (!o) return; const r = i[e + "-right" + t]; if (!r) return; const s = i[e + "-bottom" + t]; if (!s) return; const a = i[e + "-left" + t]; if (!a) return; const l = [o, r, s, a]; let d = l.length - 1; for (; d-- && l[d] === l[d + 1]; ); (d > -1 && n) || ((i[e + t] = -1 === d ? l[0] : l.join(" ")), delete i[e + "-top" + t], delete i[e + "-right" + t], delete i[e + "-bottom" + t], delete i[e + "-left" + t]); }, g = e => { const t = i[e]; if (!t) return; const n = t.indexOf(",") > -1 ? [t] : t.split(" "); let o = n.length; for (; o--; ) if (n[o] !== n[0]) return !1; return (i[e] = n[0]), !0; }, p = e => ((l = !0), a[e]), h = (e, t) => ( l && (e = e.replace(/\uFEFF[0-9]/g, e => a[e])), t || (e = e.replace(/\\([\'\";:])/g, "$1")), e ), b = e => String.fromCharCode(parseInt(e.slice(1), 16)), v = e => e.replace(/\\[0-9a-f]+/gi, b), y = (t, n, o, r, s, a) => { if ((s = s || a)) return "'" + (s = h(s)).replace(/\'/g, "\\'") + "'"; if (((n = h(n || o || r || "")), !e.allow_script_urls)) { const t = n.replace(/[\s\r\n]+/g, ""); if (/(java|vb)script:/i.test(t)) return ""; if (!e.allow_svg_data_urls && /^data:image\/svg/i.test(t)) return ""; } return c && (n = c.call(m, n, "style")), "url('" + n.replace(/\'/g, "\\'") + "')"; }; if (t) { let a; for ( t = (t = t.replace(/[\u0000-\u001F]/g, "")) .replace(/\\[\"\';:\uFEFF]/g, p) .replace(/\"[^\"]+\"|\'[^\']+\'/g, e => e.replace(/[;:]/g, p)); (a = o.exec(t)); ) { o.lastIndex = a.index + a[0].length; let t = a[1].replace(r, "").toLowerCase(), c = a[2].replace(r, ""); if (t && c) { if (((t = v(t)), (c = v(c)), -1 !== t.indexOf(d) || -1 !== t.indexOf('"'))) continue; if (!e.allow_script_urls && ("behavior" === t || /expression\s*\(|\/\*|\*\//.test(c))) continue; "font-weight" === t && "700" === c ? (c = "bold") : ("color" !== t && "background-color" !== t) || (c = c.toLowerCase()), s.test(c) || qs(c).each(e => { c = Ks(Ws(e)).toLowerCase(); }), (c = c.replace(n, y)), (i[t] = l ? h(c, !0) : c); } } f("border", "", !0), f("border", "-width"), f("border", "-color"), f("border", "-style"), f("padding", ""), f("margin", ""), "border", (w = "border-style"), (x = "border-color"), g((C = "border-width")) && g(w) && g(x) && ((i.border = i[C] + " " + i[w] + " " + i[x]), delete i[C], delete i[w], delete i[x]), "medium none" === i.border && delete i.border, "none" === i["border-image"] && delete i["border-image"]; } var C, w, x; return i; }, serialize: (e, t) => { let n = ""; const o = (t, o) => { const r = o[t]; if (r) for (let t = 0, o = r.length; t < o; t++) { const o = r[t], s = e[o]; s && (n += (n.length > 0 ? " " : "") + o + ": " + s + ";"); } }; return ( t && i ? (o("*", i), o(t, i)) : pe(e, (e, o) => { e && ((e, t) => { if (!l || !t) return !0; let n = l["*"]; return !((n && n[e]) || ((n = l[t]), n && n[e])); })(o, t) && (n += (n.length > 0 ? " " : "") + o + ": " + e + ";"); }), n ); } }; return u; }, Gs = { keyLocation: !0, layerX: !0, layerY: !0, returnValue: !0, webkitMovementX: !0, webkitMovementY: !0, keyIdentifier: !0, mozPressure: !0 }, Xs = (e, t) => { const n = null != t ? t : {}; for (const t in e) ke(Gs, t) || (n[t] = e[t]); return ( C(e.composedPath) && (n.composedPath = () => e.composedPath()), C(e.getModifierState) && (n.getModifierState = t => e.getModifierState(t)), C(e.getTargetRanges) && (n.getTargetRanges = () => e.getTargetRanges()), n ); }, Zs = (e, t, n, o) => { var r; const s = Xs(t, o); return ( (s.type = e), y(s.target) && (s.target = null !== (r = s.srcElement) && void 0 !== r ? r : n), (e => y(e.preventDefault) || (e => e instanceof Event || w(e.initEvent))(e))(t) && ((s.preventDefault = () => { (s.defaultPrevented = !0), (s.isDefaultPrevented = M), w(t.preventDefault) && t.preventDefault(); }), (s.stopPropagation = () => { (s.cancelBubble = !0), (s.isPropagationStopped = M), w(t.stopPropagation) && t.stopPropagation(); }), (s.stopImmediatePropagation = () => { (s.isImmediatePropagationStopped = M), s.stopPropagation(); }), (e => e.isDefaultPrevented === M || e.isDefaultPrevented === L)(s) || ((s.isDefaultPrevented = !0 === s.defaultPrevented ? M : L), (s.isPropagationStopped = !0 === s.cancelBubble ? M : L), (s.isImmediatePropagationStopped = L))), s ); }, Qs = /^(?:mouse|contextmenu)|click/, Js = (e, t, n, o) => { e.addEventListener(t, n, o || !1); }, ea = (e, t, n, o) => { e.removeEventListener(t, n, o || !1); }, ta = (e, t) => { const n = Zs(e.type, e, document, t); if ((e => C(e) && Qs.test(e.type))(e) && v(e.pageX) && !v(e.clientX)) { const t = n.target.ownerDocument || document, o = t.documentElement, r = t.body, s = n; (s.pageX = e.clientX + ((o && o.scrollLeft) || (r && r.scrollLeft) || 0) - ((o && o.clientLeft) || (r && r.clientLeft) || 0)), (s.pageY = e.clientY + ((o && o.scrollTop) || (r && r.scrollTop) || 0) - ((o && o.clientTop) || (r && r.clientTop) || 0)); } return n; }, na = (e, t, n) => { const o = e.document, r = {type: "ready"}; if (n.domLoaded) return void t(r); const s = () => { ea(e, "DOMContentLoaded", s), ea(e, "load", s), n.domLoaded || ((n.domLoaded = !0), t(r)), (e = null); }; "complete" === o.readyState || ("interactive" === o.readyState && o.body) ? s() : Js(e, "DOMContentLoaded", s), n.domLoaded || Js(e, "load", s); }; class oa { constructor() { (this.domLoaded = !1), (this.events = {}), (this.count = 1), (this.expando = "mce-data-" + (+new Date()).toString(32)), (this.hasFocusIn = "onfocusin" in document.documentElement), (this.count = 1); } bind(e, t, n, o) { const r = this; let s; const a = window, i = e => { r.executeHandlers(ta(e || a.event), l); }; if (!e || dr(e) || mr(e)) return n; let l; e[r.expando] ? (l = e[r.expando]) : ((l = r.count++), (e[r.expando] = l), (r.events[l] = {})), (o = o || e); const d = t.split(" "); let c = d.length; for (; c--; ) { let t = d[c], u = i, m = !1, f = !1; "DOMContentLoaded" === t && (t = "ready"), r.domLoaded && "ready" === t && "complete" === e.readyState ? n.call(o, ta({type: t})) : (r.hasFocusIn || ("focusin" !== t && "focusout" !== t) || ((m = !0), (f = "focusin" === t ? "focus" : "blur"), (u = e => { const t = ta(e || a.event); (t.type = "focus" === t.type ? "focusin" : "focusout"), r.executeHandlers(t, l); })), (s = r.events[l][t]), s ? "ready" === t && r.domLoaded ? n(ta({type: t})) : s.push({func: n, scope: o}) : ((r.events[l][t] = s = [{func: n, scope: o}]), (s.fakeName = f), (s.capture = m), (s.nativeHandler = u), "ready" === t ? na(e, u, r) : Js(e, f || t, u, m))); } return (e = s = null), n; } unbind(e, t, n) { if (!e || dr(e) || mr(e)) return this; const o = e[this.expando]; if (o) { let r = this.events[o]; if (t) { const o = t.split(" "); let s = o.length; for (; s--; ) { const t = o[s], a = r[t]; if (a) { if (n) { let e = a.length; for (; e--; ) if (a[e].func === n) { const n = a.nativeHandler, o = a.fakeName, s = a.capture, i = a.slice(0, e).concat(a.slice(e + 1)); (i.nativeHandler = n), (i.fakeName = o), (i.capture = s), (r[t] = i); } } (n && 0 !== a.length) || (delete r[t], ea(e, a.fakeName || t, a.nativeHandler, a.capture)); } } } else pe(r, (t, n) => { ea(e, t.fakeName || n, t.nativeHandler, t.capture); }), (r = {}); for (const e in r) if (ke(r, e)) return this; delete this.events[o]; try { delete e[this.expando]; } catch (t) { e[this.expando] = null; } } return this; } fire(e, t, n) { return this.dispatch(e, t, n); } dispatch(e, t, n) { if (!e || dr(e) || mr(e)) return this; const o = ta({type: t, target: e}, n); do { const t = e[this.expando]; t && this.executeHandlers(o, t), (e = e.parentNode || e.ownerDocument || e.defaultView || e.parentWindow); } while (e && !o.isPropagationStopped()); return this; } clean(e) { if (!e || dr(e) || mr(e)) return this; if ( (e[this.expando] && this.unbind(e), e.getElementsByTagName || (e = e.document), e && e.getElementsByTagName) ) { this.unbind(e); const t = e.getElementsByTagName("*"); let n = t.length; for (; n--; ) (e = t[n])[this.expando] && this.unbind(e); } return this; } destroy() { this.events = {}; } cancel(e) { return e && (e.preventDefault(), e.stopImmediatePropagation()), !1; } executeHandlers(e, t) { const n = this.events[t], o = n && n[e.type]; if (o) for (let t = 0, n = o.length; t < n; t++) { const n = o[t]; if ((n && !1 === n.func.call(n.scope, e) && e.preventDefault(), e.isImmediatePropagationStopped())) return; } } } oa.Event = new oa(); const ra = Dt.each, sa = Dt.grep, aa = "data-mce-style", ia = Dt.makeMap("fill-opacity font-weight line-height opacity orphans widows z-index zoom", " "), la = (e, t, n) => { y(n) || "" === n ? rn(e, t) : Jt(e, t, n); }, da = e => e.replace(/[A-Z]/g, e => "-" + e.toLowerCase()), ca = (e, t) => { let n = 0; if (e) for (let o = e.nodeType, r = e.previousSibling; r; r = r.previousSibling) { const e = r.nodeType; (!t || !dr(r) || (e !== o && r.data.length)) && (n++, (o = e)); } return n; }, ua = (e, t) => { const n = tn(t, "style"), o = e.serialize(e.parse(n), $t(t)); la(t, aa, o); }, ma = (e, t, n) => { const o = da(t); y(n) || "" === n ? po(e, o) : lo(e, o, ((e, t) => (x(e) ? (ke(ia, t) ? e + "" : e + "px") : e))(n, o)); }, fa = (e, t = {}) => { const n = {}, o = window, r = {}; let s = 0; const a = rs.forElement(Cn(e), {contentCssCors: t.contentCssCors, referrerPolicy: t.referrerPolicy}), i = [], l = t.schema ? t.schema : Fs({}), d = Ys({url_converter: t.url_converter, url_converter_scope: t.url_converter_scope}, t.schema), c = t.ownEvents ? new oa() : oa.Event, u = l.getBlockElements(), f = t => (t && e && m(t) ? e.getElementById(t) : t), h = e => { const t = f(e); return C(t) ? Cn(t) : null; }, b = (e, t, n = "") => { let o; const r = h(e); if (C(r) && Kt(r)) { const e = G[t]; o = e && e.get ? e.get(r.dom, t) : tn(r, t); } return C(o) ? o : n; }, v = e => { const t = f(e); return y(t) ? [] : t.attributes; }, x = (e, n, o) => { B(e, e => { if (er(e)) { const r = Cn(e), s = "" === o ? null : o, a = tn(r, n), i = G[n]; i && i.set ? i.set(r.dom, s, n) : la(r, n, s), a !== s && t.onSetAttrib && t.onSetAttrib({attrElm: r.dom, attrName: n, attrValue: s}); } }); }, E = () => t.root_element || e.body, _ = (t, n) => ((e, t, n) => { let o = 0, r = 0; const s = e.ownerDocument; if (((n = n || e), t)) { if (n === e && t.getBoundingClientRect && "static" === uo(Cn(e), "position")) { const n = t.getBoundingClientRect(); return ( (o = n.left + (s.documentElement.scrollLeft || e.scrollLeft) - s.documentElement.clientLeft), (r = n.top + (s.documentElement.scrollTop || e.scrollTop) - s.documentElement.clientTop), {x: o, y: r} ); } let a = t; for (; a && a !== n && a.nodeType && !ns(a, n); ) { const e = a; (o += e.offsetLeft || 0), (r += e.offsetTop || 0), (a = e.offsetParent); } for (a = t.parentNode; a && a !== n && a.nodeType && !ns(a, n); ) (o -= a.scrollLeft || 0), (r -= a.scrollTop || 0), (a = a.parentNode); r += (e => es.isFirefox() && "table" === $t(e) ? ts(In(e)) .filter(e => "caption" === $t(e)) .bind(e => ts(Mn(e)).map(t => { const n = t.dom.offsetTop, o = e.dom.offsetTop, r = e.dom.offsetHeight; return n <= o ? -r : 0; }) ) .getOr(0) : 0)(Cn(t)); } return {x: o, y: r}; })(e.body, f(t), n), S = (e, t, n) => { const o = f(e); var r; if (!y(o) && (tr(o) || (er((r = o)) && "http://www.w3.org/2000/svg" === r.namespaceURI))) return n ? uo(Cn(o), da(t)) : ("float" === (t = t.replace(/-(\D)/g, (e, t) => t.toUpperCase())) && (t = "cssFloat"), o.style ? o.style[t] : void 0); }, R = e => { const t = f(e); if (!t) return {w: 0, h: 0}; let n = S(t, "width"), o = S(t, "height"); return ( (n && -1 !== n.indexOf("px")) || (n = "0"), (o && -1 !== o.indexOf("px")) || (o = "0"), { w: parseInt(n, 10) || t.offsetWidth || t.clientWidth, h: parseInt(o, 10) || t.offsetHeight || t.clientHeight } ); }, A = (e, t) => { if (!e) return !1; const n = p(e) ? e : [e]; return $(n, e => En(Cn(e), t)); }, T = (e, t, n, o) => { const r = []; let s = f(e); o = void 0 === o; const a = n || ("BODY" !== E().nodeName ? E().parentNode : null); if (m(t)) if ("*" === t) t = er; else { const e = t; t = t => A(t, e); } for (; s && !(s === a || y(s.nodeType) || fr(s) || gr(s)); ) { if (!t || t(s)) { if (!o) return [s]; r.push(s); } s = s.parentNode; } return o ? r : null; }, O = (e, t, n) => { let o = t; if (e) { m(t) && (o = e => A(e, t)); for (let t = e[n]; t; t = t[n]) if (w(o) && o(t)) return t; } return null; }, B = function (e, t, n) { const o = null != n ? n : this; if (p(e)) { const n = []; return ( ra(e, (e, r) => { const s = f(e); s && n.push(t.call(o, s, r)); }), n ); } { const n = f(e); return !!n && t.call(o, n); } }, P = (e, t) => { B(e, e => { pe(t, (t, n) => { x(e, n, t); }); }); }, D = (e, t) => { B(e, e => { const n = Cn(e); No(n, t); }); }, L = (t, n, o, r, s) => B(t, t => { const a = m(n) ? e.createElement(n) : n; return ( C(o) && P(a, o), r && (!m(r) && r.nodeType ? a.appendChild(r) : m(r) && D(a, r)), s ? a : t.appendChild(a) ); }), M = (t, n, o) => L(e.createElement(t), t, n, o, !0), I = ws.encodeAllRaw, F = (e, t) => B(e, e => { const n = Cn(e); return ( t && q(In(n), e => { Yt(e) && 0 === e.dom.length ? Eo(e) : ho(n, e); }), Eo(n), n.dom ); }), U = (e, t, n) => { B(e, e => { if (er(e)) { const o = Cn(e), r = t.split(" "); q(r, e => { C(n) ? (n ? mn : gn)(o, e) : ((e, t) => { const n = ln(e) ? e.dom.classList.toggle(t) : ((e, t) => (H(dn(e), t) ? un(e, t) : cn(e, t)))(e, t); fn(e); })(o, e); }); } }); }, z = (e, t, n) => B(t, o => { var r; const s = p(t) ? e.cloneNode(!0) : e; return ( n && ra(sa(o.childNodes), e => { s.appendChild(e); }), null === (r = o.parentNode) || void 0 === r || r.replaceChild(s, o), o ); }), j = () => e.createRange(), V = (n, r, s, a) => { if (p(n)) { let e = n.length; const t = []; for (; e--; ) t[e] = V(n[e], r, s, a); return t; } return !t.collect || (n !== e && n !== o) || i.push([n, r, s, a]), c.bind(n, r, s, a || Y); }, W = (t, n, r) => { if (p(t)) { let e = t.length; const o = []; for (; e--; ) o[e] = W(t[e], n, r); return o; } if (i.length > 0 && (t === e || t === o)) { let e = i.length; for (; e--; ) { const [o, s, a] = i[e]; t !== o || (n && n !== s) || (r && r !== a) || c.unbind(o, s, a); } } return c.unbind(t, n, r); }, K = e => { if (e && tr(e)) { const t = e.getAttribute("data-mce-contenteditable"); return t && "inherit" !== t ? t : "inherit" !== e.contentEditable ? e.contentEditable : null; } return null; }, Y = { doc: e, settings: t, win: o, files: r, stdMode: !0, boxModel: !0, styleSheetLoader: a, boundEvents: i, styles: d, schema: l, events: c, isBlock: e => (m(e) ? ke(u, e) : er(e) && (ke(u, e.nodeName) || Zr(l, e))), root: null, clone: (e, t) => e.cloneNode(t), getRoot: E, getViewPort: e => { const t = Fo(e); return {x: t.x, y: t.y, w: t.width, h: t.height}; }, getRect: e => { const t = f(e), n = _(t), o = R(t); return {x: n.x, y: n.y, w: o.w, h: o.h}; }, getSize: R, getParent: (e, t, n) => { const o = T(e, t, n, !1); return o && o.length > 0 ? o[0] : null; }, getParents: T, get: f, getNext: (e, t) => O(e, t, "nextSibling"), getPrev: (e, t) => O(e, t, "previousSibling"), select: (n, o) => { var r, s; const a = null !== (s = null !== (r = f(o)) && void 0 !== r ? r : t.root_element) && void 0 !== s ? s : e; return w(a.querySelectorAll) ? ce(a.querySelectorAll(n)) : []; }, is: A, add: L, create: M, createHTML: (e, t, n = "") => { let o = "<" + e; for (const e in t) _e(t, e) && (o += " " + e + '="' + I(t[e]) + '"'); return Xe(n) && ke(l.getVoidElements(), e) ? o + " />" : o + ">" + n + ""; }, createFragment: t => { const n = e.createElement("div"), o = e.createDocumentFragment(); let r; for (o.appendChild(n), t && (n.innerHTML = t); (r = n.firstChild); ) o.appendChild(r); return o.removeChild(n), o; }, remove: F, setStyle: (e, n, o) => { B(e, e => { const r = Cn(e); ma(r, n, o), t.update_styles && ua(d, r); }); }, getStyle: S, setStyles: (e, n) => { B(e, e => { const o = Cn(e); pe(n, (e, t) => { ma(o, t, e); }), t.update_styles && ua(d, o); }); }, removeAllAttribs: e => B(e, e => { const t = e.attributes; for (let n = t.length - 1; n >= 0; n--) e.removeAttributeNode(t.item(n)); }), setAttrib: x, setAttribs: P, getAttrib: b, getPos: _, parseStyle: e => d.parse(e), serializeStyle: (e, t) => d.serialize(e, t), addStyle: t => { if (Y !== fa.DOM && e === document) { if (n[t]) return; n[t] = !0; } let o = e.getElementById("mceDefaultStyles"); if (!o) { (o = e.createElement("style")), (o.id = "mceDefaultStyles"), (o.type = "text/css"); const t = e.head; t.firstChild ? t.insertBefore(o, t.firstChild) : t.appendChild(o); } o.styleSheet ? (o.styleSheet.cssText += t) : o.appendChild(e.createTextNode(t)); }, loadCSS: e => { e || (e = ""), q(e.split(","), e => { (r[e] = !0), a.load(e).catch(k); }); }, addClass: (e, t) => { U(e, t, !0); }, removeClass: (e, t) => { U(e, t, !1); }, hasClass: (e, t) => { const n = h(e), o = t.split(" "); return C(n) && ne(o, e => pn(n, e)); }, toggleClass: U, show: e => { B(e, e => po(Cn(e), "display")); }, hide: e => { B(e, e => lo(Cn(e), "display", "none")); }, isHidden: e => { const t = h(e); return C(t) && Lt(fo(t, "display"), "none"); }, uniqueId: e => (e || "mce_") + s++, setHTML: D, getOuterHTML: e => { const t = h(e); return C(t) ? er(t.dom) ? t.dom.outerHTML : (e => { const t = vn("div"), n = Cn(e.dom.cloneNode(!0)); return yo(t, n), So(t); })(t) : ""; }, setOuterHTML: (e, t) => { B(e, e => { er(e) && (e.outerHTML = t); }); }, decode: ws.decode, encode: I, insertAfter: (e, t) => { const n = f(t); return B(e, e => { const t = null == n ? void 0 : n.parentNode, o = null == n ? void 0 : n.nextSibling; return t && (o ? t.insertBefore(e, o) : t.appendChild(e)), e; }); }, replace: z, rename: (e, t) => { if (e.nodeName !== t.toUpperCase()) { const n = M(t); return ( ra(v(e), t => { x(n, t.nodeName, b(e, t.nodeName)); }), z(n, e, !0), n ); } return e; }, findCommonAncestor: (e, t) => { let n = e; for (; n; ) { let e = t; for (; e && n !== e; ) e = e.parentNode; if (n === e) break; n = n.parentNode; } return !n && e.ownerDocument ? e.ownerDocument.documentElement : n; }, run: B, getAttribs: v, isEmpty: (e, t, n) => { if (g(t)) { const o = e => { const n = e.nodeName.toLowerCase(); return Boolean(t[n]); }; return Ar(l, e, {...n, isContent: o}); } return Ar(l, e, n); }, createRng: j, nodeIndex: ca, split: (e, t, n) => { let o, r, s = j(); if (e && t && e.parentNode && t.parentNode) { const a = e.parentNode; return ( s.setStart(a, ca(e)), s.setEnd(t.parentNode, ca(t)), (o = s.extractContents()), (s = j()), s.setStart(t.parentNode, ca(t) + 1), s.setEnd(a, ca(e) + 1), (r = s.extractContents()), a.insertBefore(is(Y, o, l), e), n ? a.insertBefore(n, e) : a.insertBefore(t, e), a.insertBefore(is(Y, r, l), e), F(e), n || t ); } }, bind: V, unbind: W, fire: (e, t, n) => c.dispatch(e, t, n), dispatch: (e, t, n) => c.dispatch(e, t, n), getContentEditable: K, getContentEditableParent: e => { const t = E(); let n = null; for (let o = e; o && o !== t && ((n = K(o)), null === n); o = o.parentNode); return n; }, isEditable: e => { if (C(e)) { const t = er(e) ? e : e.parentElement; return C(t) && tr(t) && ro(Cn(t)); } return !1; }, destroy: () => { if (i.length > 0) { let e = i.length; for (; e--; ) { const [t, n, o] = i[e]; c.unbind(t, n, o); } } pe(r, (e, t) => { a.unload(t), delete r[t]; }); }, isChildOf: (e, t) => e === t || t.contains(e), dumpRng: e => "startContainer: " + e.startContainer.nodeName + ", startOffset: " + e.startOffset + ", endContainer: " + e.endContainer.nodeName + ", endOffset: " + e.endOffset }, G = ((e, t, n) => { const o = t.keep_values, r = { set: (e, o, r) => { const s = Cn(e); w(t.url_converter) && C(o) && (o = t.url_converter.call(t.url_converter_scope || n(), String(o), r, e)), la(s, "data-mce-" + r, o), la(s, r, o); }, get: (e, t) => { const n = Cn(e); return tn(n, "data-mce-" + t) || tn(n, t); } }, s = { style: { set: (t, n) => { const r = Cn(t); o && la(r, aa, n), rn(r, "style"), m(n) && co(r, e.parse(n)); }, get: t => { const n = Cn(t), o = tn(n, aa) || tn(n, "style"); return e.serialize(e.parse(o), $t(n)); } } }; return o && (s.href = s.src = r), s; })(d, t, N(Y)); return Y; }; (fa.DOM = fa(document)), (fa.nodeIndex = ca); const ga = fa.DOM; class pa { constructor(e = {}) { (this.states = {}), (this.queue = []), (this.scriptLoadedCallbacks = {}), (this.queueLoadedCallbacks = []), (this.loading = !1), (this.settings = e); } _setReferrerPolicy(e) { this.settings.referrerPolicy = e; } loadScript(e) { return new Promise((t, n) => { const o = ga; let r; const s = () => { o.remove(a), r && (r.onerror = r.onload = r = null); }, a = o.uniqueId(); (r = document.createElement("script")), (r.id = a), (r.type = "text/javascript"), (r.src = Dt._addCacheSuffix(e)), this.settings.referrerPolicy && o.setAttrib(r, "referrerpolicy", this.settings.referrerPolicy), (r.onload = () => { s(), t(); }), (r.onerror = () => { s(), n("Failed to load script: " + e); }), (document.getElementsByTagName("head")[0] || document.body).appendChild(r); }); } isDone(e) { return 2 === this.states[e]; } markDone(e) { this.states[e] = 2; } add(e) { const t = this; return ( t.queue.push(e), void 0 === t.states[e] && (t.states[e] = 0), new Promise((n, o) => { t.scriptLoadedCallbacks[e] || (t.scriptLoadedCallbacks[e] = []), t.scriptLoadedCallbacks[e].push({resolve: n, reject: o}); }) ); } load(e) { return this.add(e); } remove(e) { delete this.states[e], delete this.scriptLoadedCallbacks[e]; } loadQueue() { const e = this.queue; return (this.queue = []), this.loadScripts(e); } loadScripts(e) { const t = this, n = (e, n) => { Ee(t.scriptLoadedCallbacks, n).each(t => { q(t, t => t[e](n)); }), delete t.scriptLoadedCallbacks[n]; }, o = e => { const t = Y(e, e => "rejected" === e.status); return t.length > 0 ? Promise.reject(te(t, ({reason: e}) => (p(e) ? e : [e]))) : Promise.resolve(); }, r = e => Promise.allSettled( V(e, e => 2 === t.states[e] ? (n("resolve", e), Promise.resolve()) : 3 === t.states[e] ? (n("reject", e), Promise.reject(e)) : ((t.states[e] = 1), t.loadScript(e).then( () => { (t.states[e] = 2), n("resolve", e); const s = t.queue; return s.length > 0 ? ((t.queue = []), r(s).then(o)) : Promise.resolve(); }, () => ((t.states[e] = 3), n("reject", e), Promise.reject(e)) )) ) ), s = e => ( (t.loading = !0), r(e).then(e => { t.loading = !1; const n = t.queueLoadedCallbacks.shift(); return I.from(n).each(D), o(e); }) ), a = Se(e); return t.loading ? new Promise((e, n) => { t.queueLoadedCallbacks.push(() => { s(a).then(e, n); }); }) : s(a); } } pa.ScriptLoader = new pa(); const ha = {}, ba = Br("en"), va = () => Ee(ha, ba.get()), ya = { getData: () => he(ha, e => ({...e})), setCode: e => { e && ba.set(e); }, getCode: () => ba.get(), add: (e, t) => { let n = ha[e]; n || (ha[e] = n = {}); const o = V(fe(t), e => e.toLowerCase()); pe(t, (e, r) => { const s = r.toLowerCase(); s !== r && ((e, t) => { const n = e.indexOf(t); return -1 !== n && e.indexOf(t, n + 1) > n; })(o, s) ? (ke(t, s) || (n[s] = e), (n[r] = e)) : (n[s] = e); }); }, translate: e => { const t = va().getOr({}), n = e => (w(e) ? Object.prototype.toString.call(e) : o(e) ? "" : "" + e), o = e => "" === e || null == e, r = e => { const o = n(e); return ke(t, o) ? n(t[o]) : Ee(t, o.toLowerCase()).map(n).getOr(o); }, s = e => e.replace(/{context:\w+}$/, ""); if (o(e)) return ""; if (f((a = e)) && ke(a, "raw")) return n(e.raw); var a; if ((e => p(e) && e.length > 1)(e)) { const t = e.slice(1); return s(r(e[0]).replace(/\{([0-9]+)\}/g, (e, o) => (ke(t, o) ? n(t[o]) : e))); } return s(r(e)); }, isRtl: () => va() .bind(e => Ee(e, "_dir")) .exists(e => "rtl" === e), hasCode: e => ke(ha, e) }, Ca = () => { const e = [], t = {}, n = {}, o = [], r = (e, t) => { const n = Y(o, n => n.name === e && n.state === t); q(n, e => e.resolve()); }, s = e => ke(t, e), a = (e, n) => { const o = ya.getCode(); !o || (n && -1 === ("," + (n || "") + ",").indexOf("," + o + ",")) || pa.ScriptLoader.add(t[e] + "/langs/" + o + ".min.js"); }, i = (e, t = "added") => ("added" === t && (e => ke(n, e))(e)) || ("loaded" === t && s(e)) ? Promise.resolve() : new Promise(n => { o.push({name: e, state: t, resolve: n}); }); return { items: e, urls: t, lookup: n, get: e => { if (n[e]) return n[e].instance; }, requireLangPack: (e, t) => { !1 !== Ca.languageLoad && (s(e) ? a(e, t) : i(e, "loaded").then(() => a(e, t))); }, add: (t, o) => (e.push(o), (n[t] = {instance: o}), r(t, "added"), o), remove: e => { delete t[e], delete n[e]; }, createUrl: (e, t) => m(t) ? (m(e) ? {prefix: "", resource: t, suffix: ""} : {prefix: e.prefix, resource: t, suffix: e.suffix}) : t, load: (e, o) => { if (t[e]) return Promise.resolve(); let s = m(o) ? o : o.prefix + o.resource + o.suffix; 0 !== s.indexOf("/") && -1 === s.indexOf("://") && (s = Ca.baseURL + "/" + s), (t[e] = s.substring(0, s.lastIndexOf("/"))); const a = () => (r(e, "loaded"), Promise.resolve()); return n[e] ? a() : pa.ScriptLoader.add(s).then(a); }, waitFor: i }; }; (Ca.languageLoad = !0), (Ca.baseURL = ""), (Ca.PluginManager = Ca()), (Ca.ThemeManager = Ca()), (Ca.ModelManager = Ca()); const wa = (e, t) => { let n = null; return { cancel: () => { h(n) || (clearTimeout(n), (n = null)); }, throttle: (...o) => { h(n) && (n = setTimeout(() => { (n = null), e.apply(null, o); }, t)); } }; }, xa = (e, t) => { let n = null; const o = () => { h(n) || (clearTimeout(n), (n = null)); }; return { cancel: o, throttle: (...r) => { o(), (n = setTimeout(() => { (n = null), e.apply(null, r); }, t)); } }; }, Ea = N("mce-annotation"), ka = N("data-mce-annotation"), _a = N("data-mce-annotation-uid"), Sa = N("data-mce-annotation-active"), Na = N("data-mce-annotation-classes"), Ra = N("data-mce-annotation-attrs"), Aa = e => t => _n(t, e), Ta = (e, t) => { const n = e.selection.getRng(), o = Cn(n.startContainer), r = Cn(e.getBody()), s = t.fold( () => "." + Ea(), e => `[${ka()}="${e}"]` ), a = Fn(o, n.startOffset).getOr(o); return oo(a, s, Aa(r)).bind(t => nn(t, `${_a()}`).bind(n => nn(t, `${ka()}`).map(t => { const o = Ba(e, n); return {uid: n, name: t, elements: o}; }) ) ); }, Oa = (e, t) => on(e, "data-mce-bogus") || ((e, t, n) => to(e, '[data-mce-bogus="all"]', n).isSome())(e, 0, Aa(t)), Ba = (e, t) => { const n = Cn(e.getBody()), o = zo(n, `[${_a()}="${t}"]`); return Y(o, e => !Oa(e, n)); }, Pa = (e, t) => { const n = Cn(e.getBody()), o = zo(n, `[${ka()}="${t}"]`), r = {}; return ( q(o, e => { if (!Oa(e, n)) { const t = tn(e, _a()), n = Ee(r, t).getOr([]); r[t] = n.concat([e]); } }), r ); }; let Da = 0; const La = e => { const t = new Date().getTime(), n = Math.floor(1e9 * Math.random()); return Da++, e + "_" + n + Da + String(t); }, Ma = (e, t) => Cn(e.dom.cloneNode(t)), Ia = e => Ma(e, !1), Fa = e => Ma(e, !0), Ua = (e, t, n = L) => { const o = new Vo(e, t), r = e => { let t; do { t = o[e](); } while (t && !dr(t) && !n(t)); return I.from(t).filter(dr); }; return { current: () => I.from(o.current()).filter(dr), next: () => r("next"), prev: () => r("prev"), prev2: () => r("prev2") }; }, za = (e, t) => { const n = t || (t => e.isBlock(t) || pr(t) || vr(t)), o = (e, t, n, r) => { if (dr(e)) { const n = r(e, t, e.data); if (-1 !== n) return I.some({container: e, offset: n}); } return n().bind(e => o(e.container, e.offset, n, r)); }; return { backwards: (t, r, s, a) => { const i = Ua(t, null != a ? a : e.getRoot(), n); return o(t, r, () => i.prev().map(e => ({container: e, offset: e.length})), s).getOrNull(); }, forwards: (t, r, s, a) => { const i = Ua(t, null != a ? a : e.getRoot(), n); return o(t, r, () => i.next().map(e => ({container: e, offset: 0})), s).getOrNull(); } }; }, ja = ((e, t) => { const n = t => (e(t) ? I.from(t.dom.nodeValue) : I.none()); return { get: t => { if (!e(t)) throw new Error("Can only get text value of a text node"); return n(t).getOr(""); }, getOption: n, set: (t, n) => { if (!e(t)) throw new Error("Can only set raw text value of a text node"); t.dom.nodeValue = n; } }; })(Yt), Ha = e => ja.get(e), $a = e => { let t; return n => ((t = t || se(e, M)), ke(t, $t(n))); }, Va = e => Kt(e) && "br" === $t(e), qa = $a([ "h1", "h2", "h3", "h4", "h5", "h6", "p", "div", "address", "pre", "form", "blockquote", "center", "dir", "fieldset", "header", "footer", "article", "section", "hgroup", "aside", "nav", "figure" ]), Wa = $a(["ul", "ol", "dl"]), Ka = $a(["li", "dd", "dt"]), Ya = $a(["thead", "tbody", "tfoot"]), Ga = $a(["td", "th"]), Xa = $a(["pre", "script", "textarea", "style"]), Za = () => { const e = vn("br"); return Jt(e, "data-mce-bogus", "1"), e; }, Qa = e => { xo(e), yo(e, Za()); }, Ja = qo, ei = Ko, ti = e => e.replace(/\uFEFF/g, ""), ni = er, oi = dr, ri = e => (oi(e) && (e = e.parentNode), ni(e) && e.hasAttribute("data-mce-caret")), si = e => oi(e) && ei(e.data), ai = e => ri(e) || si(e), ii = e => e.firstChild !== e.lastChild || !pr(e.firstChild), li = e => { const t = e.container(); return !!dr(t) && (t.data.charAt(e.offset()) === Ja || (e.isAtStart() && si(t.previousSibling))); }, di = e => { const t = e.container(); return !!dr(t) && (t.data.charAt(e.offset() - 1) === Ja || (e.isAtEnd() && si(t.nextSibling))); }, ci = e => oi(e) && e.data[0] === Ja, ui = e => oi(e) && e.data[e.data.length - 1] === Ja, mi = e => e && e.hasAttribute("data-mce-caret") ? ((e => { var t; const n = e.getElementsByTagName("br"), o = n[n.length - 1]; sr(o) && (null === (t = o.parentNode) || void 0 === t || t.removeChild(o)); })(e), e.removeAttribute("data-mce-caret"), e.removeAttribute("data-mce-bogus"), e.removeAttribute("style"), e.removeAttribute("data-mce-style"), e.removeAttribute("_moz_abspos"), e) : null, fi = e => ri(e.startContainer), gi = Math.round, pi = e => e ? { left: gi(e.left), top: gi(e.top), bottom: gi(e.bottom), right: gi(e.right), width: gi(e.width), height: gi(e.height) } : {left: 0, top: 0, bottom: 0, right: 0, width: 0, height: 0}, hi = (e, t) => ((e = pi(e)), t || (e.left = e.left + e.width), (e.right = e.left), (e.width = 0), e), bi = (e, t, n) => e >= 0 && e <= Math.min(t.height, n.height) / 2, vi = (e, t) => { const n = Math.min(t.height / 2, e.height / 2); return e.bottom - n < t.top || (!(e.top > t.bottom) && bi(t.top - e.bottom, e, t)); }, yi = (e, t) => e.top > t.bottom || (!(e.bottom < t.top) && bi(t.bottom - e.top, e, t)), Ci = (e, t, n) => { const o = Math.max(Math.min(t, e.left + e.width), e.left), r = Math.max(Math.min(n, e.top + e.height), e.top); return Math.sqrt((t - o) * (t - o) + (n - r) * (n - r)); }, wi = e => { const t = e.startContainer, n = e.startOffset; return t === e.endContainer && t.hasChildNodes() && e.endOffset === n + 1 ? t.childNodes[n] : null; }, xi = (e, t) => { if (er(e) && e.hasChildNodes()) { const n = e.childNodes, o = ((e, t, n) => Math.min(Math.max(e, 0), n))(t, 0, n.length - 1); return n[o]; } return e; }, Ei = 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]" ), ki = e => m(e) && e.charCodeAt(0) >= 768 && Ei.test(e), _i = br, Si = vr, Ni = pr, Ri = dr, Ai = or(["script", "style", "textarea"]), Ti = or(["img", "input", "textarea", "hr", "iframe", "video", "audio", "object", "embed"]), Oi = or(["table"]), Bi = ai, Pi = e => !Bi(e) && (Ri(e) ? !Ai(e.parentNode) : Ti(e) || Ni(e) || Oi(e) || Di(e)), Di = e => !(e => er(e) && "true" === e.getAttribute("unselectable"))(e) && Si(e), Li = (e, t) => Pi(e) && ((e, t) => { for (let n = e.parentNode; n && n !== t; n = n.parentNode) { if (Di(n)) return !1; if (_i(n)) return !0; } return !0; })(e, t), Mi = er, Ii = Pi, Fi = rr("display", "block table"), Ui = rr("float", "left right"), zi = ( (...e) => t => { for (let n = 0; n < e.length; n++) if (!e[n](t)) return !1; return !0; } )(Mi, Ii, O(Ui)), ji = O(rr("white-space", "pre pre-line pre-wrap")), Hi = dr, $i = pr, Vi = fa.nodeIndex, qi = (e, t) => (t < 0 && er(e) && e.hasChildNodes() ? void 0 : xi(e, t)), Wi = e => (e ? e.createRange() : fa.DOM.createRng()), Ki = e => m(e) && /[\r\n\t ]/.test(e), Yi = e => !!e.setStart && !!e.setEnd, Gi = e => { const t = e.startContainer, n = e.startOffset; if (Ki(e.toString()) && ji(t.parentNode) && dr(t)) { const e = t.data; if (Ki(e[n - 1]) || Ki(e[n + 1])) return !0; } return !1; }, Xi = e => 0 === e.left && 0 === e.right && 0 === e.top && 0 === e.bottom, Zi = e => { var t; let n; const o = e.getClientRects(); return ( (n = o.length > 0 ? pi(o[0]) : pi(e.getBoundingClientRect())), !Yi(e) && $i(e) && Xi(n) ? (e => { const t = e.ownerDocument, n = Wi(t), o = t.createTextNode(Wo), r = e.parentNode; r.insertBefore(o, e), n.setStart(o, 0), n.setEnd(o, 1); const s = pi(n.getBoundingClientRect()); return r.removeChild(o), s; })(e) : Xi(n) && Yi(e) && null !== (t = (e => { const t = e.startContainer, n = e.endContainer, o = e.startOffset, r = e.endOffset; if (t === n && dr(n) && 0 === o && 1 === r) { const t = e.cloneRange(); return t.setEndAfter(n), Zi(t); } return null; })(e)) && void 0 !== t ? t : n ); }, Qi = (e, t) => { const n = hi(e, t); return (n.width = 1), (n.right = n.left + 1), n; }, Ji = (e, t, n) => { const o = () => ( n || (n = (e => { const t = [], n = e => { var n, o; 0 !== e.height && ((t.length > 0 && ((n = e), (o = t[t.length - 1]), n.left === o.left && n.top === o.top && n.bottom === o.bottom && n.right === o.right)) || t.push(e)); }, o = (e, t) => { const o = Wi(e.ownerDocument); if (t < e.data.length) { if (ki(e.data[t])) return; if (ki(e.data[t - 1]) && (o.setStart(e, t), o.setEnd(e, t + 1), !Gi(o))) return void n(Qi(Zi(o), !1)); } t > 0 && (o.setStart(e, t - 1), o.setEnd(e, t), Gi(o) || n(Qi(Zi(o), !1))), t < e.data.length && (o.setStart(e, t), o.setEnd(e, t + 1), Gi(o) || n(Qi(Zi(o), !0))); }, r = e.container(), s = e.offset(); if (Hi(r)) return o(r, s), t; if (Mi(r)) if (e.isAtEnd()) { const e = qi(r, s); Hi(e) && o(e, e.data.length), zi(e) && !$i(e) && n(Qi(Zi(e), !1)); } else { const a = qi(r, s); if ((Hi(a) && o(a, 0), zi(a) && e.isAtEnd())) return n(Qi(Zi(a), !1)), t; const i = qi(e.container(), e.offset() - 1); zi(i) && !$i(i) && (Fi(i) || Fi(a) || !zi(a)) && n(Qi(Zi(i), !1)), zi(a) && n(Qi(Zi(a), !0)); } return t; })(Ji(e, t))), n ); return { container: N(e), offset: N(t), toRange: () => { const n = Wi(e.ownerDocument); return n.setStart(e, t), n.setEnd(e, t), n; }, getClientRects: o, isVisible: () => o().length > 0, isAtStart: () => (Hi(e), 0 === t), isAtEnd: () => (Hi(e) ? t >= e.data.length : t >= e.childNodes.length), isEqual: n => n && e === n.container() && t === n.offset(), getNode: n => qi(e, n ? t - 1 : t) }; }; (Ji.fromRangeStart = e => Ji(e.startContainer, e.startOffset)), (Ji.fromRangeEnd = e => Ji(e.endContainer, e.endOffset)), (Ji.after = e => Ji(e.parentNode, Vi(e) + 1)), (Ji.before = e => Ji(e.parentNode, Vi(e))), (Ji.isAbove = (e, t) => It(le(t.getClientRects()), de(e.getClientRects()), vi).getOr(!1)), (Ji.isBelow = (e, t) => It(de(t.getClientRects()), le(e.getClientRects()), yi).getOr(!1)), (Ji.isAtStart = e => !!e && e.isAtStart()), (Ji.isAtEnd = e => !!e && e.isAtEnd()), (Ji.isTextPosition = e => !!e && dr(e.container())), (Ji.isElementPosition = e => !Ji.isTextPosition(e)); const el = (e, t) => { dr(t) && 0 === t.data.length && e.remove(t); }, tl = (e, t, n) => { gr(n) ? ((e, t, n) => { const o = I.from(n.firstChild), r = I.from(n.lastChild); t.insertNode(n), o.each(t => el(e, t.previousSibling)), r.each(t => el(e, t.nextSibling)); })(e, t, n) : ((e, t, n) => { t.insertNode(n), el(e, n.previousSibling), el(e, n.nextSibling); })(e, t, n); }, nl = dr, ol = sr, rl = fa.nodeIndex, sl = e => { const t = e.parentNode; return ol(t) ? sl(t) : t; }, al = e => e ? Be(e.childNodes, (e, t) => (ol(t) && "BR" !== t.nodeName ? (e = e.concat(al(t))) : e.push(t), e), []) : [], il = e => t => e === t, ll = e => (nl(e) ? "text()" : e.nodeName.toLowerCase()) + "[" + (e => { let t, n; (t = al(sl(e))), (n = Pe(t, il(e), e)), (t = t.slice(0, n + 1)); const o = Be(t, (e, n, o) => (nl(n) && nl(t[o - 1]) && e++, e), 0); return (t = Oe(t, or([e.nodeName]))), (n = Pe(t, il(e), e)), n - o; })(e) + "]", dl = (e, t) => { let n, o = [], r = t.container(), s = t.offset(); if (nl(r)) n = ((e, t) => { let n = e; for (; (n = n.previousSibling) && nl(n); ) t += n.data.length; return t; })(r, s); else { const e = r.childNodes; s >= e.length ? ((n = "after"), (s = e.length - 1)) : (n = "before"), (r = e[s]); } o.push(ll(r)); let a = ((e, t, n) => { const o = []; for (let n = t.parentNode; n && n !== e; n = n.parentNode) o.push(n); return o; })(e, r); return (a = Oe(a, O(sr))), (o = o.concat(Te(a, e => ll(e)))), o.reverse().join("/") + "," + n; }, cl = (e, t) => { if (!t) return null; const n = t.split(","), o = n[0].split("/"), r = n.length > 1 ? n[1] : "before", s = Be( o, (e, t) => { const n = /([\w\-\(\)]+)\[([0-9]+)\]/.exec(t); return n ? ("text()" === n[1] && (n[1] = "#text"), ((e, t, n) => { let o = al(e); return (o = Oe(o, (e, t) => !nl(e) || !nl(o[t - 1]))), (o = Oe(o, or([t]))), o[n]; })(e, n[1], parseInt(n[2], 10))) : null; }, e ); if (!s) return null; if (!nl(s) && s.parentNode) { let e; return (e = "after" === r ? rl(s) + 1 : rl(s)), Ji(s.parentNode, e); } return ((e, t) => { let n = e, o = 0; for (; nl(n); ) { const r = n.data.length; if (t >= o && t <= o + r) { (e = n), (t -= o); break; } if (!nl(n.nextSibling)) { (e = n), (t = r); break; } (o += r), (n = n.nextSibling); } return nl(e) && t > e.data.length && (t = e.data.length), Ji(e, t); })(s, parseInt(r, 10)); }, ul = vr, ml = (e, t, n, o, r) => { const s = r ? o.startContainer : o.endContainer; let a = r ? o.startOffset : o.endOffset; const i = [], l = e.getRoot(); if (dr(s)) i.push( n ? ((e, t, n) => { let o = e(t.data.slice(0, n)).length; for (let n = t.previousSibling; n && dr(n); n = n.previousSibling) o += e(n.data).length; return o; })(t, s, a) : a ); else { let t = 0; const o = s.childNodes; a >= o.length && o.length && ((t = 1), (a = Math.max(0, o.length - 1))), i.push(e.nodeIndex(o[a], n) + t); } for (let t = s; t && t !== l; t = t.parentNode) i.push(e.nodeIndex(t, n)); return i; }, fl = (e, t, n) => { let o = 0; return Dt.each(e.select(t), e => ("all" === e.getAttribute("data-mce-bogus") ? void 0 : e !== n && void o++)), o; }, gl = (e, t) => { let n = t ? e.startContainer : e.endContainer, o = t ? e.startOffset : e.endOffset; if (er(n) && "TR" === n.nodeName) { const r = n.childNodes; (n = r[Math.min(t ? o : o - 1, r.length - 1)]), n && ((o = t ? 0 : n.childNodes.length), t ? e.setStart(n, o) : e.setEnd(n, o)); } }, pl = e => (gl(e, !0), gl(e, !1), e), hl = (e, t) => { if (er(e) && ((e = xi(e, t)), ul(e))) return e; if (ai(e)) { dr(e) && ri(e) && (e = e.parentNode); let t = e.previousSibling; if (ul(t)) return t; if (((t = e.nextSibling), ul(t))) return t; } }, bl = (e, t, n) => { const o = n.getNode(), r = n.getRng(); if ("IMG" === o.nodeName || ul(o)) { const e = o.nodeName; return {name: e, index: fl(n.dom, e, o)}; } const s = (e => hl(e.startContainer, e.startOffset) || hl(e.endContainer, e.endOffset))(r); if (s) { const e = s.tagName; return {name: e, index: fl(n.dom, e, s)}; } return ((e, t, n, o) => { const r = t.dom, s = ml(r, e, n, o, !0), a = t.isForward(), i = fi(o) ? {isFakeCaret: !0} : {}; return t.isCollapsed() ? {start: s, forward: a, ...i} : {start: s, end: ml(r, e, n, o, !1), forward: a, ...i}; })(e, n, t, r); }, vl = (e, t, n) => { const o = {"data-mce-type": "bookmark", id: t, style: "overflow:hidden;line-height:0px"}; return n ? e.create("span", o, "") : e.create("span", o); }, yl = (e, t) => { const n = e.dom; let o = e.getRng(); const r = n.uniqueId(), s = e.isCollapsed(), a = e.getNode(), i = a.nodeName, l = e.isForward(); if ("IMG" === i) return {name: i, index: fl(n, i, a)}; const d = pl(o.cloneRange()); if (!s) { d.collapse(!1); const e = vl(n, r + "_end", t); tl(n, d, e); } (o = pl(o)), o.collapse(!0); const c = vl(n, r + "_start", t); return tl(n, o, c), e.moveToBookmark({id: r, keep: !0, forward: l}), {id: r, forward: l}; }, Cl = T(bl, R, !0), wl = e => { const t = t => t(e), n = N(e), o = () => r, r = { tag: !0, inner: e, fold: (t, n) => n(e), isValue: M, isError: L, map: t => El.value(t(e)), mapError: o, bind: t, exists: t, forall: t, getOr: n, or: o, getOrThunk: n, orThunk: o, getOrDie: n, each: t => { t(e); }, toOptional: () => I.some(e) }; return r; }, xl = e => { const t = () => n, n = { tag: !1, inner: e, fold: (t, n) => t(e), isValue: L, isError: M, map: t, mapError: t => El.error(t(e)), bind: t, exists: L, forall: M, getOr: R, or: R, getOrThunk: P, orThunk: P, getOrDie: B(String(e)), each: k, toOptional: I.none }; return n; }, El = {value: wl, error: xl, fromOption: (e, t) => e.fold(() => xl(t), wl)}, kl = e => { if (!p(e)) throw new Error("cases must be an array"); if (0 === e.length) throw new Error("there must be at least one case"); const t = [], n = {}; return ( q(e, (o, r) => { const s = fe(o); if (1 !== s.length) throw new Error("one and only one name per case"); const a = s[0], i = o[a]; if (void 0 !== n[a]) throw new Error("duplicate key detected:" + a); if ("cata" === a) throw new Error("cannot have a case named cata (sorry)"); if (!p(i)) throw new Error("case arguments must be an array"); t.push(a), (n[a] = (...n) => { const o = n.length; if (o !== i.length) throw new Error( "Wrong number of arguments to case " + a + ". Expected " + i.length + " (" + i + "), got " + o ); return { fold: (...t) => { if (t.length !== e.length) throw new Error("Wrong number of arguments to fold. Expected " + e.length + ", got " + t.length); return t[r].apply(null, n); }, match: e => { const o = fe(e); if (t.length !== o.length) throw new Error( "Wrong number of arguments to match. Expected: " + t.join(",") + "\nActual: " + o.join(",") ); if (!ne(t, e => H(o, e))) throw new Error( "Not all branches were specified when using match. Specified: " + o.join(", ") + "\nRequired: " + t.join(", ") ); return e[a].apply(null, n); }, log: e => { console.log(e, {constructors: t, constructor: a, params: n}); } }; }); }), n ); }; kl([ {bothErrors: ["error1", "error2"]}, {firstError: ["error1", "value2"]}, {secondError: ["value1", "error2"]}, {bothValues: ["value1", "value2"]} ]); const _l = e => "inline-command" === e.type || "inline-format" === e.type, Sl = e => "block-command" === e.type || "block-format" === e.type, Nl = e => { var t; const n = t => El.error({message: t, pattern: e}), o = (t, o, r) => { if (void 0 !== e.format) { let r; if (p(e.format)) { if (!ne(e.format, m)) return n(t + " pattern has non-string items in the `format` array"); r = e.format; } else { if (!m(e.format)) return n(t + " pattern has non-string `format` parameter"); r = [e.format]; } return El.value(o(r)); } return void 0 !== e.cmd ? m(e.cmd) ? El.value(r(e.cmd, e.value)) : n(t + " pattern has non-string `cmd` parameter") : n(t + " pattern is missing both `format` and `cmd` parameters"); }; if (!f(e)) return n("Raw pattern is not an object"); if (!m(e.start)) return n("Raw pattern is missing `start` parameter"); if (void 0 !== e.end) { if (!m(e.end)) return n("Inline pattern has non-string `end` parameter"); if (0 === e.start.length && 0 === e.end.length) return n("Inline pattern has empty `start` and `end` parameters"); let t = e.start, r = e.end; return ( 0 === r.length && ((r = t), (t = "")), o( "Inline", e => ({type: "inline-format", start: t, end: r, format: e}), (e, n) => ({type: "inline-command", start: t, end: r, cmd: e, value: n}) ) ); } if (void 0 !== e.replacement) return m(e.replacement) ? 0 === e.start.length ? n("Replacement pattern has empty `start` parameter") : El.value({type: "inline-command", start: "", end: e.start, cmd: "mceInsertContent", value: e.replacement}) : n("Replacement pattern has non-string `replacement` parameter"); { const r = null !== (t = e.trigger) && void 0 !== t ? t : "space"; return 0 === e.start.length ? n("Block pattern has empty `start` parameter") : o( "Block", t => ({type: "block-format", start: e.start, format: t[0], trigger: r}), (t, n) => ({type: "block-command", start: e.start, cmd: t, value: n, trigger: r}) ); } }, Rl = e => Y(e, Sl), Al = e => Y(e, _l), Tl = (e, t) => ({ ...e, blockPatterns: Y(e.blockPatterns, e => ((e, t) => ("block-command" === e.type || "block-format" === e.type) && e.trigger === t)(e, t) ) }), Ol = e => { const t = (e => { const t = [], n = []; return ( q(e, e => { e.fold( e => { t.push(e); }, e => { n.push(e); } ); }), {errors: t, values: n} ); })(V(e, Nl)); return q(t.errors, e => console.error(e.message, e.pattern)), t.values; }, Bl = Et().deviceType, Pl = Bl.isTouch(), Dl = fa.DOM, Ll = e => u(e, RegExp), Ml = e => t => t.options.get(e), Il = e => m(e) || f(e), Fl = (e, t = "") => n => { const o = m(n); if (o) { if (-1 !== n.indexOf("=")) { const r = (e => { const t = e.indexOf("=") > 0 ? e.split(/[;,](?![^=;,]*(?:[;,]|$))/) : e.split(","); return X( t, (e, t) => { const n = t.split("="), o = n[0], r = n.length > 1 ? n[1] : o; return (e[We(o)] = We(r)), e; }, {} ); })(n); return {value: Ee(r, e.id).getOr(t), valid: o}; } return {value: n, valid: o}; } return {valid: !1, message: "Must be a string."}; }, Ul = Ml("iframe_attrs"), zl = Ml("doctype"), jl = Ml("document_base_url"), Hl = Ml("body_id"), $l = Ml("body_class"), Vl = Ml("content_security_policy"), ql = Ml("br_in_pre"), Wl = Ml("forced_root_block"), Kl = Ml("forced_root_block_attrs"), Yl = Ml("newline_behavior"), Gl = Ml("br_newline_selector"), Xl = Ml("no_newline_selector"), Zl = Ml("keep_styles"), Ql = Ml("end_container_on_empty_block"), Jl = Ml("automatic_uploads"), ed = Ml("images_reuse_filename"), td = Ml("images_replace_blob_uris"), nd = Ml("icons"), od = Ml("icons_url"), rd = Ml("images_upload_url"), sd = Ml("images_upload_base_path"), ad = Ml("images_upload_credentials"), id = Ml("images_upload_handler"), ld = Ml("content_css_cors"), dd = Ml("referrer_policy"), cd = Ml("language"), ud = Ml("language_url"), md = Ml("indent_use_margin"), fd = Ml("indentation"), gd = Ml("content_css"), pd = Ml("content_style"), hd = Ml("font_css"), bd = Ml("directionality"), vd = Ml("inline_boundaries_selector"), yd = Ml("object_resizing"), Cd = Ml("resize_img_proportional"), wd = Ml("placeholder"), xd = Ml("event_root"), Ed = Ml("service_message"), kd = Ml("theme"), _d = Ml("theme_url"), Sd = Ml("model"), Nd = Ml("model_url"), Rd = Ml("inline_boundaries"), Ad = Ml("formats"), Td = Ml("preview_styles"), Od = Ml("format_empty_lines"), Bd = Ml("format_noneditable_selector"), Pd = Ml("custom_ui_selector"), Dd = Ml("inline"), Ld = Ml("hidden_input"), Md = Ml("submit_patch"), Id = Ml("add_form_submit_trigger"), Fd = Ml("add_unload_trigger"), Ud = Ml("custom_undo_redo_levels"), zd = Ml("disable_nodechange"), jd = Ml("readonly"), Hd = Ml("editable_root"), $d = Ml("content_css_cors"), Vd = Ml("plugins"), qd = Ml("external_plugins"), Wd = Ml("block_unsupported_drop"), Kd = Ml("visual"), Yd = Ml("visual_table_class"), Gd = Ml("visual_anchor_class"), Xd = Ml("iframe_aria_text"), Zd = Ml("setup"), Qd = Ml("init_instance_callback"), Jd = Ml("urlconverter_callback"), ec = Ml("auto_focus"), tc = Ml("browser_spellcheck"), nc = Ml("protect"), oc = Ml("paste_block_drop"), rc = Ml("paste_data_images"), sc = Ml("paste_preprocess"), ac = Ml("paste_postprocess"), ic = Ml("newdocument_content"), lc = Ml("paste_webkit_styles"), dc = Ml("paste_remove_styles_if_webkit"), cc = Ml("paste_merge_formats"), uc = Ml("smart_paste"), mc = Ml("paste_as_text"), fc = Ml("paste_tab_spaces"), gc = Ml("allow_html_data_urls"), pc = Ml("text_patterns"), hc = Ml("text_patterns_lookup"), bc = Ml("noneditable_class"), vc = Ml("editable_class"), yc = Ml("noneditable_regexp"), Cc = Ml("preserve_cdata"), wc = Ml("highlight_on_focus"), xc = Ml("xss_sanitization"), Ec = Ml("init_content_sync"), kc = e => Dt.explode(e.options.get("images_file_types")), _c = Ml("table_tab_navigation"), Sc = Ml("details_initial_state"), Nc = Ml("details_serialized_state"), Rc = Ml("sandbox_iframes"), Ac = e => e.options.get("sandbox_iframes_exclusions"), Tc = Ml("convert_unsafe_embeds"), Oc = Ml("license_key"), Bc = Ml("api_key"), Pc = er, Dc = dr, Lc = e => { const t = e.parentNode; t && t.removeChild(e); }, Mc = e => { const t = ti(e); return {count: e.length - t.length, text: t}; }, Ic = e => { let t; for (; -1 !== (t = e.data.lastIndexOf(Ja)); ) e.deleteData(t, 1); }, Fc = (e, t) => (zc(e), t), Uc = (e, t) => Ji.isTextPosition(t) ? ((e, t) => Dc(e) && t.container() === e ? ((e, t) => { const n = Mc(e.data.substr(0, t.offset())), o = Mc(e.data.substr(t.offset())); return (n.text + o.text).length > 0 ? (Ic(e), Ji(e, t.offset() - n.count)) : t; })(e, t) : Fc(e, t))(e, t) : ((e, t) => t.container() === e.parentNode ? ((e, t) => { const n = t.container(), o = ((e, t) => { const n = j(e, t); return -1 === n ? I.none() : I.some(n); })(ce(n.childNodes), e) .map(e => (e < t.offset() ? Ji(n, t.offset() - 1) : t)) .getOr(t); return zc(e), o; })(e, t) : Fc(e, t))(e, t), zc = e => { Pc(e) && ai(e) && (ii(e) ? e.removeAttribute("data-mce-caret") : Lc(e)), Dc(e) && (Ic(e), 0 === e.data.length && Lc(e)); }, jc = vr, Hc = wr, $c = yr, Vc = (e, t, n) => { const o = hi(t.getBoundingClientRect(), n); let r, s; if ("BODY" === e.tagName) { const t = e.ownerDocument.documentElement; (r = e.scrollLeft || t.scrollLeft), (s = e.scrollTop || t.scrollTop); } else { const t = e.getBoundingClientRect(); (r = e.scrollLeft - t.left), (s = e.scrollTop - t.top); } (o.left += r), (o.right += r), (o.top += s), (o.bottom += s), (o.width = 1); let a = t.offsetWidth - t.clientWidth; return a > 0 && (n && (a *= -1), (o.left += a), (o.right += a)), o; }, qc = (e, t, n, o) => { const r = Dr(); let s, a; const i = Wl(e), l = e.dom, d = () => { (e => { var t, n; const o = zo(Cn(e), "*[contentEditable=false],video,audio,embed,object"); for (let e = 0; e < o.length; e++) { const r = o[e].dom; let s = r.previousSibling; if (ui(s)) { const e = s.data; 1 === e.length ? null === (t = s.parentNode) || void 0 === t || t.removeChild(s) : s.deleteData(e.length - 1, 1); } (s = r.nextSibling), ci(s) && (1 === s.data.length ? null === (n = s.parentNode) || void 0 === n || n.removeChild(s) : s.deleteData(0, 1)); } })(t), a && (zc(a), (a = null)), r.on(e => { l.remove(e.caret), r.clear(); }), s && (clearInterval(s), (s = void 0)); }; return { show: (e, c) => { let u; if ((d(), $c(c))) return null; if (!n(c)) return ( (a = ((e, t) => { var n; const o = (null !== (n = e.ownerDocument) && void 0 !== n ? n : document).createTextNode(Ja), r = e.parentNode; if (t) { const t = e.previousSibling; if (oi(t)) { if (ai(t)) return t; if (ui(t)) return t.splitText(t.data.length - 1); } null == r || r.insertBefore(o, e); } else { const t = e.nextSibling; if (oi(t)) { if (ai(t)) return t; if (ci(t)) return t.splitText(1), t; } e.nextSibling ? null == r || r.insertBefore(o, e.nextSibling) : null == r || r.appendChild(o); } return o; })(c, e)), (u = c.ownerDocument.createRange()), Kc(a.nextSibling) ? (u.setStart(a, 0), u.setEnd(a, 0)) : (u.setStart(a, 1), u.setEnd(a, 1)), u ); { const n = ((e, t, n) => { var o; const r = (null !== (o = t.ownerDocument) && void 0 !== o ? o : document).createElement(e); r.setAttribute("data-mce-caret", n ? "before" : "after"), r.setAttribute("data-mce-bogus", "all"), r.appendChild(Za().dom); const s = t.parentNode; return ( n ? null == s || s.insertBefore(r, t) : t.nextSibling ? null == s || s.insertBefore(r, t.nextSibling) : null == s || s.appendChild(r), r ); })(i, c, e), d = Vc(t, c, e); l.setStyle(n, "top", d.top), l.setStyle(n, "caret-color", "transparent"), (a = n); const m = l.create("div", {class: "mce-visual-caret", "data-mce-bogus": "all"}); l.setStyles(m, {...d}), l.add(t, m), r.set({caret: m, element: c, before: e}), e && l.addClass(m, "mce-visual-caret-before"), (s = setInterval(() => { r.on(e => { o() ? l.toggleClass(e.caret, "mce-visual-caret-hidden") : l.addClass(e.caret, "mce-visual-caret-hidden"); }); }, 500)), (u = c.ownerDocument.createRange()), u.setStart(n, 0), u.setEnd(n, 0); } return u; }, hide: d, getCss: () => ".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: () => { r.on(e => { const n = Vc(t, e.element, e.before); l.setStyles(e.caret, {...n}); }); }, destroy: () => clearInterval(s) }; }, Wc = () => Tt.browser.isFirefox(), Kc = e => jc(e) || Hc(e), Yc = e => (Kc(e) || (ar(e) && Wc())) && On(Cn(e)).exists(ro), Gc = br, Xc = vr, Zc = wr, Qc = rr("display", "block table table-cell table-caption list-item"), Jc = ai, eu = ri, tu = er, nu = dr, ou = Pi, ru = e => e > 0, su = e => e < 0, au = (e, t) => { let n; for (; (n = e(t)); ) if (!eu(n)) return n; return null; }, iu = (e, t, n, o, r) => { const s = new Vo(e, o), a = Xc(e) || eu(e); let i; if (su(t)) { if (a && ((i = au(s.prev.bind(s), !0)), n(i))) return i; for (; (i = au(s.prev.bind(s), r)); ) if (n(i)) return i; } if (ru(t)) { if (a && ((i = au(s.next.bind(s), !0)), n(i))) return i; for (; (i = au(s.next.bind(s), r)); ) if (n(i)) return i; } return null; }, lu = (e, t) => { for (; e && e !== t; ) { if (Qc(e)) return e; e = e.parentNode; } return null; }, du = (e, t, n) => lu(e.container(), n) === lu(t.container(), n), cu = (e, t) => { if (!t) return I.none(); const n = t.container(), o = t.offset(); return tu(n) ? I.from(n.childNodes[o + e]) : I.none(); }, uu = (e, t) => { var n; const o = (null !== (n = t.ownerDocument) && void 0 !== n ? n : document).createRange(); return e ? (o.setStartBefore(t), o.setEndBefore(t)) : (o.setStartAfter(t), o.setEndAfter(t)), o; }, mu = (e, t, n) => lu(t, e) === lu(n, e), fu = (e, t, n) => { const o = e ? "previousSibling" : "nextSibling"; let r = n; for (; r && r !== t; ) { let e = r[o]; if ((e && Jc(e) && (e = e[o]), Xc(e) || Zc(e))) { if (mu(t, e, r)) return e; break; } if (ou(e)) break; r = r.parentNode; } return null; }, gu = T(uu, !0), pu = T(uu, !1), hu = (e, t, n) => { let o; const r = T(fu, !0, t), s = T(fu, !1, t), a = n.startContainer, i = n.startOffset; if (ri(a)) { const e = nu(a) ? a.parentNode : a, t = e.getAttribute("data-mce-caret"); if ("before" === t && ((o = e.nextSibling), Yc(o))) return gu(o); if ("after" === t && ((o = e.previousSibling), Yc(o))) return pu(o); } if (!n.collapsed) return n; if (dr(a)) { if (Jc(a)) { if (1 === e) { if (((o = s(a)), o)) return gu(o); if (((o = r(a)), o)) return pu(o); } if (-1 === e) { if (((o = r(a)), o)) return pu(o); if (((o = s(a)), o)) return gu(o); } return n; } if (ui(a) && i >= a.data.length - 1) return 1 === e && ((o = s(a)), o) ? gu(o) : n; if (ci(a) && i <= 1) return -1 === e && ((o = r(a)), o) ? pu(o) : n; if (i === a.data.length) return (o = s(a)), o ? gu(o) : n; if (0 === i) return (o = r(a)), o ? pu(o) : n; } return n; }, bu = (e, t) => cu(e ? 0 : -1, t).filter(Xc), vu = (e, t, n) => { const o = hu(e, t, n); return -1 === e ? Ji.fromRangeStart(o) : Ji.fromRangeEnd(o); }, yu = e => I.from(e.getNode()).map(Cn), Cu = (e, t) => { let n = t; for (; (n = e(n)); ) if (n.isVisible()) return n; return n; }, wu = (e, t) => { const n = du(e, t); return !(n || !pr(e.getNode())) || n; }; var xu; !(function (e) { (e[(e.Backwards = -1)] = "Backwards"), (e[(e.Forwards = 1)] = "Forwards"); })(xu || (xu = {})); const Eu = vr, ku = dr, _u = er, Su = pr, Nu = Pi, Ru = e => Ti(e) || (e => !!Di(e) && !X(ce(e.getElementsByTagName("*")), (e, t) => e || _i(t), !1))(e), Au = Li, Tu = (e, t) => (e.hasChildNodes() && t < e.childNodes.length ? e.childNodes[t] : null), Ou = (e, t) => { if (ru(e)) { if (Nu(t.previousSibling) && !ku(t.previousSibling)) return Ji.before(t); if (ku(t)) return Ji(t, 0); } if (su(e)) { if (Nu(t.nextSibling) && !ku(t.nextSibling)) return Ji.after(t); if (ku(t)) return Ji(t, t.data.length); } return su(e) ? (Su(t) ? Ji.before(t) : Ji.after(t)) : Ji.before(t); }, Bu = (e, t, n) => { let o, r, s, a; if (!_u(n) || !t) return null; if (t.isEqual(Ji.after(n)) && n.lastChild) { if (((a = Ji.after(n.lastChild)), su(e) && Nu(n.lastChild) && _u(n.lastChild))) return Su(n.lastChild) ? Ji.before(n.lastChild) : a; } else a = t; const i = a.container(); let l = a.offset(); if (ku(i)) { if (su(e) && l > 0) return Ji(i, --l); if (ru(e) && l < i.length) return Ji(i, ++l); o = i; } else { if (su(e) && l > 0 && ((r = Tu(i, l - 1)), Nu(r))) return !Ru(r) && ((s = iu(r, e, Au, r)), s) ? ku(s) ? Ji(s, s.data.length) : Ji.after(s) : ku(r) ? Ji(r, r.data.length) : Ji.before(r); if (ru(e) && l < i.childNodes.length && ((r = Tu(i, l)), Nu(r))) return Su(r) ? ((e, t) => { const n = t.nextSibling; return n && Nu(n) ? (ku(n) ? Ji(n, 0) : Ji.before(n)) : Bu(xu.Forwards, Ji.after(t), e); })(n, r) : !Ru(r) && ((s = iu(r, e, Au, r)), s) ? ku(s) ? Ji(s, 0) : Ji.before(s) : ku(r) ? Ji(r, 0) : Ji.after(r); o = r || a.getNode(); } if (o && ((ru(e) && a.isAtEnd()) || (su(e) && a.isAtStart())) && ((o = iu(o, e, M, n, !0)), Au(o, n))) return Ou(e, o); r = o ? iu(o, e, Au, n) : o; const d = De( Y( ((e, t) => { const n = []; let o = e; for (; o && o !== t; ) n.push(o), (o = o.parentNode); return n; })(i, n), Eu ) ); return !d || (r && d.contains(r)) ? (r ? Ou(e, r) : null) : ((a = ru(e) ? Ji.after(d) : Ji.before(d)), a); }, Pu = e => ({next: t => Bu(xu.Forwards, t, e), prev: t => Bu(xu.Backwards, t, e)}), Du = e => (Ji.isTextPosition(e) ? 0 === e.offset() : Pi(e.getNode())), Lu = e => { if (Ji.isTextPosition(e)) { const t = e.container(); return e.offset() === t.data.length; } return Pi(e.getNode(!0)); }, Mu = (e, t) => !Ji.isTextPosition(e) && !Ji.isTextPosition(t) && e.getNode() === t.getNode(!0), Iu = (e, t, n) => { const o = Pu(t); return I.from(e ? o.next(n) : o.prev(n)); }, Fu = (e, t, n) => Iu(e, t, n).bind(o => du(n, o, t) && ((e, t, n) => { return e ? !Mu(t, n) && ((o = t), !(!Ji.isTextPosition(o) && pr(o.getNode()))) && Lu(t) && Du(n) : !Mu(n, t) && Du(t) && Lu(n); var o; })(e, n, o) ? Iu(e, t, o) : I.some(o) ), Uu = (e, t, n, o) => Fu(e, t, n).bind(n => (o(n) ? Uu(e, t, n, o) : I.some(n))), zu = (e, t) => { const n = e ? t.firstChild : t.lastChild; return dr(n) ? I.some(Ji(n, e ? 0 : n.data.length)) : n ? Pi(n) ? I.some(e ? Ji.before(n) : pr((o = n)) ? Ji.before(o) : Ji.after(o)) : ((e, t, n) => { const o = e ? Ji.before(n) : Ji.after(n); return Iu(e, t, o); })(e, t, n) : I.none(); var o; }, ju = T(Iu, !0), Hu = T(Iu, !1), $u = T(zu, !0), Vu = T(zu, !1), qu = "_mce_caret", Wu = e => er(e) && e.id === qu, Ku = (e, t) => { let n = t; for (; n && n !== e; ) { if (Wu(n)) return n; n = n.parentNode; } return null; }, Yu = e => ke(e, "name"), Gu = e => Dt.isArray(e.start), Xu = e => !(!Yu(e) && b(e.forward)) || e.forward, Zu = (e, t) => (er(t) && e.isBlock(t) && !t.innerHTML && (t.innerHTML = '
'), t), Qu = (e, t) => Vu(e).fold(L, e => (t.setStart(e.container(), e.offset()), t.setEnd(e.container(), e.offset()), !0)), Ju = (e, t, n) => !( !(e => !e.hasChildNodes())(t) || !Ku(e, t) || (((e, t) => { var n; const o = (null !== (n = e.ownerDocument) && void 0 !== n ? n : document).createTextNode(Ja); e.appendChild(o), t.setStart(o, 0), t.setEnd(o, 0); })(t, n), 0) ), em = (e, t, n, o) => { const r = n[t ? "start" : "end"], s = e.getRoot(); if (r) { let e = s, n = r[0]; for (let t = r.length - 1; e && t >= 1; t--) { const n = e.childNodes; if (Ju(s, e, o)) return !0; if (r[t] > n.length - 1) return !!Ju(s, e, o) || Qu(e, o); e = n[r[t]]; } dr(e) && (n = Math.min(r[0], e.data.length)), er(e) && (n = Math.min(r[0], e.childNodes.length)), t ? o.setStart(e, n) : o.setEnd(e, n); } return !0; }, tm = e => dr(e) && e.data.length > 0, nm = (e, t, n) => { const o = e.get(n.id + "_" + t), r = null == o ? void 0 : o.parentNode, s = n.keep; if (o && r) { let a, i; if ( ("start" === t ? s ? o.hasChildNodes() ? ((a = o.firstChild), (i = 1)) : tm(o.nextSibling) ? ((a = o.nextSibling), (i = 0)) : tm(o.previousSibling) ? ((a = o.previousSibling), (i = o.previousSibling.data.length)) : ((a = r), (i = e.nodeIndex(o) + 1)) : ((a = r), (i = e.nodeIndex(o))) : s ? o.hasChildNodes() ? ((a = o.firstChild), (i = 1)) : tm(o.previousSibling) ? ((a = o.previousSibling), (i = o.previousSibling.data.length)) : ((a = r), (i = e.nodeIndex(o))) : ((a = r), (i = e.nodeIndex(o))), !s) ) { const r = o.previousSibling, s = o.nextSibling; let l; for ( Dt.each(Dt.grep(o.childNodes), e => { dr(e) && (e.data = e.data.replace(/\uFEFF/g, "")); }); (l = e.get(n.id + "_" + t)); ) e.remove(l, !0); if (dr(s) && dr(r) && !Tt.browser.isOpera()) { const t = r.data.length; r.appendData(s.data), e.remove(s), (a = r), (i = t); } } return I.some(Ji(a, i)); } return I.none(); }, om = (e, t, n) => ((e, t, n = !1) => 2 === t ? bl(ti, n, e) : 3 === t ? (e => { const t = e.getRng(); return { start: dl(e.dom.getRoot(), Ji.fromRangeStart(t)), end: dl(e.dom.getRoot(), Ji.fromRangeEnd(t)), forward: e.isForward() }; })(e) : t ? (e => ({rng: e.getRng(), forward: e.isForward()}))(e) : yl(e, !1))(e, t, n), rm = (e, t) => { ((e, t) => { const n = e.dom; if (t) { if (Gu(t)) return ((e, t) => { const n = e.createRng(); return em(e, !0, t, n) && em(e, !1, t, n) ? I.some({range: n, forward: Xu(t)}) : I.none(); })(n, t); if ((e => m(e.start))(t)) return ((e, t) => { const n = I.from(cl(e.getRoot(), t.start)), o = I.from(cl(e.getRoot(), t.end)); return It(n, o, (n, o) => { const r = e.createRng(); return ( r.setStart(n.container(), n.offset()), r.setEnd(o.container(), o.offset()), {range: r, forward: Xu(t)} ); }); })(n, t); if ((e => ke(e, "id"))(t)) return ((e, t) => { const n = nm(e, "start", t), o = nm(e, "end", t); return It(n, o.or(n), (n, o) => { const r = e.createRng(); return ( r.setStart(Zu(e, n.container()), n.offset()), r.setEnd(Zu(e, o.container()), o.offset()), {range: r, forward: Xu(t)} ); }); })(n, t); if (Yu(t)) return ((e, t) => I.from(e.select(t.name)[t.index]).map(t => { const n = e.createRng(); return n.selectNode(t), {range: n, forward: !0}; }))(n, t); if ((e => ke(e, "rng"))(t)) return I.some({range: t.rng, forward: Xu(t)}); } return I.none(); })(e, t).each(({range: t, forward: n}) => { e.setRng(t, n); }); }, sm = e => er(e) && "SPAN" === e.tagName && "bookmark" === e.getAttribute("data-mce-type"), am = ((im = Wo), e => im === e); var im; const lm = e => "" !== e && -1 !== " \f\n\r\t\v".indexOf(e), dm = e => !lm(e) && !am(e) && !Ko(e), cm = e => { const t = []; if (e) for (let n = 0; n < e.rangeCount; n++) t.push(e.getRangeAt(n)); return t; }, um = (e, t) => { const n = zo(t, "td[data-mce-selected],th[data-mce-selected]"); return n.length > 0 ? n : (e => Y( (e => te(e, e => { const t = wi(e); return t ? [Cn(t)] : []; }))(e), Ga ))(e); }, mm = e => um(cm(e.selection.getSel()), Cn(e.getBody())), fm = (e, t) => to(e, "table", t), gm = e => Un(e).fold(N([e]), t => [e].concat(gm(t))), pm = e => zn(e).fold(N([e]), t => "br" === $t(t) ? Pn(t) .map(t => [e].concat(pm(t))) .getOr([]) : [e].concat(pm(t)) ), hm = (e, t) => It( (e => { const t = e.startContainer, n = e.startOffset; return dr(t) ? (0 === n ? I.some(Cn(t)) : I.none()) : I.from(t.childNodes[n]).map(Cn); })(t), (e => { const t = e.endContainer, n = e.endOffset; return dr(t) ? (n === t.data.length ? I.some(Cn(t)) : I.none()) : I.from(t.childNodes[n - 1]).map(Cn); })(t), (t, n) => { const o = Q(gm(e), T(_n, t)), r = Q(pm(e), T(_n, n)); return o.isSome() && r.isSome(); } ).getOr(!1), bm = (e, t, n, o) => { const r = n, s = new Vo(n, r), a = Ce(e.schema.getMoveCaretBeforeOnEnterElements(), (e, t) => !H(["td", "th", "table"], t.toLowerCase())); let i = n; do { if (dr(i) && 0 !== Dt.trim(i.data).length) return void (o ? t.setStart(i, 0) : t.setEnd(i, i.data.length)); if (a[i.nodeName]) return void (o ? t.setStartBefore(i) : "BR" === i.nodeName ? t.setEndBefore(i) : t.setEndAfter(i)); } while ((i = o ? s.next() : s.prev())); "BODY" === r.nodeName && (o ? t.setStart(r, 0) : t.setEnd(r, r.childNodes.length)); }, vm = e => { const t = e.selection.getSel(); return C(t) && t.rangeCount > 0; }, ym = (e, t) => { const n = mm(e); n.length > 0 ? q(n, n => { const o = n.dom, r = e.dom.createRng(); r.setStartBefore(o), r.setEndAfter(o), t(r, !0); }) : t(e.selection.getRng(), !1); }, Cm = (e, t, n) => { const o = yl(e, t); n(o), e.moveToBookmark(o); }, wm = e => x(null == e ? void 0 : e.nodeType), xm = e => er(e) && !sm(e) && !Wu(e) && !sr(e), Em = (e, t, n) => { const {selection: o, dom: r} = e, s = o.getNode(), a = vr(s); Cm(o, !0, () => { t(); }), a && vr(s) && r.isChildOf(s, e.getBody()) ? e.selection.select(s) : n(o.getStart()) && km(r, o); }, km = (e, t) => { var n, o; const r = t.getRng(), {startContainer: s, startOffset: a} = r; if ( !((e, t) => { if (xm(t) && !/^(TD|TH)$/.test(t.nodeName)) { const n = e.getAttrib(t, "data-mce-selected"), o = parseInt(n, 10); return !isNaN(o) && o > 0; } return !1; })(e, t.getNode()) && er(s) ) { const i = s.childNodes, l = e.getRoot(); let d; if (a < i.length) { const t = i[a]; d = new Vo(t, null !== (n = e.getParent(t, e.isBlock)) && void 0 !== n ? n : l); } else { const t = i[i.length - 1]; (d = new Vo(t, null !== (o = e.getParent(t, e.isBlock)) && void 0 !== o ? o : l)), d.next(!0); } for (let n = d.current(); n; n = d.next()) { if ("false" === e.getContentEditable(n)) return; if (dr(n) && !Rm(n)) return r.setStart(n, 0), void t.setRng(r); } } }, _m = (e, t, n) => { if (e) { const o = t ? "nextSibling" : "previousSibling"; for (e = n ? e : e[o]; e; e = e[o]) if (er(e) || !Rm(e)) return e; } }, Sm = (e, t) => !!e.getTextBlockElements()[t.nodeName.toLowerCase()] || Zr(e, t), Nm = (e, t, n) => e.schema.isValidChild(t, n), Rm = (e, t = !1) => { if (C(e) && dr(e)) { const n = t ? e.data.replace(/ /g, "\xa0") : e.data; return Go(n); } return !1; }, Am = (e, t) => { const n = e.dom; return ( xm(t) && "false" === n.getContentEditable(t) && ((e, t) => { const n = "[data-mce-cef-wrappable]", o = Bd(e), r = Xe(o) ? n : `${n},${o}`; return En(Cn(t), r); })(e, t) && 0 === n.select('[contenteditable="true"]', t).length ); }, Tm = (e, t) => (w(e) ? e(t) : (C(t) && (e = e.replace(/%(\w+)/g, (e, n) => t[n] || e)), e)), Om = (e, t) => ( (t = t || ""), (e = "" + ((e = e || "").nodeName || e)), (t = "" + (t.nodeName || t)), e.toLowerCase() === t.toLowerCase() ), Bm = (e, t) => { if (y(e)) return null; { let n = String(e); return ( ("color" !== t && "backgroundColor" !== t) || (n = Ks(n)), "fontWeight" === t && 700 === e && (n = "bold"), "fontFamily" === t && (n = n.replace(/[\'\"]/g, "").replace(/,\s+/g, ",")), n ); } }, Pm = (e, t, n) => { const o = e.getStyle(t, n); return Bm(o, n); }, Dm = (e, t) => { let n; return e.getParent(t, t => !!er(t) && ((n = e.getStyle(t, "text-decoration")), !!n && "none" !== n)), n; }, Lm = (e, t, n) => e.getParents(t, n, e.getRoot()), Mm = (e, t, n) => { const o = e.formatter.get(t); return C(o) && $(o, n); }, Im = e => _e(e, "block"), Fm = e => _e(e, "selector"), Um = e => _e(e, "inline"), zm = e => Fm(e) && !1 !== e.expand && !Um(e), jm = e => (e => { const t = []; let n = e; for (; n; ) { if ((dr(n) && n.data !== Ja) || n.childNodes.length > 1) return []; er(n) && t.push(n), (n = n.firstChild); } return t; })(e).length > 0, Hm = e => Wu(e.dom) && jm(e.dom), $m = sm, Vm = Lm, qm = Rm, Wm = Sm, Km = (e, t) => { let n = t; for (; n; ) { if (er(n) && e.getContentEditable(n)) return "false" === e.getContentEditable(n) ? n : t; n = n.parentNode; } return t; }, Ym = (e, t, n, o) => { const r = t.data; if (e) { for (let e = n; e > 0; e--) if (o(r.charAt(e - 1))) return e; } else for (let e = n; e < r.length; e++) if (o(r.charAt(e))) return e; return -1; }, Gm = (e, t, n) => Ym(e, t, n, e => am(e) || lm(e)), Xm = (e, t, n) => Ym(e, t, n, dm), Zm = (e, t, n, o, r, s) => { let a; const i = e.getParent(n, e.isBlock) || t, l = (t, n, o) => { const s = za(e), l = r ? s.backwards : s.forwards; return I.from(l(t, n, (e, t) => ($m(e.parentNode) ? -1 : ((a = e), o(r, e, t))), i)); }; return l(n, o, Gm) .bind(e => (s ? l(e.container, e.offset + (r ? -1 : 0), Xm) : I.some(e))) .orThunk(() => (a ? I.some({container: a, offset: r ? 0 : a.length}) : I.none())); }, Qm = (e, t, n, o, r) => { const s = o[r]; dr(o) && Xe(o.data) && s && (o = s); const a = Vm(e, o); for (let o = 0; o < a.length; o++) for (let r = 0; r < t.length; r++) { const s = t[r]; if ((!C(s.collapsed) || s.collapsed === n.collapsed) && Fm(s) && e.is(a[o], s.selector)) return a[o]; } return o; }, Jm = (e, t, n, o) => { var r; let s = n; const a = e.getRoot(), i = t[0]; if ((Im(i) && (s = i.wrapper ? null : e.getParent(n, i.block, a)), !s)) { const t = null !== (r = e.getParent(n, "LI,TD,TH,SUMMARY")) && void 0 !== r ? r : a; s = e.getParent(dr(n) ? n.parentNode : n, t => t !== a && Wm(e.schema, t), t); } if ((s && Im(i) && i.wrapper && (s = Vm(e, s, "ul,ol").reverse()[0] || s), !s)) for (s = n; s && s[o] && !e.isBlock(s[o]) && ((s = s[o]), !Om(s, "br")); ); return s || n; }, ef = (e, t, n, o) => { const r = n.parentNode; return !C(n[o]) && (!(r !== t && !y(r) && !e.isBlock(r)) || ef(e, t, r, o)); }, tf = (e, t, n, o, r) => { let s = n; const a = r ? "previousSibling" : "nextSibling", i = e.getRoot(); if (dr(n) && !qm(n) && (r ? o > 0 : o < n.data.length)) return n; for (; s; ) { if (!t[0].block_expand && e.isBlock(s)) return s; for (let t = s[a]; t; t = t[a]) { const n = dr(t) && !ef(e, i, t, a); if (!$m(t) && (!pr((l = t)) || !l.getAttribute("data-mce-bogus") || l.nextSibling) && !qm(t, n)) return s; } if (s === i || s.parentNode === i) { n = s; break; } s = s.parentNode; } var l; return n; }, nf = e => $m(e.parentNode) || $m(e), of = (e, t, n, o = !1) => { let {startContainer: r, startOffset: s, endContainer: a, endOffset: i} = t; const l = n[0]; return ( er(r) && r.hasChildNodes() && ((r = xi(r, s)), dr(r) && (s = 0)), er(a) && a.hasChildNodes() && ((a = xi(a, t.collapsed ? i : i - 1)), dr(a) && (i = a.data.length)), (r = Km(e, r)), (a = Km(e, a)), nf(r) && ((r = $m(r) ? r : r.parentNode), (r = t.collapsed ? r.previousSibling || r : r.nextSibling || r), dr(r) && (s = t.collapsed ? r.length : 0)), nf(a) && ((a = $m(a) ? a : a.parentNode), (a = t.collapsed ? a.nextSibling || a : a.previousSibling || a), dr(a) && (i = t.collapsed ? 0 : a.length)), t.collapsed && (Zm(e, e.getRoot(), r, s, !0, o).each(({container: e, offset: t}) => { (r = e), (s = t); }), Zm(e, e.getRoot(), a, i, !1, o).each(({container: e, offset: t}) => { (a = e), (i = t); })), (Um(l) || l.block_expand) && ((Um(l) && dr(r) && 0 !== s) || (r = tf(e, n, r, s, !0)), (Um(l) && dr(a) && i !== a.data.length) || (a = tf(e, n, a, i, !1))), zm(l) && ((r = Qm(e, n, t, r, "previousSibling")), (a = Qm(e, n, t, a, "nextSibling"))), (Im(l) || Fm(l)) && ((r = Jm(e, n, r, "previousSibling")), (a = Jm(e, n, a, "nextSibling")), Im(l) && (e.isBlock(r) || ((r = tf(e, n, r, s, !0)), dr(r) && (s = 0)), e.isBlock(a) || ((a = tf(e, n, a, i, !1)), dr(a) && (i = a.data.length)))), er(r) && r.parentNode && ((s = e.nodeIndex(r)), (r = r.parentNode)), er(a) && a.parentNode && ((i = e.nodeIndex(a) + 1), (a = a.parentNode)), {startContainer: r, startOffset: s, endContainer: a, endOffset: i} ); }, rf = (e, t, n) => { var o; const r = t.startOffset, s = xi(t.startContainer, r), a = t.endOffset, i = xi(t.endContainer, a - 1), l = e => { const t = e[0]; dr(t) && t === s && r >= t.data.length && e.splice(0, 1); const n = e[e.length - 1]; return 0 === a && e.length > 0 && n === i && dr(n) && e.splice(e.length - 1, 1), e; }, d = (e, t, n) => { const o = []; for (; e && e !== n; e = e[t]) o.push(e); return o; }, c = (t, n) => e.getParent(t, e => e.parentNode === n, n), u = (e, t, o) => { const r = o ? "nextSibling" : "previousSibling"; for (let s = e, a = s.parentNode; s && s !== t; s = a) { a = s.parentNode; const t = d(s === e ? s : s[r], r); t.length && (o || t.reverse(), n(l(t))); } }; if (s === i) return n(l([s])); const m = null !== (o = e.findCommonAncestor(s, i)) && void 0 !== o ? o : e.getRoot(); if (e.isChildOf(s, i)) return u(s, m, !0); if (e.isChildOf(i, s)) return u(i, m); const f = c(s, m) || s, g = c(i, m) || i; u(s, f, !0); const p = d(f === s ? f : f.nextSibling, "nextSibling", g === i ? g.nextSibling : g); p.length && n(l(p)), u(i, g); }, sf = [ 'pre[class*=language-][contenteditable="false"]', "figure.image", "div[data-ephox-embed-iri]", "div.tiny-pageembed", "div.mce-toc", "div[data-mce-toc]" ], af = (e, t, n, o, r, s) => { const {uid: a = t, ...i} = n; mn(e, Ea()), Jt(e, `${_a()}`, a), Jt(e, `${ka()}`, o); const {attributes: l = {}, classes: d = []} = r(a, i); if ( (en(e, l), ((e, t) => { q(t, t => { mn(e, t); }); })(e, d), s) ) { d.length > 0 && Jt(e, `${Na()}`, d.join(",")); const t = fe(l); t.length > 0 && Jt(e, `${Ra()}`, t.join(",")); } }, lf = (e, t, n, o, r) => { const s = vn("span", e); return af(s, t, n, o, r, !1), s; }, df = (e, t, n, o, r, s) => { const a = [], i = lf(e.getDoc(), n, s, o, r), l = Dr(), d = () => { l.clear(); }, c = e => { q(e, u); }, u = t => { switch ( ((e, t, n, o) => Tn(t).fold( () => "skipping", r => "br" === o || (e => Yt(e) && Ha(e) === Ja)(t) ? "valid" : (e => Kt(e) && pn(e, Ea()))(t) ? "existing" : Wu(t.dom) ? "caret" : $(sf, e => En(t, e)) ? "valid-block" : Nm(e, n, o) && Nm(e, $t(r), n) ? "valid" : "invalid-child" ))(e, t, "span", $t(t)) ) { case "invalid-child": { d(); const e = In(t); c(e), d(); break; } case "valid-block": d(), af(t, n, s, o, r, !0); break; case "valid": { const e = l.get().getOrThunk(() => { const e = Ia(i); return a.push(e), l.set(e), e; }); Co(t, e); break; } } }; return ( rf(e.dom, t, e => { d(), (e => { const t = V(e, Cn); c(t); })(e); }), a ); }, cf = e => { const t = (() => { const e = {}; return { register: (t, n) => { e[t] = {name: t, settings: n}; }, lookup: t => Ee(e, t).map(e => e.settings), getNames: () => fe(e) }; })(); ((e, t) => { const n = ka(), o = e => I.from(e.attr(n)).bind(t.lookup), r = e => { var t, n; e.attr(_a(), null), e.attr(ka(), null), e.attr(Sa(), null); const o = I.from(e.attr(Ra())) .map(e => e.split(",")) .getOr([]), r = I.from(e.attr(Na())) .map(e => e.split(",")) .getOr([]); q(o, t => e.attr(t, null)); const s = null !== (n = null === (t = e.attr("class")) || void 0 === t ? void 0 : t.split(" ")) && void 0 !== n ? n : [], a = re(s, [Ea()].concat(r)); e.attr("class", a.length > 0 ? a.join(" ") : null), e.attr(Na(), null), e.attr(Ra(), null); }; e.serializer.addTempAttr(Sa()), e.serializer.addAttributeFilter(n, e => { for (const t of e) o(t).each(e => { !1 === e.persistent && ("span" === t.name ? t.unwrap() : r(t)); }); }); })(e, t); const n = ((e, t) => { const n = Br({}), o = () => ({listeners: [], previous: Dr()}), r = (e, t) => { s(e, e => (t(e), e)); }, s = (e, t) => { const r = n.get(), s = t(Ee(r, e).getOrThunk(o)); (r[e] = s), n.set(r); }, a = (t, n) => { q(Ba(e, t), e => { n ? Jt(e, Sa(), "true") : rn(e, Sa()); }); }, i = xa(() => { const n = ae(t.getNames()); q(n, t => { s(t, n => { const o = n.previous.get(); return ( Ta(e, I.some(t)).fold( () => { o.each(e => { (e => { r(e, t => { q(t.listeners, t => t(!1, e)); }); })(t), n.previous.clear(), a(e, !1); }); }, ({uid: e, name: t, elements: s}) => { Lt(o, e) || (o.each(e => a(e, !1)), ((e, t, n) => { r(e, o => { q(o.listeners, o => o(!0, e, {uid: t, nodes: V(n, e => e.dom)})); }); })(t, e, s), n.previous.set(e), a(e, !0)); } ), {previous: n.previous, listeners: n.listeners} ); }); }); }, 30); return ( e.on("remove", () => { i.cancel(); }), e.on("NodeChange", () => { i.throttle(); }), { addListener: (e, t) => { s(e, e => ({previous: e.previous, listeners: e.listeners.concat([t])})); } } ); })(e, t), o = Zt("span"), r = e => { q(e, e => { o(e) ? ko(e) : (e => { gn(e, Ea()), rn(e, `${_a()}`), rn(e, `${ka()}`), rn(e, `${Sa()}`); const t = nn(e, `${Ra()}`) .map(e => e.split(",")) .getOr([]), n = nn(e, `${Na()}`) .map(e => e.split(",")) .getOr([]); var o; q(t, t => rn(e, t)), (o = e), q(n, e => { gn(o, e); }), rn(e, `${Na()}`), rn(e, `${Ra()}`); })(e); }); }; return { register: (e, n) => { t.register(e, n); }, annotate: (n, o) => { t.lookup(n).each(t => { ((e, t, n, o) => { e.undoManager.transact(() => { const r = e.selection, s = r.getRng(), a = mm(e).length > 0, i = La("mce-annotation"); if ( (s.collapsed && !a && ((e, t) => { const n = of(e.dom, t, [{inline: "span"}]); t.setStart(n.startContainer, n.startOffset), t.setEnd(n.endContainer, n.endOffset), e.selection.setRng(t); })(e, s), r.getRng().collapsed && !a) ) { const s = lf(e.getDoc(), i, o, t, n.decorate); No(s, Wo), r.getRng().insertNode(s.dom), r.select(s.dom); } else Cm(r, !1, () => { ym(e, r => { df(e, r, i, t, n.decorate, o); }); }); }); })(e, n, t, o); }); }, annotationChanged: (e, t) => { n.addListener(e, t); }, remove: t => { Ta(e, I.some(t)).each(({elements: t}) => { const n = e.selection.getBookmark(); r(t), e.selection.moveToBookmark(n); }); }, removeAll: t => { const n = e.selection.getBookmark(); pe(Pa(e, t), (e, t) => { r(e); }), e.selection.moveToBookmark(n); }, getAll: t => { const n = Pa(e, t); return he(n, e => V(e, e => e.dom)); } }; }, uf = e => ({getBookmark: T(om, e), moveToBookmark: T(rm, e)}); uf.isBookmarkNode = sm; const mf = (e, t, n) => !n.collapsed && $(n.getClientRects(), n => ((e, t, n) => t >= e.left && t <= e.right && n >= e.top && n <= e.bottom)(n, e, t)), ff = (e, t, n) => { e.dispatch(t, n); }, gf = (e, t, n, o) => { e.dispatch("FormatApply", {format: t, node: n, vars: o}); }, pf = (e, t, n, o) => { e.dispatch("FormatRemove", {format: t, node: n, vars: o}); }, hf = (e, t) => e.dispatch("SetContent", t), bf = (e, t) => e.dispatch("GetContent", t), vf = (e, t) => { e.dispatch("AutocompleterUpdateActiveRange", t); }, yf = (e, t) => e.dispatch("PastePlainTextToggle", {state: t}), Cf = { BACKSPACE: 8, DELETE: 46, DOWN: 40, ENTER: 13, ESC: 27, LEFT: 37, RIGHT: 39, SPACEBAR: 32, TAB: 9, UP: 38, PAGE_UP: 33, PAGE_DOWN: 34, END: 35, HOME: 36, modifierPressed: e => e.shiftKey || e.ctrlKey || e.altKey || Cf.metaKeyPressed(e), metaKeyPressed: e => (Tt.os.isMacOS() || Tt.os.isiOS() ? e.metaKey : e.ctrlKey && !e.altKey) }, wf = "data-mce-selected", xf = Math.abs, Ef = Math.round, kf = {nw: [0, 0, -1, -1], ne: [1, 0, 1, -1], se: [1, 1, 1, 1], sw: [0, 1, -1, 1]}, _f = (e, t) => { const n = t.dom, o = t.getDoc(), r = document, s = t.getBody(); let a, i, l, d, c, u, m, f, g, p, h, b, v, y, w; const x = e => C(e) && (hr(e) || n.is(e, "figure.image")), E = e => wr(e) || n.hasClass(e, "mce-preview-object"), k = e => { const n = e.target; ((e, t) => { if ((e => "longpress" === e.type || 0 === e.type.indexOf("touch"))(e)) { const n = e.touches[0]; return x(e.target) && !mf(n.clientX, n.clientY, t); } return x(e.target) && !mf(e.clientX, e.clientY, t); })(e, t.selection.getRng()) && !e.isDefaultPrevented() && t.selection.select(n); }, _ = e => n.hasClass(e, "mce-preview-object") && C(e.firstElementChild) ? [e, e.firstElementChild] : n.is(e, "figure.image") ? [e.querySelector("img")] : [e], S = e => { const o = yd(t); return ( !!o && "false" !== e.getAttribute("data-mce-resize") && e !== t.getBody() && (n.hasClass(e, "mce-preview-object") && C(e.firstElementChild) ? En(Cn(e.firstElementChild), o) : En(Cn(e), o)) ); }, N = (e, o, r) => { if (C(r)) { const s = _(e); q(s, e => { e.style[o] || !t.schema.isValid(e.nodeName.toLowerCase(), o) ? n.setStyle(e, o, r) : n.setAttrib(e, o, "" + r); }); } }, R = (e, t, n) => { N(e, "width", t), N(e, "height", n); }, A = e => { let o, r, c, C, k; (o = e.screenX - u), (r = e.screenY - m), (b = o * d[2] + f), (v = r * d[3] + g), (b = b < 5 ? 5 : b), (v = v < 5 ? 5 : v), (c = (x(a) || E(a)) && !1 !== Cd(t) ? !Cf.modifierPressed(e) : Cf.modifierPressed(e)), c && (xf(o) > xf(r) ? ((v = Ef(b * p)), (b = Ef(v / p))) : ((b = Ef(v / p)), (v = Ef(b * p)))), R(i, b, v), (C = d.startPos.x + o), (k = d.startPos.y + r), (C = C > 0 ? C : 0), (k = k > 0 ? k : 0), n.setStyles(l, {left: C, top: k, display: "block"}), (l.innerHTML = b + " × " + v), d[2] < 0 && i.clientWidth <= b && n.setStyle(i, "left", void 0 + (f - b)), d[3] < 0 && i.clientHeight <= v && n.setStyle(i, "top", void 0 + (g - v)), (o = s.scrollWidth - y), (r = s.scrollHeight - w), o + r !== 0 && n.setStyles(l, {left: C - o, top: k - r}), h || (((e, t, n, o, r) => { e.dispatch("ObjectResizeStart", {target: t, width: n, height: o, origin: r}); })(t, a, f, g, "corner-" + d.name), (h = !0)); }, T = () => { const e = h; (h = !1), e && (N(a, "width", b), N(a, "height", v)), n.unbind(o, "mousemove", A), n.unbind(o, "mouseup", T), r !== o && (n.unbind(r, "mousemove", A), n.unbind(r, "mouseup", T)), n.remove(i), n.remove(l), n.remove(c), O(a), e && (((e, t, n, o, r) => { e.dispatch("ObjectResized", {target: t, width: n, height: o, origin: r}); })(t, a, b, v, "corner-" + d.name), n.setAttrib(a, "style", n.getAttrib(a, "style"))), t.nodeChanged(); }, O = e => { M(); const h = n.getPos(e, s), C = h.x, x = h.y, k = e.getBoundingClientRect(), N = k.width || k.right - k.left, O = k.height || k.bottom - k.top; a !== e && (P(), (a = e), (b = v = 0)); const B = t.dispatch("ObjectSelected", {target: e}); S(e) && !B.isDefaultPrevented() ? pe(kf, (e, t) => { let h = n.get("mceResizeHandle" + t); h && n.remove(h), (h = n.add(s, "div", { id: "mceResizeHandle" + t, "data-mce-bogus": "all", class: "mce-resizehandle", unselectable: !0, style: "cursor:" + t + "-resize; margin:0; padding:0" })), n.bind(h, "mousedown", h => { h.stopImmediatePropagation(), h.preventDefault(), (h => { const b = _(a)[0]; (u = h.screenX), (m = h.screenY), (f = b.clientWidth), (g = b.clientHeight), (p = g / f), (d = e), (d.name = t), (d.startPos = {x: N * e[0] + C, y: O * e[1] + x}), (y = s.scrollWidth), (w = s.scrollHeight), (c = n.add(s, "div", {class: "mce-resize-backdrop", "data-mce-bogus": "all"})), n.setStyles(c, {position: "fixed", left: "0", top: "0", width: "100%", height: "100%"}), (i = ((e, t) => { if (E(t)) return e.create("img", {src: Tt.transparentSrc}); if (ar(t)) { const n = $e(d.name, "n") ? le : de, o = t.cloneNode(!0); return ( n(e.select("tr", o)).each(t => { const n = e.select("td,th", t); e.setStyle(t, "height", null), q(n, t => e.setStyle(t, "height", null)); }), o ); } return t.cloneNode(!0); })(n, a)), n.addClass(i, "mce-clonedresizable"), n.setAttrib(i, "data-mce-bogus", "all"), (i.contentEditable = "false"), n.setStyles(i, {left: C, top: x, margin: 0}), R(i, N, O), i.removeAttribute(wf), s.appendChild(i), n.bind(o, "mousemove", A), n.bind(o, "mouseup", T), r !== o && (n.bind(r, "mousemove", A), n.bind(r, "mouseup", T)), (l = n.add( s, "div", {class: "mce-resize-helper", "data-mce-bogus": "all"}, f + " × " + g )); })(h); }), (e.elm = h), n.setStyles(h, {left: N * e[0] + C - h.offsetWidth / 2, top: O * e[1] + x - h.offsetHeight / 2}); }) : P(!1); }, B = wa(O, 0), P = (e = !0) => { B.cancel(), M(), a && e && a.removeAttribute(wf), pe(kf, (e, t) => { const o = n.get("mceResizeHandle" + t); o && (n.unbind(o), n.remove(o)); }); }, D = (e, t) => n.isChildOf(e, t), L = o => { if (h || t.removed || t.composing) return; const r = "mousedown" === o.type ? o.target : e.getNode(), a = oo(Cn(r), "table,img,figure.image,hr,video,span.mce-preview-object,details") .map(e => e.dom) .filter(e => n.isEditable(e.parentElement) || ("IMG" === e.nodeName && n.isEditable(e))) .getOrUndefined(), i = C(a) ? n.getAttrib(a, wf, "1") : "1"; if ( (q(n.select(`img[${wf}],hr[${wf}]`), e => { e.removeAttribute(wf); }), C(a) && D(a, s) && t.hasFocus()) ) { I(); const t = e.getStart(!0); if (D(t, a) && D(e.getEnd(!0), a)) return n.setAttrib(a, wf, i), void B.throttle(a); } P(); }, M = () => { pe(kf, e => { e.elm && (n.unbind(e.elm), delete e.elm); }); }, I = () => { try { t.getDoc().execCommand("enableObjectResizing", !1, "false"); } catch (e) {} }; return ( t.on("init", () => { I(), t.on("NodeChange ResizeEditor ResizeWindow ResizeContent drop", L), t.on("keyup compositionend", e => { a && "TABLE" === a.nodeName && L(e); }), t.on("hide blur", P), t.on("contextmenu longpress", k, !0); }), t.on("remove", M), { isResizable: S, showResizeRect: O, hideResizeRect: P, updateResizeRect: L, destroy: () => { B.cancel(), (a = i = c = null); } } ); }, Sf = (e, t, n) => { const o = e.document.createRange(); var r; return ( (r = o), t.fold( e => { r.setStartBefore(e.dom); }, (e, t) => { r.setStart(e.dom, t); }, e => { r.setStartAfter(e.dom); } ), ((e, t) => { t.fold( t => { e.setEndBefore(t.dom); }, (t, n) => { e.setEnd(t.dom, n); }, t => { e.setEndAfter(t.dom); } ); })(o, n), o ); }, Nf = (e, t, n, o, r) => { const s = e.document.createRange(); return s.setStart(t.dom, n), s.setEnd(o.dom, r), s; }, Rf = kl([{ltr: ["start", "soffset", "finish", "foffset"]}, {rtl: ["start", "soffset", "finish", "foffset"]}]), Af = (e, t, n) => t(Cn(n.startContainer), n.startOffset, Cn(n.endContainer), n.endOffset); Rf.ltr, Rf.rtl; const Tf = (e, t, n, o) => ({start: e, soffset: t, finish: n, foffset: o}), Of = document.caretPositionFromPoint ? (e, t, n) => { var o, r; return I.from( null === (r = (o = e.dom).caretPositionFromPoint) || void 0 === r ? void 0 : r.call(o, t, n) ).bind(t => { if (null === t.offsetNode) return I.none(); const n = e.dom.createRange(); return n.setStart(t.offsetNode, t.offset), n.collapse(), I.some(n); }); } : document.caretRangeFromPoint ? (e, t, n) => { var o, r; return I.from(null === (r = (o = e.dom).caretRangeFromPoint) || void 0 === r ? void 0 : r.call(o, t, n)); } : I.none, Bf = kl([{before: ["element"]}, {on: ["element", "offset"]}, {after: ["element"]}]), Pf = { before: Bf.before, on: Bf.on, after: Bf.after, cata: (e, t, n, o) => e.fold(t, n, o), getStart: e => e.fold(R, R, R) }, Df = kl([ {domRange: ["rng"]}, {relative: ["startSitu", "finishSitu"]}, {exact: ["start", "soffset", "finish", "foffset"]} ]), Lf = { domRange: Df.domRange, relative: Df.relative, exact: Df.exact, exactFromRange: e => Df.exact(e.start, e.soffset, e.finish, e.foffset), getWin: e => { const t = (e => e.match({domRange: e => Cn(e.startContainer), relative: (e, t) => Pf.getStart(e), exact: (e, t, n, o) => e}))( e ); return An(t); }, range: Tf }, Mf = (e, t) => { const n = $t(e); return "input" === n ? Pf.after(e) : H(["br", "img"], n) ? (0 === t ? Pf.before(e) : Pf.after(e)) : Pf.on(e, t); }, If = (e, t) => { const n = e.fold(Pf.before, Mf, Pf.after), o = t.fold(Pf.before, Mf, Pf.after); return Lf.relative(n, o); }, Ff = (e, t, n, o) => { const r = Mf(e, t), s = Mf(n, o); return Lf.relative(r, s); }, Uf = (e, t) => { const n = (t || document).createDocumentFragment(); return ( q(e, e => { n.appendChild(e.dom); }), Cn(n) ); }, zf = e => { const t = Lf.getWin(e).dom, n = (e, n, o, r) => Nf(t, e, n, o, r), o = (e => e.match({ domRange: e => { const t = Cn(e.startContainer), n = Cn(e.endContainer); return Ff(t, e.startOffset, n, e.endOffset); }, relative: If, exact: Ff }))(e); return ((e, t) => { const n = ((e, t) => t.match({ domRange: e => ({ltr: N(e), rtl: I.none}), relative: (t, n) => ({ltr: Le(() => Sf(e, t, n)), rtl: Le(() => I.some(Sf(e, n, t)))}), exact: (t, n, o, r) => ({ltr: Le(() => Nf(e, t, n, o, r)), rtl: Le(() => I.some(Nf(e, o, r, t, n)))}) }))(e, t); return ((e, t) => { const n = t.ltr(); return n.collapsed ? t .rtl() .filter(e => !1 === e.collapsed) .map(e => Rf.rtl(Cn(e.endContainer), e.endOffset, Cn(e.startContainer), e.startOffset)) .getOrThunk(() => Af(0, Rf.ltr, n)) : Af(0, Rf.ltr, n); })(0, n); })(t, o).match({ltr: n, rtl: n}); }, jf = (e, t, n) => ((e, t, n) => ((e, t, n) => { const o = Cn(e.document); return Of(o, t, n).map(e => Tf(Cn(e.startContainer), e.startOffset, Cn(e.endContainer), e.endOffset)); })(e, t, n))(An(Cn(n)).dom, e, t) .map(e => { const t = n.createRange(); return t.setStart(e.start.dom, e.soffset), t.setEnd(e.finish.dom, e.foffset), t; }) .getOrUndefined(), Hf = (e, t) => C(e) && C(t) && e.startContainer === t.startContainer && e.startOffset === t.startOffset && e.endContainer === t.endContainer && e.endOffset === t.endOffset, $f = (e, t, n) => null !== ((e, t, n) => { let o = e; for (; o && o !== t; ) { if (n(o)) return o; o = o.parentNode; } return null; })(e, t, n), Vf = (e, t, n) => $f(e, t, e => e.nodeName === n), qf = (e, t) => ai(e) && !$f(e, t, Wu), Wf = (e, t, n) => { const o = t.parentNode; if (o) { const r = new Vo(t, e.getParent(o, e.isBlock) || e.getRoot()); let s; for (; (s = r[n ? "prev" : "next"]()); ) if (pr(s)) return !0; } return !1; }, Kf = (e, t, n, o, r) => { const s = e.getRoot(), a = e.schema.getNonEmptyElements(), i = r.parentNode; let l, d; if (!i) return I.none(); const c = e.getParent(i, e.isBlock) || s; if (o && pr(r) && t && e.isEmpty(c)) return I.some(Ji(i, e.nodeIndex(r))); const u = new Vo(r, c); for (; (d = u[o ? "prev" : "next"]()); ) { if ("false" === e.getContentEditableParent(d) || qf(d, s)) return I.none(); if (dr(d) && d.data.length > 0) return Vf(d, s, "A") ? I.none() : I.some(Ji(d, o ? d.data.length : 0)); if (e.isBlock(d) || a[d.nodeName.toLowerCase()]) return I.none(); l = d; } return mr(l) ? I.none() : n && l ? I.some(Ji(l, 0)) : I.none(); }, Yf = (e, t, n, o) => { const r = e.getRoot(); let s, a = !1, i = n ? o.startContainer : o.endContainer, l = n ? o.startOffset : o.endOffset; const d = er(i) && l === i.childNodes.length, c = e.schema.getNonEmptyElements(); let u = n; if (ai(i)) return I.none(); if ((er(i) && l > i.childNodes.length - 1 && (u = !1), fr(i) && ((i = r), (l = 0)), i === r)) { if (u && ((s = i.childNodes[l > 0 ? l - 1 : 0]), s)) { if (ai(s)) return I.none(); if (c[s.nodeName] || ar(s)) return I.none(); } if (i.hasChildNodes()) { if ( ((l = Math.min(!u && l > 0 ? l - 1 : l, i.childNodes.length - 1)), (i = i.childNodes[l]), (l = dr(i) && d ? i.data.length : 0), !t && i === r.lastChild && ar(i)) ) return I.none(); if ( ((e, t) => { let n = t; for (; n && n !== e; ) { if (vr(n)) return !0; n = n.parentNode; } return !1; })(r, i) || ai(i) ) return I.none(); if (Er(i)) return I.none(); if (i.hasChildNodes() && !ar(i)) { s = i; const t = new Vo(i, r); do { if (vr(s) || ai(s)) { a = !1; break; } if (dr(s) && s.data.length > 0) { (l = u ? 0 : s.data.length), (i = s), (a = !0); break; } if (c[s.nodeName.toLowerCase()] && !Cr(s)) { (l = e.nodeIndex(s)), (i = s.parentNode), u || l++, (a = !0); break; } } while ((s = u ? t.next() : t.prev())); } } } return ( t && (dr(i) && 0 === l && Kf(e, d, t, !0, i).each(e => { (i = e.container()), (l = e.offset()), (a = !0); }), er(i) && ((s = i.childNodes[l]), s || (s = i.childNodes[l - 1]), !s || !pr(s) || ((e, t) => { var n; return "A" === (null === (n = e.previousSibling) || void 0 === n ? void 0 : n.nodeName); })(s) || Wf(e, s, !1) || Wf(e, s, !0) || Kf(e, d, t, !0, s).each(e => { (i = e.container()), (l = e.offset()), (a = !0); }))), u && !t && dr(i) && l === i.data.length && Kf(e, d, t, !1, i).each(e => { (i = e.container()), (l = e.offset()), (a = !0); }), a && i ? I.some(Ji(i, l)) : I.none() ); }, Gf = (e, t) => { const n = t.collapsed, o = t.cloneRange(), r = Ji.fromRangeStart(t); return ( Yf(e, n, !0, o).each(e => { (n && Ji.isAbove(r, e)) || o.setStart(e.container(), e.offset()); }), n || Yf(e, n, !1, o).each(e => { o.setEnd(e.container(), e.offset()); }), n && o.collapse(!0), Hf(t, o) ? I.none() : I.some(o) ); }, Xf = (e, t) => e.splitText(t), Zf = e => { let t = e.startContainer, n = e.startOffset, o = e.endContainer, r = e.endOffset; if (t === o && dr(t)) { if (n > 0 && n < t.data.length) if (((o = Xf(t, n)), (t = o.previousSibling), r > n)) { r -= n; const e = Xf(o, r).previousSibling; (t = o = e), (r = e.data.length), (n = 0); } else r = 0; } else if ( (dr(t) && n > 0 && n < t.data.length && ((t = Xf(t, n)), (n = 0)), dr(o) && r > 0 && r < o.data.length) ) { const e = Xf(o, r).previousSibling; (o = e), (r = e.data.length); } return {startContainer: t, startOffset: n, endContainer: o, endOffset: r}; }, Qf = e => ({ walk: (t, n) => rf(e, t, n), split: Zf, expand: (t, n = {type: "word"}) => { if ("word" === n.type) { const n = of(e, t, [{inline: "span"}]), o = e.createRng(); return o.setStart(n.startContainer, n.startOffset), o.setEnd(n.endContainer, n.endOffset), o; } return t; }, normalize: t => Gf(e, t).fold(L, e => (t.setStart(e.startContainer, e.startOffset), t.setEnd(e.endContainer, e.endOffset), !0)) }); (Qf.compareRanges = Hf), (Qf.getCaretRangeFromPoint = jf), (Qf.getSelectedNode = wi), (Qf.getNode = xi); const Jf = ((e, t) => { const n = t => { const n = (e => { const t = e.dom; return Xn(e) ? t.getBoundingClientRect().height : t.offsetHeight; })(t); if (n <= 0 || null === n) { const n = uo(t, e); return parseFloat(n) || 0; } return n; }, o = (e, t) => X( t, (t, n) => { const o = uo(e, n), r = void 0 === o ? 0 : parseInt(o, 10); return isNaN(r) ? t : t + r; }, 0 ); return { set: (t, n) => { if (!x(n) && !n.match(/^[0-9]+$/)) throw new Error(e + ".set accepts only positive integer values. Value was " + n); const o = t.dom; ao(o) && (o.style[e] = n + "px"); }, get: n, getOuter: n, aggregate: o, max: (e, t, n) => { const r = o(e, n); return t > r ? t - r : 0; } }; })("height"), eg = () => Cn(document), tg = (e, t) => e.view(t).fold(N([]), t => { const n = e.owner(t), o = tg(e, n); return [t].concat(o); }); var ng = Object.freeze({ __proto__: null, view: e => { var t; return ( e.dom === document ? I.none() : I.from(null === (t = e.dom.defaultView) || void 0 === t ? void 0 : t.frameElement) ).map(Cn); }, owner: e => Rn(e) }); const og = e => "textarea" === $t(e), rg = (e, t) => { const n = (e => { const t = e.dom.ownerDocument, n = t.body, o = t.defaultView, r = t.documentElement; if (n === e.dom) return Oo(n.offsetLeft, n.offsetTop); const s = Bo(null == o ? void 0 : o.pageYOffset, r.scrollTop), a = Bo(null == o ? void 0 : o.pageXOffset, r.scrollLeft), i = Bo(r.clientTop, n.clientTop), l = Bo(r.clientLeft, n.clientLeft); return Po(e).translate(a - l, s - i); })(e), o = (e => Jf.get(e))(e); return {element: e, bottom: n.top + o, height: o, pos: n, cleanup: t}; }, sg = (e, t, n, o) => { dg(e, (r, s) => ig(e, t, n, o), n); }, ag = (e, t, n, o, r) => { const s = {elm: o.element.dom, alignToTop: r}; ((e, t) => e.dispatch("ScrollIntoView", t).isDefaultPrevented())(e, s) || (n(e, t, Do(t).top, o, r), ((e, t) => { e.dispatch("AfterScrollIntoView", t); })(e, s)); }, ig = (e, t, n, o) => { const r = Cn(e.getBody()), s = Cn(e.getDoc()); r.dom.offsetWidth; const a = ((e, t) => { const n = ((e, t) => { const n = In(e); if (0 === n.length || og(e)) return {element: e, offset: t}; if (t < n.length && !og(n[t])) return {element: n[t], offset: 0}; { const o = n[n.length - 1]; return og(o) ? {element: e, offset: t} : "img" === $t(o) ? {element: o, offset: 1} : Yt(o) ? {element: o, offset: Ha(o).length} : {element: o, offset: In(o).length}; } })(e, t), o = bn('\ufeff'); return ho(n.element, o), rg(o, () => Eo(o)); })(Cn(n.startContainer), n.startOffset); ag(e, s, t, a, o), a.cleanup(); }, lg = (e, t, n, o) => { const r = Cn(e.getDoc()); ag(e, r, n, (e => rg(Cn(e), k))(t), o); }, dg = (e, t, n) => { const o = n.startContainer, r = n.startOffset, s = n.endContainer, a = n.endOffset; t(Cn(o), Cn(s)); const i = e.dom.createRng(); i.setStart(o, r), i.setEnd(s, a), e.selection.setRng(n); }, cg = (e, t, n, o, r) => { const s = t.pos; if (o) Lo(s.left, s.top, r); else { const o = s.top - n + t.height; Lo(-e.getBody().getBoundingClientRect().left, o, r); } }, ug = (e, t, n, o, r, s) => { const a = o + n, i = r.pos.top, l = r.bottom, d = l - i >= o; i < n ? cg(e, r, o, !1 !== s, t) : i > a ? cg(e, r, o, d ? !1 !== s : !0 === s, t) : l > a && !d && cg(e, r, o, !0 === s, t); }, mg = (e, t, n, o, r) => { const s = An(t).dom.innerHeight; ug(e, t, n, s, o, r); }, fg = (e, t, n, o, r) => { const s = An(t).dom.innerHeight; ug(e, t, n, s, o, r); const a = (e => { const t = eg(), n = Do(t), o = ((e, t) => { const n = t.owner(e); return tg(t, n); })(e, ng), r = Po(e), s = G( o, (e, t) => { const n = Po(t); return {left: e.left + n.left, top: e.top + n.top}; }, {left: 0, top: 0} ); return Oo(s.left + r.left + n.left, s.top + r.top + n.top); })(o.element), i = Fo(window); a.top < i.y ? Mo(o.element, !1 !== r) : a.top > i.bottom && Mo(o.element, !0 === r); }, gg = (e, t, n) => sg(e, mg, t, n), pg = (e, t, n) => lg(e, t, mg, n), hg = (e, t, n) => sg(e, fg, t, n), bg = (e, t, n) => lg(e, t, fg, n), vg = (e, t, n) => { (e.inline ? gg : hg)(e, t, n); }, yg = (e, t = !1) => e.dom.focus({preventScroll: t}), Cg = e => { const t = qn(e).dom; return e.dom === t.activeElement; }, wg = (e = eg()) => I.from(e.dom.activeElement).map(Cn), xg = (e, t) => { const n = Yt(t) ? Ha(t).length : In(t).length + 1; return e > n ? n : e < 0 ? 0 : e; }, Eg = e => Lf.range(e.start, xg(e.soffset, e.start), e.finish, xg(e.foffset, e.finish)), kg = (e, t) => !Jo(t.dom) && (Sn(e, t) || _n(e, t)), _g = e => t => kg(e, t.start) && kg(e, t.finish), Sg = e => Lf.range(Cn(e.startContainer), e.startOffset, Cn(e.endContainer), e.endOffset), Ng = e => { const t = document.createRange(); try { return t.setStart(e.start.dom, e.soffset), t.setEnd(e.finish.dom, e.foffset), I.some(t); } catch (e) { return I.none(); } }, Rg = e => { const t = (e => e.inline || Tt.browser.isFirefox())(e) ? ((n = Cn(e.getBody())), (e => { const t = e.getSelection(); return (t && 0 !== t.rangeCount ? I.from(t.getRangeAt(0)) : I.none()).map(Sg); })(An(n).dom).filter(_g(n))) : I.none(); var n; e.bookmark = t.isSome() ? t : e.bookmark; }, Ag = e => (e.bookmark ? e.bookmark : I.none()) .bind(t => { return (n = Cn(e.getBody())), (o = t), I.from(o).filter(_g(n)).map(Eg); var n, o; }) .bind(Ng), Tg = { isEditorUIElement: e => { const t = e.className.toString(); return -1 !== t.indexOf("tox-") || -1 !== t.indexOf("mce-"); } }, Og = { setEditorTimeout: (e, t, n) => ((e, t) => (x(t) || (t = 0), setTimeout(e, t)))(() => { e.removed || t(); }, n), setEditorInterval: (e, t, n) => { const o = ((e, t) => (x(t) || (t = 0), setInterval(e, t)))(() => { e.removed ? clearInterval(o) : t(); }, n); return o; } }; let Bg; const Pg = fa.DOM, Dg = e => { const t = e.classList; return ( void 0 !== t && (t.contains("tox-edit-area") || t.contains("tox-edit-area__iframe") || t.contains("mce-content-body")) ); }, Lg = (e, t) => { const n = Pd(e), o = Pg.getParent(t, t => (e => er(e) && Tg.isEditorUIElement(e))(t) || (!!n && e.dom.is(t, n))); return null !== o; }, Mg = e => { try { const t = qn(Cn(e.getElement())); return wg(t).fold( () => document.body, e => e.dom ); } catch (e) { return document.body; } }, Ig = (e, t) => { const n = t.editor; (e => { const t = wa(() => { Rg(e); }, 0); e.on("init", () => { e.inline && ((e, t) => { const n = () => { t.throttle(); }; fa.DOM.bind(document, "mouseup", n), e.on("remove", () => { fa.DOM.unbind(document, "mouseup", n); }); })(e, t), ((e, t) => { ((e, t) => { e.on("mouseup touchend", e => { t.throttle(); }); })(e, t), e.on("keyup NodeChange AfterSetSelectionRange", t => { (e => "nodechange" === e.type && e.selectionChange)(t) || Rg(e); }); })(e, t); }), e.on("remove", () => { t.cancel(); }); })(n); const o = (e, t) => { wc(e) && !0 !== e.inline && t(Cn(e.getContainer()), "tox-edit-focus"); }; n.on("focusin", () => { const t = e.focusedEditor; Dg(Mg(n)) && o(n, mn), t !== n && (t && t.dispatch("blur", {focusedEditor: n}), e.setActive(n), (e.focusedEditor = n), n.dispatch("focus", {blurredEditor: t}), n.focus(!0)); }), n.on("focusout", () => { Og.setEditorTimeout(n, () => { const t = e.focusedEditor; (Dg(Mg(n)) && t === n) || o(n, gn), Lg(n, Mg(n)) || t !== n || (n.dispatch("blur", {focusedEditor: null}), (e.focusedEditor = null)); }); }), Bg || ((Bg = t => { const n = e.activeEditor; n && Yn(t).each(t => { const o = t; o.ownerDocument === document && (o === document.body || Lg(n, o) || e.focusedEditor !== n || (n.dispatch("blur", {focusedEditor: null}), (e.focusedEditor = null))); }); }), Pg.bind(document, "focusin", Bg)); }, Fg = (e, t) => { e.focusedEditor === t.editor && (e.focusedEditor = null), !e.activeEditor && Bg && (Pg.unbind(document, "focusin", Bg), (Bg = null)); }, Ug = (e, t) => { ((e, t) => (e => (e.collapsed ? I.from(xi(e.startContainer, e.startOffset)).map(Cn) : I.none()))(t).bind(t => Ya(t) ? I.some(t) : Sn(e, t) ? I.none() : I.some(e) ))(Cn(e.getBody()), t) .bind(e => $u(e.dom)) .fold( () => { e.selection.normalize(); }, t => e.selection.setRng(t.toRange()) ); }, zg = e => { if (e.setActive) try { e.setActive(); } catch (t) { e.focus(); } else e.focus(); }, jg = e => e.inline ? (e => { const t = e.getBody(); return t && ((n = Cn(t)), Cg(n) || ((o = n), wg(qn(o)).filter(e => o.dom.contains(e.dom))).isSome()); var n, o; })(e) : (e => C(e.iframeElement) && Cg(Cn(e.iframeElement)))(e), Hg = e => jg(e) || (e => { const t = qn(Cn(e.getElement())); return wg(t) .filter(t => !Dg(t.dom) && Lg(e, t.dom)) .isSome(); })(e), $g = e => e.editorManager.setActive(e), Vg = (e, t) => t.collapsed ? e.isEditable(t.startContainer) : e.isEditable(t.startContainer) && e.isEditable(t.endContainer), qg = (e, t, n, o, r) => { const s = n ? t.startContainer : t.endContainer, a = n ? t.startOffset : t.endOffset; return I.from(s) .map(Cn) .map(e => (o && t.collapsed ? e : Fn(e, r(e, a)).getOr(e))) .bind(e => (Kt(e) ? I.some(e) : Tn(e).filter(Kt))) .map(e => e.dom) .getOr(e); }, Wg = (e, t, n = !1) => qg(e, t, !0, n, (e, t) => Math.min(jn(e), t)), Kg = (e, t, n = !1) => qg(e, t, !1, n, (e, t) => (t > 0 ? t - 1 : t)), Yg = (e, t) => { const n = e; for (; e && dr(e) && 0 === e.length; ) e = t ? e.nextSibling : e.previousSibling; return e || n; }, Gg = (e, t) => V(t, t => { const n = e.dispatch("GetSelectionRange", {range: t}); return n.range !== t ? n.range : t; }), Xg = {"#text": 3, "#comment": 8, "#cdata": 4, "#pi": 7, "#doctype": 10, "#document-fragment": 11}, Zg = (e, t, n) => { const o = n ? "lastChild" : "firstChild", r = n ? "prev" : "next"; if (e[o]) return e[o]; if (e !== t) { let n = e[r]; if (n) return n; for (let o = e.parent; o && o !== t; o = o.parent) if (((n = o[r]), n)) return n; } }, Qg = e => { var t; const n = null !== (t = e.value) && void 0 !== t ? t : ""; if (!Go(n)) return !1; const o = e.parent; return !o || ("span" === o.name && !o.attr("style")) || !/^[ ]+$/.test(n); }, Jg = e => { const t = "a" === e.name && !e.attr("href") && e.attr("id"); return e.attr("name") || (e.attr("id") && !e.firstChild) || e.attr("data-mce-bookmark") || t; }; class ep { static create(e, t) { const n = new ep(e, Xg[e] || 1); return ( t && pe(t, (e, t) => { n.attr(t, e); }), n ); } constructor(e, t) { (this.name = e), (this.type = t), 1 === t && ((this.attributes = []), (this.attributes.map = {})); } replace(e) { const t = this; return e.parent && e.remove(), t.insert(e, t), t.remove(), t; } attr(e, t) { const n = this; if (!m(e)) return ( C(e) && pe(e, (e, t) => { n.attr(t, e); }), n ); const o = n.attributes; if (o) { if (void 0 !== t) { if (null === t) { if (e in o.map) { delete o.map[e]; let t = o.length; for (; t--; ) if (o[t].name === e) return o.splice(t, 1), n; } return n; } if (e in o.map) { let n = o.length; for (; n--; ) if (o[n].name === e) { o[n].value = t; break; } } else o.push({name: e, value: t}); return (o.map[e] = t), n; } return o.map[e]; } } clone() { const e = this, t = new ep(e.name, e.type), n = e.attributes; if (n) { const e = []; e.map = {}; for (let t = 0, o = n.length; t < o; t++) { const o = n[t]; "id" !== o.name && ((e[e.length] = {name: o.name, value: o.value}), (e.map[o.name] = o.value)); } t.attributes = e; } return (t.value = e.value), t; } wrap(e) { const t = this; return t.parent && (t.parent.insert(e, t), e.append(t)), t; } unwrap() { const e = this; for (let t = e.firstChild; t; ) { const n = t.next; e.insert(t, e, !0), (t = n); } e.remove(); } remove() { const e = this, t = e.parent, n = e.next, o = e.prev; return ( t && (t.firstChild === e ? ((t.firstChild = n), n && (n.prev = null)) : o && (o.next = n), t.lastChild === e ? ((t.lastChild = o), o && (o.next = null)) : n && (n.prev = o), (e.parent = e.next = e.prev = null)), e ); } append(e) { const t = this; e.parent && e.remove(); const n = t.lastChild; return n ? ((n.next = e), (e.prev = n), (t.lastChild = e)) : (t.lastChild = t.firstChild = e), (e.parent = t), e; } insert(e, t, n) { e.parent && e.remove(); const o = t.parent || this; return ( n ? (t === o.firstChild ? (o.firstChild = e) : t.prev && (t.prev.next = e), (e.prev = t.prev), (e.next = t), (t.prev = e)) : (t === o.lastChild ? (o.lastChild = e) : t.next && (t.next.prev = e), (e.next = t.next), (e.prev = t), (t.next = e)), (e.parent = o), e ); } getAll(e) { const t = this, n = []; for (let o = t.firstChild; o; o = Zg(o, t)) o.name === e && n.push(o); return n; } children() { const e = []; for (let t = this.firstChild; t; t = t.next) e.push(t); return e; } empty() { const e = this; if (e.firstChild) { const t = []; for (let n = e.firstChild; n; n = Zg(n, e)) t.push(n); let n = t.length; for (; n--; ) { const e = t[n]; e.parent = e.firstChild = e.lastChild = e.next = e.prev = null; } } return (e.firstChild = e.lastChild = null), e; } isEmpty(e, t = {}, n) { var o; const r = this; let s = r.firstChild; if (Jg(r)) return !1; if (s) do { if (1 === s.type) { if (s.attr("data-mce-bogus")) continue; if (e[s.name]) return !1; if (Jg(s)) return !1; } if (8 === s.type) return !1; if (3 === s.type && !Qg(s)) return !1; if (3 === s.type && s.parent && t[s.parent.name] && Go(null !== (o = s.value) && void 0 !== o ? o : "")) return !1; if (n && n(s)) return !1; } while ((s = Zg(s, r))); return !0; } walk(e) { return Zg(this, null, e); } } const tp = Dt.makeMap("NOSCRIPT STYLE SCRIPT XMP IFRAME NOEMBED NOFRAMES PLAINTEXT", " "), np = e => m(e.nodeValue) && e.nodeValue.includes(Ja), op = e => (0 === e.length ? "" : `${V(e, e => `[${e}]`).join(",")},`) + '[data-mce-bogus="all"]', rp = e => document.createTreeWalker(e, NodeFilter.SHOW_COMMENT, e => np(e) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP ), sp = e => document.createTreeWalker(e, NodeFilter.SHOW_TEXT, e => { if (np(e)) { const t = e.parentNode; return t && ke(tp, t.nodeName) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP; } return NodeFilter.FILTER_SKIP; }), ap = e => null !== rp(e).nextNode(), ip = e => null !== sp(e).nextNode(), lp = (e, t) => null !== t.querySelector(op(e)), dp = (e, t) => { q(((e, t) => t.querySelectorAll(op(e)))(e, t), t => { const n = Cn(t); "all" === tn(n, "data-mce-bogus") ? Eo(n) : q(e, e => { on(n, e) && rn(n, e); }); }); }, cp = e => { let t = e.nextNode(); for (; null !== t; ) (t.nodeValue = null), (t = e.nextNode()); }, up = _(cp, rp), mp = _(cp, sp), fp = (e, t) => { const n = [ {condition: T(lp, t), action: T(dp, t)}, {condition: ap, action: up}, {condition: ip, action: mp} ]; let o = e, r = !1; return ( q(n, ({condition: t, action: n}) => { t(o) && (r || ((o = e.cloneNode(!0)), (r = !0)), n(o)); }), o ); }, gp = e => { const t = zo(e, "[data-mce-bogus]"); q(t, e => { "all" === tn(e, "data-mce-bogus") ? Eo(e) : Va(e) ? (ho(e, yn(qo)), Eo(e)) : ko(e); }); }, pp = e => { const t = zo(e, "input"); q(t, e => { rn(e, "name"); }); }, hp = (e, t, n) => { let o; return ( (o = "raw" === t.format ? Dt.trim(ti(fp(n, e.serializer.getTempAttrs()).innerHTML)) : "text" === t.format ? ((e, t) => { const n = e.getDoc(), o = qn(Cn(e.getBody())), r = vn("div", n); Jt(r, "data-mce-bogus", "all"), co(r, {position: "fixed", left: "-9999999px", top: "0"}), No(r, t.innerHTML), gp(r), pp(r); const s = (e => (Hn(e) ? e : Cn(Rn(e).dom.body)))(o); yo(s, r); const a = ti(r.dom.innerText); return Eo(r), a; })(e, n) : "tree" === t.format ? e.serializer.serialize(n, t) : ((e, t) => { const n = Wl(e), o = new RegExp(`^(<${n}[^>]*>( | |\\s|\xa0|
|)<\\/${n}>[\r\n]*|
[\r\n]*)$`); return t.replace(o, ""); })(e, e.serializer.serialize(n, t))), "text" !== t.format && !Xa(Cn(n)) && m(o) ? Dt.trim(o) : o ); }, bp = Dt.makeMap, vp = e => { const t = [], n = (e = e || {}).indent, o = bp(e.indent_before || ""), r = bp(e.indent_after || ""), s = ws.getEncodeFunc(e.entity_encoding || "raw", e.entities), a = "xhtml" !== e.element_format; return { start: (e, i, l) => { if (n && o[e] && t.length > 0) { const e = t[t.length - 1]; e.length > 0 && "\n" !== e && t.push("\n"); } if ((t.push("<", e), i)) for (let e = 0, n = i.length; e < n; e++) { const n = i[e]; t.push(" ", n.name, '="', s(n.value, !0), '"'); } if (((t[t.length] = !l || a ? ">" : " />"), l && n && r[e] && t.length > 0)) { const e = t[t.length - 1]; e.length > 0 && "\n" !== e && t.push("\n"); } }, end: e => { let o; t.push(""), n && r[e] && t.length > 0 && ((o = t[t.length - 1]), o.length > 0 && "\n" !== o && t.push("\n")); }, text: (e, n) => { e.length > 0 && (t[t.length] = n ? e : s(e)); }, cdata: e => { t.push(""); }, comment: e => { t.push("\x3c!--", e, "--\x3e"); }, pi: (e, o) => { o ? t.push("") : t.push(""), n && t.push("\n"); }, doctype: e => { t.push("", n ? "\n" : ""); }, reset: () => { t.length = 0; }, getContent: () => t.join("").replace(/\n$/, "") }; }, yp = (e = {}, t = Fs()) => { const n = vp(e); return ( (e.validate = !("validate" in e) || e.validate), { serialize: o => { const r = e.validate, s = { 3: e => { var t; n.text(null !== (t = e.value) && void 0 !== t ? t : "", e.raw); }, 8: e => { var t; n.comment(null !== (t = e.value) && void 0 !== t ? t : ""); }, 7: e => { n.pi(e.name, e.value); }, 10: e => { var t; n.doctype(null !== (t = e.value) && void 0 !== t ? t : ""); }, 4: e => { var t; n.cdata(null !== (t = e.value) && void 0 !== t ? t : ""); }, 11: e => { let t = e; if ((t = t.firstChild)) do { a(t); } while ((t = t.next)); } }; n.reset(); const a = e => { var o; const i = s[e.type]; if (i) i(e); else { const s = e.name, i = s in t.getVoidElements(); let l = e.attributes; if (r && l && l.length > 1) { const n = []; n.map = {}; const o = t.getElementRule(e.name); if (o) { for (let e = 0, t = o.attributesOrder.length; e < t; e++) { const t = o.attributesOrder[e]; if (t in l.map) { const e = l.map[t]; (n.map[t] = e), n.push({name: t, value: e}); } } for (let e = 0, t = l.length; e < t; e++) { const t = l[e].name; if (!(t in n.map)) { const e = l.map[t]; (n.map[t] = e), n.push({name: t, value: e}); } } l = n; } } if ((n.start(s, l, i), Mr(s))) m(e.value) && n.text(e.value, !0), n.end(s); else if (!i) { let t = e.firstChild; if (t) { ("pre" !== s && "textarea" !== s) || 3 !== t.type || "\n" !== (null === (o = t.value) || void 0 === o ? void 0 : o[0]) || n.text("\n", !0); do { a(t); } while ((t = t.next)); } n.end(s); } } }; return 1 !== o.type || e.inner ? (3 === o.type ? s[3](o) : s[11](o)) : a(o), n.getContent(); } } ); }, Cp = new Set(); q( [ "margin", "margin-left", "margin-right", "margin-top", "margin-bottom", "padding", "padding-left", "padding-right", "padding-top", "padding-bottom", "border", "border-width", "border-style", "border-color", "background", "background-attachment", "background-clip", "background-color", "background-image", "background-origin", "background-position", "background-repeat", "background-size", "float", "position", "left", "right", "top", "bottom", "z-index", "display", "transform", "width", "max-width", "min-width", "height", "max-height", "min-height", "overflow", "overflow-x", "overflow-y", "text-overflow", "vertical-align", "transition", "transition-delay", "transition-duration", "transition-property", "transition-timing-function" ], e => { Cp.add(e); } ); const wp = ["font", "text-decoration", "text-emphasis"], xp = (e, t) => fe(e.parseStyle(e.getAttrib(t, "style"))), Ep = (e, t, n) => { const o = xp(e, t), r = xp(e, n), s = o => { var r, s; const a = null !== (r = e.getStyle(t, o)) && void 0 !== r ? r : "", i = null !== (s = e.getStyle(n, o)) && void 0 !== s ? s : ""; return Ge(a) && Ge(i) && a !== i; }; return $(o, e => { const t = t => $(t, t => t === e); if (!t(r) && t(wp)) { const e = Y(r, e => $(wp, t => $e(e, t))); return $(e, s); } return s(e); }); }, kp = (e, t, n) => I.from(n.container()) .filter(dr) .exists(o => { const r = e ? 0 : -1; return t(o.data.charAt(n.offset() + r)); }), _p = T(kp, !0, lm), Sp = T(kp, !1, lm), Np = e => { const t = e.container(); return dr(t) && (0 === t.data.length || (ei(t.data) && uf.isBookmarkNode(t.parentNode))); }, Rp = (e, t) => n => cu(e ? 0 : -1, n) .filter(t) .isSome(), Ap = e => hr(e) && "block" === uo(Cn(e), "display"), Tp = e => vr(e) && !(e => er(e) && "all" === e.getAttribute("data-mce-bogus"))(e), Op = Rp(!0, Ap), Bp = Rp(!1, Ap), Pp = Rp(!0, wr), Dp = Rp(!1, wr), Lp = Rp(!0, ar), Mp = Rp(!1, ar), Ip = Rp(!0, Tp), Fp = Rp(!1, Tp), Up = (e, t) => ((e, t, n) => (Sn(t, e) ? Bn(e, e => n(e) || _n(e, t)).slice(0, -1) : []))(e, t, L), zp = (e, t) => [e].concat(Up(e, t)), jp = (e, t, n) => Uu(e, t, n, Np), Hp = (e, t, n) => Q( zp(Cn(t.container()), e), ( e => t => e.isBlock($t(t)) )(n) ), $p = (e, t, n, o) => jp(e, t.dom, n).forall(e => Hp(t, n, o).fold( () => !du(e, n, t.dom), o => !du(e, n, t.dom) && Sn(o, Cn(e.container())) ) ), Vp = (e, t, n, o) => Hp(t, n, o).fold( () => jp(e, t.dom, n).forall(e => !du(e, n, t.dom)), t => jp(e, t.dom, n).isNone() ), qp = T(Vp, !1), Wp = T(Vp, !0), Kp = T($p, !1), Yp = T($p, !0), Gp = e => yu(e).exists(Va), Xp = (e, t, n, o) => { const r = Y(zp(Cn(n.container()), t), e => o.isBlock($t(e))), s = le(r).getOr(t); return Iu(e, s.dom, n).filter(Gp); }, Zp = (e, t, n) => yu(t).exists(Va) || Xp(!0, e, t, n).isSome(), Qp = (e, t, n) => (e => I.from(e.getNode(!0)).map(Cn))(t).exists(Va) || Xp(!1, e, t, n).isSome(), Jp = T(Xp, !1), eh = T(Xp, !0), th = e => Ji.isTextPosition(e) && !e.isAtStart() && !e.isAtEnd(), nh = (e, t, n) => { const o = Y(zp(Cn(t.container()), e), e => n.isBlock($t(e))); return le(o).getOr(e); }, oh = (e, t, n) => (th(t) ? Sp(t) : Sp(t) || Hu(nh(e, t, n).dom, t).exists(Sp)), rh = (e, t, n) => (th(t) ? _p(t) : _p(t) || ju(nh(e, t, n).dom, t).exists(_p)), sh = e => yu(e) .bind(e => Jn(e, Kt)) .exists(e => (e => H(["pre", "pre-wrap"], e))(uo(e, "white-space"))), ah = (e, t) => n => { return (o = new Vo(n, e)[t]()), C(o) && vr(o) && Qc(o); var o; }, ih = (e, t, n) => !sh(t) && (((e, t, n) => ((e, t) => Hu(e.dom, t).isNone())(e, t) || ((e, t) => ju(e.dom, t).isNone())(e, t) || qp(e, t, n) || Wp(e, t, n) || Qp(e, t, n) || Zp(e, t, n))(e, t, n) || oh(e, t, n) || rh(e, t, n)), lh = (e, t, n) => !sh(t) && (qp(e, t, n) || Kp(e, t, n) || Qp(e, t, n) || oh(e, t, n) || ((e, t) => { const n = Hu(e.dom, t).getOr(t), o = ah(e.dom, "prev"); return t.isAtStart() && (o(t.container()) || o(n.container())); })(e, t)), dh = (e, t, n) => !sh(t) && (Wp(e, t, n) || Yp(e, t, n) || Zp(e, t, n) || rh(e, t, n) || ((e, t) => { const n = ju(e.dom, t).getOr(t), o = ah(e.dom, "next"); return t.isAtEnd() && (o(t.container()) || o(n.container())); })(e, t)), ch = (e, t, n) => lh(e, t, n) || dh( e, (e => { const t = e.container(), n = e.offset(); return dr(t) && n < t.data.length ? Ji(t, n + 1) : e; })(t), n ), uh = (e, t) => am(e.charAt(t)), mh = (e, t) => lm(e.charAt(t)), fh = (e, t, n, o) => { const r = t.data, s = Ji(t, 0); return n || !uh(r, 0) || ch(e, s, o) ? !!(n && mh(r, 0) && lh(e, s, o)) && ((t.data = Wo + r.slice(1)), !0) : ((t.data = " " + r.slice(1)), !0); }, gh = (e, t, n, o) => { const r = t.data, s = Ji(t, r.length - 1); return n || !uh(r, r.length - 1) || ch(e, s, o) ? !!(n && mh(r, r.length - 1) && dh(e, s, o)) && ((t.data = r.slice(0, -1) + Wo), !0) : ((t.data = r.slice(0, -1) + " "), !0); }, ph = (e, t, n) => { const o = t.container(); if (!dr(o)) return I.none(); if ( (e => { const t = e.container(); return dr(t) && He(t.data, Wo); })(t) ) { const r = fh(e, o, !1, n) || (e => { const t = e.data, n = (e => { const t = e.split(""); return V(t, (e, n) => am(e) && n > 0 && n < t.length - 1 && dm(t[n - 1]) && dm(t[n + 1]) ? " " : e ).join(""); })(t); return n !== t && ((e.data = n), !0); })(o) || gh(e, o, !1, n); return Ft(r, t); } if (ch(e, t, n)) { const r = fh(e, o, !0, n) || gh(e, o, !0, n); return Ft(r, t); } return I.none(); }, hh = (e, t, n, o) => { if (0 === n) return; const r = Cn(e), s = Qn(r, e => o.isBlock($t(e))).getOr(r), a = e.data.slice(t, t + n), i = t + n >= e.data.length && dh(s, Ji(e, e.data.length), o), l = 0 === t && lh(s, Ji(e, 0), o); e.replaceData(t, n, Zo(a, 4, l, i)); }, bh = (e, t, n) => { const o = e.data.slice(t), r = o.length - Ke(o).length; hh(e, t, r, n); }, vh = (e, t, n) => { const o = e.data.slice(0, t), r = o.length - Ye(o).length; hh(e, t - r, r, n); }, yh = (e, t, n, o, r = !0) => { const s = Ye(e.data).length, a = r ? e : t, i = r ? t : e; return r ? a.appendData(i.data) : a.insertData(0, i.data), Eo(Cn(i)), o && bh(a, s, n), a; }, Ch = (e, t) => ((e, t) => { const n = e.container(), o = e.offset(); return !Ji.isTextPosition(e) && n === t.parentNode && o > Ji.before(t).offset(); })(t, e) ? Ji(t.container(), t.offset() - 1) : t, wh = e => { return Pi(e.previousSibling) ? I.some(((t = e.previousSibling), dr(t) ? Ji(t, t.data.length) : Ji.after(t))) : e.previousSibling ? Vu(e.previousSibling) : I.none(); var t; }, xh = e => { return Pi(e.nextSibling) ? I.some(((t = e.nextSibling), dr(t) ? Ji(t, 0) : Ji.before(t))) : e.nextSibling ? $u(e.nextSibling) : I.none(); var t; }, Eh = (e, t, n) => ((e, t, n) => e ? ((e, t) => xh(t) .orThunk(() => wh(t)) .orThunk(() => ((e, t) => ju(e, Ji.after(t)).orThunk(() => Hu(e, Ji.before(t))))(e, t)))(t, n) : ((e, t) => wh(t) .orThunk(() => xh(t)) .orThunk(() => ((e, t) => I.from(t.previousSibling ? t.previousSibling : t.parentNode) .bind(t => Hu(e, Ji.before(t))) .orThunk(() => ju(e, Ji.after(t))))(e, t) ))(t, n))(e, t, n).map(T(Ch, n)), kh = (e, t, n) => { n.fold( () => { e.focus(); }, n => { e.selection.setRng(n.toRange(), t); } ); }, _h = (e, t) => t && ke(e.schema.getBlockElements(), $t(t)), Sh = (e, t, n, o = !0, r = !1) => { const s = Eh(t, e.getBody(), n.dom), a = Qn(n, T(_h, e), ((i = e.getBody()), e => e.dom === i)); var i; const l = ((e, t, n, o) => { const r = Pn(e).filter(Yt), s = Dn(e).filter(Yt); return ( Eo(e), ((a = r), (i = s), (l = t), (d = (e, t, r) => { const s = e.dom, a = t.dom, i = s.data.length; return yh(s, a, n, o), r.container() === a ? Ji(s, i) : r; }), a.isSome() && i.isSome() && l.isSome() ? I.some(d(a.getOrDie(), i.getOrDie(), l.getOrDie())) : I.none()).orThunk(() => (o && (r.each(e => vh(e.dom, e.dom.length, n)), s.each(e => bh(e.dom, 0, n))), t)) ); var a, i, l, d; })(n, s, e.schema, ((e, t) => ke(e.schema.getTextInlineElements(), $t(t)))(e, n)); e.dom.isEmpty(e.getBody()) ? (e.setContent(""), e.selection.setCursorLocation()) : a .bind(t => ((e, t, n) => { if (Tr(e, t)) { const e = bn('
'); return ( n ? q(In(t), e => { Hm(e) || Eo(e); }) : xo(t), yo(t, e), I.some(Ji.before(e.dom)) ); } return I.none(); })(e.schema, t, r) ) .fold( () => { o && kh(e, t, l); }, n => { o && kh(e, t, I.some(n)); } ); }, Nh = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/, Rh = (e, t) => En(Cn(t), vd(e)) && !Zr(e.schema, t) && e.dom.isEditable(t), Ah = e => { var t; return ( "rtl" === fa.DOM.getStyle(e, "direction", !0) || (e => Nh.test(e))(null !== (t = e.textContent) && void 0 !== t ? t : "") ); }, Th = (e, t, n) => { const o = ((e, t, n) => Y(fa.DOM.getParents(n.container(), "*", t), e))(e, t, n); return I.from(o[o.length - 1]); }, Oh = (e, t) => { const n = t.container(), o = t.offset(); return e ? si(n) ? dr(n.nextSibling) ? Ji(n.nextSibling, 0) : Ji.after(n) : li(t) ? Ji(n, o + 1) : t : si(n) ? dr(n.previousSibling) ? Ji(n.previousSibling, n.previousSibling.data.length) : Ji.before(n) : di(t) ? Ji(n, o - 1) : t; }, Bh = T(Oh, !0), Ph = T(Oh, !1), Dh = (e, t) => { const n = e => e.stopImmediatePropagation(); e.on("beforeinput input", n, !0), e.getDoc().execCommand(t), e.off("beforeinput input", n); }, Lh = e => Dh(e, "Delete"), Mh = e => qa(e) || Ka(e), Ih = (e, t) => Sn(e, t) ? Jn( t, Mh, ( e => t => Lt(Tn(t), e, _n) )(e) ) : I.none(), Fh = (e, t = !0) => { e.dom.isEmpty(e.getBody()) && e.setContent("", {no_selection: !t}); }, Uh = (e, t, n) => It($u(n), Vu(n), (o, r) => { const s = Oh(!0, o), a = Oh(!1, r), i = Oh(!1, t); return e ? ju(n, i).exists(e => e.isEqual(a) && t.isEqual(s)) : Hu(n, i).exists(e => e.isEqual(s) && t.isEqual(a)); }).getOr(!0), zh = e => { var t; return (8 === Vt((t = e)) || "#comment" === $t(t) ? Pn(e) : zn(e)).bind(zh).orThunk(() => I.some(e)); }, jh = (e, t, n, o = !0) => { var r; t.deleteContents(); const s = zh(n).getOr(n), a = Cn(null !== (r = e.dom.getParent(s.dom, e.dom.isBlock)) && void 0 !== r ? r : n.dom); if ( (a.dom === e.getBody() ? Fh(e, o) : Tr(e.schema, a, {checkRootAsContent: !1}) && (Qa(a), o && e.selection.setCursorLocation(a.dom, 0)), !_n(n, a)) ) { const t = Lt(Tn(a), n) ? [] : Tn((i = a)) .map(In) .map(e => Y(e, e => !_n(i, e))) .getOr([]); q(t.concat(In(n)), t => { _n(t, a) || Sn(t, a) || !Tr(e.schema, t) || Eo(t); }); } var i; }, Hh = e => zo(e, "td,th"), $h = (e, t) => fm(Cn(e), t), Vh = (e, t) => ({start: e, end: t}), qh = kl([ {singleCellTable: ["rng", "cell"]}, {fullTable: ["table"]}, {partialTable: ["cells", "outsideDetails"]}, {multiTable: ["startTableCells", "endTableCells", "betweenRng"]} ]), Wh = (e, t) => oo(Cn(e), "td,th", t), Kh = e => !_n(e.start, e.end), Yh = (e, t) => fm(e.start, t).bind(n => fm(e.end, t).bind(e => Ft(_n(n, e), n))), Gh = e => t => Yh(t, e).map(e => ((e, t, n) => ({rng: e, table: t, cells: n}))(t, e, Hh(e))), Xh = (e, t, n, o) => { if (n.collapsed || !e.forall(Kh)) return I.none(); if (t.isSameTable) { const t = e.bind(Gh(o)); return I.some({start: t, end: t}); } { const e = Wh(n.startContainer, o), t = Wh(n.endContainer, o), r = e .bind( ( e => t => fm(t, e).bind(e => de(Hh(e)).map(e => Vh(t, e))) )(o) ) .bind(Gh(o)), s = t .bind( ( e => t => fm(t, e).bind(e => le(Hh(e)).map(e => Vh(e, t))) )(o) ) .bind(Gh(o)); return I.some({start: r, end: s}); } }, Zh = (e, t) => J(e, e => _n(e, t)), Qh = e => It(Zh(e.cells, e.rng.start), Zh(e.cells, e.rng.end), (t, n) => e.cells.slice(t, n + 1)), Jh = (e, t) => { const {startTable: n, endTable: o} = t, r = e.cloneRange(); return n.each(e => r.setStartAfter(e.dom)), o.each(e => r.setEndBefore(e.dom)), r; }, eb = (e, t) => { const n = ( e => t => _n(e, t) )(e), o = ((e, t) => { const n = Wh(e.startContainer, t), o = Wh(e.endContainer, t); return It(n, o, Vh); })(t, n), r = ((e, t) => { const n = $h(e.startContainer, t), o = $h(e.endContainer, t), r = n.isSome(), s = o.isSome(), a = It(n, o, _n).getOr(!1); return (e => It(e.startTable, e.endTable, (t, n) => { const o = $o(t, e => _n(e, n)), r = $o(n, e => _n(e, t)); return o || r ? { ...e, startTable: o ? I.none() : e.startTable, endTable: r ? I.none() : e.endTable, isSameTable: !1, isMultiTable: !1 } : e; }).getOr(e))({ startTable: n, endTable: o, isStartInTable: r, isEndInTable: s, isSameTable: a, isMultiTable: !a && r && s }); })(t, n); return ((e, t, n) => e.exists( e => ((e, t) => !Kh(e) && Yh(e, t).exists(e => { const t = e.dom.rows; return 1 === t.length && 1 === t[0].cells.length; }))(e, n) && hm(e.start, t) ))(o, t, n) ? o.map(e => qh.singleCellTable(t, e.start)) : r.isMultiTable ? ((e, t, n, o) => Xh(e, t, n, o).bind(({start: e, end: o}) => { const r = e.bind(Qh).getOr([]), s = o.bind(Qh).getOr([]); if (r.length > 0 && s.length > 0) { const e = Jh(n, t); return I.some(qh.multiTable(r, s, e)); } return I.none(); }))(o, r, t, n) : ((e, t, n, o) => Xh(e, t, n, o) .bind(({start: e, end: t}) => e.or(t)) .bind(e => { const {isSameTable: o} = t, r = Qh(e).getOr([]); if (o && e.cells.length === r.length) return I.some(qh.fullTable(e.table)); if (r.length > 0) { if (o) return I.some(qh.partialTable(r, I.none())); { const e = Jh(n, t); return I.some(qh.partialTable(r, I.some({...t, rng: e}))); } } return I.none(); }))(o, r, t, n); }, tb = e => q(e, e => { rn(e, "contenteditable"), Qa(e); }), nb = (e, t, n, o) => { const r = n.cloneRange(); o ? (r.setStart(n.startContainer, n.startOffset), r.setEndAfter(t.dom.lastChild)) : (r.setStartBefore(t.dom.firstChild), r.setEnd(n.endContainer, n.endOffset)), ab(e, r, t, !1).each(e => e()); }, ob = e => { const t = mm(e), n = Cn(e.selection.getNode()); yr(n.dom) && Tr(e.schema, n) ? e.selection.setCursorLocation(n.dom, 0) : e.selection.collapse(!0), t.length > 1 && $(t, e => _n(e, n)) && Jt(n, "data-mce-selected", "1"); }, rb = (e, t, n) => I.some(() => { const o = e.selection.getRng(), r = n .bind(({rng: n, isStartInTable: r}) => { const s = ((e, t) => I.from(e.dom.getParent(t, e.dom.isBlock)).map(Cn))( e, r ? n.endContainer : n.startContainer ); n.deleteContents(), ((e, t, n) => { n.each(n => { t ? Eo(n) : (Qa(n), e.selection.setCursorLocation(n.dom, 0)); }); })(e, r, s.filter(T(Tr, e.schema))); const a = r ? t[0] : t[t.length - 1]; return nb(e, a, o, r), Tr(e.schema, a) ? I.none() : I.some(r ? t.slice(1) : t.slice(0, -1)); }) .getOr(t); tb(r), ob(e); }), sb = (e, t, n, o) => I.some(() => { const r = e.selection.getRng(), s = t[0], a = n[n.length - 1]; nb(e, s, r, !0), nb(e, a, r, !1); const i = Tr(e.schema, s) ? t : t.slice(1), l = Tr(e.schema, a) ? n : n.slice(0, -1); tb(i.concat(l)), o.deleteContents(), ob(e); }), ab = (e, t, n, o = !0) => I.some(() => { jh(e, t, n, o); }), ib = (e, t) => I.some(() => Sh(e, !1, t)), lb = (e, t) => Q(zp(t, e), Ga), db = (e, t) => Q(zp(t, e), Zt("caption")), cb = (e, t) => I.some(() => { Qa(t), e.selection.setCursorLocation(t.dom, 0); }), ub = (e, t) => (e ? Lp(t) : Mp(t)), mb = (e, t, n) => { const o = Cn(e.getBody()); return db(o, n).fold( () => ((e, t, n, o) => { const r = Ji.fromRangeStart(e.selection.getRng()); return lb(n, o).bind(o => Tr(e.schema, o, {checkRootAsContent: !1}) ? cb(e, o) : ((e, t, n, o, r) => Fu(n, e.getBody(), r).bind(e => lb(t, Cn(e.getNode())).bind(e => (_n(e, o) ? I.none() : I.some(k))) ))(e, n, t, o, r) ); })(e, t, o, n).orThunk(() => Ft( ((e, t) => { const n = Ji.fromRangeStart(e.selection.getRng()); return ub(t, n) || Iu(t, e.getBody(), n).exists(e => ub(t, e)); })(e, t), k ) ), n => ((e, t, n, o) => { const r = Ji.fromRangeStart(e.selection.getRng()); return Tr(e.schema, o) ? cb(e, o) : ((e, t, n, o, r) => Fu(n, e.getBody(), r).fold( () => I.some(k), s => ((e, t, n, o) => $u(e.dom) .bind(r => Vu(e.dom).map(e => (t ? n.isEqual(r) && o.isEqual(e) : n.isEqual(e) && o.isEqual(r))) ) .getOr(!0))(o, n, r, s) ? ((e, t) => cb(e, t))(e, o) : ((e, t, n) => db(e, Cn(n.getNode())).fold( () => I.some(k), e => Ft(!_n(e, t), k) ))(t, o, s) ))(e, n, t, o, r); })(e, t, o, n) ); }, fb = (e, t) => { const n = Cn(e.selection.getStart(!0)), o = mm(e); return e.selection.isCollapsed() && 0 === o.length ? mb(e, t, n) : ((e, t, n) => { const o = Cn(e.getBody()), r = e.selection.getRng(); return 0 !== n.length ? rb(e, n, I.none()) : ((e, t, n, o) => db(t, o).fold( () => ((e, t, n) => eb(t, n).bind(t => t.fold(T(ab, e), T(ib, e), T(rb, e), T(sb, e))))(e, t, n), t => ((e, t) => cb(e, t))(e, t) ))(e, o, r, t); })(e, n, o); }, gb = (e, t) => { let n = t; for (; n && n !== e; ) { if (br(n) || vr(n)) return n; n = n.parentNode; } return null; }, pb = ["data-ephox-", "data-mce-", "data-alloy-", "data-snooker-", "_"], hb = Dt.each, bb = e => { const t = e.dom, n = new Set(e.serializer.getTempAttrs()), o = e => $(pb, t => $e(e, t)) || n.has(e); return { compare: (e, n) => { if (e.nodeName !== n.nodeName || e.nodeType !== n.nodeType) return !1; const r = e => { const n = {}; return ( hb(t.getAttribs(e), r => { const s = r.nodeName.toLowerCase(); "style" === s || o(s) || (n[s] = t.getAttrib(e, s)); }), n ); }, s = (e, t) => { for (const n in e) if (ke(e, n)) { const o = t[n]; if (v(o)) return !1; if (e[n] !== o) return !1; delete t[n]; } for (const e in t) if (ke(t, e)) return !1; return !0; }; if (er(e) && er(n)) { if (!s(r(e), r(n))) return !1; if (!s(t.parseStyle(t.getAttrib(e, "style")), t.parseStyle(t.getAttrib(n, "style")))) return !1; } return !sm(e) && !sm(n); }, isAttributeInternal: o }; }, vb = e => ["h1", "h2", "h3", "h4", "h5", "h6"].includes(e.name), yb = (e, t, n, o) => { const r = n.name; for (let t = 0, s = e.length; t < s; t++) { const s = e[t]; if (s.name === r) { const e = o.nodes[r]; e ? e.nodes.push(n) : (o.nodes[r] = {filter: s, nodes: [n]}); } } if (n.attributes) for (let e = 0, r = t.length; e < r; e++) { const r = t[e], s = r.name; if (s in n.attributes.map) { const e = o.attributes[s]; e ? e.nodes.push(n) : (o.attributes[s] = {filter: r, nodes: [n]}); } } }, Cb = (e, t) => { const n = (e, n) => { pe(e, e => { const o = ce(e.nodes); q(e.filter.callbacks, r => { for (let t = o.length - 1; t >= 0; t--) { const r = o[t]; ((n ? void 0 !== r.attr(e.filter.name) : r.name === e.filter.name) && !y(r.parent)) || o.splice(t, 1); } o.length > 0 && r(o, e.filter.name, t); }); }); }; n(e.nodes, !1), n(e.attributes, !0); }, wb = (e, t, n, o = {}) => { const r = ((e, t, n) => { const o = {nodes: {}, attributes: {}}; return ( n.firstChild && ((n, r) => { let s = n; for (; (s = s.walk()); ) yb(e, t, s, o); })(n), o ); })(e, t, n); Cb(r, o); }, xb = (e, t, n, o) => { if ((e.pad_empty_with_br || t.insert) && n(o)) { const e = new ep("br", 1); t.insert && e.attr("data-mce-bogus", "1"), o.empty().append(e); } else o.empty().append(new ep("#text", 3)).value = Wo; }, Eb = (e, t) => { const n = null == e ? void 0 : e.firstChild; return C(n) && n === e.lastChild && n.name === t; }, kb = (e, t, n, o) => o.isEmpty(t, n, t => ((e, t) => { const n = e.getElementRule(t.name); return !0 === (null == n ? void 0 : n.paddEmpty); })(e, t) ), _b = e => { let t; for (let n = e; n; n = n.parent) { const e = n.attr("contenteditable"); if ("false" === e) break; "true" === e && (t = n); } return I.from(t); }, Sb = (e, t, n = e.parent) => { if (t.getSpecialElements()[e.name]) e.empty().remove(); else { const o = e.children(); for (const e of o) n && !t.isValidChild(n.name, e.name) && Sb(e, t, n); e.unwrap(); } }, Nb = (e, t, n, o = k) => { const r = t.getTextBlockElements(), s = t.getNonEmptyElements(), a = t.getWhitespaceElements(), i = Dt.makeMap("tr,td,th,tbody,thead,tfoot,table,summary"), l = new Set(), d = e => e !== n && !i[e.name]; for (let n = 0; n < e.length; n++) { const i = e[n]; let c, u, m; if (!i.parent || l.has(i)) continue; if (r[i.name] && "li" === i.parent.name) { let e = i.next; for (; e && r[e.name]; ) (e.name = "li"), l.add(e), i.parent.insert(e, i.parent), (e = e.next); i.unwrap(); continue; } const f = [i]; for (c = i.parent; c && !t.isValidChild(c.name, i.name) && d(c); c = c.parent) f.push(c); if (c && f.length > 1) if (Rb(t, i, c)) Sb(i, t); else { f.reverse(), (u = f[0].clone()), o(u); let e = u; for (let n = 0; n < f.length - 1; n++) { t.isValidChild(e.name, f[n].name) && n > 0 ? ((m = f[n].clone()), o(m), e.append(m)) : (m = e); for (let e = f[n].firstChild; e && e !== f[n + 1]; ) { const t = e.next; m.append(e), (e = t); } e = m; } kb(t, s, a, u) ? c.insert(i, f[0], !0) : (c.insert(u, f[0], !0), c.insert(i, u)), (c = f[0]), (kb(t, s, a, c) || Eb(c, "br")) && c.empty().remove(); } else if (i.parent) { if ("li" === i.name) { let e = i.prev; if (e && ("ul" === e.name || "ol" === e.name)) { e.append(i); continue; } if (((e = i.next), e && ("ul" === e.name || "ol" === e.name) && e.firstChild)) { e.insert(i, e.firstChild, !0); continue; } const t = new ep("ul", 1); o(t), i.wrap(t); continue; } if (t.isValidChild(i.parent.name, "div") && t.isValidChild("div", i.name)) { const e = new ep("div", 1); o(e), i.wrap(e); } else Sb(i, t); } } }, Rb = (e, t, n = t.parent) => !( !n || ((!e.children[t.name] || e.isValidChild(n.name, t.name)) && ("a" !== t.name || !((e, t) => { let n = e; for (; n; ) { if ("a" === n.name) return !0; n = n.parent; } return !1; })(n)) && (!(e => "summary" === e.name)(n) || !vb(t) || ((null == n ? void 0 : n.firstChild) === t && (null == n ? void 0 : n.lastChild) === t))) ), Ab = e => e.collapsed ? e : (e => { const t = Ji.fromRangeStart(e), n = Ji.fromRangeEnd(e), o = e.commonAncestorContainer; return Iu(!1, o, n) .map(r => !du(t, n, o) && du(t, r, o) ? ((e, t, n, o) => { const r = document.createRange(); return r.setStart(e, t), r.setEnd(n, o), r; })(t.container(), t.offset(), r.container(), r.offset()) : e ) .getOr(e); })(e), Tb = (e, t) => { let n = t.firstChild, o = t.lastChild; return ( n && "meta" === n.name && (n = n.next), o && "mce_marker" === o.attr("id") && (o = o.prev), ((e, t) => { const n = e.getNonEmptyElements(); return ( C(t) && (t.isEmpty(n) || ((e, t) => e.getBlockElements()[t.name] && (e => C(e.firstChild) && e.firstChild === e.lastChild)(t) && (e => "br" === e.name || e.value === Wo)(t.firstChild))(e, t)) ); })(e, o) && (o = null == o ? void 0 : o.prev), !(!n || n !== o || ("ul" !== n.name && "ol" !== n.name)) ); }, Ob = e => { return e.length > 0 && (!(n = e[e.length - 1]).firstChild || (C(null == (t = n) ? void 0 : t.firstChild) && t.firstChild === t.lastChild && (e => e.data === Wo || pr(e))(t.firstChild))) ? e.slice(0, -1) : e; var t, n; }, Bb = (e, t) => { const n = e.getParent(t, e.isBlock); return n && "LI" === n.nodeName ? n : null; }, Pb = (e, t) => { const n = Ji.after(e), o = Pu(t).prev(n); return o ? o.toRange() : null; }, Db = (e, t, n, o) => { const r = ((e, t, n) => { const o = t.serialize(n); return (e => { var t, n; const o = e.firstChild, r = e.lastChild; return ( o && "META" === o.nodeName && (null === (t = o.parentNode) || void 0 === t || t.removeChild(o)), r && "mce_marker" === r.id && (null === (n = r.parentNode) || void 0 === n || n.removeChild(r)), e ); })(e.createFragment(o)); })(t, e, o), s = Bb(t, n.startContainer), a = Ob( ((i = r.firstChild), Y(null !== (l = null == i ? void 0 : i.childNodes) && void 0 !== l ? l : [], e => "LI" === e.nodeName)) ); var i, l; const d = t.getRoot(), c = e => { const o = Ji.fromRangeStart(n), r = Pu(t.getRoot()), a = 1 === e ? r.prev(o) : r.next(o), i = null == a ? void 0 : a.getNode(); return !i || Bb(t, i) !== s; }; return s ? c(1) ? ((e, t, n) => { const o = e.parentNode; return ( o && Dt.each(t, t => { o.insertBefore(t, e); }), ((e, t) => { const n = Ji.before(e), o = Pu(t).next(n); return o ? o.toRange() : null; })(e, n) ); })(s, a, d) : c(2) ? ((e, t, n, o) => (o.insertAfter(t.reverse(), e), Pb(t[0], n)))(s, a, d, t) : ((e, t, n, o) => { const r = ((e, t) => { const n = t.cloneRange(), o = t.cloneRange(); return n.setStartBefore(e), o.setEndAfter(e), [n.cloneContents(), o.cloneContents()]; })(e, o), s = e.parentNode; return ( s && (s.insertBefore(r[0], e), Dt.each(t, t => { s.insertBefore(t, e); }), s.insertBefore(r[1], e), s.removeChild(e)), Pb(t[t.length - 1], n) ); })(s, a, d, n) : null; }, Lb = ["pre"], Mb = yr, Ib = (e, t, n) => { var o, r; const s = e.selection, a = e.dom, i = e.parser, l = n.merge, d = yp({validate: !0}, e.schema), c = ''; n.preserve_zwsp || (t = ti(t)), -1 === t.indexOf("{$caret}") && (t += "{$caret}"), (t = t.replace(/\{\$caret\}/, c)); let u = s.getRng(); const m = u.startContainer, f = e.getBody(); m === f && s.isCollapsed() && a.isBlock(f.firstChild) && ((e, t) => C(t) && !e.schema.getVoidElements()[t.nodeName])(e, f.firstChild) && a.isEmpty(f.firstChild) && ((u = a.createRng()), u.setStart(f.firstChild, 0), u.setEnd(f.firstChild, 0), s.setRng(u)), s.isCollapsed() || (e => { const t = e.dom, n = Ab(e.selection.getRng()); e.selection.setRng(n); const o = t.getParent(n.startContainer, Mb); ((e, t, n) => !!C(n) && n === e.getParent(t.endContainer, Mb) && hm(Cn(n), t))(t, n, o) ? ab(e, n, Cn(o)) : n.startContainer === n.endContainer && n.endOffset - n.startOffset == 1 && dr(n.startContainer.childNodes[n.startOffset]) ? n.deleteContents() : e.getDoc().execCommand("Delete", !1); })(e); const g = s.getNode(), p = {context: g.nodeName.toLowerCase(), data: n.data, insert: !0}, h = i.parse(t, p); if (!0 === n.paste && Tb(e.schema, h) && ((e, t) => !!Bb(e, t))(a, g)) return (u = Db(d, a, s.getRng(), h)), u && s.setRng(u), t; !0 === n.paste && ((e, t, n, o) => { var r; const s = t.firstChild, a = t.lastChild, i = s === ("bookmark" === a.attr("data-mce-type") ? a.prev : a), l = H(Lb, s.name); if (i && l) { const t = "false" !== s.attr("contenteditable"), a = (null === (r = e.getParent(n, e.isBlock)) || void 0 === r ? void 0 : r.nodeName.toLowerCase()) === s.name, i = I.from(gb(o, n)).forall(br); return t && a && i; } return !1; })(a, h, g, e.getBody()) && (null === (o = h.firstChild) || void 0 === o || o.unwrap()), (e => { let t = e; for (; (t = t.walk()); ) 1 === t.type && t.attr("data-mce-fragment", "1"); })(h); let b = h.lastChild; if (b && "mce_marker" === b.attr("id")) { const t = b; for (b = b.prev; b; b = b.walk(!0)) if (3 === b.type || !a.isBlock(b.name)) { b.parent && e.schema.isValidChild(b.parent.name, "span") && b.parent.insert(t, b, "br" === b.name); break; } } if ( (e._selectionOverrides.showBlockCaretContainer(g), p.invalid || ((e, t, n) => { var o; return ( $(n.children(), vb) && "SUMMARY" === (null === (o = e.getParent(t, e.isBlock)) || void 0 === o ? void 0 : o.nodeName) ); })(a, g, h)) ) { e.selection.setContent(c); let n, o = s.getNode(); const l = e.getBody(); for (fr(o) ? (o = n = l) : (n = o); n && n !== l; ) (o = n), (n = n.parentNode); t = o === l ? l.innerHTML : a.getOuterHTML(o); const u = i.parse(t), m = (e => { for (let t = e; t; t = t.walk()) if ("mce_marker" === t.attr("id")) return I.some(t); return I.none(); })(u), f = m.bind(_b).getOr(u); m.each(e => e.replace(h)); const g = h.children(), p = null !== (r = h.parent) && void 0 !== r ? r : u; h.unwrap(); const b = Y(g, t => Rb(e.schema, t, p)); Nb(b, e.schema, f), wb(i.getNodeFilters(), i.getAttributeFilters(), u), (t = d.serialize(u)), o === l ? a.setHTML(l, t) : a.setOuterHTML(o, t); } else (t = d.serialize(h)), ((e, t, n) => { var o; if ("all" === n.getAttribute("data-mce-bogus")) null === (o = n.parentNode) || void 0 === o || o.insertBefore(e.dom.createFragment(t), n); else { const o = n.firstChild, r = n.lastChild; !o || (o === r && "BR" === o.nodeName) ? e.dom.setHTML(n, t) : e.selection.setContent(t, {no_events: !0}); } })(e, t, g); var v; return ( ((e, t) => { const n = e.schema.getTextInlineElements(), o = e.dom; if (t) { const t = e.getBody(), r = bb(e); Dt.each(o.select("*[data-mce-fragment]"), e => { if (C(n[e.nodeName.toLowerCase()]) && ((e, t) => ne(xp(e, t), e => !(e => Cp.has(e))(e)))(o, e)) for (let n = e.parentElement; C(n) && n !== t && !Ep(o, e, n); n = n.parentElement) if (r.compare(n, e)) { o.remove(e, !0); break; } }); } })(e, l), ((e, t) => { var n, o, r; let s; const a = e.dom, i = e.selection; if (!t) return; i.scrollIntoView(t); const l = gb(e.getBody(), t); if (l && "false" === a.getContentEditable(l)) return a.remove(t), void i.select(l); let d = a.createRng(); const c = t.previousSibling; if (dr(c)) { d.setStart( c, null !== (o = null === (n = c.nodeValue) || void 0 === n ? void 0 : n.length) && void 0 !== o ? o : 0 ); const e = t.nextSibling; dr(e) && (c.appendData(e.data), null === (r = e.parentNode) || void 0 === r || r.removeChild(e)); } else d.setStartBefore(t), d.setEndBefore(t); const u = a.getParent(t, a.isBlock); if ((a.remove(t), u && a.isEmpty(u))) { const t = Mb(u); xo(Cn(u)), d.setStart(u, 0), d.setEnd(u, 0), t || (e => !!e.getAttribute("data-mce-fragment"))(u) || !(s = (t => { let n = Ji.fromRangeStart(t); return (n = Pu(e.getBody()).next(n)), null == n ? void 0 : n.toRange(); })(d)) ? a.add(u, a.create("br", t ? {} : {"data-mce-bogus": "1"})) : ((d = s), a.remove(u)); } i.setRng(d); })(e, a.get("mce_marker")), (v = e.getBody()), Dt.each(v.getElementsByTagName("*"), e => { e.removeAttribute("data-mce-fragment"); }), ((e, t, n) => { I.from(e.getParent(t, "td,th")) .map(Cn) .each(e => ((e, t) => { zn(e).each(n => { Pn(n).each(o => { t.isBlock($t(e)) && Va(n) && t.isBlock($t(o)) && Eo(n); }); }); })(e, n) ); })(a, s.getStart(), e.schema), ((e, t, n) => { const o = Bn(Cn(n), e => _n(e, Cn(t))); ie(o, o.length - 2) .filter(Kt) .fold( () => Wr(e, t), t => Wr(e, t.dom) ); })(e.schema, e.getBody(), s.getStart()), t ); }, Fb = e => e instanceof ep, Ub = (e, t, n) => { e.dom.setHTML(e.getBody(), t), !0 !== n && (e => { jg(e) && $u(e.getBody()).each(t => { const n = t.getNode(), o = ar(n) ? $u(n).getOr(t) : t; e.selection.setRng(o.toRange()); }); })(e); }, zb = e => (w(e) ? e : L), jb = (e, t, n) => { const o = t(e), r = zb(n); return o.orThunk(() => r(e) ? I.none() : ((e, t, n) => { let o = e.dom; const r = zb(n); for (; o.parentNode; ) { o = o.parentNode; const e = Cn(o), n = t(e); if (n.isSome()) return n; if (r(e)) break; } return I.none(); })(e, t, r) ); }, Hb = Om, $b = (e, t, n) => { const o = e.formatter.get(n); if (o) for (let n = 0; n < o.length; n++) { const r = o[n]; if (Fm(r) && !1 === r.inherit && e.dom.is(t, r.selector)) return !0; } return !1; }, Vb = (e, t, n, o, r) => { const s = e.dom.getRoot(); if (t === s) return !1; const a = e.dom.getParent(t, t => !!$b(e, t, n) || t.parentNode === s || !!Kb(e, t, n, o, !0)); return !!Kb(e, a, n, o, r); }, qb = (e, t, n) => !(!Um(n) || !Hb(t, n.inline)) || !(!Im(n) || !Hb(t, n.block)) || (!!Fm(n) && er(t) && e.is(t, n.selector)), Wb = (e, t, n, o, r, s) => { const a = n[o], i = "attributes" === o; if (w(n.onmatch)) return n.onmatch(t, n, o); if (a) if (Ne(a)) { for (let n = 0; n < a.length; n++) if (i ? e.getAttrib(t, a[n]) : Pm(e, t, a[n])) return !0; } else for (const o in a) if (ke(a, o)) { const l = i ? e.getAttrib(t, o) : Pm(e, t, o), d = Tm(a[o], s), c = y(l) || Xe(l); if (c && y(d)) continue; if (r && c && !n.exact) return !1; if ((!r || n.exact) && !Hb(l, Bm(d, o))) return !1; } return !0; }, Kb = (e, t, n, o, r) => { const s = e.formatter.get(n), a = e.dom; if (s && er(t)) for (let n = 0; n < s.length; n++) { const i = s[n]; if (qb(e.dom, t, i) && Wb(a, t, i, "attributes", r, o) && Wb(a, t, i, "styles", r, o)) { const n = i.classes; if (n) for (let r = 0; r < n.length; r++) if (!e.dom.hasClass(t, Tm(n[r], o))) return; return i; } } }, Yb = (e, t, n, o, r) => { if (o) return Vb(e, o, t, n, r); if (((o = e.selection.getNode()), Vb(e, o, t, n, r))) return !0; const s = e.selection.getStart(); return !(s === o || !Vb(e, s, t, n, r)); }, Gb = Ja, Xb = e => { if (e) { const t = new Vo(e, e); for (let e = t.current(); e; e = t.next()) if (dr(e)) return e; } return null; }, Zb = e => { const t = vn("span"); return en(t, {id: qu, "data-mce-bogus": "1", "data-mce-type": "format-caret"}), e && yo(t, yn(Gb)), t; }, Qb = (e, t, n) => { const o = e.dom, r = e.selection; if (jm(t)) Sh(e, !1, Cn(t), n, !0); else { const e = r.getRng(), n = o.getParent(t, o.isBlock), s = e.startContainer, a = e.startOffset, i = e.endContainer, l = e.endOffset, d = (e => { const t = Xb(e); return t && t.data.charAt(0) === Gb && t.deleteData(0, 1), t; })(t); o.remove(t, !0), s === d && a > 0 && e.setStart(d, a - 1), i === d && l > 0 && e.setEnd(d, l - 1), n && o.isEmpty(n) && Qa(Cn(n)), r.setRng(e); } }, Jb = (e, t, n) => { const o = e.dom, r = e.selection; if (t) Qb(e, t, n); else if (!(t = Ku(e.getBody(), r.getStart()))) for (; (t = o.get(qu)); ) Qb(e, t, n); }, ev = (e, t) => (e.appendChild(t), t), tv = (e, t) => { var n; const o = G(e, (e, t) => ev(e, t.cloneNode(!1)), t), r = null !== (n = o.ownerDocument) && void 0 !== n ? n : document; return ev(o, r.createTextNode(Gb)); }, nv = (e, t, n, o) => { const a = e.dom, i = e.selection; let l = !1; const d = e.formatter.get(t); if (!d) return; const c = i.getRng(), u = c.startContainer, m = c.startOffset; let f = u; dr(u) && (m !== u.data.length && (l = !0), (f = f.parentNode)); const g = []; let h; for (; f; ) { if (Kb(e, f, t, n, o)) { h = f; break; } f.nextSibling && (l = !0), g.push(f), (f = f.parentNode); } if (h) if (l) { const r = i.getBookmark(); c.collapse(!0); let s = of(a, c, d, !0); (s = Zf(s)), e.formatter.remove(t, n, s, o), i.moveToBookmark(r); } else { const l = Ku(e.getBody(), h), d = C(l) ? a.getParents(h.parentNode, M, l) : [], c = Zb(!1).dom; ((e, t, n) => { var o, r; const s = e.dom, a = s.getParent(n, T(Sm, e.schema)); a && s.isEmpty(a) ? null === (o = n.parentNode) || void 0 === o || o.replaceChild(t, n) : ((e => { const t = zo(e, "br"), n = Y( (e => { const t = []; let n = e.dom; for (; n; ) t.push(Cn(n)), (n = n.lastChild); return t; })(e).slice(-1), Va ); t.length === n.length && q(n, Eo); })(Cn(n)), s.isEmpty(n) ? null === (r = n.parentNode) || void 0 === r || r.replaceChild(t, n) : s.insertAfter(t, n)); })(e, c, null != l ? l : h); const u = ((e, t, n, o, a, i) => { const l = e.formatter, d = e.dom, c = Y(fe(l.get()), e => e !== o && !He(e, "removeformat")), u = ((e, t, n) => X( n, (n, o) => { const r = ((e, t) => Mm(e, t, e => { const t = e => w(e) || (e.length > 1 && "%" === e.charAt(0)); return $(["styles", "attributes"], n => Ee(e, n).exists(e => { const n = p(e) ? e : xe(e); return $(n, t); }) ); }))(e, o); return e.formatter.matchNode(t, o, {}, r) ? n.concat([o]) : n; }, [] ))(e, n, c); if ( Y( u, t => !((e, t, n) => { const o = ["inline", "block", "selector", "attributes", "styles", "classes"], a = e => Ce(e, (e, t) => $(o, e => e === t)); return Mm(e, t, t => { const o = a(t); return Mm(e, n, e => { const t = a(e); return ((e, t, n = s) => r(n).eq(e, t))(o, t); }); }); })(e, t, o) ).length > 0 ) { const e = n.cloneNode(!1); return d.add(t, e), l.remove(o, a, e, i), d.remove(e), I.some(e); } return I.none(); })(e, c, h, t, n, o), m = tv([...g, ...u.toArray(), ...d], c); l && Qb(e, l, C(l)), i.setCursorLocation(m, 1), a.isEmpty(h) && a.remove(h); } }, ov = e => { const t = Zb(!1), n = tv(e, t.dom); return {caretContainer: t, caretPosition: Ji(n, 0)}; }, rv = (e, t) => { const {caretContainer: n, caretPosition: o} = ov(t); return ho(Cn(e), n), Eo(Cn(e)), o; }, sv = (e, t) => { if (Wu(t.dom)) return !1; const n = e.schema.getTextInlineElements(); return ke(n, $t(t)) && !Wu(t.dom) && !sr(t.dom); }, av = {}, iv = or(["pre"]); ((e, t) => { av[e] || (av[e] = []), av[e].push(e => { if (!e.selection.getRng().collapsed) { const t = e.selection.getSelectedBlocks(), n = Y( Y(t, iv), (e => t => { const n = t.previousSibling; return iv(n) && H(e, n); })(t) ); q(n, e => { ((e, t) => { const n = Cn(t), o = Rn(n).dom; Eo(n), wo(Cn(e), [vn("br", o), vn("br", o), ...In(n)]); })(e.previousSibling, e); }); } }); })("pre"); const lv = ["fontWeight", "fontStyle", "color", "fontSize", "fontFamily"], dv = (e, t) => { const n = e.get(t); return p(n) ? Q(n, e => Um(e) && "span" === e.inline && (e => f(e.styles) && $(fe(e.styles), e => H(lv, e)))(e)) : I.none(); }, cv = (e, t) => Hu(t, Ji.fromRangeStart(e)).isNone(), uv = (e, t) => !1 === ju(t, Ji.fromRangeEnd(e)).exists(e => !pr(e.getNode()) || ju(t, e).isSome()), mv = e => t => xr(t) && e.isEditable(t), fv = e => Y(e.getSelectedBlocks(), mv(e.dom)), gv = Dt.each, pv = e => er(e) && !sm(e) && !Wu(e) && !sr(e), hv = (e, t) => { for (let n = e; n; n = n[t]) { if (dr(n) && Ge(n.data)) return e; if (er(n) && !sm(n)) return n; } return e; }, bv = (e, t, n) => { const o = bb(e), r = tr(t) && e.dom.isEditable(t), s = tr(n) && e.dom.isEditable(n); if (r && s) { const r = hv(t, "previousSibling"), s = hv(n, "nextSibling"); if (o.compare(r, s)) { for (let e = r.nextSibling; e && e !== s; ) { const t = e; (e = e.nextSibling), r.appendChild(t); } return ( e.dom.remove(s), Dt.each(Dt.grep(s.childNodes), e => { r.appendChild(e); }), r ); } } return n; }, vv = (e, t, n, o) => { var r; if (o && !1 !== t.merge_siblings) { const t = null !== (r = bv(e, _m(o), o)) && void 0 !== r ? r : o; bv(e, t, _m(t, !0)); } }, yv = (e, t, n) => { gv(e.childNodes, e => { pv(e) && (t(e) && n(e), e.hasChildNodes() && yv(e, t, n)); }); }, Cv = (e, t) => n => !(!n || !Pm(e, n, t)), wv = (e, t, n) => o => { e.setStyle(o, t, n), "" === o.getAttribute("style") && o.removeAttribute("style"), ((e, t) => { "SPAN" === t.nodeName && 0 === e.getAttribs(t).length && e.remove(t, !0); })(e, o); }, xv = kl([{keep: []}, {rename: ["name"]}, {removed: []}]), Ev = /^(src|href|style)$/, kv = Dt.each, _v = Om, Sv = (e, t, n) => e.isChildOf(t, n) && t !== n && !e.isBlock(n), Nv = (e, t, n) => { let o = t[n ? "startContainer" : "endContainer"], r = t[n ? "startOffset" : "endOffset"]; if (er(o)) { const e = o.childNodes.length - 1; !n && r && r--, (o = o.childNodes[r > e ? e : r]); } return ( dr(o) && n && r >= o.data.length && (o = new Vo(o, e.getBody()).next() || o), dr(o) && !n && 0 === r && (o = new Vo(o, e.getBody()).prev() || o), o ); }, Rv = (e, t) => { const n = t ? "firstChild" : "lastChild", o = e[n]; return (e => /^(TR|TH|TD)$/.test(e.nodeName))(e) && o ? ("TR" === e.nodeName && o[n]) || o : e; }, Av = (e, t, n, o) => { var r; const s = e.create(n, o); return null === (r = t.parentNode) || void 0 === r || r.insertBefore(s, t), s.appendChild(t), s; }, Tv = (e, t, n, o, r) => { const s = Cn(t), a = Cn(e.create(o, r)), i = n ? Mn(s) : Ln(s); return wo(a, i), n ? (ho(s, a), vo(a, s)) : (bo(s, a), yo(a, s)), a.dom; }, Ov = (e, t, n) => { const o = t.parentNode; let r; const s = e.dom, a = Wl(e); Im(n) && o === s.getRoot() && ((n.list_block && _v(t, n.list_block)) || q(ce(t.childNodes), t => { Nm(e, a, t.nodeName.toLowerCase()) ? r ? r.appendChild(t) : ((r = Av(s, t, a)), s.setAttribs(r, Kl(e))) : (r = null); })), ((e => Fm(e) && Um(e) && Lt(Ee(e, "mixed"), !0))(n) && !_v(n.inline, t)) || s.remove(t, !0); }, Bv = (e, t, n) => (x(e) ? {name: t, value: null} : {name: e, value: Tm(t, n)}), Pv = (e, t) => { "" === e.getAttrib(t, "style") && (t.removeAttribute("style"), t.removeAttribute("data-mce-style")); }, Dv = (e, t, n, o, r) => { let s = !1; kv(n.styles, (a, i) => { const {name: l, value: d} = Bv(i, a, o), c = Bm(d, l); (n.remove_similar || h(d) || !er(r) || _v(Pm(e, r, l), c)) && e.setStyle(t, l, ""), (s = !0); }), s && Pv(e, t); }, Lv = (e, t, n, o, r) => { const s = e.dom, a = bb(e), i = e.schema; if (Um(t) && Gr(i, t.inline) && Zr(i, o) && o.parentElement === e.getBody()) return Ov(e, o, t), xv.removed(); if (!t.ceFalseOverride && o && "false" === s.getContentEditableParent(o)) return xv.keep(); if (o && !qb(s, o, t) && !((e, t) => t.links && "A" === e.nodeName)(o, t)) return xv.keep(); const l = o, d = t.preserve_attributes; if (Um(t) && "all" === t.remove && p(d)) { const e = Y(s.getAttribs(l), e => H(d, e.name.toLowerCase())); if ((s.removeAllAttribs(l), q(e, e => s.setAttrib(l, e.name, e.value)), e.length > 0)) return xv.rename("span"); } if ("all" !== t.remove) { Dv(s, l, t, n, r), kv(t.attributes, (e, o) => { const {name: a, value: i} = Bv(o, e, n); if (t.remove_similar || h(i) || !er(r) || _v(s.getAttrib(r, a), i)) { if ("class" === a) { const e = s.getAttrib(l, a); if (e) { let t = ""; if ( (q(e.split(/\s+/), e => { /mce\-\w+/.test(e) && (t += (t ? " " : "") + e); }), t) ) return void s.setAttrib(l, a, t); } } if ( (Ev.test(a) && l.removeAttribute("data-mce-" + a), "style" === a && or(["li"])(l) && "none" === s.getStyle(l, "list-style-type")) ) return l.removeAttribute(a), void s.setStyle(l, "list-style-type", "none"); "class" === a && l.removeAttribute("className"), l.removeAttribute(a); } }), kv(t.classes, e => { (e = Tm(e, n)), (er(r) && !s.hasClass(r, e)) || s.removeClass(l, e); }); const e = s.getAttribs(l); for (let t = 0; t < e.length; t++) { const n = e[t].nodeName; if (!a.isAttributeInternal(n)) return xv.keep(); } } return "none" !== t.remove ? (Ov(e, l, t), xv.removed()) : xv.keep(); }, Mv = (e, t, n, o) => Lv(e, t, n, o, o).fold(N(o), t => (e.dom.createFragment().appendChild(o), e.dom.rename(o, t)), N(null)), Iv = (e, t, n, o, r) => { (o || e.selection.isEditable()) && ((e, t, n, o, r) => { const s = e.formatter.get(t), a = s[0], i = e.dom, l = e.selection, d = o => { const i = ((e, t, n, o, r) => { let s; return ( t.parentNode && q(Lm(e.dom, t.parentNode).reverse(), t => { if (!s && er(t) && "_start" !== t.id && "_end" !== t.id) { const a = Kb(e, t, n, o, r); a && !1 !== a.split && (s = t); } }), s ); })(e, o, t, n, r); return ((e, t, n, o, r, s, a, i) => { var l, d; let c, u; const m = e.dom; if (n) { const s = n.parentNode; for (let n = o.parentNode; n && n !== s; n = n.parentNode) { let o = m.clone(n, !1); for (let n = 0; n < t.length && ((o = Mv(e, t[n], i, o)), null !== o); n++); o && (c && o.appendChild(c), u || (u = o), (c = o)); } (a.mixed && m.isBlock(n)) || (o = null !== (l = m.split(n, o)) && void 0 !== l ? l : o), c && u && (null === (d = r.parentNode) || void 0 === d || d.insertBefore(c, r), u.appendChild(r), Um(a) && vv(e, a, 0, c)); } return o; })(e, s, i, o, o, 0, a, n); }, c = t => $(s, o => Fv(e, o, n, t, t)), u = t => { const n = ce(t.childNodes), o = c(t) || $(s, e => qb(i, t, e)), r = t.parentNode; if ((!o && C(r) && zm(a) && c(r), a.deep && n.length)) for (let e = 0; e < n.length; e++) u(n[e]); q(["underline", "line-through", "overline"], n => { er(t) && e.dom.getStyle(t, "text-decoration") === n && t.parentNode && Dm(i, t.parentNode) === n && Fv(e, {deep: !1, exact: !0, inline: "span", styles: {textDecoration: n}}, void 0, t); }); }, m = e => { const t = i.get(e ? "_start" : "_end"); if (t) { let n = t[e ? "firstChild" : "lastChild"]; return ( (e => sm(e) && er(e) && ("_start" === e.id || "_end" === e.id))(n) && (n = n[e ? "firstChild" : "lastChild"]), dr(n) && 0 === n.data.length && (n = e ? t.previousSibling || t.nextSibling : t.nextSibling || t.previousSibling), i.remove(t, !0), n ); } return null; }, f = t => { let n, o, r = of(i, t, s, t.collapsed); if (a.split) { if (((r = Zf(r)), (n = Nv(e, r, !0)), (o = Nv(e, r)), n !== o)) { if (((n = Rv(n, !0)), (o = Rv(o, !1)), Sv(i, n, o))) { const e = I.from(n.firstChild).getOr(n); return d(Tv(i, e, !0, "span", {id: "_start", "data-mce-type": "bookmark"})), void m(!0); } if (Sv(i, o, n)) { const e = I.from(o.lastChild).getOr(o); return d(Tv(i, e, !1, "span", {id: "_end", "data-mce-type": "bookmark"})), void m(!1); } (n = Av(i, n, "span", {id: "_start", "data-mce-type": "bookmark"})), (o = Av(i, o, "span", {id: "_end", "data-mce-type": "bookmark"})); const e = i.createRng(); e.setStartAfter(n), e.setEndBefore(o), rf(i, e, e => { q(e, e => { sm(e) || sm(e.parentNode) || d(e); }); }), d(n), d(o), (n = m(!0)), (o = m()); } else n = o = d(n); (r.startContainer = n.parentNode ? n.parentNode : n), (r.startOffset = i.nodeIndex(n)), (r.endContainer = o.parentNode ? o.parentNode : o), (r.endOffset = i.nodeIndex(o) + 1); } rf(i, r, e => { q(e, u); }); }; if (o) { if (wm(o)) { const e = i.createRng(); e.setStartBefore(o), e.setEndAfter(o), f(e); } else f(o); pf(e, t, o, n); } else l.isCollapsed() && Um(a) && !mm(e).length ? nv(e, t, n, r) : (Em( e, () => ym(e, f), o => Um(a) && Yb(e, t, n, o) ), e.nodeChanged()), ((e, t, n) => { "removeformat" === t ? q(fv(e.selection), t => { q(lv, n => e.dom.setStyle(t, n, "")), Pv(e.dom, t); }) : dv(e.formatter, t).each(t => { q(fv(e.selection), o => Dv(e.dom, o, t, n, null)); }); })(e, t, n), pf(e, t, o, n); })(e, t, n, o, r); }, Fv = (e, t, n, o, r) => Lv(e, t, n, o, r).fold(L, t => (e.dom.rename(o, t), !0), M), Uv = Dt.each, zv = Dt.each, jv = (e, t, n, o) => { if ( (zv(n.styles, (n, r) => { e.setStyle(t, r, Tm(n, o)); }), n.styles) ) { const n = e.getAttrib(t, "style"); n && e.setAttrib(t, "data-mce-style", n); } }, Hv = (e, t, n, o) => { const r = e.formatter.get(t), s = r[0], a = !o && e.selection.isCollapsed(), i = e.dom, l = e.selection, d = (e, t = s) => { w(t.onformat) && t.onformat(e, t, n, o), jv(i, e, t, n), zv(t.attributes, (t, o) => { i.setAttrib(e, o, Tm(t, n)); }), zv(t.classes, t => { const o = Tm(t, n); i.hasClass(e, o) || i.addClass(e, o); }); }, c = (e, t) => { let n = !1; return ( zv( e, e => !( !Fm(e) || (("false" !== i.getContentEditable(t) || e.ceFalseOverride) && (!C(e.collapsed) || e.collapsed === a) && i.is(t, e.selector) && !Wu(t) && (d(t, e), (n = !0), 1)) ) ), n ); }, u = e => { if (m(e)) { const t = i.create(e); return d(t), t; } return null; }, f = (o, a, i) => { const l = []; let m = !0; const f = s.inline || s.block, g = u(f); rf(o, a, a => { let u; const p = a => { let h = !1, b = m, v = !1; const y = a.parentNode, w = y.nodeName.toLowerCase(), x = o.getContentEditable(a); C(x) && ((b = m), (m = "true" === x), (h = !0), (v = Am(e, a))); const E = m && !h; if ( pr(a) && !((e, t, n, o) => { if (Od(e) && Um(t) && n.parentNode) { const t = Ms(e.schema), r = Ho(Cn(n), e => Wu(e.dom)); return _e(t, o) && Ar(e.schema, n.parentNode, {skipBogus: !1, includeZwsp: !0}) && !r; } return !1; })(e, s, a, w) ) return (u = null), void (Im(s) && o.remove(a)); if ((o => (e => Im(e) && !0 === e.wrapper)(s) && Kb(e, o, t, n))(a)) u = null; else { if ( ((t, n, o) => { const r = (e => Im(e) && !0 !== e.wrapper)(s) && Sm(e.schema, t) && Nm(e, n, f); return o && r; })(a, w, E) ) { const e = o.rename(a, f); return d(e), l.push(e), void (u = null); } if (Fm(s)) { let e = c(r, a); if ((!e && C(y) && zm(s) && (e = c(r, y)), !Um(s) || e)) return void (u = null); } C(g) && ((t, n, r, a) => { const l = t.nodeName.toLowerCase(), d = Nm(e, f, l) && Nm(e, n, f), c = !i && dr(t) && ei(t.data), u = Wu(t), m = !Um(s) || !o.isBlock(t); return (r || a) && d && !c && !u && m; })(a, w, E, v) ? (u || ((u = o.clone(g, !1)), y.insertBefore(u, a), l.push(u)), v && h && (m = b), u.appendChild(a)) : ((u = null), q(ce(a.childNodes), p), h && (m = b), (u = null)); } }; q(a, p); }), !0 === s.links && q(l, e => { const t = e => { "A" === e.nodeName && d(e, s), q(ce(e.childNodes), t); }; t(e); }), q(l, a => { const i = (e => { let t = 0; return ( q(e.childNodes, e => { (e => C(e) && dr(e) && 0 === e.length)(e) || sm(e) || t++; }), t ); })(a); (!(l.length > 1) && o.isBlock(a)) || 0 !== i ? (Um(s) || (Im(s) && s.wrapper)) && (s.exact || 1 !== i || (a = (e => { const t = Q(e.childNodes, xm).filter(e => "false" !== o.getContentEditable(e) && qb(o, e, s)); return t .map(t => { const n = o.clone(t, !1); return d(n), o.replace(n, e, !0), o.remove(t, !0), n; }) .getOr(e); })(a)), ((e, t, n, o) => { Uv(t, t => { Um(t) && Uv(e.dom.select(t.inline, o), o => { pv(o) && Fv(e, t, n, o, t.exact ? o : null); }), ((e, t, n) => { if (t.clear_child_styles) { const o = t.links ? "*:not(a)" : "*"; gv(e.select(o, n), n => { pv(n) && e.isEditable(n) && gv(t.styles, (t, o) => { e.setStyle(n, o, ""); }); }); } })(e.dom, t, o); }); })(e, r, n, a), ((e, t, n, o, r) => { const s = r.parentNode; (Kb(e, s, n, o) && Fv(e, t, o, r)) || (t.merge_with_parents && s && e.dom.getParent(s, s => !!Kb(e, s, n, o) && (Fv(e, t, o, r), !0))); })(e, s, t, n, a), ((e, t, n, o) => { if (t.styles && t.styles.backgroundColor) { const r = Cv(e, "fontSize"); yv(o, t => r(t) && e.isEditable(t), wv(e, "backgroundColor", Tm(t.styles.backgroundColor, n))); } })(o, s, n, a), ((e, t, n, o) => { const r = t => { if (tr(t) && er(t.parentNode) && e.isEditable(t)) { const n = Dm(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); } }; t.styles && (t.styles.color || t.styles.textDecoration) && (Dt.walk(o, r, "childNodes"), r(o)); })(o, s, 0, a), ((e, t, n, o) => { if (Um(t) && ("sub" === t.inline || "sup" === t.inline)) { const n = Cv(e, "fontSize"); yv(o, t => n(t) && e.isEditable(t), wv(e, "fontSize", "")); const r = Y(e.select("sup" === t.inline ? "sub" : "sup", o), e.isEditable); e.remove(r, !0); } })(o, s, 0, a), vv(e, s, 0, a)) : o.remove(a, !0); }); }, g = wm(o) ? o : l.getNode(); if ("false" === i.getContentEditable(g) && !Am(e, g)) return c(r, (o = g)), void gf(e, t, o, n); if (s) { if (o) if (wm(o)) { if (!c(r, o)) { const e = i.createRng(); e.setStartBefore(o), e.setEndAfter(o), f(i, of(i, e, r), !0); } } else f(i, o, !0); else a && Um(s) && !mm(e).length ? ((e, t, n) => { let o; const r = e.selection, s = e.formatter.get(t); if (!s) return; const a = r.getRng(); let i = a.startOffset; const l = a.startContainer.nodeValue; o = Ku(e.getBody(), r.getStart()); const d = /[^\s\u00a0\u00ad\u200b\ufeff]/; if (l && i > 0 && i < l.length && d.test(l.charAt(i)) && d.test(l.charAt(i - 1))) { const o = r.getBookmark(); a.collapse(!0); let i = of(e.dom, a, s); (i = Zf(i)), e.formatter.apply(t, n, i), r.moveToBookmark(o); } else { let s = o ? Xb(o) : null; (o && (null == s ? void 0 : s.data) === Gb) || ((c = e.getDoc()), (u = Zb(!0).dom), (o = c.importNode(u, !0)), (s = o.firstChild), a.insertNode(o), (i = 1)), e.formatter.apply(t, n, o), r.setCursorLocation(s, i); } var c, u; })(e, t, n) : (l.setRng(Ab(l.getRng())), Em( e, () => { ym(e, (e, t) => { const n = t ? e : of(i, e, r); f(i, n, !1); }); }, M ), e.nodeChanged()), dv(e.formatter, t).each(t => { q( (e => Y( (e => { const t = e.getSelectedBlocks(), n = e.getRng(); if (e.isCollapsed()) return []; if (1 === t.length) return cv(n, t[0]) && uv(n, t[0]) ? t : []; { const e = le(t) .filter(e => cv(n, e)) .toArray(), o = de(t) .filter(e => uv(n, e)) .toArray(), r = t.slice(1, -1); return e.concat(r).concat(o); } })(e), mv(e.dom) ))(e.selection), e => jv(i, e, t, n) ); }); ((e, t) => { ke(av, e) && q(av[e], e => { e(t); }); })(t, e); } gf(e, t, o, n); }, $v = (e, t, n, o) => { (o || e.selection.isEditable()) && Hv(e, t, n, o); }, Vv = e => ke(e, "vars"), qv = e => e.selection.getStart(), Wv = (e, t, n, o, r) => Z( t, t => { const s = e.formatter.matchNode(t, n, null != r ? r : {}, o); return !v(s); }, t => !!$b(e, t, n) || (!o && C(e.formatter.matchNode(t, n, r, !0))) ), Kv = (e, t) => { const n = null != t ? t : qv(e); return Y(Lm(e.dom, n), e => er(e) && !sr(e)); }, Yv = (e, t, n) => { const o = Kv(e, t); pe(n, (n, r) => { const s = n => { const s = Wv(e, o, r, n.similar, Vv(n) ? n.vars : void 0), a = s.isSome(); if (n.state.get() !== a) { n.state.set(a); const e = s.getOr(t); Vv(n) ? n.callback(a, {node: e, format: r, parents: o}) : q(n.callbacks, t => t(a, {node: e, format: r, parents: o})); } }; q([n.withSimilar, n.withoutSimilar], s), q(n.withVars, s); }); }, Gv = Dt.explode, Xv = () => { const e = {}; return { addFilter: (t, n) => { q(Gv(t), t => { ke(e, t) || (e[t] = {name: t, callbacks: []}), e[t].callbacks.push(n); }); }, getFilters: () => xe(e), removeFilter: (t, n) => { q(Gv(t), t => { if (ke(e, t)) if (C(n)) { const o = e[t], r = Y(o.callbacks, e => e !== n); r.length > 0 ? (o.callbacks = r) : delete e[t]; } else delete e[t]; }); } }; }, Zv = (e, t, n) => { var o; const r = Ys(); t.convert_fonts_to_spans && ((e, t, n) => { e.addNodeFilter("font", e => { q(e, e => { const o = t.parse(e.attr("style")), r = e.attr("color"), s = e.attr("face"), a = e.attr("size"); r && (o.color = r), s && (o["font-family"] = s), a && Ze(a).each(e => { o["font-size"] = n[e - 1]; }), (e.name = "span"), e.attr("style", t.serialize(o)), ((e, t) => { q(["color", "face", "size"], t => { e.attr(t, null); }); })(e); }); }); })(e, r, Dt.explode(null !== (o = t.font_size_legacy_values) && void 0 !== o ? o : "")), ((e, t, n) => { e.addNodeFilter("strike", e => { const o = "html4" !== t.type; q(e, e => { if (o) e.name = "s"; else { const t = n.parse(e.attr("style")); (t["text-decoration"] = "line-through"), (e.name = "span"), e.attr("style", n.serialize(t)); } }); }); })(e, n, r); }, Qv = e => { const [t, ...n] = e.split(","), o = n.join(","), r = /data:([^/]+\/[^;]+)(;.+)?/.exec(t); if (r) { const e = ";base64" === r[2], t = e ? (e => { const t = /([a-z0-9+\/=\s]+)/i.exec(e); return t ? t[1] : ""; })(o) : decodeURIComponent(o); return I.some({type: r[1], data: t, base64Encoded: e}); } return I.none(); }, Jv = (e, t, n = !0) => { let o = t; if (n) try { o = atob(t); } catch (e) { return I.none(); } const r = new Uint8Array(o.length); for (let e = 0; e < r.length; e++) r[e] = o.charCodeAt(e); return I.some(new Blob([r], {type: e})); }, ey = e => new Promise((t, n) => { const o = new FileReader(); (o.onloadend = () => { t(o.result); }), (o.onerror = () => { var e; n(null === (e = o.error) || void 0 === e ? void 0 : e.message); }), o.readAsDataURL(e); }); let ty = 0; const ny = (e, t, n) => Qv(e).bind(({data: e, type: o, base64Encoded: r}) => { if (t && !r) return I.none(); { const t = r ? e : btoa(e); return n(t, o); } }), oy = (e, t, n) => { const o = e.create("blobid" + ty++, t, n); return e.add(o), o; }, ry = (e, t, n = !1) => ny(t, n, (t, n) => I.from(e.getByData(t, n)).orThunk(() => Jv(n, t).map(n => oy(e, n, t)))), sy = /^(?:(?:(?:[A-Za-z][A-Za-z\d.+-]{0,14}:\/\/(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?|www\.|[-;:&=+$,.\w]+@)([A-Za-z\d-]+(?:\.[A-Za-z\d-]+)*))(?::\d+)?(?:\/(?:[-.~*+=!;:'%@$(),\/\w]*[-~*+=%@$()\/\w])?)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+)?)?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+)?)?)$/, ay = e => I.from(e.match(sy)) .bind(e => ie(e, 1)) .map(e => ($e(e, "www.") ? e.substring(4) : e)), iy = (e, t) => { I.from(e.attr("src")) .bind(ay) .forall(e => !H(t, e)) && e.attr("sandbox", ""); }, ly = (e, t) => $e(e, `${t}/`), {entries: dy, setPrototypeOf: cy, isFrozen: uy, getPrototypeOf: my, getOwnPropertyDescriptor: fy} = Object; let {freeze: gy, seal: py, create: hy} = Object, {apply: by, construct: vy} = "undefined" != typeof Reflect && Reflect; by || (by = function (e, t, n) { return e.apply(t, n); }), gy || (gy = function (e) { return e; }), py || (py = function (e) { return e; }), vy || (vy = function (e, t) { return new e(...t); }); const yy = Oy(Array.prototype.forEach), Cy = Oy(Array.prototype.pop), wy = Oy(Array.prototype.push), xy = Oy(String.prototype.toLowerCase), Ey = Oy(String.prototype.toString), ky = Oy(String.prototype.match), _y = Oy(String.prototype.replace), Sy = Oy(String.prototype.indexOf), Ny = Oy(String.prototype.trim), Ry = Oy(RegExp.prototype.test), Ay = ((Ty = TypeError), function () { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n]; return vy(Ty, t); }); var Ty; function Oy(e) { return function (t) { for (var n = arguments.length, o = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++) o[r - 1] = arguments[r]; return by(e, t, o); }; } function By(e, t, n) { var o; (n = null !== (o = n) && void 0 !== o ? o : xy), cy && cy(e, null); let r = t.length; for (; r--; ) { let o = t[r]; if ("string" == typeof o) { const e = n(o); e !== o && (uy(t) || (t[r] = e), (o = e)); } e[o] = !0; } return e; } function Py(e) { const t = hy(null); for (const [n, o] of dy(e)) t[n] = o; return t; } function Dy(e, t) { for (; null !== e; ) { const n = fy(e, t); if (n) { if (n.get) return Oy(n.get); if ("function" == typeof n.value) return Oy(n.value); } e = my(e); } return function (e) { return console.warn("fallback value for", e), null; }; } const Ly = gy([ "a", "abbr", "acronym", "address", "area", "article", "aside", "audio", "b", "bdi", "bdo", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "decorator", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "element", "em", "fieldset", "figcaption", "figure", "font", "footer", "form", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", "hgroup", "hr", "html", "i", "img", "input", "ins", "kbd", "label", "legend", "li", "main", "map", "mark", "marquee", "menu", "menuitem", "meter", "nav", "nobr", "ol", "optgroup", "option", "output", "p", "picture", "pre", "progress", "q", "rp", "rt", "ruby", "s", "samp", "section", "select", "shadow", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "tr", "track", "tt", "u", "ul", "var", "video", "wbr" ]), My = gy([ "svg", "a", "altglyph", "altglyphdef", "altglyphitem", "animatecolor", "animatemotion", "animatetransform", "circle", "clippath", "defs", "desc", "ellipse", "filter", "font", "g", "glyph", "glyphref", "hkern", "image", "line", "lineargradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialgradient", "rect", "stop", "style", "switch", "symbol", "text", "textpath", "title", "tref", "tspan", "view", "vkern" ]), Iy = gy([ "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence" ]), Fy = gy([ "animate", "color-profile", "cursor", "discard", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignobject", "hatch", "hatchpath", "mesh", "meshgradient", "meshpatch", "meshrow", "missing-glyph", "script", "set", "solidcolor", "unknown", "use" ]), Uy = gy([ "math", "menclose", "merror", "mfenced", "mfrac", "mglyph", "mi", "mlabeledtr", "mmultiscripts", "mn", "mo", "mover", "mpadded", "mphantom", "mroot", "mrow", "ms", "mspace", "msqrt", "mstyle", "msub", "msup", "msubsup", "mtable", "mtd", "mtext", "mtr", "munder", "munderover", "mprescripts" ]), zy = gy([ "maction", "maligngroup", "malignmark", "mlongdiv", "mscarries", "mscarry", "msgroup", "mstack", "msline", "msrow", "semantics", "annotation", "annotation-xml", "mprescripts", "none" ]), jy = gy(["#text"]), Hy = gy([ "accept", "action", "align", "alt", "autocapitalize", "autocomplete", "autopictureinpicture", "autoplay", "background", "bgcolor", "border", "capture", "cellpadding", "cellspacing", "checked", "cite", "class", "clear", "color", "cols", "colspan", "controls", "controlslist", "coords", "crossorigin", "datetime", "decoding", "default", "dir", "disabled", "disablepictureinpicture", "disableremoteplayback", "download", "draggable", "enctype", "enterkeyhint", "face", "for", "headers", "height", "hidden", "high", "href", "hreflang", "id", "inputmode", "integrity", "ismap", "kind", "label", "lang", "list", "loading", "loop", "low", "max", "maxlength", "media", "method", "min", "minlength", "multiple", "muted", "name", "nonce", "noshade", "novalidate", "nowrap", "open", "optimum", "pattern", "placeholder", "playsinline", "poster", "preload", "pubdate", "radiogroup", "readonly", "rel", "required", "rev", "reversed", "role", "rows", "rowspan", "spellcheck", "scope", "selected", "shape", "size", "sizes", "span", "srclang", "start", "src", "srcset", "step", "style", "summary", "tabindex", "title", "translate", "type", "usemap", "valign", "value", "width", "xmlns", "slot" ]), $y = gy([ "accent-height", "accumulate", "additive", "alignment-baseline", "ascent", "attributename", "attributetype", "azimuth", "basefrequency", "baseline-shift", "begin", "bias", "by", "class", "clip", "clippathunits", "clip-path", "clip-rule", "color", "color-interpolation", "color-interpolation-filters", "color-profile", "color-rendering", "cx", "cy", "d", "dx", "dy", "diffuseconstant", "direction", "display", "divisor", "dur", "edgemode", "elevation", "end", "fill", "fill-opacity", "fill-rule", "filter", "filterunits", "flood-color", "flood-opacity", "font-family", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-variant", "font-weight", "fx", "fy", "g1", "g2", "glyph-name", "glyphref", "gradientunits", "gradienttransform", "height", "href", "id", "image-rendering", "in", "in2", "k", "k1", "k2", "k3", "k4", "kerning", "keypoints", "keysplines", "keytimes", "lang", "lengthadjust", "letter-spacing", "kernelmatrix", "kernelunitlength", "lighting-color", "local", "marker-end", "marker-mid", "marker-start", "markerheight", "markerunits", "markerwidth", "maskcontentunits", "maskunits", "max", "mask", "media", "method", "mode", "min", "name", "numoctaves", "offset", "operator", "opacity", "order", "orient", "orientation", "origin", "overflow", "paint-order", "path", "pathlength", "patterncontentunits", "patterntransform", "patternunits", "points", "preservealpha", "preserveaspectratio", "primitiveunits", "r", "rx", "ry", "radius", "refx", "refy", "repeatcount", "repeatdur", "restart", "result", "rotate", "scale", "seed", "shape-rendering", "specularconstant", "specularexponent", "spreadmethod", "startoffset", "stddeviation", "stitchtiles", "stop-color", "stop-opacity", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke", "stroke-width", "style", "surfacescale", "systemlanguage", "tabindex", "targetx", "targety", "transform", "transform-origin", "text-anchor", "text-decoration", "text-rendering", "textlength", "type", "u1", "u2", "unicode", "values", "viewbox", "visibility", "version", "vert-adv-y", "vert-origin-x", "vert-origin-y", "width", "word-spacing", "wrap", "writing-mode", "xchannelselector", "ychannelselector", "x", "x1", "x2", "xmlns", "y", "y1", "y2", "z", "zoomandpan" ]), Vy = gy([ "accent", "accentunder", "align", "bevelled", "close", "columnsalign", "columnlines", "columnspan", "denomalign", "depth", "dir", "display", "displaystyle", "encoding", "fence", "frame", "height", "href", "id", "largeop", "length", "linethickness", "lspace", "lquote", "mathbackground", "mathcolor", "mathsize", "mathvariant", "maxsize", "minsize", "movablelimits", "notation", "numalign", "open", "rowalign", "rowlines", "rowspacing", "rowspan", "rspace", "rquote", "scriptlevel", "scriptminsize", "scriptsizemultiplier", "selection", "separator", "separators", "stretchy", "subscriptshift", "supscriptshift", "symmetric", "voffset", "width", "xmlns" ]), qy = gy(["xlink:href", "xml:id", "xlink:title", "xml:space", "xmlns:xlink"]), Wy = py(/\{\{[\w\W]*|[\w\W]*\}\}/gm), Ky = py(/<%[\w\W]*|[\w\W]*%>/gm), Yy = py(/\${[\w\W]*}/gm), Gy = py(/^data-[\-\w.\u00B7-\uFFFF]/), Xy = py(/^aria-[\-\w]+$/), Zy = py(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i), Qy = py(/^(?:\w+script|data):/i), Jy = py(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g), eC = py(/^html$/i); var tC = Object.freeze({ __proto__: null, MUSTACHE_EXPR: Wy, ERB_EXPR: Ky, TMPLIT_EXPR: Yy, DATA_ATTR: Gy, ARIA_ATTR: Xy, IS_ALLOWED_URI: Zy, IS_SCRIPT_OR_DATA: Qy, ATTR_WHITESPACE: Jy, DOCTYPE_NAME: eC }); const nC = () => ("undefined" == typeof window ? null : window); var oC = (function e() { let t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : nC(); const n = t => e(t); if (((n.version = "3.0.5"), (n.removed = []), !t || !t.document || 9 !== t.document.nodeType)) return (n.isSupported = !1), n; const o = t.document, r = o.currentScript; let {document: s} = t; const { DocumentFragment: a, HTMLTemplateElement: i, Node: l, Element: d, NodeFilter: c, NamedNodeMap: u = t.NamedNodeMap || t.MozNamedAttrMap, HTMLFormElement: m, DOMParser: f, trustedTypes: g } = t, p = d.prototype, h = Dy(p, "cloneNode"), b = Dy(p, "nextSibling"), v = Dy(p, "childNodes"), y = Dy(p, "parentNode"); if ("function" == typeof i) { const e = s.createElement("template"); e.content && e.content.ownerDocument && (s = e.content.ownerDocument); } let C, w = ""; const {implementation: x, createNodeIterator: E, createDocumentFragment: k, getElementsByTagName: _} = s, {importNode: S} = o; let N = {}; n.isSupported = "function" == typeof dy && "function" == typeof y && x && void 0 !== x.createHTMLDocument; const { MUSTACHE_EXPR: R, ERB_EXPR: A, TMPLIT_EXPR: T, DATA_ATTR: O, ARIA_ATTR: B, IS_SCRIPT_OR_DATA: P, ATTR_WHITESPACE: D } = tC; let {IS_ALLOWED_URI: L} = tC, M = null; const I = By({}, [...Ly, ...My, ...Iy, ...Uy, ...jy]); let F = null; const U = By({}, [...Hy, ...$y, ...Vy, ...qy]); let z = Object.seal( Object.create(null, { tagNameCheck: {writable: !0, configurable: !1, enumerable: !0, value: null}, attributeNameCheck: {writable: !0, configurable: !1, enumerable: !0, value: null}, allowCustomizedBuiltInElements: {writable: !0, configurable: !1, enumerable: !0, value: !1} }) ), j = null, H = null, $ = !0, V = !0, q = !1, W = !0, K = !1, Y = !1, G = !1, X = !1, Z = !1, Q = !1, J = !1, ee = !0, te = !1, ne = !0, oe = !1, re = {}, se = null; const ae = By({}, [ "annotation-xml", "audio", "colgroup", "desc", "foreignobject", "head", "iframe", "math", "mi", "mn", "mo", "ms", "mtext", "noembed", "noframes", "noscript", "plaintext", "script", "style", "svg", "template", "thead", "title", "video", "xmp" ]); let ie = null; const le = By({}, ["audio", "video", "img", "source", "image", "track"]); let de = null; const ce = By({}, [ "alt", "class", "for", "id", "label", "name", "pattern", "placeholder", "role", "summary", "title", "value", "style", "xmlns" ]), ue = "http://www.w3.org/1998/Math/MathML", me = "http://www.w3.org/2000/svg", fe = "http://www.w3.org/1999/xhtml"; let ge = fe, pe = !1, he = null; const be = By({}, [ue, me, fe], Ey); let ve; const ye = ["application/xhtml+xml", "text/html"]; let Ce, we = null; const xe = s.createElement("form"), Ee = function (e) { return e instanceof RegExp || e instanceof Function; }, ke = function (e) { if (!we || we !== e) { if ( ((e && "object" == typeof e) || (e = {}), (e = Py(e)), (ve = ve = -1 === ye.indexOf(e.PARSER_MEDIA_TYPE) ? "text/html" : e.PARSER_MEDIA_TYPE), (Ce = "application/xhtml+xml" === ve ? Ey : xy), (M = "ALLOWED_TAGS" in e ? By({}, e.ALLOWED_TAGS, Ce) : I), (F = "ALLOWED_ATTR" in e ? By({}, e.ALLOWED_ATTR, Ce) : U), (he = "ALLOWED_NAMESPACES" in e ? By({}, e.ALLOWED_NAMESPACES, Ey) : be), (de = "ADD_URI_SAFE_ATTR" in e ? By(Py(ce), e.ADD_URI_SAFE_ATTR, Ce) : ce), (ie = "ADD_DATA_URI_TAGS" in e ? By(Py(le), e.ADD_DATA_URI_TAGS, Ce) : le), (se = "FORBID_CONTENTS" in e ? By({}, e.FORBID_CONTENTS, Ce) : ae), (j = "FORBID_TAGS" in e ? By({}, e.FORBID_TAGS, Ce) : {}), (H = "FORBID_ATTR" in e ? By({}, e.FORBID_ATTR, Ce) : {}), (re = "USE_PROFILES" in e && e.USE_PROFILES), ($ = !1 !== e.ALLOW_ARIA_ATTR), (V = !1 !== e.ALLOW_DATA_ATTR), (q = e.ALLOW_UNKNOWN_PROTOCOLS || !1), (W = !1 !== e.ALLOW_SELF_CLOSE_IN_ATTR), (K = e.SAFE_FOR_TEMPLATES || !1), (Y = e.WHOLE_DOCUMENT || !1), (Z = e.RETURN_DOM || !1), (Q = e.RETURN_DOM_FRAGMENT || !1), (J = e.RETURN_TRUSTED_TYPE || !1), (X = e.FORCE_BODY || !1), (ee = !1 !== e.SANITIZE_DOM), (te = e.SANITIZE_NAMED_PROPS || !1), (ne = !1 !== e.KEEP_CONTENT), (oe = e.IN_PLACE || !1), (L = e.ALLOWED_URI_REGEXP || Zy), (ge = e.NAMESPACE || fe), (z = e.CUSTOM_ELEMENT_HANDLING || {}), e.CUSTOM_ELEMENT_HANDLING && Ee(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck) && (z.tagNameCheck = e.CUSTOM_ELEMENT_HANDLING.tagNameCheck), e.CUSTOM_ELEMENT_HANDLING && Ee(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck) && (z.attributeNameCheck = e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck), e.CUSTOM_ELEMENT_HANDLING && "boolean" == typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (z.allowCustomizedBuiltInElements = e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements), K && (V = !1), Q && (Z = !0), re && ((M = By({}, [...jy])), (F = []), !0 === re.html && (By(M, Ly), By(F, Hy)), !0 === re.svg && (By(M, My), By(F, $y), By(F, qy)), !0 === re.svgFilters && (By(M, Iy), By(F, $y), By(F, qy)), !0 === re.mathMl && (By(M, Uy), By(F, Vy), By(F, qy))), e.ADD_TAGS && (M === I && (M = Py(M)), By(M, e.ADD_TAGS, Ce)), e.ADD_ATTR && (F === U && (F = Py(F)), By(F, e.ADD_ATTR, Ce)), e.ADD_URI_SAFE_ATTR && By(de, e.ADD_URI_SAFE_ATTR, Ce), e.FORBID_CONTENTS && (se === ae && (se = Py(se)), By(se, e.FORBID_CONTENTS, Ce)), ne && (M["#text"] = !0), Y && By(M, ["html", "head", "body"]), M.table && (By(M, ["tbody"]), delete j.tbody), e.TRUSTED_TYPES_POLICY) ) { if ("function" != typeof e.TRUSTED_TYPES_POLICY.createHTML) throw Ay('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.'); if ("function" != typeof e.TRUSTED_TYPES_POLICY.createScriptURL) throw Ay('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.'); (C = e.TRUSTED_TYPES_POLICY), (w = C.createHTML("")); } else void 0 === C && (C = (function (e, t) { if ("object" != typeof e || "function" != typeof e.createPolicy) return null; let n = null; const o = "data-tt-policy-suffix"; t && t.hasAttribute(o) && (n = t.getAttribute(o)); const r = "dompurify" + (n ? "#" + n : ""); try { return e.createPolicy(r, {createHTML: e => e, createScriptURL: e => e}); } catch (e) { return console.warn("TrustedTypes policy " + r + " could not be created."), null; } })(g, r)), null !== C && "string" == typeof w && (w = C.createHTML("")); gy && gy(e), (we = e); } }, _e = By({}, ["mi", "mo", "mn", "ms", "mtext"]), Se = By({}, ["foreignobject", "desc", "title", "annotation-xml"]), Ne = By({}, ["title", "style", "font", "a", "script"]), Re = By({}, My); By(Re, Iy), By(Re, Fy); const Ae = By({}, Uy); By(Ae, zy); const Te = function (e) { wy(n.removed, {element: e}); try { e.parentNode.removeChild(e); } catch (t) { e.remove(); } }, Oe = function (e, t) { try { wy(n.removed, {attribute: t.getAttributeNode(e), from: t}); } catch (e) { wy(n.removed, {attribute: null, from: t}); } if ((t.removeAttribute(e), "is" === e && !F[e])) if (Z || Q) try { Te(t); } catch (e) {} else try { t.setAttribute(e, ""); } catch (e) {} }, Be = function (e) { let t, n; if (X) e = "" + e; else { const t = ky(e, /^[\r\n\t ]+/); n = t && t[0]; } "application/xhtml+xml" === ve && ge === fe && (e = '' + e + ""); const o = C ? C.createHTML(e) : e; if (ge === fe) try { t = new f().parseFromString(o, ve); } catch (e) {} if (!t || !t.documentElement) { t = x.createDocument(ge, "template", null); try { t.documentElement.innerHTML = pe ? w : o; } catch (e) {} } const r = t.body || t.documentElement; return ( e && n && r.insertBefore(s.createTextNode(n), r.childNodes[0] || null), ge === fe ? _.call(t, Y ? "html" : "body")[0] : Y ? t.documentElement : r ); }, Pe = function (e) { return E.call(e.ownerDocument || e, e, c.SHOW_ELEMENT | c.SHOW_COMMENT | c.SHOW_TEXT, null, !1); }, De = function (e) { return "object" == typeof l ? e instanceof l : e && "object" == typeof e && "number" == typeof e.nodeType && "string" == typeof e.nodeName; }, Le = function (e, t, o) { N[e] && yy(N[e], e => { e.call(n, t, o, we); }); }, Me = function (e) { let t; if ( (Le("beforeSanitizeElements", e, null), (o = e) instanceof m && ("string" != typeof o.nodeName || "string" != typeof o.textContent || "function" != typeof o.removeChild || !(o.attributes instanceof u) || "function" != typeof o.removeAttribute || "function" != typeof o.setAttribute || "string" != typeof o.namespaceURI || "function" != typeof o.insertBefore || "function" != typeof o.hasChildNodes)) ) return Te(e), !0; var o; const r = Ce(e.nodeName); if ( (Le("uponSanitizeElement", e, {tagName: r, allowedTags: M}), e.hasChildNodes() && !De(e.firstElementChild) && (!De(e.content) || !De(e.content.firstElementChild)) && Ry(/<[/\w]/g, e.innerHTML) && Ry(/<[/\w]/g, e.textContent)) ) return Te(e), !0; if (!M[r] || j[r]) { if (!j[r] && Fe(r)) { if (z.tagNameCheck instanceof RegExp && Ry(z.tagNameCheck, r)) return !1; if (z.tagNameCheck instanceof Function && z.tagNameCheck(r)) return !1; } if (ne && !se[r]) { const t = y(e) || e.parentNode, n = v(e) || e.childNodes; if (n && t) for (let o = n.length - 1; o >= 0; --o) t.insertBefore(h(n[o], !0), b(e)); } return Te(e), !0; } return e instanceof d && !(function (e) { let t = y(e); (t && t.tagName) || (t = {namespaceURI: ge, tagName: "template"}); const n = xy(e.tagName), o = xy(t.tagName); return ( !!he[e.namespaceURI] && (e.namespaceURI === me ? t.namespaceURI === fe ? "svg" === n : t.namespaceURI === ue ? "svg" === n && ("annotation-xml" === o || _e[o]) : Boolean(Re[n]) : e.namespaceURI === ue ? t.namespaceURI === fe ? "math" === n : t.namespaceURI === me ? "math" === n && Se[o] : Boolean(Ae[n]) : e.namespaceURI === fe ? !(t.namespaceURI === me && !Se[o]) && !(t.namespaceURI === ue && !_e[o]) && !Ae[n] && (Ne[n] || !Re[n]) : !("application/xhtml+xml" !== ve || !he[e.namespaceURI])) ); })(e) ? (Te(e), !0) : ("noscript" !== r && "noembed" !== r && "noframes" !== r) || !Ry(/<\/no(script|embed|frames)/i, e.innerHTML) ? (K && 3 === e.nodeType && ((t = e.textContent), (t = _y(t, R, " ")), (t = _y(t, A, " ")), (t = _y(t, T, " ")), e.textContent !== t && (wy(n.removed, {element: e.cloneNode()}), (e.textContent = t))), Le("afterSanitizeElements", e, null), !1) : (Te(e), !0); }, Ie = function (e, t, n) { if (ee && ("id" === t || "name" === t) && (n in s || n in xe)) return !1; if (V && !H[t] && Ry(O, t)); else if ($ && Ry(B, t)); else if (!F[t] || H[t]) { if ( !( (Fe(e) && ((z.tagNameCheck instanceof RegExp && Ry(z.tagNameCheck, e)) || (z.tagNameCheck instanceof Function && z.tagNameCheck(e))) && ((z.attributeNameCheck instanceof RegExp && Ry(z.attributeNameCheck, t)) || (z.attributeNameCheck instanceof Function && z.attributeNameCheck(t)))) || ("is" === t && z.allowCustomizedBuiltInElements && ((z.tagNameCheck instanceof RegExp && Ry(z.tagNameCheck, n)) || (z.tagNameCheck instanceof Function && z.tagNameCheck(n)))) ) ) return !1; } else if (de[t]); else if (Ry(L, _y(n, D, ""))); else if ( ("src" !== t && "xlink:href" !== t && "href" !== t) || "script" === e || 0 !== Sy(n, "data:") || !ie[e] ) if (q && !Ry(P, _y(n, D, ""))); else if (n) return !1; return !0; }, Fe = function (e) { return e.indexOf("-") > 0; }, Ue = function (e) { let t, n, o, r; Le("beforeSanitizeAttributes", e, null); const {attributes: s} = e; if (!s) return; const a = {attrName: "", attrValue: "", keepAttr: !0, allowedAttributes: F}; for (r = s.length; r--; ) { t = s[r]; const {name: i, namespaceURI: l} = t; n = "value" === i ? t.value : Ny(t.value); const d = n; if ( ((o = Ce(i)), (a.attrName = o), (a.attrValue = n), (a.keepAttr = !0), (a.forceKeepAttr = void 0), Le("uponSanitizeAttribute", e, a), (n = a.attrValue), a.forceKeepAttr) ) continue; if (!a.keepAttr) { Oe(i, e); continue; } if (!W && Ry(/\/>/i, n)) { Oe(i, e); continue; } K && ((n = _y(n, R, " ")), (n = _y(n, A, " ")), (n = _y(n, T, " "))); const c = Ce(e.nodeName); if (Ie(c, o, n)) { if ( (!te || ("id" !== o && "name" !== o) || (Oe(i, e), (n = "user-content-" + n)), C && "object" == typeof g && "function" == typeof g.getAttributeType) ) if (l); else switch (g.getAttributeType(c, o)) { case "TrustedHTML": n = C.createHTML(n); break; case "TrustedScriptURL": n = C.createScriptURL(n); } if (n !== d) try { l ? e.setAttributeNS(l, i, n) : e.setAttribute(i, n); } catch (t) { Oe(i, e); } } else Oe(i, e); } Le("afterSanitizeAttributes", e, null); }, ze = function e(t) { let n; const o = Pe(t); for (Le("beforeSanitizeShadowDOM", t, null); (n = o.nextNode()); ) Le("uponSanitizeShadowNode", n, null), Me(n) || (n.content instanceof a && e(n.content), Ue(n)); Le("afterSanitizeShadowDOM", t, null); }; return ( (n.sanitize = function (e) { let t, r, s, i, d = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; if (((pe = !e), pe && (e = "\x3c!--\x3e"), "string" != typeof e && !De(e))) { if ("function" != typeof e.toString) throw Ay("toString is not a function"); if ("string" != typeof (e = e.toString())) throw Ay("dirty is not a string, aborting"); } if (!n.isSupported) return e; if ((G || ke(d), (n.removed = []), "string" == typeof e && (oe = !1), oe)) { if (e.nodeName) { const t = Ce(e.nodeName); if (!M[t] || j[t]) throw Ay("root node is forbidden and cannot be sanitized in-place"); } } else if (e instanceof l) (t = Be("\x3c!----\x3e")), (r = t.ownerDocument.importNode(e, !0)), (1 === r.nodeType && "BODY" === r.nodeName) || "HTML" === r.nodeName ? (t = r) : t.appendChild(r); else { if (!Z && !K && !Y && -1 === e.indexOf("<")) return C && J ? C.createHTML(e) : e; if (((t = Be(e)), !t)) return Z ? null : J ? w : ""; } t && X && Te(t.firstChild); const c = Pe(oe ? e : t); for (; (s = c.nextNode()); ) Me(s) || (s.content instanceof a && ze(s.content), Ue(s)); if (oe) return e; if (Z) { if (Q) for (i = k.call(t.ownerDocument); t.firstChild; ) i.appendChild(t.firstChild); else i = t; return (F.shadowroot || F.shadowrootmode) && (i = S.call(o, i, !0)), i; } let u = Y ? t.outerHTML : t.innerHTML; return ( Y && M["!doctype"] && t.ownerDocument && t.ownerDocument.doctype && t.ownerDocument.doctype.name && Ry(eC, t.ownerDocument.doctype.name) && (u = "\n" + u), K && ((u = _y(u, R, " ")), (u = _y(u, A, " ")), (u = _y(u, T, " "))), C && J ? C.createHTML(u) : u ); }), (n.setConfig = function (e) { ke(e), (G = !0); }), (n.clearConfig = function () { (we = null), (G = !1); }), (n.isValidAttribute = function (e, t, n) { we || ke({}); const o = Ce(e), r = Ce(t); return Ie(o, r, n); }), (n.addHook = function (e, t) { "function" == typeof t && ((N[e] = N[e] || []), wy(N[e], t)); }), (n.removeHook = function (e) { if (N[e]) return Cy(N[e]); }), (n.removeHooks = function (e) { N[e] && (N[e] = []); }), (n.removeAllHooks = function () { N = {}; }), n ); })(); const rC = Dt.each, sC = Dt.trim, aC = [ "source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor" ], iC = {ftp: 21, http: 80, https: 443, mailto: 25}, lC = ["img", "video"], dC = (e, t, n) => { const o = (e => { try { return decodeURIComponent(e); } catch (t) { return unescape(e); } })(t).replace(/\s/g, ""); return ( !e.allow_script_urls && (!!/((java|vb)script|mhtml):/i.test(o) || (!e.allow_html_data_urls && (/^data:image\//i.test(o) ? ((e, t) => (C(e) ? !e : !C(t) || !H(lC, t)))(e.allow_svg_data_urls, n) && /^data:image\/svg\+xml/i.test(o) : /^data:/i.test(o)))) ); }; class cC { static parseDataUri(e) { let t; const n = decodeURIComponent(e).split(","), o = /data:([^;]+)/.exec(n[0]); return o && (t = o[1]), {type: t, data: n[1]}; } static isDomSafe(e, t, n = {}) { if (n.allow_script_urls) return !0; { const o = ws.decode(e).replace(/[\s\u0000-\u001F]+/g, ""); return !dC(n, o, t); } } static getDocumentBaseUrl(e) { var t; let n; return ( (n = 0 !== e.protocol.indexOf("http") && "file:" !== e.protocol ? null !== (t = e.href) && void 0 !== t ? t : "" : e.protocol + "//" + e.host + e.pathname), /^[^:]+:\/\/\/?[^\/]+\//.test(n) && ((n = n.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, "")), /[\/\\]$/.test(n) || (n += "/")), n ); } constructor(e, t = {}) { (this.path = ""), (this.directory = ""), (e = sC(e)), (this.settings = t); const n = t.base_uri, o = this; if (/^([\w\-]+):([^\/]{2})/i.test(e) || /^\s*#/.test(e)) return void (o.source = e); const r = 0 === e.indexOf("//"); if ( (0 !== e.indexOf("/") || r || (e = ((n && n.protocol) || "http") + "://mce_host" + e), !/^[\w\-]*:?\/\//.test(e)) ) { const t = n ? n.path : new cC(document.location.href).directory; if ("" === (null == n ? void 0 : n.protocol)) e = "//mce_host" + o.toAbsPath(t, e); else { const r = /([^#?]*)([#?]?.*)/.exec(e); r && (e = ((n && n.protocol) || "http") + "://mce_host" + o.toAbsPath(t, r[1]) + r[2]); } } e = e.replace(/@@/g, "(mce_at)"); const s = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?(\[[a-zA-Z0-9:.%]+\]|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec( e ); s && rC(aC, (e, t) => { let n = s[t]; n && (n = n.replace(/\(mce_at\)/g, "@@")), (o[e] = n); }), n && (o.protocol || (o.protocol = n.protocol), o.userInfo || (o.userInfo = n.userInfo), o.port || "mce_host" !== o.host || (o.port = n.port), (o.host && "mce_host" !== o.host) || (o.host = n.host), (o.source = "")), r && (o.protocol = ""); } setPath(e) { const t = /^(.*?)\/?(\w+)?$/.exec(e); t && ((this.path = t[0]), (this.directory = t[1]), (this.file = t[2])), (this.source = ""), this.getURI(); } toRelative(e) { if ("./" === e) return e; const t = new cC(e, {base_uri: this}); if ( ("mce_host" !== t.host && this.host !== t.host && t.host) || this.port !== t.port || (this.protocol !== t.protocol && "" !== t.protocol) ) return t.getURI(); const n = this.getURI(), o = t.getURI(); if (n === o || ("/" === n.charAt(n.length - 1) && n.substr(0, n.length - 1) === o)) return n; let r = this.toRelPath(this.path, t.path); return t.query && (r += "?" + t.query), t.anchor && (r += "#" + t.anchor), r; } toAbsolute(e, t) { const n = new cC(e, {base_uri: this}); return n.getURI(t && this.isSameOrigin(n)); } isSameOrigin(e) { if (this.host == e.host && this.protocol == e.protocol) { if (this.port == e.port) return !0; const t = this.protocol ? iC[this.protocol] : null; if (t && (this.port || t) == (e.port || t)) return !0; } return !1; } toRelPath(e, t) { let n, o, r = 0, s = ""; const a = e.substring(0, e.lastIndexOf("/")).split("/"), i = t.split("/"); if (a.length >= i.length) for (n = 0, o = a.length; n < o; n++) if (n >= i.length || a[n] !== i[n]) { r = n + 1; break; } if (a.length < i.length) for (n = 0, o = i.length; n < o; n++) if (n >= a.length || a[n] !== i[n]) { r = n + 1; break; } if (1 === r) return t; for (n = 0, o = a.length - (r - 1); n < o; n++) s += "../"; for (n = r - 1, o = i.length; n < o; n++) s += n !== r - 1 ? "/" + i[n] : i[n]; return s; } toAbsPath(e, t) { let n = 0; const o = /\/$/.test(t) ? "/" : "", r = e.split("/"), s = t.split("/"), a = []; rC(r, e => { e && a.push(e); }); const i = []; for (let e = s.length - 1; e >= 0; e--) 0 !== s[e].length && "." !== s[e] && (".." !== s[e] ? (n > 0 ? n-- : i.push(s[e])) : n++); const l = a.length - n; let d; return ( (d = l <= 0 ? oe(i).join("/") : a.slice(0, l).join("/") + "/" + oe(i).join("/")), 0 !== d.indexOf("/") && (d = "/" + d), o && d.lastIndexOf("/") !== d.length - 1 && (d += o), d ); } getURI(e = !1) { let t; return ( (this.source && !e) || ((t = ""), e || (this.protocol ? (t += this.protocol + "://") : (t += "//"), this.userInfo && (t += this.userInfo + "@"), this.host && (t += this.host), this.port && (t += ":" + this.port)), this.path && (t += this.path), this.query && (t += "?" + this.query), this.anchor && (t += "#" + this.anchor), (this.source = t)), this.source ); } } const uC = Dt.makeMap("src,href,data,background,action,formaction,poster,xlink:href"), mC = "data-mce-type"; let fC = 0; const gC = (e, t, n, o, r) => { var s, a, i, l; const d = t.validate, c = n.getSpecialElements(); 8 === e.nodeType && !t.allow_conditional_comments && /^\[if/i.test(null !== (s = e.nodeValue) && void 0 !== s ? s : "") && (e.nodeValue = " " + e.nodeValue); const u = null !== (a = null == r ? void 0 : r.tagName) && void 0 !== a ? a : e.nodeName.toLowerCase(); if ("html" !== o && n.isValid(o)) return void (C(r) && (r.allowedTags[u] = !0)); if (1 !== e.nodeType || "body" === u) return; const f = Cn(e), g = on(f, mC), p = tn(f, "data-mce-bogus"); if (!g && m(p)) return void ("all" === p ? Eo(f) : ko(f)); const h = n.getElementRule(u); if (!d || h) { if ((C(r) && (r.allowedTags[u] = !0), d && h && !g)) { if ( (q(null !== (i = h.attributesForced) && void 0 !== i ? i : [], e => { Jt(f, e.name, "{$uid}" === e.value ? "mce_" + fC++ : e.value); }), q(null !== (l = h.attributesDefault) && void 0 !== l ? l : [], e => { on(f, e.name) || Jt(f, e.name, "{$uid}" === e.value ? "mce_" + fC++ : e.value); }), h.attributesRequired && !$(h.attributesRequired, e => on(f, e))) ) return void ko(f); if ( h.removeEmptyAttrs && (e => { const t = e.dom.attributes; return null == t || 0 === t.length; })(f) ) return void ko(f); h.outputName && h.outputName !== u && ((e, t) => { const n = ((e, t) => { const n = vn(t), o = sn(e); return en(n, o), n; })(e, t); bo(e, n); const o = In(e); wo(n, o), Eo(e); })(f, h.outputName); } } else ke(c, u) ? Eo(f) : ko(f); }, pC = (e, t, n, o, r, s) => ("html" !== n && !Mr(o)) || (!(r in uC && dC(e, s, o)) && (!e.validate || t.isValid(o, r) || $e(r, "data-") || $e(r, "aria-"))), hC = (e, t) => e.hasAttribute(mC) && ("id" === t || "class" === t || "style" === t), bC = (e, t) => e in t.getBoolAttrs(), vC = (e, t, n, o) => { const {attributes: r} = e; for (let s = r.length - 1; s >= 0; s--) { const a = r[s], i = a.name, l = a.value; pC(t, n, o, e.tagName.toLowerCase(), i, l) || hC(e, i) ? bC(i, n) && e.setAttribute(i, i) : e.removeAttribute(i); } }, yC = (e, t, n) => { const o = oC(); return ( o.addHook("uponSanitizeElement", (o, r) => { gC(o, e, t, n.track(o), r); }), o.addHook("uponSanitizeAttribute", (o, r) => { ((e, t, n, o, r) => { const s = e.tagName.toLowerCase(), {attrName: a, attrValue: i} = r; (r.keepAttr = pC(t, n, o, s, a, i)), r.keepAttr ? ((r.allowedAttributes[a] = !0), bC(a, n) && (r.attrValue = a), t.allow_svg_data_urls && $e(i, "data:image/svg+xml") && (r.forceKeepAttr = !0)) : hC(e, a) && (r.forceKeepAttr = !0); })(o, e, t, n.current(), r); }), o ); }, CC = e => { const t = Fr(e); if ("svg" === t) { const t = ["type", "href", "role", "arcrole", "title", "show", "actuate", "label", "from", "to"].map( e => `xlink:${e}` ), n = {IN_PLACE: !0, USE_PROFILES: {html: !0, svg: !0, svgFilters: !0}, ALLOWED_ATTR: t}; oC().sanitize(e, n); } else { if ("math" !== t) throw new Error("Not a namespace element"); { const t = {IN_PLACE: !0, USE_PROFILES: {mathMl: !0}}; oC().sanitize(e, t); } } }, wC = Dt.makeMap, xC = Dt.extend, EC = (e, t, n, o) => { const r = e.name, s = r in n && "title" !== r && "textarea" !== r, a = t.childNodes; for (let t = 0, r = a.length; t < r; t++) { const r = a[t], i = new ep(r.nodeName.toLowerCase(), r.nodeType); if (er(r)) { const e = r.attributes; for (let t = 0, n = e.length; t < n; t++) { const n = e[t]; i.attr(n.name, n.value); } Mr(i.name) && (o(r), (i.value = r.innerHTML)); } else dr(r) ? ((i.value = r.data), s && (i.raw = !0)) : (mr(r) || cr(r) || ur(r)) && (i.value = r.data); Mr(i.name) || EC(i, r, n, o), e.append(i); } }, kC = (e = {}, t = Fs()) => { const n = Xv(), o = Xv(), r = {validate: !0, root_name: "body", sanitize: !0, ...e}, s = new DOMParser(), a = ((e, t) => { const n = (() => { const e = Dr(), t = () => e.get().map(Fr).getOr("html"); return { track: n => (Ir(n) ? e.set(n) : e.get().exists(e => !e.contains(n)) && e.clear(), t()), current: t, reset: () => { e.clear(); } }; })(); if (e.sanitize) { const o = yC(e, t, n), r = (t, r) => { o.sanitize( t, ((e, t) => { const n = { IN_PLACE: !0, ALLOW_UNKNOWN_PROTOCOLS: !0, ALLOWED_TAGS: ["#comment", "#cdata-section", "body"], ALLOWED_ATTR: [] }; return ( (n.PARSER_MEDIA_TYPE = t), e.allow_script_urls ? (n.ALLOWED_URI_REGEXP = /.*/) : e.allow_html_data_urls && (n.ALLOWED_URI_REGEXP = /^(?!(\w+script|mhtml):)/i), n ); })(e, r) ), (o.removed = []), n.reset(); }; return {sanitizeHtmlElement: r, sanitizeNamespaceElement: CC}; } return { sanitizeHtmlElement: (o, r) => { const s = document.createNodeIterator( o, NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT ); let a; for (; (a = s.nextNode()); ) { const o = n.track(a); gC(a, e, t, o), er(a) && vC(a, e, t, o); } n.reset(); }, sanitizeNamespaceElement: k }; })(r, t), i = n.addFilter, l = n.getFilters, d = n.removeFilter, c = o.addFilter, u = o.getFilters, f = o.removeFilter, g = (e, n) => { const o = m(n.attr(mC)), r = 1 === n.type && !ke(e, n.name) && !Jr(t, n) && !Mr(n.name); return 3 === n.type || (r && !o); }, p = { schema: t, addAttributeFilter: c, getAttributeFilters: u, removeAttributeFilter: f, addNodeFilter: i, getNodeFilters: l, removeNodeFilter: d, parse: (e, n = {}) => { var o; const i = r.validate, d = null !== (o = n.context) && void 0 !== o ? o : r.root_name, c = ((e, n, o = "html") => { const r = "xhtml" === o ? "application/xhtml+xml" : "text/html", i = ke(t.getSpecialElements(), n.toLowerCase()), l = i ? `<${n}>${e}` : e, d = "xhtml" === o ? `${l}` : `${l}`, c = s.parseFromString(d, r).body; return a.sanitizeHtmlElement(c, r), i ? c.firstChild : c; })(e, d, n.format); Wr(t, c); const m = new ep(d, 11); EC(m, c, t.getSpecialElements(), a.sanitizeNamespaceElement), (c.innerHTML = ""); const [f, p] = ((e, t, n, o) => { const r = n.validate, s = t.getNonEmptyElements(), a = t.getWhitespaceElements(), i = xC(wC("script,style,head,html,body,title,meta,param"), t.getBlockElements()), l = Ms(t), d = /[ \t\r\n]+/g, c = /^[ \t\r\n]+/, u = /[ \t\r\n]+$/, m = e => { let t = e.parent; for (; C(t); ) { if (t.name in a) return !0; t = t.parent; } return !1; }, f = n => n.name in i || Jr(t, n) || (Mr(n.name) && n.parent === e), g = (t, n) => { const r = n ? t.prev : t.next; return !C(r) && !y(t.parent) && f(t.parent) && (t.parent !== e || !0 === o.isRootContent); }; return [ e => { var t; if (3 === e.type && !m(e)) { let n = null !== (t = e.value) && void 0 !== t ? t : ""; (n = n.replace(d, " ")), (((e, t) => C(e) && (t(e) || "br" === e.name))(e.prev, f) || g(e, !0)) && (n = n.replace(c, "")), 0 === n.length ? e.remove() : (e.value = n); } }, e => { var i; if (1 === e.type) { const i = t.getElementRule(e.name); if (r && i) { const r = kb(t, s, a, e); i.paddInEmptyBlock && r && (e => { let n = e; for (; C(n); ) { if (n.name in l) return kb(t, s, a, n); n = n.parent; } return !1; })(e) ? xb(n, o, f, e) : i.removeEmpty && r ? f(e) ? e.remove() : e.unwrap() : i.paddEmpty && (r || (e => { var t; return ( Eb(e, "#text") && (null === (t = null == e ? void 0 : e.firstChild) || void 0 === t ? void 0 : t.value) === Wo ); })(e)) && xb(n, o, f, e); } } else if (3 === e.type && !m(e)) { let t = null !== (i = e.value) && void 0 !== i ? i : ""; ((e.next && f(e.next)) || g(e, !1)) && (t = t.replace(u, "")), 0 === t.length ? e.remove() : (e.value = t); } } ]; })(m, t, r, n), h = [], b = i ? e => ((e, n) => { Rb(t, e) && n.push(e); })(e, h) : k, v = {nodes: {}, attributes: {}}, w = e => yb(l(), u(), e, v); if ( (((e, t, n) => { const o = []; for (let n = e, r = n; n; r = n, n = n.walk()) { const s = n; q(t, e => e(s)), y(s.parent) && s !== e ? (n = r) : o.push(s); } for (let e = o.length - 1; e >= 0; e--) { const t = o[e]; q(n, e => e(t)); } })(m, [f, w], [p, b]), h.reverse(), i && h.length > 0) ) if (n.context) { const {pass: e, fail: o} = K(h, e => e.parent === m); Nb(o, t, m, w), (n.invalid = e.length > 0); } else Nb(h, t, m, w); const x = ((e, t) => { var n; const o = null !== (n = t.forced_root_block) && void 0 !== n ? n : e.forced_root_block; return !1 === o ? "" : !0 === o ? "p" : o; })(r, n); return ( x && ("body" === m.name || n.isRootContent) && ((e, n) => { const o = xC(wC("script,style,head,html,body,title,meta,param"), t.getBlockElements()), s = /^[ \t\r\n]+/, a = /[ \t\r\n]+$/; let i = e.firstChild, l = null; const d = e => { var t, n; e && ((i = e.firstChild), i && 3 === i.type && (i.value = null === (t = i.value) || void 0 === t ? void 0 : t.replace(s, "")), (i = e.lastChild), i && 3 === i.type && (i.value = null === (n = i.value) || void 0 === n ? void 0 : n.replace(a, ""))); }; if (t.isValidChild(e.name, n.toLowerCase())) { for (; i; ) { const t = i.next; g(o, i) ? (l || ((l = new ep(n, 1)), l.attr(r.forced_root_block_attrs), e.insert(l, i)), l.append(i)) : (d(l), (l = null)), (i = t); } d(l); } })(m, x), n.invalid || Cb(v, n), m ); } }; return ( ((e, t) => { var n, o; const r = e.schema; e.addAttributeFilter("href", e => { let n = e.length; const o = e => { const t = e ? Dt.trim(e) : ""; return /\b(noopener)\b/g.test(t) ? t : (e => e .split(" ") .filter(e => e.length > 0) .concat(["noopener"]) .sort() .join(" "))(t); }; if (!t.allow_unsafe_link_target) for (; n--; ) { const t = e[n]; "a" === t.name && "_blank" === t.attr("target") && t.attr("rel", o(t.attr("rel"))); } }), t.allow_html_in_named_anchor || e.addAttributeFilter("id,name", e => { let t, n, o, r, s = e.length; for (; s--; ) if (((r = e[s]), "a" === r.name && r.firstChild && !r.attr("href"))) for (o = r.parent, t = r.lastChild; t && o; ) (n = t.prev), o.insert(t, r), (t = n); }), t.fix_list_elements && e.addNodeFilter("ul,ol", e => { let t, n, o = e.length; for (; o--; ) if (((t = e[o]), (n = t.parent), n && ("ul" === n.name || "ol" === n.name))) if (t.prev && "li" === t.prev.name) t.prev.append(t); else { const e = new ep("li", 1); e.attr("style", "list-style-type: none"), t.wrap(e); } }); const s = r.getValidClasses(); t.validate && s && e.addAttributeFilter("class", e => { var t; let n = e.length; for (; n--; ) { const o = e[n], r = null !== (t = o.attr("class")) && void 0 !== t ? t : "", a = Dt.explode(r, " "); let i = ""; for (let e = 0; e < a.length; e++) { const t = a[e]; let n = !1, r = s["*"]; r && r[t] && (n = !0), (r = s[o.name]), !n && r && r[t] && (n = !0), n && (i && (i += " "), (i += t)); } i.length || (i = null), o.attr("class", i); } }), ((e, t) => { const {blob_cache: n} = t; if (n) { const t = e => { const t = e.attr("src"); (e => e.attr("src") === Tt.transparentSrc || C(e.attr("data-mce-placeholder")))(e) || (e => C(e.attr("data-mce-bogus")))(e) || y(t) || ry(n, t, !0).each(t => { e.attr("src", t.blobUri()); }); }; e.addAttributeFilter("src", e => q(e, t)); } })(e, t); const a = null !== (n = t.sandbox_iframes) && void 0 !== n && n, i = me(null !== (o = t.sandbox_iframes_exclusions) && void 0 !== o ? o : []); t.convert_unsafe_embeds && e.addNodeFilter("object,embed", e => q(e, e => { e.replace( (({type: e, src: t, width: n, height: o} = {}, r, s) => { const a = (e => v(e) ? "iframe" : ly(e, "image") ? "img" : ly(e, "video") ? "video" : ly(e, "audio") ? "audio" : "iframe")(e), i = new ep(a, 1); return ( i.attr("audio" === a ? {src: t} : {src: t, width: n, height: o}), ("audio" !== a && "video" !== a) || i.attr("controls", ""), "iframe" === a && r && iy(i, s), i ); })( { type: e.attr("type"), src: "object" === e.name ? e.attr("data") : e.attr("src"), width: e.attr("width"), height: e.attr("height") }, a, i ) ); }) ), a && e.addNodeFilter("iframe", e => q(e, e => iy(e, i))); })(p, r), ((e, t, n) => { t.inline_styles && Zv(e, t, n); })(p, r, t), p ); }, _C = (e, t, n) => { const o = (e => (Fb(e) ? yp({validate: !1}).serialize(e) : e))(e), r = t(o); if (r.isDefaultPrevented()) return r; if (Fb(e)) { if (r.content !== o) { const t = kC({validate: !1, forced_root_block: !1, ...n}).parse(r.content, {context: e.name}); return {...r, content: t}; } return {...r, content: e}; } return r; }, SC = e => ({sanitize: xc(e), sandbox_iframes: Rc(e), sandbox_iframes_exclusions: Ac(e)}), NC = (e, t) => { if (t.no_events) return El.value(t); { const n = ((e, t) => e.dispatch("BeforeGetContent", t))(e, t); return n.isDefaultPrevented() ? El.error(bf(e, {content: "", ...n}).content) : El.value(n); } }, RC = (e, t, n) => { if (n.no_events) return t; { const o = _C(t, t => bf(e, {...n, content: t}), SC(e)); return o.content; } }, AC = (e, t) => { if (t.no_events) return El.value(t); { const n = _C(t.content, n => ((e, t) => e.dispatch("BeforeSetContent", t))(e, {...t, content: n}), SC(e)); return n.isDefaultPrevented() ? (hf(e, n), El.error(void 0)) : El.value(n); } }, TC = (e, t, n) => { n.no_events || hf(e, {...n, content: t}); }, OC = (e, t, n) => ({element: e, width: t, rows: n}), BC = (e, t) => ({element: e, cells: t}), PC = (e, t) => ({x: e, y: t}), DC = (e, t) => nn(e, t).bind(Ze).getOr(1), LC = (e, t, n) => { const o = e.rows; return !!(o[n] ? o[n].cells : [])[t]; }, MC = e => X(e, (e, t) => (t.cells.length > e ? t.cells.length : e), 0), IC = (e, t) => { const n = e.rows; for (let e = 0; e < n.length; e++) { const o = n[e].cells; for (let n = 0; n < o.length; n++) if (_n(o[n], t)) return I.some(PC(n, e)); } return I.none(); }, FC = (e, t, n, o, r) => { const s = [], a = e.rows; for (let e = n; e <= r; e++) { const n = a[e].cells, r = t < o ? n.slice(t, o + 1) : n.slice(o, t + 1); s.push(BC(a[e].element, r)); } return s; }, UC = e => ((e, t) => { const n = Ia(e.element), o = vn("tbody"); return wo(o, t), yo(n, o), n; })( e, (e => V(e.rows, e => { const t = V(e.cells, e => { const t = Fa(e); return rn(t, "colspan"), rn(t, "rowspan"), t; }), n = Ia(e.element); return wo(n, t), n; }))(e) ), zC = (e, t, n) => { const o = Cn(t.commonAncestorContainer), r = zp(o, e), s = Y(r, e => n.isWrapper($t(e))), a = ((e, t) => Q(e, e => "li" === $t(e) && hm(e, t)).fold(N([]), t => (e => Q(e, e => "ul" === $t(e) || "ol" === $t(e)))(e) .map(e => { const t = vn($t(e)), n = Ce(go(e), (e, t) => $e(t, "list-style")); return co(t, n), [vn("li"), t]; }) .getOr([]) ))(r, t), i = s.concat( a.length ? a : (e => Ka(e) ? Tn(e) .filter(Wa) .fold(N([]), t => [e, t]) : Wa(e) ? [e] : [])(o) ); return V(i, Ia); }, jC = () => Uf([]), HC = (e, t) => ((e, t) => to(t, "table", T(_n, e)))(e, t[0]) .bind(e => { const n = t[0], o = t[t.length - 1], r = (e => { const t = OC(Ia(e), 0, []); return ( q(zo(e, "tr"), (e, n) => { q(zo(e, "td,th"), (o, r) => { ((e, t, n, o, r) => { const s = DC(r, "rowspan"), a = DC(r, "colspan"), i = e.rows; for (let e = n; e < n + s; e++) { i[e] || (i[e] = BC(Fa(o), [])); for (let o = t; o < t + a; o++) i[e].cells[o] = e === n && o === t ? r : Ia(r); } })( t, ((e, t, n) => { for (; LC(e, t, n); ) t++; return t; })(t, r, n), n, e, o ); }); }), OC(t.element, MC(t.rows), t.rows) ); })(e); return ((e, t, n) => IC(e, t).bind(t => IC(e, n).map(n => ((e, t, n) => { const o = t.x, r = t.y, s = n.x, a = n.y, i = r < a ? FC(e, o, r, s, a) : FC(e, o, a, s, r); return OC(e.element, MC(i), i); })(e, t, n) ) ))(r, n, o).map(e => Uf([UC(e)])); }) .getOrThunk(jC), $C = (e, t, n) => { const o = um(t, e); return o.length > 0 ? HC(e, o) : ((e, t, n) => t.length > 0 && t[0].collapsed ? jC() : ((e, t, n) => ((e, t) => { const n = X(t, (e, t) => (yo(t, e), t), e); return t.length > 0 ? Uf([n]) : n; })(Cn(t.cloneContents()), zC(e, t, n)))(e, t[0], n))(e, t, n); }, VC = (e, t) => t >= 0 && t < e.length && lm(e.charAt(t)), qC = e => ti(e.innerText), WC = e => (er(e) ? e.outerHTML : dr(e) ? ws.encodeRaw(e.data, !1) : mr(e) ? "\x3c!--" + e.data + "--\x3e" : ""), KC = (e, t) => ( ((e, t) => { let n = 0; q(e, e => { 0 === e[0] ? n++ : 1 === e[0] ? (((e, t, n) => { const o = (e => { let t; const n = document.createElement("div"), o = document.createDocumentFragment(); for (e && (n.innerHTML = e); (t = n.firstChild); ) o.appendChild(t); return o; })(t); if (e.hasChildNodes() && n < e.childNodes.length) { const t = e.childNodes[n]; e.insertBefore(o, t); } else e.appendChild(o); })(t, e[1], n), n++) : 2 === e[0] && ((e, t) => { if (e.hasChildNodes() && t < e.childNodes.length) { const n = e.childNodes[t]; e.removeChild(n); } })(t, n); }); })( ((e, t) => { const n = e.length + t.length + 2, o = new Array(n), r = new Array(n), s = (n, o, r, a, l) => { const d = i(n, o, r, a); if (null === d || (d.start === o && d.diag === o - a) || (d.end === n && d.diag === n - r)) { let s = n, i = r; for (; s < o || i < a; ) s < o && i < a && e[s] === t[i] ? (l.push([0, e[s]]), ++s, ++i) : o - n > a - r ? (l.push([2, e[s]]), ++s) : (l.push([1, t[i]]), ++i); } else { s(n, d.start, r, d.start - d.diag, l); for (let t = d.start; t < d.end; ++t) l.push([0, e[t]]); s(d.end, o, d.end - d.diag, a, l); } }, a = (n, o, r, s) => { let a = n; for (; a - o < s && a < r && e[a] === t[a - o]; ) ++a; return ((e, t, n) => ({start: e, end: t, diag: n}))(n, a, o); }, i = (n, s, i, l) => { const d = s - n, c = l - i; if (0 === d || 0 === c) return null; const u = d - c, m = c + d, f = (m % 2 == 0 ? m : m + 1) / 2; let g, p, h, b, v; for (o[1 + f] = n, r[1 + f] = s + 1, g = 0; g <= f; ++g) { for (p = -g; p <= g; p += 2) { for ( h = p + f, p === -g || (p !== g && o[h - 1] < o[h + 1]) ? (o[h] = o[h + 1]) : (o[h] = o[h - 1] + 1), b = o[h], v = b - n + i - p; b < s && v < l && e[b] === t[v]; ) (o[h] = ++b), ++v; if (u % 2 != 0 && u - g <= p && p <= u + g && r[h - u] <= o[h]) return a(r[h - u], p + n - i, s, l); } for (p = u - g; p <= u + g; p += 2) { for ( h = p + f - u, p === u - g || (p !== u + g && r[h + 1] <= r[h - 1]) ? (r[h] = r[h + 1] - 1) : (r[h] = r[h - 1]), b = r[h] - 1, v = b - n + i - p; b >= n && v >= i && e[b] === t[v]; ) (r[h] = b--), v--; if (u % 2 == 0 && -g <= p && p <= g && r[h] <= o[h + u]) return a(r[h], p + n - i, s, l); } } return null; }, l = []; return s(0, e.length, 0, t.length, l), l; })(V(ce(t.childNodes), WC), e), t ), t ), YC = Le(() => document.implementation.createHTMLDocument("undo")), GC = e => { const t = e.serializer.getTempAttrs(), n = fp(e.getBody(), t); return (e => null !== e.querySelector("iframe"))(n) ? { type: "fragmented", fragments: Y(V(ce(n.childNodes), _(ti, WC)), e => e.length > 0), content: "", bookmark: null, beforeBookmark: null } : {type: "complete", fragments: null, content: ti(n.innerHTML), bookmark: null, beforeBookmark: null}; }, XC = (e, t, n) => { const o = n ? t.beforeBookmark : t.bookmark; "fragmented" === t.type ? KC(t.fragments, e.getBody()) : e.setContent(t.content, {format: "raw", no_selection: !C(o) || !Gu(o) || !o.isFakeCaret}), o && (e.selection.moveToBookmark(o), e.selection.scrollIntoView()); }, ZC = e => ("fragmented" === e.type ? e.fragments.join("") : e.content), QC = e => { const t = vn("body", YC()); return No(t, ZC(e)), q(zo(t, "*[data-mce-bogus]"), ko), So(t); }, JC = (e, t) => !(!e || !t) && (!!((e, t) => ZC(e) === ZC(t))(e, t) || ((e, t) => QC(e) === QC(t))(e, t)), ew = e => 0 === e.get(), tw = (e, t, n) => { ew(n) && (e.typing = t); }, nw = (e, t) => { e.typing && (tw(e, !1, t), e.add()); }, ow = e => ({ init: {bindEvents: k}, undoManager: { beforeChange: (t, n) => ((e, t, n) => { ew(t) && n.set(Cl(e.selection)); })(e, t, n), add: (t, n, o, r, s, a) => ((e, t, n, o, r, s, a) => { const i = GC(e), l = Dt.extend(s || {}, i); if (!ew(o) || e.removed) return null; const d = t.data[n.get()]; if (e.dispatch("BeforeAddUndo", {level: l, lastLevel: d, originalEvent: a}).isDefaultPrevented()) return null; if (d && JC(d, l)) return null; t.data[n.get()] && r.get().each(e => { t.data[n.get()].beforeBookmark = e; }); const c = Ud(e); if (c && t.data.length > c) { for (let e = 0; e < t.data.length - 1; e++) t.data[e] = t.data[e + 1]; t.data.length--, n.set(t.data.length); } (l.bookmark = Cl(e.selection)), n.get() < t.data.length - 1 && (t.data.length = n.get() + 1), t.data.push(l), n.set(t.data.length - 1); const u = {level: l, lastLevel: d, originalEvent: a}; return ( n.get() > 0 ? (e.setDirty(!0), e.dispatch("AddUndo", u), e.dispatch("change", u)) : e.dispatch("AddUndo", u), l ); })(e, t, n, o, r, s, a), undo: (t, n, o) => ((e, t, n, o) => { let r; return ( t.typing && (t.add(), (t.typing = !1), tw(t, !1, n)), o.get() > 0 && (o.set(o.get() - 1), (r = t.data[o.get()]), XC(e, r, !0), e.setDirty(!0), e.dispatch("Undo", {level: r})), r ); })(e, t, n, o), redo: (t, n) => ((e, t, n) => { let o; return ( t.get() < n.length - 1 && (t.set(t.get() + 1), (o = n[t.get()]), XC(e, o, !1), e.setDirty(!0), e.dispatch("Redo", {level: o})), o ); })(e, t, n), clear: (t, n) => ((e, t, n) => { (t.data = []), n.set(0), (t.typing = !1), e.dispatch("ClearUndos"); })(e, t, n), reset: e => (e => { e.clear(), e.add(); })(e), hasUndo: (t, n) => ((e, t, n) => n.get() > 0 || (t.typing && t.data[0] && !JC(GC(e), t.data[0])))(e, t, n), hasRedo: (e, t) => ((e, t) => t.get() < e.data.length - 1 && !e.typing)(e, t), transact: (e, t, n) => ((e, t, n) => (nw(e, t), e.beforeChange(), e.ignore(n), e.add()))(e, t, n), ignore: (e, t) => ((e, t) => { try { e.set(e.get() + 1), t(); } finally { e.set(e.get() - 1); } })(e, t), extra: (t, n, o, r) => ((e, t, n, o, r) => { if (t.transact(o)) { const o = t.data[n.get()].bookmark, s = t.data[n.get() - 1]; XC(e, s, !0), t.transact(r) && (t.data[n.get() - 1].beforeBookmark = o); } })(e, t, n, o, r) }, formatter: { match: (t, n, o, r) => Yb(e, t, n, o, r), matchAll: (t, n) => ((e, t, n) => { const o = [], r = {}, s = e.selection.getStart(); return ( e.dom.getParent( s, s => { for (let a = 0; a < t.length; a++) { const i = t[a]; !r[i] && Kb(e, s, i, n) && ((r[i] = !0), o.push(i)); } }, e.dom.getRoot() ), o ); })(e, t, n), matchNode: (t, n, o, r) => Kb(e, t, n, o, r), canApply: t => ((e, t) => { const n = e.formatter.get(t), o = e.dom; if (n && e.selection.isEditable()) { const t = e.selection.getStart(), r = Lm(o, t); for (let e = n.length - 1; e >= 0; e--) { const t = n[e]; if (!Fm(t)) return !0; for (let e = r.length - 1; e >= 0; e--) if (o.is(r[e], t.selector)) return !0; } } return !1; })(e, t), closest: t => ((e, t) => { const n = t => _n(t, Cn(e.getBody())); return I.from(e.selection.getStart(!0)) .bind(o => jb(Cn(o), n => ue(t, t => ((t, n) => (Kb(e, t.dom, n) ? I.some(n) : I.none()))(n, t)), n)) .getOrNull(); })(e, t), apply: (t, n, o) => $v(e, t, n, o), remove: (t, n, o, r) => Iv(e, t, n, o, r), toggle: (t, n, o) => ((e, t, n, o) => { const r = e.formatter.get(t); r && (!Yb(e, t, n, o) || ("toggle" in r[0] && !r[0].toggle) ? $v(e, t, n, o) : Iv(e, t, n, o)); })(e, t, n, o), formatChanged: (t, n, o, r, s) => ((e, t, n, o, r, s) => ( ((e, t, n, o, r, s) => { const a = t.get(); q(n.split(","), t => { const n = Ee(a, t).getOrThunk(() => { const e = { withSimilar: {state: Br(!1), similar: !0, callbacks: []}, withoutSimilar: {state: Br(!1), similar: !1, callbacks: []}, withVars: [] }; return (a[t] = e), e; }), i = () => { const n = Kv(e); return Wv(e, n, t, r, s).isSome(); }; if (v(s)) { const e = r ? n.withSimilar : n.withoutSimilar; e.callbacks.push(o), 1 === e.callbacks.length && e.state.set(i()); } else n.withVars.push({state: Br(i()), similar: r, vars: s, callback: o}); }), t.set(a); })(e, t, n, o, r, s), { unbind: () => ((e, t, n) => { const o = e.get(); q(t.split(","), e => Ee(o, e).each(t => { o[e] = { withSimilar: {...t.withSimilar, callbacks: Y(t.withSimilar.callbacks, e => e !== n)}, withoutSimilar: {...t.withoutSimilar, callbacks: Y(t.withoutSimilar.callbacks, e => e !== n)}, withVars: Y(t.withVars, e => e.callback !== n) }; }) ), e.set(o); })(t, n, o) } ))(e, t, n, o, r, s) }, editor: { getContent: t => ((e, t) => I.from(e.getBody()).fold(N("tree" === t.format ? new ep("body", 11) : ""), n => hp(e, t, n)))( e, t ), setContent: (t, n) => ((e, t, n) => I.from(e.getBody()) .map(o => Fb(t) ? ((e, t, n, o) => { wb(e.parser.getNodeFilters(), e.parser.getAttributeFilters(), n); const r = yp({validate: !1}, e.schema).serialize(n), s = ti(Xa(Cn(t)) ? r : Dt.trim(r)); return Ub(e, s, o.no_selection), {content: n, html: s}; })(e, o, t, n) : ((e, t, n, o) => { if (0 === (n = ti(n)).length || /^\s+$/.test(n)) { const r = '
'; "TABLE" === t.nodeName ? (n = "" + r + "") : /^(UL|OL)$/.test(t.nodeName) && (n = "
  • " + r + "
  • "); const s = Wl(e); return ( e.schema.isValidChild(t.nodeName.toLowerCase(), s.toLowerCase()) ? ((n = r), (n = e.dom.createHTML(s, Kl(e), n))) : n || (n = r), Ub(e, n, o.no_selection), {content: n, html: n} ); } { "raw" !== o.format && (n = yp({validate: !1}, e.schema).serialize( e.parser.parse(n, {isRootContent: !0, insert: !0}) )); const r = Xa(Cn(t)) ? n : Dt.trim(n); return Ub(e, r, o.no_selection), {content: r, html: r}; } })(e, o, t, n) ) .getOr({content: t, html: Fb(n.content) ? "" : n.content}))(e, t, n), insertContent: (t, n) => Ib(e, t, n), addVisual: t => ((e, t) => { const n = e.dom, o = C(t) ? t : e.getBody(); q(n.select("table,a", o), t => { switch (t.nodeName) { case "TABLE": const o = Yd(e), r = n.getAttrib(t, "border"); (r && "0" !== r) || !e.hasVisual ? n.removeClass(t, o) : n.addClass(t, o); break; case "A": if (!n.getAttrib(t, "href")) { const o = n.getAttrib(t, "name") || t.id, r = Gd(e); o && e.hasVisual ? n.addClass(t, r) : n.removeClass(t, r); } } }), e.dispatch("VisualAid", {element: t, hasVisual: e.hasVisual}); })(e, t) }, selection: { getContent: (t, n) => ((e, t, n = {}) => { const o = ((e, t) => ({...e, format: t, get: !0, selection: !0, getInner: !0}))(n, t); return NC(e, o).fold(R, t => { const n = ((e, t) => { if ("text" === t.format) return (e => I.from(e.selection.getRng()) .map(t => { var n; const o = I.from(e.dom.getParent(t.commonAncestorContainer, e.dom.isBlock)), r = e.getBody(), s = (e => e .map(e => e.nodeName) .getOr("div") .toLowerCase())(o), a = Cn(t.cloneContents()); gp(a), pp(a); const i = e.dom.add( r, s, {"data-mce-bogus": "all", style: "overflow: hidden; opacity: 0;"}, a.dom ), l = qC(i), d = ti(null !== (n = i.textContent) && void 0 !== n ? n : ""); if ((e.dom.remove(i), VC(d, 0) || VC(d, d.length - 1))) { const e = o.getOr(r), t = qC(e), n = t.indexOf(l); return -1 === n ? l : (VC(t, n - 1) ? " " : "") + l + (VC(t, n + l.length) ? " " : ""); } return l; }) .getOr(""))(e); { const n = ((e, t) => { const n = e.selection.getRng(), o = e.dom.create("body"), r = e.selection.getSel(), s = Gg(e, cm(r)), a = t.contextual ? $C(Cn(e.getBody()), s, e.schema).dom : n.cloneContents(); return a && o.appendChild(a), e.selection.serializer.serialize(o, t); })(e, t); return "tree" === t.format ? n : e.selection.isCollapsed() ? "" : n; } })(e, t); return RC(e, n, t); }); })(e, t, n) }, autocompleter: {addDecoration: k, removeDecoration: k}, raw: {getModel: () => I.none()} }), rw = e => ke(e.plugins, "rtc"), sw = e => (e.rtcInstance ? e.rtcInstance : ow(e)), aw = e => { const t = e.rtcInstance; if (t) return t; throw new Error("Failed to get RTC instance not yet initialized."); }, iw = e => aw(e).init.bindEvents(), lw = e => (0 === e.dom.length ? (Eo(e), I.none()) : I.some(e)), dw = (e, t, n, o, r) => { e.bind( e => ( (o ? vh : bh)(e.dom, o ? e.dom.length : 0, r), t.filter(Yt).map(t => ((e, t, n, o, r) => { const s = e.dom, a = t.dom, i = o ? s.length : a.length; o ? (yh(s, a, r, !1, !o), n.setStart(a, i)) : (yh(a, s, r, !1, !o), n.setEnd(a, i)); })(e, t, n, o, r) ) ) ).orThunk(() => { const e = ((e, t) => e.filter(e => uf.isBookmarkNode(e.dom)).bind(t ? Dn : Pn))(t, o).or(t).filter(Yt); return e.map(e => ((e, t, n) => { Tn(e).each(o => { const r = e.dom; t && lh(o, Ji(r, 0), n) ? bh(r, 0, n) : !t && dh(o, Ji(r, r.length), n) && vh(r, r.length, n); }); })(e, o, r) ); }); }, cw = (e, t, n) => { if (ke(e, t)) { const o = Y(e[t], e => e !== n); 0 === o.length ? delete e[t] : (e[t] = o); } }; const uw = e => !(!e || !e.ownerDocument) && Sn(Cn(e.ownerDocument), Cn(e)), mw = (e, t, n, o) => { let r, s; const {selectorChangedWithUnbind: a} = ((e, t) => { let n, o; const r = (t, n) => Q(n, n => e.is(n, t)), s = t => e.getParents(t, void 0, e.getRoot()); return { selectorChangedWithUnbind: (e, a) => ( n || ((n = {}), (o = {}), t.on("NodeChange", e => { const t = e.element, a = s(t), i = {}; pe(n, (e, t) => { r(t, a).each(n => { o[t] || (q(e, e => { e(!0, {node: n, selector: t, parents: a}); }), (o[t] = e)), (i[t] = e); }); }), pe(o, (e, n) => { i[n] || (delete o[n], q(e, e => { e(!1, {node: t, selector: n, parents: a}); })); }); })), n[e] || (n[e] = []), n[e].push(a), r(e, s(t.selection.getStart())).each(() => { o[e] = n[e]; }), { unbind: () => { cw(n, e, a), cw(o, e, a); } } ) }; })(e, o), i = (e, t) => ((e, t, n = {}) => { const o = ((e, t) => ({format: "html", ...e, set: !0, selection: !0, content: t}))(n, t); AC(e, o).each(t => { const n = ((e, t) => { if ("raw" !== t.format) { const n = e.selection.getRng(), o = e.dom.getParent(n.commonAncestorContainer, e.dom.isBlock), r = o ? {context: o.nodeName.toLowerCase()} : {}, s = e.parser.parse(t.content, {forced_root_block: !1, ...r, ...t}); return yp({validate: !1}, e.schema).serialize(s); } return t.content; })(e, t), o = e.selection.getRng(); ((e, t, n) => { const o = I.from(t.firstChild).map(Cn), r = I.from(t.lastChild).map(Cn); e.deleteContents(), e.insertNode(t); const s = o.bind(Pn).filter(Yt).bind(lw), a = r.bind(Dn).filter(Yt).bind(lw); dw(s, o, e, !0, n), dw(a, r, e, !1, n), e.collapse(!1); })(o, o.createContextualFragment(n), e.schema), e.selection.setRng(o), vg(e, o), TC(e, n, t); }); })(o, e, t), l = e => { const t = c(); t.collapse(!!e), u(t); }, d = () => (t.getSelection ? t.getSelection() : t.document.selection), c = () => { let n; const a = (e, t, n) => { try { return t.compareBoundaryPoints(e, n); } catch (e) { return -1; } }, i = t.document; if (C(o.bookmark) && !jg(o)) { const e = Ag(o); if (e.isSome()) return e.map(e => Gg(o, [e])[0]).getOr(i.createRange()); } try { const e = d(); e && !Jo(e.anchorNode) && ((n = e.rangeCount > 0 ? e.getRangeAt(0) : i.createRange()), (n = Gg(o, [n])[0])); } catch (e) {} if ((n || (n = i.createRange()), fr(n.startContainer) && n.collapsed)) { const t = e.getRoot(); n.setStart(t, 0), n.setEnd(t, 0); } return ( r && s && (0 === a(n.START_TO_START, n, r) && 0 === a(n.END_TO_END, n, r) ? (n = s) : ((r = null), (s = null))), n ); }, u = (e, t) => { if (!(e => !!e && uw(e.startContainer) && uw(e.endContainer))(e)) return; const n = d(); if (((e = o.dispatch("SetSelectionRange", {range: e, forward: t}).range), n)) { s = e; try { n.removeAllRanges(), n.addRange(e); } catch (e) {} !1 === t && n.extend && (n.collapse(e.endContainer, e.endOffset), n.extend(e.startContainer, e.startOffset)), (r = n.rangeCount > 0 ? n.getRangeAt(0) : null); } if ( !e.collapsed && e.startContainer === e.endContainer && (null == n ? void 0 : n.setBaseAndExtent) && e.endOffset - e.startOffset < 2 && e.startContainer.hasChildNodes() ) { const t = e.startContainer.childNodes[e.startOffset]; t && "IMG" === t.nodeName && (n.setBaseAndExtent(e.startContainer, e.startOffset, e.endContainer, e.endOffset), (n.anchorNode === e.startContainer && n.focusNode === e.endContainer) || n.setBaseAndExtent(t, 0, t, 1)); } o.dispatch("AfterSetSelectionRange", {range: e, forward: t}); }, m = () => { const t = d(), n = null == t ? void 0 : t.anchorNode, o = null == t ? void 0 : t.focusNode; if (!t || !n || !o || Jo(n) || Jo(o)) return !0; const r = e.createRng(), s = e.createRng(); try { r.setStart(n, t.anchorOffset), r.collapse(!0), s.setStart(o, t.focusOffset), s.collapse(!0); } catch (e) { return !0; } return r.compareBoundaryPoints(r.START_TO_START, s) <= 0; }, f = { dom: e, win: t, serializer: n, editor: o, expand: (t = {type: "word"}) => u(Qf(e).expand(c(), t)), collapse: l, setCursorLocation: (t, n) => { const r = e.createRng(); C(t) && C(n) ? (r.setStart(t, n), r.setEnd(t, n), u(r), l(!1)) : (bm(e, r, o.getBody(), !0), u(r)); }, getContent: e => ((e, t = {}) => ((e, t, n) => aw(e).selection.getContent(t, n))(e, t.format ? t.format : "html", t))(o, e), setContent: i, getBookmark: (e, t) => g.getBookmark(e, t), moveToBookmark: e => g.moveToBookmark(e), select: (t, n) => ( ((e, t, n) => I.from(t).bind(t => I.from(t.parentNode).map(o => { const r = e.nodeIndex(t), s = e.createRng(); return s.setStart(o, r), s.setEnd(o, r + 1), n && (bm(e, s, t, !0), bm(e, s, t, !1)), s; }) ))(e, t, n).each(u), t ), isCollapsed: () => { const e = c(), t = d(); return ( !(!e || e.item) && (e.compareEndPoints ? 0 === e.compareEndPoints("StartToEnd", e) : !t || e.collapsed) ); }, isEditable: () => { const t = c(), n = o.getBody().querySelectorAll('[data-mce-selected="1"]'); return n.length > 0 ? ne(n, t => e.isEditable(t.parentElement)) : Vg(e, t); }, isForward: m, setNode: t => (i(e.getOuterHTML(t)), t), getNode: () => ((e, t) => { if (!t) return e; let n = t.startContainer, o = t.endContainer; const r = t.startOffset, s = t.endOffset; let a = t.commonAncestorContainer; t.collapsed || (n === o && s - r < 2 && n.hasChildNodes() && (a = n.childNodes[r]), dr(n) && dr(o) && ((n = n.length === r ? Yg(n.nextSibling, !0) : n.parentNode), (o = 0 === s ? Yg(o.previousSibling, !1) : o.parentNode), n && n === o && (a = n))); const i = dr(a) ? a.parentNode : a; return tr(i) ? i : e; })(o.getBody(), c()), getSel: d, setRng: u, getRng: c, getStart: e => Wg(o.getBody(), c(), e), getEnd: e => Kg(o.getBody(), c(), e), getSelectedBlocks: (t, n) => ((e, t, n, o) => { const r = [], s = e.getRoot(), a = e.getParent(n || Wg(s, t, t.collapsed), e.isBlock), i = e.getParent(o || Kg(s, t, t.collapsed), e.isBlock); if ((a && a !== s && r.push(a), a && i && a !== i)) { let t; const n = new Vo(a, s); for (; (t = n.next()) && t !== i; ) e.isBlock(t) && r.push(t); } return i && a !== i && i !== s && r.push(i), r; })(e, c(), t, n), normalize: () => { const t = c(), n = d(); if (!(cm(n).length > 1) && vm(o)) { const n = Gf(e, t); return ( n.each(e => { u(e, m()); }), n.getOr(t) ); } return t; }, selectorChanged: (e, t) => (a(e, t), f), selectorChangedWithUnbind: a, getScrollContainer: () => { let t, n = e.getRoot(); for (; n && "BODY" !== n.nodeName; ) { if (n.scrollHeight > n.clientHeight) { t = n; break; } n = n.parentNode; } return t; }, scrollIntoView: (e, t) => { C(e) ? ((e, t, n) => { (e.inline ? pg : bg)(e, t, n); })(o, e, t) : vg(o, c(), t); }, placeCaretAt: (e, t) => u(jf(e, t, o.getDoc())), getBoundingClientRect: () => { const e = c(); return e.collapsed ? Ji.fromRangeStart(e).getClientRects()[0] : e.getBoundingClientRect(); }, destroy: () => { (t = r = s = null), p.destroy(); } }, g = uf(f), p = _f(f, o); return (f.bookmarkManager = g), (f.controlSelection = p), f; }, fw = (e, t, n) => { -1 === Dt.inArray(t, n) && (e.addAttributeFilter(n, (e, t) => { let n = e.length; for (; n--; ) e[n].attr(t, null); }), t.push(n)); }, gw = (e, t) => { const n = ["data-mce-selected"], o = {entity_encoding: "named", remove_trailing_brs: !0, pad_empty_with_br: !1, ...e}, r = t && t.dom ? t.dom : fa.DOM, s = t && t.schema ? t.schema : Fs(o), a = kC(o, s); return ( ((e, t, n) => { e.addAttributeFilter("data-mce-tabindex", (e, t) => { let n = e.length; for (; n--; ) { const o = e[n]; o.attr("tabindex", o.attr("data-mce-tabindex")), o.attr(t, null); } }), e.addAttributeFilter("src,href,style", (e, o) => { const r = "data-mce-" + o, s = t.url_converter, a = t.url_converter_scope; let i = e.length; for (; i--; ) { const t = e[i]; let l = t.attr(r); void 0 !== l ? (t.attr(o, l.length > 0 ? l : null), t.attr(r, null)) : ((l = t.attr(o)), "style" === o ? (l = n.serializeStyle(n.parseStyle(l), t.name)) : s && (l = s.call(a, l, o, t.name)), t.attr(o, l.length > 0 ? l : null)); } }), e.addAttributeFilter("class", e => { let t = e.length; for (; t--; ) { const n = e[t]; let o = n.attr("class"); o && ((o = o.replace(/(?:^|\s)mce-item-\w+(?!\S)/g, "")), n.attr("class", o.length > 0 ? o : null)); } }), e.addAttributeFilter("data-mce-type", (e, t, n) => { let o = e.length; for (; o--; ) { const t = e[o]; if ("bookmark" === t.attr("data-mce-type") && !n.cleanup) { const e = I.from(t.firstChild).exists(e => { var t; return !ei(null !== (t = e.value) && void 0 !== t ? t : ""); }); e ? t.unwrap() : t.remove(); } } }), e.addNodeFilter("noscript", e => { var t; let n = e.length; for (; n--; ) { const o = e[n].firstChild; o && (o.value = ws.decode(null !== (t = o.value) && void 0 !== t ? t : "")); } }), e.addNodeFilter("script,style", (e, n) => { var o; const r = e => e .replace(/()/g, "\n") .replace(/^[\r\n]*|[\r\n]*$/g, "") .replace( /^\s*(()?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, "" ); let s = e.length; for (; s--; ) { const a = e[s], i = a.firstChild, l = null !== (o = null == i ? void 0 : i.value) && void 0 !== o ? o : ""; if ("script" === n) { const e = a.attr("type"); e && a.attr("type", "mce-no/type" === e ? null : e.replace(/^mce\-/, "")), "xhtml" === t.element_format && i && l.length > 0 && (i.value = "// "); } else "xhtml" === t.element_format && i && l.length > 0 && (i.value = "\x3c!--\n" + r(l) + "\n--\x3e"); } }), e.addNodeFilter("#comment", e => { let o = e.length; for (; o--; ) { const r = e[o], s = r.value; t.preserve_cdata && 0 === (null == s ? void 0 : s.indexOf("[CDATA[")) ? ((r.name = "#cdata"), (r.type = 4), (r.value = n.decode(s.replace(/^\[CDATA\[|\]\]$/g, "")))) : 0 === (null == s ? void 0 : s.indexOf("mce:protected ")) && ((r.name = "#text"), (r.type = 3), (r.raw = !0), (r.value = unescape(s).substr(14))); } }), e.addNodeFilter("xml:namespace,input", (e, t) => { let n = e.length; for (; n--; ) { const o = e[n]; 7 === o.type ? o.remove() : 1 === o.type && ("input" !== t || o.attr("type") || o.attr("type", "text")); } }), e.addAttributeFilter("data-mce-type", t => { q(t, t => { "format-caret" === t.attr("data-mce-type") && (t.isEmpty(e.schema.getNonEmptyElements()) ? t.remove() : t.unwrap()); }); }), e.addAttributeFilter( "data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-block,data-mce-type,data-mce-resize,data-mce-placeholder", (e, t) => { let n = e.length; for (; n--; ) e[n].attr(t, null); } ), t.remove_trailing_brs && ((e, t, n) => { t.addNodeFilter("br", (t, o, r) => { const s = Dt.extend({}, n.getBlockElements()), a = n.getNonEmptyElements(), i = n.getWhitespaceElements(); s.body = 1; const l = e => e.name in s || Jr(n, e); for (let o = 0, d = t.length; o < d; o++) { let d = t[o], c = d.parent; if (c && l(c) && d === c.lastChild) { let t = d.prev; for (; t; ) { const e = t.name; if ("span" !== e || "bookmark" !== t.attr("data-mce-type")) { "br" === e && (d = null); break; } t = t.prev; } if (d && (d.remove(), kb(n, a, i, c))) { const t = n.getElementRule(c.name); t && (t.removeEmpty ? c.remove() : t.paddEmpty && xb(e, r, l, c)); } } else { let e = d; for (; c && c.firstChild === e && c.lastChild === e && ((e = c), !s[c.name]); ) c = c.parent; if (e === c) { const e = new ep("#text", 3); (e.value = Wo), d.replace(e); } } } }); })(t, e, e.schema); })(a, o, r), { schema: s, addNodeFilter: a.addNodeFilter, addAttributeFilter: a.addAttributeFilter, serialize: (e, n = {}) => { const i = {format: "html", ...n}, l = ((e, t, n) => ((e, t) => C(e) && e.hasEventListeners("PreProcess") && !t.no_events)(e, n) ? ((e, t, n) => { let o; const r = e.dom; let s = t.cloneNode(!0); const a = document.implementation; if (a.createHTMLDocument) { const e = a.createHTMLDocument(""); Dt.each("BODY" === s.nodeName ? s.childNodes : [s], t => { e.body.appendChild(e.importNode(t, !0)); }), (s = "BODY" !== s.nodeName ? e.body.firstChild : e.body), (o = r.doc), (r.doc = e); } return ( ((e, t) => { e.dispatch("PreProcess", t); })(e, {...n, node: s}), o && (r.doc = o), s ); })(e, t, n) : t)(t, e, i), d = ((e, t, n) => { const o = ti(n.getInner ? t.innerHTML : e.getOuterHTML(t)); return n.selection || Xa(Cn(t)) ? o : Dt.trim(o); })(r, l, i), c = ((e, t, n) => { const o = n.selection ? {forced_root_block: !1, ...n} : n, r = e.parse(t, o); return ( (e => { const t = e => "br" === (null == e ? void 0 : e.name), n = e.lastChild; if (t(n)) { const e = n.prev; t(e) && (n.remove(), e.remove()); } })(r), r ); })(a, d, i); return "tree" === i.format ? c : ((e, t, n, o, r) => { const s = ((e, t, n) => yp(e, t).serialize(n))(t, n, o); return ((e, t, n) => { if (!t.no_events && e) { const o = ((e, t) => e.dispatch("PostProcess", t))(e, {...t, content: n}); return o.content; } return n; })(e, r, s); })(t, o, s, c, i); }, addRules: s.addValidElements, setRules: s.setValidElements, addTempAttr: T(fw, a, n), getTempAttrs: N(n), getNodeFilters: a.getNodeFilters, getAttributeFilters: a.getAttributeFilters, removeNodeFilter: a.removeNodeFilter, removeAttributeFilter: a.removeAttributeFilter } ); }, pw = (e, t) => { const n = gw(e, t); return { schema: n.schema, addNodeFilter: n.addNodeFilter, addAttributeFilter: n.addAttributeFilter, serialize: n.serialize, addRules: n.addRules, setRules: n.setRules, addTempAttr: n.addTempAttr, getTempAttrs: n.getTempAttrs, getNodeFilters: n.getNodeFilters, getAttributeFilters: n.getAttributeFilters, removeNodeFilter: n.removeNodeFilter, removeAttributeFilter: n.removeAttributeFilter }; }, hw = (e, t, n = {}) => { const o = ((e, t) => ({format: "html", ...e, set: !0, content: t}))(n, t); return AC(e, o) .map(t => { const n = ((e, t, n) => sw(e).editor.setContent(t, n))(e, t.content, t); return TC(e, n.html, t), n.content; }) .getOr(t); }, bw = "autoresize_on_init,content_editable_state,padd_empty_with_br,block_elements,boolean_attributes,editor_deselector,editor_selector,elements,file_browser_callback_types,filepicker_validator_handler,force_hex_style_colors,force_p_newlines,gecko_spellcheck,images_dataimg_filter,media_scripts,mode,move_caret_before_on_enter_elements,non_empty_elements,self_closing_elements,short_ended_elements,special,spellchecker_select_languages,spellchecker_whitelist,tab_focus,tabfocus_elements,table_responsive_width,text_block_elements,text_inline_elements,toolbar_drawer,types,validate,whitespace_elements,paste_enable_default_filters,paste_filter_drop,paste_word_valid_elements,paste_retain_style_properties,paste_convert_word_fake_lists,template_cdate_classes,template_mdate_classes,template_selected_content_classes,template_preview_replace_values,template_replace_values,templates,template_cdate_format,template_mdate_format".split( "," ), vw = [], yw = "bbcode,colorpicker,contextmenu,fullpage,legacyoutput,spellchecker,template,textcolor,rtc".split(","), Cw = [], ww = (e, t) => { const n = Y(t, t => ke(e, t)); return ae(n); }, xw = e => { const t = ww(e, bw), n = e.forced_root_block; return (!1 !== n && "" !== n) || t.push("forced_root_block (false only)"), ae(t); }, Ew = e => ww(e, vw), kw = (e, t) => { const n = Dt.makeMap(e.plugins, " "), o = Y(t, e => ke(n, e)); return ae(o); }, _w = e => kw(e, yw), Sw = e => kw( e, Cw.map(e => e.name) ), Nw = e => Q(Cw, t => t.name === e).fold( () => e, t => (t.replacedWith ? `${e}, replaced by ${t.replacedWith}` : e) ), Rw = fa.DOM, Aw = e => I.from(e).each(e => e.destroy()), Tw = (() => { const e = {}; return { add: (t, n) => { e[t] = n; }, get: t => (e[t] ? e[t] : {icons: {}}), has: t => ke(e, t) }; })(), Ow = Ca.ModelManager, Bw = (e, t) => t.dom[e], Pw = (e, t) => parseInt(uo(t, e), 10), Dw = T(Bw, "clientWidth"), Lw = T(Bw, "clientHeight"), Mw = T(Pw, "margin-top"), Iw = T(Pw, "margin-left"), Fw = e => { const t = [], n = () => { const t = e.theme; return t && t.getNotificationManagerImpl ? t.getNotificationManagerImpl() : (() => { const e = () => { throw new Error("Theme did not provide a NotificationManager implementation."); }; return {open: e, close: e, getArgs: e}; })(); }, o = () => I.from(t[0]), r = () => { o().each(e => { e.reposition(); }); }, s = e => { J(t, t => t === e).each(e => { t.splice(e, 1); }); }, a = (o, a = !0) => e.removed || !(e => { return ((t = e.inline ? e.getBody() : e.getContentAreaContainer()), I.from(t).map(Cn)).map(Xn).getOr(!1); var t; })(e) ? {} : (a && e.dispatch("BeforeOpenNotification", {notification: o}), Q(t, e => { return ( (t = n().getArgs(e)), (r = o), !(t.type !== r.type || t.text !== r.text || t.progressBar || t.timeout || r.progressBar || r.timeout) ); var t, r; }).getOrThunk(() => { e.editorManager.setActive(e); const a = n().open( o, () => { s(a); }, () => Hg(e) ); return ( (e => { t.push(e); })(a), r(), e.dispatch("OpenNotification", {notification: {...a}}), a ); })), i = N(t); return ( (e => { e.on("SkinLoaded", () => { const t = Ed(e); t && a({text: t, type: "warning", timeout: 0}, !1), r(); }), e.on("show ResizeEditor NodeChange", () => { requestAnimationFrame(r); }), e.on("remove", () => { q(t.slice(), e => { n().close(e); }); }), e.addShortcut("alt+F12", "Focus to notification", () => o() .map(e => Cn(e.getEl())) .each(e => yg(e)) ); })(e), { open: a, close: () => { o().each(e => { n().close(e), s(e), r(); }); }, getNotifications: i } ); }, Uw = Ca.PluginManager, zw = Ca.ThemeManager, jw = e => { let t = []; const n = () => { const t = e.theme; return t && t.getWindowManagerImpl ? t.getWindowManagerImpl() : (() => { const e = () => { throw new Error("Theme did not provide a WindowManager implementation."); }; return {open: e, openUrl: e, alert: e, confirm: e, close: e}; })(); }, o = (e, t) => (...n) => t ? t.apply(e, n) : void 0, r = n => { (t => { e.dispatch("CloseWindow", {dialog: t}); })(n), (t = Y(t, e => e !== n)), 0 === t.length && e.focus(); }, s = n => { e.editorManager.setActive(e), Rg(e), e.ui.show(); const o = n(); return ( (n => { t.push(n), (t => { e.dispatch("OpenWindow", {dialog: t}); })(n); })(o), o ); }; return ( e.on("remove", () => { q(t, e => { n().close(e); }); }), { open: (e, t) => s(() => n().open(e, t, r)), openUrl: e => s(() => n().openUrl(e, r)), alert: (e, t, r) => { const s = n(); s.alert(e, o(r || s, t)); }, confirm: (e, t, r) => { const s = n(); s.confirm(e, o(r || s, t)); }, close: () => { I.from(t[t.length - 1]).each(e => { n().close(e), r(e); }); } } ); }, Hw = (e, t) => { e.notificationManager.open({type: "error", text: t}); }, $w = (e, t) => { e._skinLoaded ? Hw(e, t) : e.on("SkinLoaded", () => { Hw(e, t); }); }, Vw = (e, t, n) => { ff(e, t, {message: n}), console.error(n); }, qw = (e, t, n) => (n ? `Failed to load ${e}: ${n} from url ${t}` : `Failed to load ${e} url: ${t}`), Ww = (e, ...t) => { const n = window.console; n && (n.error ? n.error(e, ...t) : n.log(e, ...t)); }, Kw = e => "content/" + e + "/content.css", Yw = (e, t) => { const n = e.editorManager.baseURL + "/skins/content", o = `content${e.editorManager.suffix}.css`; return V(t, t => (e => tinymce.Resource.has(Kw(e)))(t) ? t : (e => /^[a-z0-9\-]+$/i.test(e))(t) && !e.inline ? `${n}/${t}/${o}` : e.documentBaseURI.toAbsolute(t) ); }, Gw = (e, t) => { const n = {}; return { findAll: (o, r = M) => { const s = Y((e => (e ? ce(e.getElementsByTagName("img")) : []))(o), t => { const n = t.src; return ( !t.hasAttribute("data-mce-bogus") && !t.hasAttribute("data-mce-placeholder") && !(!n || n === Tt.transparentSrc) && ($e(n, "blob:") ? !e.isUploaded(n) && r(t) : !!$e(n, "data:") && r(t)) ); }), a = V(s, e => { const o = e.src; if (ke(n, o)) return n[o].then(t => (m(t) ? t : {image: e, blobInfo: t.blobInfo})); { const r = ((e, t) => { const n = () => Promise.reject("Invalid data URI"); if ($e(t, "blob:")) { const s = e.getByUri(t); return C(s) ? Promise.resolve(s) : ((o = t), $e(o, "blob:") ? (e => fetch(e) .then(e => (e.ok ? e.blob() : Promise.reject())) .catch(() => Promise.reject({ message: `Cannot convert ${e} to Blob. Resource might not exist or is inaccessible.`, uriType: "blob" }) ))(o) : $e(o, "data:") ? ((r = o), new Promise((e, t) => { Qv(r) .bind(({type: e, data: t, base64Encoded: n}) => Jv(e, t, n)) .fold(() => t("Invalid data URI"), e); })) : Promise.reject("Unknown URI format")).then(t => ey(t).then(o => ny(o, !1, n => I.some(oy(e, t, n))).getOrThunk(n)) ); } var o, r; return $e(t, "data:") ? ry(e, t).fold(n, e => Promise.resolve(e)) : Promise.reject("Unknown image data format"); })(t, o) .then(t => (delete n[o], {image: e, blobInfo: t})) .catch(e => (delete n[o], e)); return (n[o] = r), r; } }); return Promise.all(a); } }; }, Xw = () => { let e = {}; const t = (e, t) => ({status: e, resultUri: t}), n = t => t in e; return { hasBlobUri: n, getResultUri: t => { const n = e[t]; return n ? n.resultUri : null; }, isPending: t => !!n(t) && 1 === e[t].status, isUploaded: t => !!n(t) && 2 === e[t].status, markPending: n => { e[n] = t(1, null); }, markUploaded: (n, o) => { e[n] = t(2, o); }, removeFailed: t => { delete e[t]; }, destroy: () => { e = {}; } }; }; let Zw = 0; const Qw = (e, t) => { const n = {}, o = (e, n) => new Promise((o, r) => { const s = new XMLHttpRequest(); s.open("POST", t.url), (s.withCredentials = t.credentials), (s.upload.onprogress = e => { n((e.loaded / e.total) * 100); }), (s.onerror = () => { r("Image upload failed due to a XHR Transport error. Code: " + s.status); }), (s.onload = () => { if (s.status < 200 || s.status >= 300) return void r("HTTP Error: " + s.status); const e = JSON.parse(s.responseText); var n, a; e && m(e.location) ? o(((n = t.basePath), (a = e.location), n ? n.replace(/\/$/, "") + "/" + a.replace(/^\//, "") : a)) : r("Invalid JSON: " + s.responseText); }); const a = new FormData(); a.append("file", e.blob(), e.filename()), s.send(a); }), r = w(t.handler) ? t.handler : o, s = (e, t) => ({url: t, blobInfo: e, status: !0}), a = (e, t) => ({url: "", blobInfo: e, status: !1, error: t}), i = (e, t) => { Dt.each(n[e], e => { e(t); }), delete n[e]; }; return { upload: (l, d) => t.url || r !== o ? ((t, o) => ( (t = Dt.grep(t, t => !e.isUploaded(t.blobUri()))), Promise.all( Dt.map(t, t => e.isPending(t.blobUri()) ? (e => { const t = e.blobUri(); return new Promise(e => { (n[t] = n[t] || []), n[t].push(e); }); })(t) : ((t, n, o) => ( e.markPending(t.blobUri()), new Promise(r => { let l, d; try { const c = () => { l && (l.close(), (d = k)); }, u = n => { c(), e.markUploaded(t.blobUri(), n), i(t.blobUri(), s(t, n)), r(s(t, n)); }, f = n => { c(), e.removeFailed(t.blobUri()), i(t.blobUri(), a(t, n)), r(a(t, n)); }; (d = e => { e < 0 || e > 100 || I.from(l) .orThunk(() => I.from(o).map(P)) .each(t => { (l = t), t.progressBar.value(e); }); }), n(t, d).then(u, e => { f(m(e) ? {message: e} : e); }); } catch (e) { r(a(t, e)); } }) ))(t, r, o) ) ) ))(l, d) : new Promise(e => { e([]); }) }; }, Jw = e => () => e.notificationManager.open({text: e.translate("Image uploading..."), type: "info", timeout: -1, progressBar: !0}), ex = (e, t) => Qw(t, {url: rd(e), basePath: sd(e), credentials: ad(e), handler: id(e)}), tx = e => { const t = (() => { let e = []; const t = e => { if (!e.blob || !e.base64) throw new Error("blob and base64 representations of the image are required for BlobInfo to be created"); const t = e.id || "blobid" + Zw++ + (() => { const e = () => Math.round(4294967295 * Math.random()).toString(36); return "s" + new Date().getTime().toString(36) + e() + e() + e(); })(), n = e.name || t, o = e.blob; var r; return { id: N(t), name: N(n), filename: N( e.filename || n + "." + ((r = o.type), { "image/jpeg": "jpg", "image/jpg": "jpg", "image/gif": "gif", "image/png": "png", "image/apng": "apng", "image/avif": "avif", "image/svg+xml": "svg", "image/webp": "webp", "image/bmp": "bmp", "image/tiff": "tiff" }[r.toLowerCase()] || "dat") ), blob: N(o), base64: N(e.base64), blobUri: N(e.blobUri || URL.createObjectURL(o)), uri: N(e.uri) }; }, n = t => Q(e, t).getOrUndefined(), o = e => n(t => t.id() === e); return { create: (e, n, o, r, s) => { if (m(e)) return t({id: e, name: r, filename: s, blob: n, base64: o}); if (f(e)) return t(e); throw new Error("Unknown input type"); }, add: t => { o(t.id()) || e.push(t); }, get: o, getByUri: e => n(t => t.blobUri() === e), getByData: (e, t) => n(n => n.base64() === e && n.blob().type === t), findFirst: n, removeByUri: t => { e = Y(e, e => e.blobUri() !== t || (URL.revokeObjectURL(e.blobUri()), !1)); }, destroy: () => { q(e, e => { URL.revokeObjectURL(e.blobUri()); }), (e = []); } }; })(); let n, o; const r = Xw(), s = [], a = t => n => e.selection ? t(n) : [], i = (e, t, n) => { let o = 0; do { (o = e.indexOf(t, o)), -1 !== o && ((e = e.substring(0, o) + n + e.substr(o + t.length)), (o += n.length - t.length + 1)); } while (-1 !== o); return e; }, l = (e, t, n) => { const o = `src="${n}"${n === Tt.transparentSrc ? ' data-mce-placeholder="1"' : ""}`; return (e = i(e, `src="${t}"`, o)), i(e, 'data-mce-src="' + t + '"', 'data-mce-src="' + n + '"'); }, d = (t, n) => { q(e.undoManager.data, e => { "fragmented" === e.type ? (e.fragments = V(e.fragments, e => l(e, t, n))) : (e.content = l(e.content, t, n)); }); }, c = () => ( n || (n = ex(e, r)), p().then( a(o => { const r = V(o, e => e.blobInfo); return n.upload(r, Jw(e)).then( a(n => { const r = []; let s = !1; const a = V(n, (n, a) => { const {blobInfo: i, image: l} = o[a]; let c = !1; return ( n.status && td(e) ? (n.url && !He(l.src, n.url) && (s = !0), t.removeByUri(l.src), rw(e) || ((t, n) => { const o = e.convertURL(n, "src"); var r; d(t.src, n), en(Cn(t), { src: ed(e) ? ((r = n), r + (-1 === r.indexOf("?") ? "?" : "&") + new Date().getTime()) : n, "data-mce-src": o }); })(l, n.url)) : n.error && (n.error.remove && (d(l.src, Tt.transparentSrc), r.push(l), (c = !0)), ((e, t) => { $w(e, ya.translate(["Failed to upload image: {0}", t])); })(e, n.error.message)), {element: l, status: n.status, uploadUri: n.url, blobInfo: i, removed: c} ); }); return ( r.length > 0 && !rw(e) ? e.undoManager.transact(() => { q(_o(r), n => { const o = Tn(n); Eo(n), o.each( (e => t => { ((e, t) => e.dom.isEmpty(t.dom) && C(e.schema.getTextBlockElements()[$t(t)]))(e, t) && yo(t, bn('
    ')); })(e) ), t.removeByUri(n.dom.src); }); }) : s && e.undoManager.dispatchChange(), a ); }) ); }) ) ), u = () => (Jl(e) ? c() : Promise.resolve([])), g = e => ne(s, t => t(e)), p = () => ( o || (o = Gw(r, t)), o.findAll(e.getBody(), g).then( a(t => { const n = Y(t, t => (m(t) ? ($w(e, t), !1) : "blob" !== t.uriType)); return ( rw(e) || q(n, e => { d(e.image.src, e.blobInfo.blobUri()), (e.image.src = e.blobInfo.blobUri()), e.image.removeAttribute("data-mce-src"); }), n ); }) ) ), h = n => n.replace(/src="(blob:[^"]+)"/g, (n, o) => { const s = r.getResultUri(o); if (s) return 'src="' + s + '"'; let a = t.getByUri(o); return ( a || (a = X( e.editorManager.get(), (e, t) => e || (t.editorUpload && t.editorUpload.blobCache.getByUri(o)), void 0 )), a ? 'src="data:' + a.blob().type + ";base64," + a.base64() + '"' : n ); }); return ( e.on("SetContent", () => { Jl(e) ? u() : p(); }), e.on("RawSaveContent", e => { e.content = h(e.content); }), e.on("GetContent", e => { e.source_view || "raw" === e.format || "tree" === e.format || (e.content = h(e.content)); }), e.on("PostRender", () => { e.parser.addNodeFilter("img", e => { q(e, e => { const n = e.attr("src"); if (!n || t.getByUri(n)) return; const o = r.getResultUri(n); o && e.attr("src", o); }); }); }), { blobCache: t, addFilter: e => { s.push(e); }, uploadImages: c, uploadImagesAuto: u, scanForImages: p, destroy: () => { t.destroy(), r.destroy(), (o = n = null); } } ); }, nx = {remove_similar: !0, inherit: !1}, ox = {selector: "td,th", ...nx}, rx = { tablecellbackgroundcolor: {styles: {backgroundColor: "%value"}, ...ox}, tablecellverticalalign: {styles: {"vertical-align": "%value"}, ...ox}, tablecellbordercolor: {styles: {borderColor: "%value"}, ...ox}, tablecellclass: {classes: ["%value"], ...ox}, tableclass: {selector: "table", classes: ["%value"], ...nx}, tablecellborderstyle: {styles: {borderStyle: "%value"}, ...ox}, tablecellborderwidth: {styles: {borderWidth: "%value"}, ...ox} }, sx = N(rx), ax = Dt.each, ix = fa.DOM, lx = e => C(e) && f(e), dx = (e, t) => { const n = (t && t.schema) || Fs({}), o = e => { const t = m(e) ? {name: e, classes: [], attrs: {}} : e, n = ix.create(t.name); return ( ((e, t) => { t.classes.length > 0 && ix.addClass(e, t.classes.join(" ")), ix.setAttribs(e, t.attrs); })(n, t), n ); }, r = (e, t, s) => { let a; const i = t[0], l = lx(i) ? i.name : void 0, d = ((e, t) => { const o = n.getElementRule(e.nodeName.toLowerCase()), r = null == o ? void 0 : o.parentsRequired; return !(!r || !r.length) && (t && H(r, t) ? t : r[0]); })(e, l); if (d) l === d ? ((a = i), (t = t.slice(1))) : (a = d); else if (i) (a = i), (t = t.slice(1)); else if (!s) return e; const c = a ? o(a) : ix.create("div"); c.appendChild(e), s && Dt.each(s, t => { const n = o(t); c.insertBefore(n, e); }); const u = lx(a) ? a.siblings : void 0; return r(c, t, u); }, s = ix.create("div"); if (e.length > 0) { const t = e[0], n = o(t), a = lx(t) ? t.siblings : void 0; s.appendChild(r(n, e.slice(1), a)); } return s; }, cx = e => { let t = "div"; const n = {name: t, classes: [], attrs: {}, selector: (e = Dt.trim(e))}; return ( "*" !== e && (t = e.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g, (e, t, o, r, s) => { switch (t) { case "#": n.attrs.id = o; break; case ".": n.classes.push(o); break; case ":": -1 !== Dt.inArray("checked disabled enabled read-only required".split(" "), o) && (n.attrs[o] = o); } if ("[" === r) { const e = s.match(/([\w\-]+)(?:\=\"([^\"]+))?/); e && (n.attrs[e[1]] = e[2]); } return ""; })), (n.name = t || "div"), n ); }, ux = (e, t) => { let n = "", o = Td(e); if ("" === o) return ""; const r = e => (m(e) ? e.replace(/%(\w+)/g, "") : ""), s = (t, n) => ix.getStyle(null != n ? n : e.getBody(), t, !0); if (m(t)) { const n = e.formatter.get(t); if (!n) return ""; t = n[0]; } if ("preview" in t) { const e = t.preview; if (!1 === e) return ""; o = e || o; } let a, i = t.block || t.inline || "span"; const l = ((d = t.selector), m(d) ? ((d = (d = d.split(/\s*,\s*/)[0]).replace(/\s*(~\+|~|\+|>)\s*/g, "$1")), Dt.map(d.split(/(?:>|\s+(?![^\[\]]+\]))/), e => { const t = Dt.map(e.split(/(?:~\+|~|\+)/), cx), n = t.pop(); return t.length && (n.siblings = t), n; }).reverse()) : []); var d; l.length > 0 ? (l[0].name || (l[0].name = i), (i = t.selector), (a = dx(l, e))) : (a = dx([i], e)); const c = ix.select(i, a)[0] || a.firstChild; ax(t.styles, (e, t) => { const n = r(e); n && ix.setStyle(c, t, n); }), ax(t.attributes, (e, t) => { const n = r(e); n && ix.setAttrib(c, t, n); }), ax(t.classes, e => { const t = r(e); ix.hasClass(c, t) || ix.addClass(c, t); }), e.dispatch("PreviewFormats"), ix.setStyles(a, {position: "absolute", left: -65535}), e.getBody().appendChild(a); const u = s("fontSize"), f = /px$/.test(u) ? parseInt(u, 10) : 0; return ( ax(o.split(" "), e => { let t = s(e, c); if ( !( ("background-color" === e && /transparent|rgba\s*\([^)]+,\s*0\)/.test(t) && ((t = s(e)), "#ffffff" === Ks(t).toLowerCase())) || ("color" === e && "#000000" === Ks(t).toLowerCase()) ) ) { if ("font-size" === e && /em|%$/.test(t)) { if (0 === f) return; t = (parseFloat(t) / (/%$/.test(t) ? 100 : 1)) * f + "px"; } "border" === e && t && (n += "padding:0 2px;"), (n += e + ":" + t + ";"); } }), e.dispatch("AfterPreviewFormats"), ix.remove(a), n ); }, mx = e => { const t = (e => { const t = {}, n = (e, o) => { e && (m(e) ? (p(o) || (o = [o]), q(o, e => { v(e.deep) && (e.deep = !Fm(e)), v(e.split) && (e.split = !Fm(e) || Um(e)), v(e.remove) && Fm(e) && !Um(e) && (e.remove = "none"), Fm(e) && Um(e) && ((e.mixed = !0), (e.block_expand = !0)), m(e.classes) && (e.classes = e.classes.split(/\s+/)); }), (t[e] = o)) : pe(e, (e, t) => { n(t, e); })); }; return ( n( (e => { const t = e.dom, n = e.schema.type, o = { 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,pre", styles: {textAlign: "left"}, inherit: !1, preview: !1 }, { selector: "img,audio,video", collapsed: !1, styles: {float: "left"}, preview: "font-family font-size" }, { selector: "table", collapsed: !1, styles: {marginLeft: "0px", marginRight: "auto"}, onformat: e => { t.setStyle(e, "float", null); }, preview: "font-family font-size" }, { selector: ".mce-preview-object,[data-ephox-embed-iri]", ceFalseOverride: !0, styles: {float: "left"} } ], aligncenter: [ { selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre", styles: {textAlign: "center"}, inherit: !1, preview: "font-family font-size" }, { selector: "figure.image", collapsed: !1, classes: "align-center", ceFalseOverride: !0, preview: "font-family font-size" }, { selector: "img,audio,video", 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" }, { selector: ".mce-preview-object", ceFalseOverride: !0, styles: {display: "table", marginLeft: "auto", marginRight: "auto"}, preview: !1 }, { selector: "[data-ephox-embed-iri]", ceFalseOverride: !0, styles: {marginLeft: "auto", marginRight: "auto"}, preview: !1 } ], 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,pre", styles: {textAlign: "right"}, inherit: !1, preview: "font-family font-size" }, { selector: "img,audio,video", collapsed: !1, styles: {float: "right"}, preview: "font-family font-size" }, { selector: "table", collapsed: !1, styles: {marginRight: "0px", marginLeft: "auto"}, onformat: e => { t.setStyle(e, "float", null); }, preview: "font-family font-size" }, { selector: ".mce-preview-object,[data-ephox-embed-iri]", ceFalseOverride: !0, styles: {float: "right"}, preview: !1 } ], alignjustify: [ { selector: "figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li,pre", styles: {textAlign: "justify"}, inherit: !1, preview: "font-family font-size" } ], bold: [ {inline: "strong", remove: "all", preserve_attributes: ["class", "style"]}, {inline: "span", styles: {fontWeight: "bold"}}, {inline: "b", remove: "all", preserve_attributes: ["class", "style"]} ], italic: [ {inline: "em", remove: "all", preserve_attributes: ["class", "style"]}, {inline: "span", styles: {fontStyle: "italic"}}, {inline: "i", remove: "all", preserve_attributes: ["class", "style"]} ], underline: [ {inline: "span", styles: {textDecoration: "underline"}, exact: !0}, {inline: "u", remove: "all", preserve_attributes: ["class", "style"]} ], strikethrough: (() => { const e = {inline: "span", styles: {textDecoration: "line-through"}, exact: !0}, t = {inline: "strike", remove: "all", preserve_attributes: ["class", "style"]}, o = {inline: "s", remove: "all", preserve_attributes: ["class", "style"]}; return "html4" !== n ? [o, e, t] : [e, o, t]; })(), 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}, lineheight: {selector: "h1,h2,h3,h4,h5,h6,p,li,td,th,div", styles: {lineHeight: "%value"}}, fontsize_class: {inline: "span", attributes: {class: "%value"}}, blockquote: {block: "blockquote", wrapper: !0, remove: "all"}, subscript: {inline: "sub"}, superscript: {inline: "sup"}, code: {inline: "code"}, link: { inline: "a", selector: "a", remove: "all", split: !0, deep: !0, onmatch: (e, t, n) => er(e) && e.hasAttribute("href"), onformat: (e, n, o) => { Dt.each(o, (n, o) => { t.setAttrib(e, o, n); }); } }, lang: { inline: "span", clear_child_styles: !0, remove_similar: !0, attributes: { lang: "%value", "data-mce-lang": e => { var t; return null !== (t = null == e ? void 0 : e.customValue) && void 0 !== t ? t : null; } } }, removeformat: [ { selector: "b,strong,em,i,font,u,strike,s,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins,small", 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 ( Dt.each("p h1 h2 h3 h4 h5 h6 div address pre dt dd samp".split(/\s/), e => { o[e] = {block: e, remove: "all"}; }), o ); })(e) ), n(sx()), n(Ad(e)), { get: e => (C(e) ? t[e] : t), has: e => ke(t, e), register: n, unregister: e => (e && t[e] && delete t[e], t) } ); })(e), n = Br({}); return ( (e => { e.addShortcut("meta+b", "", "Bold"), e.addShortcut("meta+i", "", "Italic"), e.addShortcut("meta+u", "", "Underline"); for (let 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"]); })(e), (e => { e.on("mouseup keydown", t => { var n; ((e, t, n) => { const o = e.selection, r = e.getBody(); Jb(e, null, n), (8 !== t && 46 !== t) || !o.isCollapsed() || o.getStart().innerHTML !== Gb || Jb(e, Ku(r, o.getStart()), !0), (37 !== t && 39 !== t) || Jb(e, Ku(r, o.getStart()), !0); })(e, t.keyCode, ((n = e.selection.getRng().endContainer), dr(n) && Ve(n.data, Wo))); }); })(e), rw(e) || ((e, t) => { e.set({}), t.on("NodeChange", n => { Yv(t, n.element, e.get()); }), t.on("FormatApply FormatRemove", n => { const o = I.from(n.node) .map(e => (wm(e) ? e : e.startContainer)) .bind(e => (er(e) ? I.some(e) : I.from(e.parentElement))) .getOrThunk(() => qv(t)); Yv(t, o, e.get()); }); })(n, e), { get: t.get, has: t.has, register: t.register, unregister: t.unregister, apply: (t, n, o) => { ((e, t, n, o) => { aw(e).formatter.apply(t, n, o); })(e, t, n, o); }, remove: (t, n, o, r) => { ((e, t, n, o, r) => { aw(e).formatter.remove(t, n, o, r); })(e, t, n, o, r); }, toggle: (t, n, o) => { ((e, t, n, o) => { aw(e).formatter.toggle(t, n, o); })(e, t, n, o); }, match: (t, n, o, r) => ((e, t, n, o, r) => aw(e).formatter.match(t, n, o, r))(e, t, n, o, r), closest: t => ((e, t) => aw(e).formatter.closest(t))(e, t), matchAll: (t, n) => ((e, t, n) => aw(e).formatter.matchAll(t, n))(e, t, n), matchNode: (t, n, o, r) => ((e, t, n, o, r) => aw(e).formatter.matchNode(t, n, o, r))(e, t, n, o, r), canApply: t => ((e, t) => aw(e).formatter.canApply(t))(e, t), formatChanged: (t, o, r, s) => ((e, t, n, o, r, s) => aw(e).formatter.formatChanged(t, n, o, r, s))(e, n, t, o, r, s), getCssText: T(ux, e) } ); }, fx = e => { switch (e.toLowerCase()) { case "undo": case "redo": case "mcefocus": return !0; default: return !1; } }, gx = e => { const t = Dr(), n = Br(0), o = Br(0), r = { data: [], typing: !1, beforeChange: () => { ((e, t, n) => { aw(e).undoManager.beforeChange(t, n); })(e, n, t); }, add: (s, a) => ((e, t, n, o, r, s, a) => aw(e).undoManager.add(t, n, o, r, s, a))(e, r, o, n, t, s, a), dispatchChange: () => { e.setDirty(!0); const t = GC(e); (t.bookmark = Cl(e.selection)), e.dispatch("change", {level: t, lastLevel: ie(r.data, o.get()).getOrUndefined()}); }, undo: () => ((e, t, n, o) => aw(e).undoManager.undo(t, n, o))(e, r, n, o), redo: () => ((e, t, n) => aw(e).undoManager.redo(t, n))(e, o, r.data), clear: () => { ((e, t, n) => { aw(e).undoManager.clear(t, n); })(e, r, o); }, reset: () => { ((e, t) => { aw(e).undoManager.reset(t); })(e, r); }, hasUndo: () => ((e, t, n) => aw(e).undoManager.hasUndo(t, n))(e, r, o), hasRedo: () => ((e, t, n) => aw(e).undoManager.hasRedo(t, n))(e, r, o), transact: t => ((e, t, n, o) => aw(e).undoManager.transact(t, n, o))(e, r, n, t), ignore: t => { ((e, t, n) => { aw(e).undoManager.ignore(t, n); })(e, n, t); }, extra: (t, n) => { ((e, t, n, o, r) => { aw(e).undoManager.extra(t, n, o, r); })(e, r, o, t, n); } }; return ( rw(e) || ((e, t, n) => { const o = Br(!1), r = e => { tw(t, !1, n), t.add({}, e); }; e.on("init", () => { t.add(); }), e.on("BeforeExecCommand", e => { const o = e.command; fx(o) || (nw(t, n), t.beforeChange()); }), e.on("ExecCommand", e => { const t = e.command; fx(t) || r(e); }), e.on("ObjectResizeStart cut", () => { t.beforeChange(); }), e.on("SaveContent ObjectResized blur", r), e.on("dragend", r), e.on("keyup", n => { const s = n.keyCode; if (n.isDefaultPrevented()) return; const a = Tt.os.isMacOS() && "Meta" === n.key; ((s >= 33 && s <= 36) || (s >= 37 && s <= 40) || 45 === s || n.ctrlKey || a) && (r(), e.nodeChanged()), (46 !== s && 8 !== s) || e.nodeChanged(), o.get() && t.typing && !JC(GC(e), t.data[0]) && (e.isDirty() || e.setDirty(!0), e.dispatch("TypingUndo"), o.set(!1), e.nodeChanged()); }), e.on("keydown", e => { const s = e.keyCode; if (e.isDefaultPrevented()) return; if ((s >= 33 && s <= 36) || (s >= 37 && s <= 40) || 45 === s) return void (t.typing && r(e)); const a = (e.ctrlKey && !e.altKey) || e.metaKey; if ((s < 16 || s > 20) && 224 !== s && 91 !== s && !t.typing && !a) return t.beforeChange(), tw(t, !0, n), t.add({}, e), void o.set(!0); (Tt.os.isMacOS() ? e.metaKey : e.ctrlKey && !e.altKey) && t.beforeChange(); }), e.on("mousedown", e => { t.typing && r(e); }), e.on("input", e => { var t; e.inputType && ("insertReplacementText" === e.inputType || ("insertText" === (t = e).inputType && null === t.data) || (e => "insertFromPaste" === e.inputType || "insertFromDrop" === e.inputType)(e)) && r(e); }), e.on("AddUndo Undo Redo ClearUndos", t => { t.isDefaultPrevented() || e.nodeChanged(); }); })(e, r, n), (e => { e.addShortcut("meta+z", "", "Undo"), e.addShortcut("meta+y,meta+shift+z", "", "Redo"); })(e), r ); }, px = [ 9, 27, Cf.HOME, Cf.END, 19, 20, 44, 144, 145, 33, 34, 45, 16, 17, 18, 91, 92, 93, Cf.DOWN, Cf.UP, Cf.LEFT, Cf.RIGHT ].concat(Tt.browser.isFirefox() ? [224] : []), hx = "data-mce-placeholder", bx = e => "keydown" === e.type || "keyup" === e.type, vx = e => { const t = e.keyCode; return t === Cf.BACKSPACE || t === Cf.DELETE; }, yx = (e, t) => ({from: e, to: t}), Cx = (e, t) => { const n = Cn(e), o = Cn(t.container()); return Ih(n, o).map(e => ((e, t) => ({block: e, position: t}))(e, t)); }, wx = (e, t) => Jn( t, e => Ga(e) || br(e.dom), t => _n(t, e) ) .filter(Kt) .getOr(e), xx = (e, t) => { const n = ((e, t) => { const n = In(e); return J(n, e => t.isBlock($t(e))).fold(N(n), e => n.slice(0, e)); })(e, t); return q(n, Eo), n; }, Ex = (e, t, n) => { const o = zp(n, t); return Q(o.reverse(), t => Tr(e, t)).each(Eo); }, kx = (e, t, n, o, r) => { if (Tr(o, n)) return Qa(n), $u(n.dom); ((e, t) => 0 === Y(Ln(t), t => !Tr(e, t)).length)(o, r) && Tr(o, t) && ho(r, vn("br")); const s = Hu(n.dom, Ji.before(r.dom)); return ( q(xx(t, o), e => { ho(r, e); }), Ex(o, e, t), s ); }, _x = (e, t, n, o) => { if (Tr(o, n)) { if (Tr(o, t)) { const e = e => { const t = (e, n) => Un(e).fold( () => n, e => (((e, t) => e.isInline($t(t)))(o, e) ? t(e, n.concat(Ia(e))) : n) ); return t(e, []); }, r = G(e(n), (e, t) => (Co(e, t), t), Za()); xo(t), yo(t, r); } return Eo(n), $u(t.dom); } const r = Vu(n.dom); return ( q(xx(t, o), e => { yo(n, e); }), Ex(o, e, t), r ); }, Sx = (e, t) => { zu(e, t.dom) .bind(e => I.from(e.getNode())) .map(Cn) .filter(Va) .each(Eo); }, Nx = (e, t, n, o) => ( Sx(!0, t), Sx(!1, n), ((e, t) => Sn(t, e) ? ((e, t) => { const n = zp(t, e); return I.from(n[n.length - 1]); })(t, e) : I.none())(t, n).fold(T(_x, e, t, n, o), T(kx, e, t, n, o)) ), Rx = (e, t, n, o, r) => (t ? Nx(e, o, n, r) : Nx(e, n, o, r)), Ax = (e, t) => { const n = Cn(e.getBody()), o = ((e, t, n, o) => o.collapsed ? ((e, t, n, o) => { const r = Cx(t, Ji.fromRangeStart(o)), s = r.bind(o => Iu(n, t, o.position).bind(o => Cx(t, o).map(o => ((e, t, n, o) => pr(o.position.getNode()) && !Tr(e, o.block) ? zu(!1, o.block.dom) .bind(e => (e.isEqual(o.position) ? Iu(n, t, e).bind(e => Cx(t, e)) : I.some(o))) .getOr(o) : o)(e, t, n, o) ) ) ); return It(r, s, yx).filter( e => (e => !_n(e.from.block, e.to.block))(e) && ((e, t) => { const n = Cn(e); return _n(wx(n, t.from.block), wx(n, t.to.block)); })(t, e) && (e => !1 === vr(e.from.block.dom) && !1 === vr(e.to.block.dom))(e) && (e => { const t = e => qa(e) || Yr(e.dom); return t(e.from.block) && t(e.to.block); })(e) && (e => !(Sn(e.to.block, e.from.block) || Sn(e.from.block, e.to.block)))(e) ); })(e, t, n, o) : I.none())(e.schema, n.dom, t, e.selection.getRng()).map(o => () => { Rx(n, t, o.from.block, o.to.block, e.schema).each(t => { e.selection.setRng(t.toRange()); }); }); return o; }, Tx = (e, t) => { const n = Cn(t), o = T(_n, e); return Qn(n, Ga, o).isSome(); }, Ox = e => { const t = Cn(e.getBody()); return ((e, t) => { const n = Hu(e.dom, Ji.fromRangeStart(t)).isNone(), o = ju(e.dom, Ji.fromRangeEnd(t)).isNone(); return !((e, t) => Tx(e, t.startContainer) || Tx(e, t.endContainer))(e, t) && n && o; })(t, e.selection.getRng()) ? (e => I.some(() => { e.setContent(""), e.selection.setCursorLocation(); }))(e) : ((e, t, n) => { const o = t.getRng(); return It(Ih(e, Cn(o.startContainer)), Ih(e, Cn(o.endContainer)), (r, s) => _n(r, s) ? I.none() : I.some(() => { o.deleteContents(), Rx(e, !0, r, s, n).each(e => { t.setRng(e.toRange()); }); }) ).getOr(I.none()); })(t, e.selection, e.schema); }, Bx = (e, t) => (e.selection.isCollapsed() ? I.none() : Ox(e)), Px = (e, t, n, o, r) => I.from(t._selectionOverrides.showCaret(e, n, o, r)), Dx = (e, t) => e.dispatch("BeforeObjectSelected", {target: t}).isDefaultPrevented() ? I.none() : I.some( (e => { const t = e.ownerDocument.createRange(); return t.selectNode(e), t; })(t) ), Lx = (e, t, n) => t.collapsed ? ((e, t, n) => { const o = hu(1, e.getBody(), t), r = Ji.fromRangeStart(o), s = r.getNode(); if (Kc(s)) return Px(1, e, s, !r.isAtEnd(), !1); const a = r.getNode(!0); if (Kc(a)) return Px(1, e, a, !1, !1); const i = gb(e.dom.getRoot(), r.getNode()); return Kc(i) ? Px(1, e, i, !1, n) : I.none(); })(e, t, n).getOr(t) : t, Mx = e => Ip(e) || Pp(e), Ix = e => Fp(e) || Dp(e), Fx = (e, t, n, o, r, s) => { Px(o, e, s.getNode(!r), r, !0).each(n => { if (t.collapsed) { const e = t.cloneRange(); r ? e.setEnd(n.startContainer, n.startOffset) : e.setStart(n.endContainer, n.endOffset), e.deleteContents(); } else t.deleteContents(); e.selection.setRng(n); }), ((e, t) => { dr(t) && 0 === t.data.length && e.remove(t); })(e.dom, n); }, Ux = (e, t) => ((e, t) => { const n = e.selection.getRng(); if (!dr(n.commonAncestorContainer)) return I.none(); const o = t ? xu.Forwards : xu.Backwards, r = Pu(e.getBody()), s = T(Cu, t ? r.next : r.prev), a = t ? Mx : Ix, i = vu(o, e.getBody(), n), l = s(i), d = l ? Oh(t, l) : l; if (!d || !wu(i, d)) return I.none(); if (a(d)) return I.some(() => Fx(e, n, i.getNode(), o, t, d)); const c = s(d); return c && a(c) && wu(d, c) ? I.some(() => Fx(e, n, i.getNode(), o, t, c)) : I.none(); })(e, t), zx = (e, t) => { const n = e.getBody(); return t ? $u(n).filter(Ip) : Vu(n).filter(Fp); }, jx = e => { const t = e.selection.getRng(); return ( !t.collapsed && (zx(e, !0).exists(e => e.isEqual(Ji.fromRangeStart(t))) || zx(e, !1).exists(e => e.isEqual(Ji.fromRangeEnd(t)))) ); }, Hx = kl([{remove: ["element"]}, {moveToElement: ["element"]}, {moveToPosition: ["position"]}]), $x = (e, t, n, o) => Iu(t, e, n).bind(r => { return ( (s = r.getNode()), (C(s) && (Ga(Cn(s)) || Ka(Cn(s)))) || ((e, t, n, o, r) => { const s = t => r.isInline(t.nodeName.toLowerCase()) && !du(n, o, e); return bu(!t, n).fold(() => bu(t, o).fold(L, s), s); })(e, t, n, r, o) ? I.none() : (t && vr(r.getNode())) || (!t && vr(r.getNode(!0))) ? ((e, t, n, o, r) => { const s = r.getNode(!n); return Ih(Cn(t), Cn(o.getNode())) .map(t => (Tr(e, t) ? Hx.remove(t.dom) : Hx.moveToElement(s))) .orThunk(() => I.some(Hx.moveToElement(s))); })(o, e, t, n, r) : (t && Fp(n)) || (!t && Ip(n)) ? I.some(Hx.moveToPosition(r)) : I.none() ); var s; }), Vx = (e, t) => I.from(gb(e.getBody(), t)), qx = (e, t) => { const n = e.selection.getNode(); return Vx(e, n) .filter(vr) .fold( () => ((e, t, n, o) => { const r = hu(t ? 1 : -1, e, n), s = Ji.fromRangeStart(r), a = Cn(e); return !t && Fp(s) ? I.some(Hx.remove(s.getNode(!0))) : t && Ip(s) ? I.some(Hx.remove(s.getNode())) : !t && Ip(s) && Qp(a, s, o) ? Jp(a, s, o).map(e => Hx.remove(e.getNode())) : t && Fp(s) && Zp(a, s, o) ? eh(a, s, o).map(e => Hx.remove(e.getNode())) : ((e, t, n, o) => ((e, t) => { const n = t.getNode(!e), o = e ? "after" : "before"; return er(n) && n.getAttribute("data-mce-caret") === o; })(t, n) ? ((e, t) => y(t) ? I.none() : e && vr(t.nextSibling) ? I.some(Hx.moveToElement(t.nextSibling)) : !e && vr(t.previousSibling) ? I.some(Hx.moveToElement(t.previousSibling)) : I.none())(t, n.getNode(!t)).orThunk(() => $x(e, t, n, o)) : $x(e, t, n, o).bind(t => ((e, t, n) => n.fold( e => I.some(Hx.remove(e)), e => I.some(Hx.moveToElement(e)), n => (du(t, n, e) ? I.none() : I.some(Hx.moveToPosition(n))) ))(e, n, t) ))(e, t, s, o); })(e.getBody(), t, e.selection.getRng(), e.schema).map( n => () => n.fold( ((e, t) => n => (e._selectionOverrides.hideFakeCaret(), Sh(e, t, Cn(n)), !0))(e, t), ((e, t) => n => { const o = t ? Ji.before(n) : Ji.after(n); return e.selection.setRng(o.toRange()), !0; })(e, t), (e => t => (e.selection.setRng(t.toRange()), !0))(e) ) ), () => I.some(k) ); }, Wx = e => { const t = e.dom, n = e.selection, o = gb(e.getBody(), n.getNode()); if (br(o) && t.isBlock(o) && t.isEmpty(o)) { const e = t.create("br", {"data-mce-bogus": "1"}); t.setHTML(o, ""), o.appendChild(e), n.setRng(Ji.before(e).toRange()); } return !0; }, Kx = (e, t) => e.selection.isCollapsed() ? qx(e, t) : ((e, t) => { const n = e.selection.getNode(); return vr(n) && !yr(n) ? Vx(e, n.parentNode) .filter(vr) .fold( () => I.some(() => { var n; (n = Cn(e.getBody())), q(zo(n, ".mce-offscreen-selection"), Eo), Sh(e, t, Cn(e.selection.getNode())), Fh(e); }), () => I.some(k) ) : jx(e) ? I.some(() => { jh(e, e.selection.getRng(), Cn(e.getBody())); }) : I.none(); })(e, t), Yx = (e, t) => e.selection.isCollapsed() ? ((e, t) => { const n = Ji.fromRangeStart(e.selection.getRng()); return Iu(t, e.getBody(), n) .filter(e => (t ? Op(e) : Bp(e))) .bind(e => cu(t ? 0 : -1, e)) .map(t => () => e.selection.select(t)); })(e, t) : I.none(), Gx = dr, Xx = e => Gx(e) && e.data[0] === Ja, Zx = e => Gx(e) && e.data[e.data.length - 1] === Ja, Qx = e => { var t; return (null !== (t = e.ownerDocument) && void 0 !== t ? t : document).createTextNode(Ja); }, Jx = (e, t) => e ? (e => { var t; if (Gx(e.previousSibling)) return Zx(e.previousSibling) || e.previousSibling.appendData(Ja), e.previousSibling; if (Gx(e)) return Xx(e) || e.insertData(0, Ja), e; { const n = Qx(e); return null === (t = e.parentNode) || void 0 === t || t.insertBefore(n, e), n; } })(t) : (e => { var t, n; if (Gx(e.nextSibling)) return Xx(e.nextSibling) || e.nextSibling.insertData(0, Ja), e.nextSibling; if (Gx(e)) return Zx(e) || e.appendData(Ja), e; { const o = Qx(e); return ( e.nextSibling ? null === (t = e.parentNode) || void 0 === t || t.insertBefore(o, e.nextSibling) : null === (n = e.parentNode) || void 0 === n || n.appendChild(o), o ); } })(t), eE = T(Jx, !0), tE = T(Jx, !1), nE = (e, t) => (dr(e.container()) ? Jx(t, e.container()) : Jx(t, e.getNode())), oE = (e, t) => { const n = t.get(); return n && e.container() === n && si(n); }, rE = (e, t) => t.fold( t => { zc(e.get()); const n = eE(t); return e.set(n), I.some(Ji(n, n.length - 1)); }, t => $u(t).map(t => { if (oE(t, e)) { const t = e.get(); return Ji(t, 1); } { zc(e.get()); const n = nE(t, !0); return e.set(n), Ji(n, 1); } }), t => Vu(t).map(t => { if (oE(t, e)) { const t = e.get(); return Ji(t, t.length - 1); } { zc(e.get()); const n = nE(t, !1); return e.set(n), Ji(n, n.length - 1); } }), t => { zc(e.get()); const n = tE(t); return e.set(n), I.some(Ji(n, 1)); } ), sE = (e, t) => { for (let n = 0; n < e.length; n++) { const o = e[n].apply(null, t); if (o.isSome()) return o; } return I.none(); }, aE = kl([{before: ["element"]}, {start: ["element"]}, {end: ["element"]}, {after: ["element"]}]), iE = (e, t) => lu(t, e) || e, lE = (e, t, n) => { const o = Bh(n), r = iE(t, o.container()); return Th(e, r, o).fold( () => ju(r, o) .bind(T(Th, e, r)) .map(e => aE.before(e)), I.none ); }, dE = (e, t) => null === Ku(e, t), cE = (e, t, n) => Th(e, t, n).filter(T(dE, t)), uE = (e, t, n) => { const o = Ph(n); return cE(e, t, o).bind(e => (Hu(e, o).isNone() ? I.some(aE.start(e)) : I.none())); }, mE = (e, t, n) => { const o = Bh(n); return cE(e, t, o).bind(e => (ju(e, o).isNone() ? I.some(aE.end(e)) : I.none())); }, fE = (e, t, n) => { const o = Ph(n), r = iE(t, o.container()); return Th(e, r, o).fold( () => Hu(r, o) .bind(T(Th, e, r)) .map(e => aE.after(e)), I.none ); }, gE = e => !Ah(hE(e)), pE = (e, t, n) => sE([lE, uE, mE, fE], [e, t, n]).filter(gE), hE = e => e.fold(R, R, R, R), bE = e => e.fold(N("before"), N("start"), N("end"), N("after")), vE = e => e.fold(aE.before, aE.before, aE.after, aE.after), yE = e => e.fold(aE.start, aE.start, aE.end, aE.end), CE = (e, t, n, o, r, s) => It(Th(t, n, o), Th(t, n, r), (t, o) => t !== o && ((e, t, n) => { const o = lu(t, e), r = lu(n, e); return C(o) && o === r; })(n, t, o) ? aE.after(e ? t : o) : s ).getOr(s), wE = (e, t) => e.fold(M, e => { return (o = t), !(bE((n = e)) === bE(o) && hE(n) === hE(o)); var n, o; }), xE = (e, t) => e ? t.fold(_(I.some, aE.start), I.none, _(I.some, aE.after), I.none) : t.fold(I.none, _(I.some, aE.before), I.none, _(I.some, aE.end)), EE = (e, t, n) => { const o = e ? 1 : -1; return ( t.setRng(Ji(n.container(), n.offset() + o).toRange()), t.getSel().modify("move", e ? "forward" : "backward", "word"), !0 ); }; var kE; !(function (e) { (e[(e.Br = 0)] = "Br"), (e[(e.Block = 1)] = "Block"), (e[(e.Wrap = 2)] = "Wrap"), (e[(e.Eol = 3)] = "Eol"); })(kE || (kE = {})); const _E = (e, t) => (e === xu.Backwards ? oe(t) : t), SE = (e, t, n) => (e === xu.Forwards ? t.next(n) : t.prev(n)), NE = (e, t, n, o) => (pr(o.getNode(t === xu.Forwards)) ? kE.Br : !1 === du(n, o) ? kE.Block : kE.Wrap), RE = (e, t, n, o) => { const r = Pu(n); let s = o; const a = []; for (; s; ) { const n = SE(t, r, s); if (!n) break; if (pr(n.getNode(!1))) return t === xu.Forwards ? {positions: _E(t, a).concat([n]), breakType: kE.Br, breakAt: I.some(n)} : {positions: _E(t, a), breakType: kE.Br, breakAt: I.some(n)}; if (n.isVisible()) { if (e(s, n)) { const e = NE(0, t, s, n); return {positions: _E(t, a), breakType: e, breakAt: I.some(n)}; } a.push(n), (s = n); } else s = n; } return {positions: _E(t, a), breakType: kE.Eol, breakAt: I.none()}; }, AE = (e, t, n, o) => t(n, o) .breakAt.map(o => { const r = t(n, o).positions; return e === xu.Backwards ? r.concat(o) : [o].concat(r); }) .getOr([]), TE = (e, t) => X( e, (e, n) => e.fold( () => I.some(n), o => It(le(o.getClientRects()), le(n.getClientRects()), (e, r) => { const s = Math.abs(t - e.left); return Math.abs(t - r.left) <= s ? n : o; }).or(e) ), I.none() ), OE = (e, t) => le(t.getClientRects()).bind(t => TE(e, t.left)), BE = T(RE, Ji.isAbove, -1), PE = T(RE, Ji.isBelow, 1), DE = T(AE, -1, BE), LE = T(AE, 1, PE), ME = (e, t) => BE(e, t).breakAt.isNone(), IE = (e, t) => PE(e, t).breakAt.isNone(), FE = (e, t) => OE(DE(e, t), t), UE = (e, t) => OE(LE(e, t), t), zE = vr, jE = (e, t) => Math.abs(e.left - t), HE = (e, t) => Math.abs(e.right - t), $E = (e, t) => Be(e, (e, n) => { const o = Math.min(jE(e, t), HE(e, t)), r = Math.min(jE(n, t), HE(n, t)); return (r === o && _e(n, "node") && zE(n.node)) || r < o ? n : e; }), VE = e => { const t = t => V(t, t => { const n = pi(t); return (n.node = e), n; }); if (er(e)) return t(e.getClientRects()); if (dr(e)) { const n = e.ownerDocument.createRange(); return n.setStart(e, 0), n.setEnd(e, e.data.length), t(n.getClientRects()); } return []; }, qE = e => te(e, VE); var WE; !(function (e) { (e[(e.Up = -1)] = "Up"), (e[(e.Down = 1)] = "Down"); })(WE || (WE = {})); const KE = (e, t, n, o, r, s) => { let a = 0; const i = [], l = o => { let s = qE([o]); -1 === e && (s = s.reverse()); for (let e = 0; e < s.length; e++) { const o = s[e]; if (!n(o, d)) { if ((i.length > 0 && t(o, De(i)) && a++, (o.line = a), r(o))) return !0; i.push(o); } } return !1; }, d = De(s.getClientRects()); if (!d) return i; const c = s.getNode(); return ( c && (l(c), ((e, t, n, o) => { let r = o; for (; (r = iu(r, e, Li, t)); ) if (n(r)) return; })(e, o, l, c)), i ); }, YE = T(KE, WE.Up, vi, yi), GE = T(KE, WE.Down, yi, vi), XE = e => De(e.getClientRects()), ZE = e => t => ((e, t) => t.line > e)(e, t), QE = e => t => ((e, t) => t.line === e)(e, t), JE = (e, t) => { e.selection.setRng(t), vg(e, e.selection.getRng()); }, ek = (e, t, n) => I.some(Lx(e, t, n)), tk = (e, t, n, o, r, s) => { const a = t === xu.Forwards, i = Pu(e.getBody()), l = T(Cu, a ? i.next : i.prev), d = a ? o : r; if (!n.collapsed) { const o = wi(n); if (s(o)) return Px(t, e, o, t === xu.Backwards, !1); if (jx(e)) { const e = n.cloneRange(); return e.collapse(t === xu.Backwards), I.from(e); } } const c = vu(t, e.getBody(), n); if (d(c)) return Dx(e, c.getNode(!a)); let u = l(c); const m = fi(n); if (!u) return m ? I.some(n) : I.none(); if (((u = Oh(a, u)), d(u))) return Px(t, e, u.getNode(!a), a, !1); const f = l(u); return f && d(f) && wu(u, f) ? Px(t, e, f.getNode(!a), a, !1) : m ? ek(e, u.toRange(), !1) : I.none(); }, nk = (e, t, n, o, r, s) => { const a = vu(t, e.getBody(), n), i = De(a.getClientRects()), l = t === WE.Down, d = e.getBody(); if (!i) return I.none(); if (jx(e)) { const e = l ? Ji.fromRangeEnd(n) : Ji.fromRangeStart(n); return (l ? UE : FE)(d, e) .orThunk(() => I.from(e)) .map(e => e.toRange()); } const c = (l ? GE : YE)(d, ZE(1), a), u = Y(c, QE(1)), m = i.left, f = $E(u, m); if (f && s(f.node)) { const n = Math.abs(m - f.left), o = Math.abs(m - f.right); return Px(t, e, f.node, n < o, !1); } let g; if (((g = o(a) ? a.getNode() : r(a) ? a.getNode(!0) : wi(n)), g)) { const n = ((e, t, n, o) => { const r = Pu(t); let s, a, i, l; const d = []; let c = 0; 1 === e ? ((s = r.next), (a = yi), (i = vi), (l = Ji.after(o))) : ((s = r.prev), (a = vi), (i = yi), (l = Ji.before(o))); const u = XE(l); do { if (!l.isVisible()) continue; const e = XE(l); if (i(e, u)) continue; d.length > 0 && a(e, De(d)) && c++; const t = pi(e); if (((t.position = l), (t.line = c), n(t))) return d; d.push(t); } while ((l = s(l))); return d; })(t, d, ZE(1), g); let o = $E(Y(n, QE(1)), m); if (o) return ek(e, o.position.toRange(), !1); if (((o = De(Y(n, QE(0)))), o)) return ek(e, o.position.toRange(), !1); } return 0 === u.length ? ok(e, l) .filter(l ? r : o) .map(t => Lx(e, t.toRange(), !1)) : I.none(); }, ok = (e, t) => { const n = e.selection.getRng(), o = t ? Ji.fromRangeEnd(n) : Ji.fromRangeStart(n), r = ((s = o.container()), (a = e.getBody()), Qn( Cn(s), e => Gc(e.dom), e => e.dom === a ) .map(e => e.dom) .getOr(a)); var s, a; if (t) { const e = PE(r, o); return de(e.positions); } { const e = BE(r, o); return le(e.positions); } }, rk = (e, t, n) => ok(e, t) .filter(n) .exists(t => (e.selection.setRng(t.toRange()), !0)), sk = (e, t) => { const n = e.dom.createRng(); n.setStart(t.container(), t.offset()), n.setEnd(t.container(), t.offset()), e.selection.setRng(n); }, ak = (e, t) => { e ? t.setAttribute("data-mce-selected", "inline-boundary") : t.removeAttribute("data-mce-selected"); }, ik = (e, t, n) => rE(t, n).map(t => (sk(e, t), n)), lk = (e, t, n) => { const o = e.getBody(), r = ((e, t, n) => { const o = Ji.fromRangeStart(e); if (e.collapsed) return o; { const r = Ji.fromRangeEnd(e); return n ? Hu(t, r).getOr(r) : ju(t, o).getOr(o); } })(e.selection.getRng(), o, n); return ((e, t, n, o) => { const r = Oh(e, o), s = pE(t, n, r); return pE(t, n, r) .bind(T(xE, e)) .orThunk(() => ((e, t, n, o, r) => { const s = Oh(e, r); return Iu(e, n, s) .map(T(Oh, e)) .fold( () => o.map(vE), r => pE(t, n, r).map(T(CE, e, t, n, s, r)).filter(T(wE, o)) ) .filter(gE); })(e, t, n, s, o) ); })(n, T(Rh, e), o, r).bind(n => ik(e, t, n)); }, dk = (e, t, n) => !!Rd(e) && lk(e, t, n).isSome(), ck = (e, t, n) => !!Rd(t) && ((e, t) => { const n = t.selection.getRng(), o = e ? Ji.fromRangeEnd(n) : Ji.fromRangeStart(n); return ( !!(e => w(e.selection.getSel().modify))(t) && (e && li(o) ? EE(!0, t.selection, o) : !(e || !di(o)) && EE(!1, t.selection, o)) ); })(e, t), uk = e => { const t = Br(null), n = T(Rh, e); return ( e.on("NodeChange", o => { Rd(e) && (((e, t, n) => { const o = V(zo(Cn(t.getRoot()), '*[data-mce-selected="inline-boundary"]'), e => e.dom), r = Y(o, e), s = Y(n, e); q(re(r, s), T(ak, !1)), q(re(s, r), T(ak, !0)); })(n, e.dom, o.parents), ((e, t) => { const n = t.get(); if (e.selection.isCollapsed() && !e.composing && n) { const o = Ji.fromRangeStart(e.selection.getRng()); Ji.isTextPosition(o) && !(e => li(e) || di(e))(o) && (sk(e, Uc(n, o)), t.set(null)); } })(e, t), ((e, t, n, o) => { if (t.selection.isCollapsed()) { const r = Y(o, e); q(r, o => { const r = Ji.fromRangeStart(t.selection.getRng()); pE(e, t.getBody(), r).bind(e => ik(t, n, e)); }); } })(n, e, t, o.parents)); }), t ); }, mk = T(ck, !0), fk = T(ck, !1), gk = (e, t, n) => { if (Rd(e)) { const o = ok(e, t).getOrThunk(() => { const n = e.selection.getRng(); return t ? Ji.fromRangeEnd(n) : Ji.fromRangeStart(n); }); return pE(T(Rh, e), e.getBody(), o).exists(t => { const o = vE(t); return rE(n, o).exists(t => (sk(e, t), !0)); }); } return !1; }, pk = (e, t) => n => rE(t, n).map(t => () => sk(e, t)), hk = (e, t, n, o) => { const r = e.getBody(), s = T(Rh, e); e.undoManager.ignore(() => { e.selection.setRng( ((e, t) => { const n = document.createRange(); return n.setStart(e.container(), e.offset()), n.setEnd(t.container(), t.offset()), n; })(n, o) ), Lh(e), pE(s, r, Ji.fromRangeStart(e.selection.getRng())).map(yE).bind(pk(e, t)).each(D); }), e.nodeChanged(); }, bk = (e, t, n) => { if (e.selection.isCollapsed() && Rd(e)) { const o = Ji.fromRangeStart(e.selection.getRng()); return ((e, t, n, o) => { const r = ((e, t) => lu(t, e) || e)(e.getBody(), o.container()), s = T(Rh, e), a = pE(s, r, o); return a .bind(e => n ? e.fold(N(I.some(yE(e))), I.none, N(I.some(vE(e))), I.none) : e.fold(I.none, N(I.some(vE(e))), I.none, N(I.some(yE(e)))) ) .map(pk(e, t)) .getOrThunk(() => { const i = Fu(n, r, o), l = i.bind(e => pE(s, r, e)); return It(a, l, () => Th(s, r, o).bind(t => (e => It($u(e), Vu(e), (t, n) => { const o = Oh(!0, t), r = Oh(!1, n); return ju(e, o).forall(e => e.isEqual(r)); }).getOr(!0))(t) ? I.some(() => { Sh(e, n, Cn(t)); }) : I.none() ) ).getOrThunk(() => l.bind(() => i.map(r => () => { n ? hk(e, t, o, r) : hk(e, t, r, o); }) ) ); }); })(e, t, n, o); } return I.none(); }, vk = (e, t) => { const n = Cn(e.getBody()), o = Cn(e.selection.getStart()), r = zp(o, n); return J(r, t).fold(N(r), e => r.slice(0, e)); }, yk = e => 1 === jn(e), Ck = (e, t) => { const n = T(sv, e); return te(t, e => (n(e) ? [e.dom] : [])); }, wk = e => { const t = (e => vk(e, t => e.schema.isBlock($t(t))))(e); return Ck(e, t); }, xk = (e, t) => { const n = Y((e => vk(e, t => e.schema.isBlock($t(t)) || (e => jn(e) > 1)(t)))(e), yk); return de(n).bind(o => { const r = Ji.fromRangeStart(e.selection.getRng()); return Uh(t, r, o.dom) && !Hm(o) ? I.some(() => ((e, t, n, o) => { const r = Ck(t, o); if (0 === r.length) Sh(t, e, n); else { const e = rv(n.dom, r); t.selection.setRng(e.toRange()); } })(t, e, o, n) ) : I.none(); }); }, Ek = (e, t) => { const n = e.selection.getStart(), o = ((e, t) => { const n = t.parentElement; return pr(t) && !h(n) && e.dom.isEmpty(n); })(e, n) || Hm(Cn(n)) ? rv(n, t) : ((e, t) => { const {caretContainer: n, caretPosition: o} = ov(t); return e.insertNode(n.dom), o; })(e.selection.getRng(), t); e.selection.setRng(o.toRange()); }, kk = e => dr(e.startContainer), _k = e => { const t = e.selection.getRng(); return ( (e => 0 === e.startOffset && kk(e))(t) && ((e, t) => { const n = t.startContainer.parentElement; return !h(n) && sv(e, Cn(n)); })(e, t) && (e => (e => (e => { const t = e.startContainer.parentNode, n = e.endContainer.parentNode; return !h(t) && !h(n) && t.isEqualNode(n); })(e) && (e => { const t = e.endContainer; return e.endOffset === (dr(t) ? t.length : t.childNodes.length); })(e))(e) || (e => !e.endContainer.isEqualNode(e.commonAncestorContainer))(e))(t) ); }, Sk = (e, t) => e.selection.isCollapsed() ? xk(e, t) : (e => { if (_k(e)) { const t = wk(e); return I.some(() => { Lh(e), ((e, t) => { const n = re(t, wk(e)); n.length > 0 && Ek(e, n); })(e, t); }); } return I.none(); })(e), Nk = e => ( (e => { const t = e.selection.getRng(); return ( t.collapsed && (kk(t) || e.dom.isEmpty(t.startContainer)) && !(e => { return ( (t = Cn(e.selection.getStart())), (n = e.schema), jo( t, e => Wu(e.dom), e => n.isBlock($t(e)) ) ); var t, n; })(e) ); })(e) && Ek(e, []), !0 ), Rk = (e, t, n) => C(n) ? I.some(() => { e._selectionOverrides.hideFakeCaret(), Sh(e, t, Cn(n)); }) : I.none(), Ak = (e, t) => e.selection.isCollapsed() ? ((e, t) => { const n = t ? Pp : Dp, o = t ? xu.Forwards : xu.Backwards, r = vu(o, e.getBody(), e.selection.getRng()); return n(r) ? Rk(e, t, r.getNode(!t)) : I.from(Oh(t, r)) .filter(e => n(e) && wu(r, e)) .bind(n => Rk(e, t, n.getNode(!t))); })(e, t) : ((e, t) => { const n = e.selection.getNode(); return wr(n) ? Rk(e, t, n) : I.none(); })(e, t), Tk = e => Ze(null != e ? e : "").getOr(0), Ok = (e, t) => (e || "table" === $t(t) ? "margin" : "padding") + ("rtl" === uo(t, "direction") ? "-right" : "-left"), Bk = e => { const t = Dk(e); return ( !e.mode.isReadOnly() && (t.length > 1 || ((e, t) => ne(t, t => { const n = Ok(md(e), t), o = fo(t, n).map(Tk).getOr(0); return "false" !== e.dom.getContentEditable(t.dom) && o > 0; }))(e, t)) ); }, Pk = e => Wa(e) || Ka(e), Dk = e => Y( _o(e.selection.getSelectedBlocks()), e => !Pk(e) && !(e => Tn(e).exists(Pk))(e) && Jn(e, e => br(e.dom) || vr(e.dom)).exists(e => br(e.dom)) ), Lk = (e, t) => { var n, o; const {dom: r} = e, s = fd(e), a = null !== (o = null === (n = /[a-z%]+$/i.exec(s)) || void 0 === n ? void 0 : n[0]) && void 0 !== o ? o : "px", i = Tk(s), l = md(e); q(Dk(e), e => { ((e, t, n, o, r, s) => { const a = Ok(n, Cn(s)), i = Tk(e.getStyle(s, a)); if ("outdent" === t) { const t = Math.max(0, i - o); e.setStyle(s, a, t ? t + r : ""); } else { const t = i + o + r; e.setStyle(s, a, t); } })(r, t, l, i, a, e.dom); }); }, Mk = e => Lk(e, "outdent"), Ik = e => { if (e.selection.isCollapsed() && Bk(e)) { const t = e.dom, n = e.selection.getRng(), o = Ji.fromRangeStart(n), r = t.getParent(n.startContainer, t.isBlock); if (null !== r && qp(Cn(r), o, e.schema)) return I.some(() => Mk(e)); } return I.none(); }, Fk = (e, t, n) => ue([Ik, Kx, Ux, (e, n) => bk(e, t, n), Ax, fb, Yx, Ak, Bx, Sk], t => t(e, n)).filter(t => e.selection.isEditable() ), Uk = (e, t) => { e.addCommand("delete", () => { ((e, t) => { Fk(e, t, !1).fold(() => { e.selection.isEditable() && (Lh(e), Fh(e)); }, D); })(e, t); }), e.addCommand("forwardDelete", () => { ((e, t) => { Fk(e, t, !0).fold(() => { e.selection.isEditable() && (e => { Dh(e, "ForwardDelete"); })(e); }, D); })(e, t); }); }, zk = e => (void 0 === e.touches || 1 !== e.touches.length ? I.none() : I.some(e.touches[0])), jk = (e, t) => ke(e, t.nodeName), Hk = (e, t) => !!dr(t) || (!!er(t) && !(jk(e.getBlockElements(), t) || sm(t) || Zr(e, t) || Ir(t))), $k = (e, t) => { if (dr(t)) { if (0 === t.data.length) return !0; if (/^\s+$/.test(t.data)) return !t.nextSibling || jk(e, t.nextSibling) || Ir(t.nextSibling); } return !1; }, Vk = e => e.dom.create(Wl(e), Kl(e)), qk = e => { const t = e.dom, n = e.selection, o = e.schema, r = o.getBlockElements(), s = n.getStart(), a = e.getBody(); let i, l, d = !1; const c = Wl(e); if (!s || !er(s)) return; const u = a.nodeName.toLowerCase(); if (!o.isValidChild(u, c.toLowerCase()) || ((e, t, n) => $(Up(Cn(n), Cn(t)), t => jk(e, t.dom)))(r, a, s)) return; const m = n.getRng(), {startContainer: f, startOffset: g, endContainer: p, endOffset: h} = m, b = jg(e); let v = a.firstChild; for (; v; ) if ((er(v) && Kr(o, v), Hk(o, v))) { if ($k(r, v)) { (l = v), (v = v.nextSibling), t.remove(l); continue; } i || ((i = Vk(e)), a.insertBefore(i, v), (d = !0)), (l = v), (v = v.nextSibling), i.appendChild(l); } else (i = null), (v = v.nextSibling); d && b && (m.setStart(f, g), m.setEnd(p, h), n.setRng(m), e.nodeChanged()); }, Wk = (e, t, n) => { const o = Cn(Vk(e)), r = Za(); yo(o, r), n(t, o); const s = document.createRange(); return s.setStartBefore(r.dom), s.setEndBefore(r.dom), s; }, Kk = e => t => -1 !== (" " + t.attr("class") + " ").indexOf(e), Yk = (e, t, n) => function (o) { const r = arguments, s = r[r.length - 2], a = s > 0 ? t.charAt(s - 1) : ""; if ('"' === a) return o; if (">" === a) { const e = t.lastIndexOf("<", s); if (-1 !== e && -1 !== t.substring(e, s).indexOf('contenteditable="false"')) return o; } return ( '' + e.dom.encode("string" == typeof r[1] ? r[1] : r[0]) + "" ); }, Gk = (e, t) => { t.hasAttribute("data-mce-caret") && (mi(t), e.selection.setRng(e.selection.getRng()), e.selection.scrollIntoView(t)); }, Xk = (e, t) => { const n = (e => no(Cn(e.getBody()), "*[data-mce-caret]") .map(e => e.dom) .getOrNull())(e); if (n) return "compositionstart" === t.type ? (t.preventDefault(), t.stopPropagation(), void Gk(e, n)) : void (ii(n) && (Gk(e, n), e.undoManager.add())); }, Zk = vr, Qk = (e, t, n) => { const o = Pu(e.getBody()), r = T(Cu, 1 === t ? o.next : o.prev); if (n.collapsed) { const o = e.dom.getParent(n.startContainer, "PRE"); if (!o) return; if (!r(Ji.fromRangeStart(n))) { const n = Cn( (e => { const t = e.dom.create(Wl(e)); return (t.innerHTML = '
    '), t; })(e) ); 1 === t ? bo(Cn(o), n) : ho(Cn(o), n), e.selection.select(n.dom, !0), e.selection.collapse(); } } }, Jk = (e, t) => ((e, t) => { const n = t ? xu.Forwards : xu.Backwards, o = e.selection.getRng(); return ((e, t, n) => tk(t, e, n, Ip, Fp, Zk))(n, e, o).orThunk(() => (Qk(e, n, o), I.none())); })( e, ((e, t) => { const n = t ? e.getEnd(!0) : e.getStart(!0); return Ah(n) ? !t : t; })(e.selection, t) ).exists(t => (JE(e, t), !0)), e_ = (e, t) => ((e, t) => { const n = t ? 1 : -1, o = e.selection.getRng(); return ((e, t, n) => nk( t, e, n, e => Ip(e) || Lp(e), e => Fp(e) || Mp(e), Zk ))(n, e, o).orThunk(() => (Qk(e, n, o), I.none())); })(e, t).exists(t => (JE(e, t), !0)), t_ = (e, t) => rk(e, t, t ? Fp : Ip), n_ = (e, t) => zx(e, !t) .map(n => { const o = n.toRange(), r = e.selection.getRng(); return t ? o.setStart(r.startContainer, r.startOffset) : o.setEnd(r.endContainer, r.endOffset), o; }) .exists(t => (JE(e, t), !0)), o_ = e => H(["figcaption"], $t(e)), r_ = (e, t) => !!e.selection.isCollapsed() && ((e, t) => { const n = Cn(e.getBody()), o = Ji.fromRangeStart(e.selection.getRng()); return ((e, t, n) => { const o = T(_n, t); return Jn(Cn(e.container()), e => n.isBlock($t(e)), o).filter(o_); })(o, n, e.schema).exists(() => { if (((e, t, n) => (t ? IE(e.dom, n) : ME(e.dom, n)))(n, t, o)) { const o = Wk(e, n, t ? yo : vo); return e.selection.setRng(o), !0; } return !1; }); })(e, t), s_ = (e, t) => ((e, t) => t ? I.from(e.dom.getParent(e.selection.getNode(), "details")) .map(t => ((e, t) => { const n = e.selection.getRng(), o = Ji.fromRangeStart(n); return !(e.getBody().lastChild !== t || !IE(t, o) || (e.execCommand("InsertNewBlockAfter"), 0)); })(e, t) ) .getOr(!1) : I.from(e.dom.getParent(e.selection.getNode(), "summary")) .bind(t => I.from(e.dom.getParent(t, "details")).map(n => ((e, t, n) => { const o = e.selection.getRng(), r = Ji.fromRangeStart(o); return !(e.getBody().firstChild !== t || !ME(n, r) || (e.execCommand("InsertNewBlockBefore"), 0)); })(e, n, t) ) ) .getOr(!1))(e, t), a_ = {shiftKey: !1, altKey: !1, ctrlKey: !1, metaKey: !1, keyCode: 0}, i_ = (e, t) => t.keyCode === e.keyCode && t.shiftKey === e.shiftKey && t.altKey === e.altKey && t.ctrlKey === e.ctrlKey && t.metaKey === e.metaKey, l_ = (e, ...t) => () => e.apply(null, t), d_ = (e, t) => Q(((e, t) => te((e => V(e, e => ({...a_, ...e})))(e), e => (i_(e, t) ? [e] : [])))(e, t), e => e.action()), c_ = (e, t) => ue(((e, t) => te((e => V(e, e => ({...a_, ...e})))(e), e => (i_(e, t) ? [e] : [])))(e, t), e => e.action()), u_ = (e, t) => { const n = t ? xu.Forwards : xu.Backwards, o = e.selection.getRng(); return tk(e, n, o, Pp, Dp, wr).exists(t => (JE(e, t), !0)); }, m_ = (e, t) => { const n = t ? 1 : -1, o = e.selection.getRng(); return nk(e, n, o, Pp, Dp, wr).exists(t => (JE(e, t), !0)); }, f_ = (e, t) => rk(e, t, t ? Dp : Pp), g_ = kl([{none: ["current"]}, {first: ["current"]}, {middle: ["current", "target"]}, {last: ["current"]}]), p_ = {...g_, none: e => g_.none(e)}, h_ = (e, t, n) => te(In(e), e => (En(e, t) ? (n(e) ? [e] : []) : h_(e, t, n))), b_ = (e, t) => oo(e, "table", t), v_ = (e, t, n, o, r = M) => { const s = 1 === o; if (!s && n <= 0) return p_.first(e[0]); if (s && n >= e.length - 1) return p_.last(e[e.length - 1]); { const s = n + o, a = e[s]; return r(a) ? p_.middle(t, a) : v_(e, t, s, o, r); } }, y_ = (e, t) => b_(e, t).bind(t => { const n = h_(t, "th,td", M); return J(n, t => _n(e, t)).map(e => ({index: e, all: n})); }), C_ = ["img", "br"], w_ = e => { return ( ((t = e), ja.getOption(t)).filter(e => 0 !== e.trim().length || e.indexOf(Wo) > -1).isSome() || H(C_, $t(e)) || (e => Wt(e) && "false" === tn(e, "contenteditable"))(e) ); var t; }, x_ = (e, t, n, o, r) => { const s = zo(Cn(n), "td,th,caption").map(e => e.dom), a = Y( ((e, t) => te(t, t => { const n = ((e, t) => ({ left: e.left - t, top: e.top - t, right: e.right + -2, bottom: e.bottom + -2, width: e.width + t, height: e.height + t }))(pi(t.getBoundingClientRect()), -1); return [ {x: n.left, y: e(n), cell: t}, {x: n.right, y: e(n), cell: t} ]; }))(e, s), e => t(e, r) ); return ((e, t, n) => X( e, (e, o) => e.fold( () => I.some(o), e => { const r = Math.sqrt(Math.abs(e.x - t) + Math.abs(e.y - n)), s = Math.sqrt(Math.abs(o.x - t) + Math.abs(o.y - n)); return I.some(s < r ? o : e); } ), I.none() ))(a, o, r).map(e => e.cell); }, E_ = T( x_, e => e.bottom, (e, t) => e.y < t ), k_ = T( x_, e => e.top, (e, t) => e.y > t ), __ = (e, t, n) => { const o = e(t, n); return (e => e.breakType === kE.Wrap && 0 === e.positions.length)(o) || (!pr(n.getNode()) && (e => e.breakType === kE.Br && 1 === e.positions.length)(o)) ? !((e, t, n) => n.breakAt.exists(n => e(t, n).breakAt.isSome()))(e, t, o) : o.breakAt.isNone(); }, S_ = T(__, BE), N_ = T(__, PE), R_ = (e, t, n, o) => { const r = e.selection.getRng(), s = t ? 1 : -1; return !( !Wc() || !((e, t, n) => { const o = Ji.fromRangeStart(t); return zu(!e, n).exists(e => e.isEqual(o)); })(t, r, n) || (Px(s, e, n, !t, !1).each(t => { JE(e, t); }), 0) ); }, A_ = (e, t, n) => { const o = ((e, t) => { const n = t.getNode(e); return ar(n) ? I.some(n) : I.none(); })(!!t, n), r = !1 === t; o.fold( () => JE(e, n.toRange()), o => zu(r, e.getBody()) .filter(e => e.isEqual(n)) .fold( () => JE(e, n.toRange()), n => ((e, t, n) => { t.undoManager.transact(() => { const o = e ? bo : ho, r = Wk(t, Cn(n), o); JE(t, r); }); })(t, e, o) ) ); }, T_ = (e, t, n, o) => { const r = e.selection.getRng(), s = Ji.fromRangeStart(r), a = e.getBody(); if (!t && S_(o, s)) { const o = ((e, t, n) => ((e, t) => le(t.getClientRects()) .bind(t => E_(e, t.left, t.top)) .bind(e => { return OE( Vu((n = e)) .map(e => BE(n, e).positions.concat(e)) .getOr([]), t ); var n; }))(t, n) .orThunk(() => le(n.getClientRects()).bind(n => TE(DE(e, Ji.before(t)), n.left))) .getOr(Ji.before(t)))(a, n, s); return A_(e, t, o), !0; } if (t && N_(o, s)) { const o = ((e, t, n) => ((e, t) => de(t.getClientRects()) .bind(t => k_(e, t.left, t.top)) .bind(e => { return OE( $u((n = e)) .map(e => [e].concat(PE(n, e).positions)) .getOr([]), t ); var n; }))(t, n) .orThunk(() => le(n.getClientRects()).bind(n => TE(LE(e, Ji.after(t)), n.left))) .getOr(Ji.after(t)))(a, n, s); return A_(e, t, o), !0; } return !1; }, O_ = (e, t, n) => I.from(e.dom.getParent(e.selection.getNode(), "td,th")) .bind(o => I.from(e.dom.getParent(o, "table")).map(r => n(e, t, r, o))) .getOr(!1), B_ = (e, t) => O_(e, t, R_), P_ = (e, t) => O_(e, t, T_), D_ = (e, t, n) => n.fold( I.none, I.none, (e, t) => { return ((n = t), eo(n, w_)).map(e => (e => { const t = Lf.exact(e, 0, e, 0); return zf(t); })(e) ); var n; }, n => (e.execCommand("mceTableInsertRowAfter"), L_(e, t, n)) ), L_ = (e, t, n) => { return D_( e, t, ((r = ro), y_((o = n), void 0).fold( () => p_.none(o), e => v_(e.all, o, e.index, 1, r) )) ); var o, r; }, M_ = (e, t, n) => { return D_( e, t, ((r = ro), y_((o = n), void 0).fold( () => p_.none(), e => v_(e.all, o, e.index, -1, r) )) ); var o, r; }, I_ = (e, t) => { const n = ["table", "li", "dl"], o = Cn(e.getBody()), r = e => { const t = $t(e); return _n(e, o) || H(n, t); }, s = e.selection.getRng(); return ((e, t) => ((e, t, n = L) => n(t) ? I.none() : H(e, $t(t)) ? I.some(t) : to(t, e.join(","), e => En(e, "table") || n(e)))( ["td", "th"], e, t ))(Cn(t ? s.endContainer : s.startContainer), r) .map( n => ( b_(n, r).each(t => { e.model.table.clearSelectedCells(t.dom); }), e.selection.collapse(!t), (t ? L_ : M_)(e, r, n).each(t => { e.selection.setRng(t); }), !0 ) ) .getOr(!1); }, F_ = (e, t) => ({container: e, offset: t}), U_ = fa.DOM, z_ = e => t => e === t ? -1 : 0, j_ = (e, t, n) => { if (dr(e) && t >= 0) return I.some(F_(e, t)); { const o = za(U_); return I.from(o.backwards(e, t, z_(e), n)).map(e => F_(e.container, e.container.data.length)); } }, H_ = (e, t, n) => { if (!dr(e)) return I.none(); const o = e.data; if (t >= 0 && t <= o.length) return I.some(F_(e, t)); { const o = za(U_); return I.from(o.backwards(e, t, z_(e), n)).bind(e => { const o = e.container.data; return H_(e.container, t + o.length, n); }); } }, $_ = (e, t, n) => { if (!dr(e)) return I.none(); const o = e.data; if (t <= o.length) return I.some(F_(e, t)); { const r = za(U_); return I.from(r.forwards(e, t, z_(e), n)).bind(e => $_(e.container, t - o.length, n)); } }, V_ = (e, t, n, o, r) => { const s = za( e, ( e => t => e.isBlock(t) || H(["BR", "IMG", "HR", "INPUT"], t.nodeName) || "false" === e.getContentEditable(t) )(e) ); return I.from(s.backwards(t, n, o, r)); }, q_ = e => "" !== e && -1 !== " \xa0\f\n\r\t\v".indexOf(e), W_ = (e, t) => e.substring(t.length), K_ = (e, t, n, o = !1) => { if (!(r = t).collapsed || !dr(r.startContainer)) return I.none(); var r; const s = {text: "", offset: 0}, a = e.getParent(t.startContainer, e.isBlock) || e.getRoot(); return V_( e, t.startContainer, t.startOffset, (e, t, r) => ( (s.text = r + s.text), (s.offset += t), ((e, t, n, o = !1) => { let r; const s = n.charAt(0); for (r = t - 1; r >= 0; r--) { const a = e.charAt(r); if (!o && q_(a)) return I.none(); if (s === a && He(e, n, r, t)) break; } return I.some(r); })(s.text, s.offset, n, o).getOr(t) ), a ).bind(e => { const o = t.cloneRange(); if ((o.setStart(e.container, e.offset), o.setEnd(t.endContainer, t.endOffset), o.collapsed)) return I.none(); const r = (e => ti(e.toString().replace(/\u00A0/g, " ")))(o); return 0 !== r.lastIndexOf(n) ? I.none() : I.some({text: W_(r, n), range: o, trigger: n}); }); }, Y_ = e => { if ((e => 3 === e.nodeType)(e)) return F_(e, e.data.length); { const t = e.childNodes; return t.length > 0 ? Y_(t[t.length - 1]) : F_(e, t.length); } }, G_ = (e, t) => { const n = e.childNodes; return n.length > 0 && t < n.length ? G_(n[t], 0) : n.length > 0 && (e => 1 === e.nodeType)(e) && n.length === t ? Y_(n[n.length - 1]) : F_(e, t); }, X_ = (e, t, n, o = {}) => { var r; const s = t(), a = null !== (r = e.selection.getRng().startContainer.nodeValue) && void 0 !== r ? r : "", i = Y( s.lookupByTrigger(n.trigger), t => n.text.length >= t.minChars && t.matches.getOrThunk(() => (e => t => { const n = G_(t.startContainer, t.startOffset); return !((e, t) => { var n; const o = null !== (n = e.getParent(t.container, e.isBlock)) && void 0 !== n ? n : e.getRoot(); return V_(e, t.container, t.offset, (e, t) => (0 === t ? -1 : t), o) .filter(e => { const t = e.container.data.charAt(e.offset - 1); return !q_(t); }) .isSome(); })(e, n); })(e.dom) )(n.range, a, n.text) ); if (0 === i.length) return I.none(); const l = Promise.all( V(i, e => e.fetch(n.text, e.maxResults, o).then(t => ({ matchText: n.text, items: t, columns: e.columns, onAction: e.onAction, highlightOn: e.highlightOn })) ) ); return I.some({lookupData: l, context: n}); }; var Z_; !(function (e) { (e[(e.Error = 0)] = "Error"), (e[(e.Value = 1)] = "Value"); })(Z_ || (Z_ = {})); const Q_ = (e, t, n) => (e.stype === Z_.Error ? t(e.serror) : n(e.svalue)), J_ = e => ({stype: Z_.Value, svalue: e}), eS = e => ({stype: Z_.Error, serror: e}), tS = Q_, nS = e => (f(e) && fe(e).length > 100 ? " removed due to size" : JSON.stringify(e, null, 2)), oS = (e, t) => eS([{path: e, getErrorInfo: t}]), rS = (e, t) => ({ extract: (n, o) => Ee(o, e).fold( () => ((e, t) => oS(e, () => 'Choice schema did not contain choice key: "' + t + '"'))(n, e), e => ((e, t, n, o) => Ee(n, o).fold( () => ((e, t, n) => oS(e, () => 'The chosen schema: "' + n + '" did not exist in branches: ' + nS(t)))( e, n, o ), n => n.extract(e.concat(["branch: " + o]), t) ))(n, o, t, e) ), toString: () => "chooseOn(" + e + "). Possible values: " + fe(t) }), sS = e => (...t) => { if (0 === t.length) throw new Error("Can't merge zero objects"); const n = {}; for (let o = 0; o < t.length; o++) { const r = t[o]; for (const t in r) ke(r, t) && (n[t] = e(n[t], r[t])); } return n; }, aS = sS((e, t) => (g(e) && g(t) ? aS(e, t) : t)), iS = (sS((e, t) => t), e => ({tag: "defaultedThunk", process: N(e)})), lS = e => { const t = (e => { const t = [], n = []; return ( q(e, e => { Q_( e, e => n.push(e), e => t.push(e) ); }), {values: t, errors: n} ); })(e); return t.errors.length > 0 ? ((n = t.errors), _(eS, ee)(n)) : J_(t.values); var n; }, dS = (e, t, n) => { switch (e.tag) { case "field": return t(e.key, e.newKey, e.presence, e.prop); case "custom": return n(e.newKey, e.instantiator); } }, cS = e => ({ extract: (t, n) => { return (o = e(n)), (r = e => ((e, t) => oS(e, N(t)))(t, e)), o.stype === Z_.Error ? r(o.serror) : o; var o, r; }, toString: N("val") }), uS = cS(J_), mS = (e, t, n, o) => o(Ee(e, t).getOrThunk(() => n(e))), fS = (e, t, n, o, r) => { const s = e => r.extract(t.concat([o]), e), a = e => e.fold( () => J_(I.none()), e => { const n = r.extract(t.concat([o]), e); return (s = n), (a = I.some), s.stype === Z_.Value ? {stype: Z_.Value, svalue: a(s.svalue)} : s; var s, a; } ); switch (e.tag) { case "required": return ((e, t, n, o) => Ee(t, n).fold( () => ((e, t, n) => oS(e, () => 'Could not find valid *required* value for "' + t + '" in ' + nS(n)))( e, n, t ), o ))(t, n, o, s); case "defaultedThunk": return mS(n, o, e.process, s); case "option": return ((e, t, n) => n(Ee(e, t)))(n, o, a); case "defaultedOptionThunk": return ((e, t, n, o) => o(Ee(e, t).map(t => (!0 === t ? n(e) : t))))(n, o, e.process, a); case "mergeWithThunk": return mS(n, o, N({}), t => { const o = aS(e.process(n), t); return s(o); }); } }, gS = e => ({ extract: (t, n) => ((e, t, n) => { const o = {}, r = []; for (const s of n) dS( s, (n, s, a, i) => { const l = fS(a, e, t, n, i); tS( l, e => { r.push(...e); }, e => { o[s] = e; } ); }, (e, n) => { o[e] = n(t); } ); return r.length > 0 ? eS(r) : J_(o); })(t, n, e), toString: () => { const t = V(e, e => dS( e, (e, t, n, o) => e + " -> " + o.toString(), (e, t) => "state(" + e + ")" ) ); return "obj{\n" + t.join("\n") + "}"; } }), pS = e => ({ extract: (t, n) => { const o = V(n, (n, o) => e.extract(t.concat(["[" + o + "]"]), n)); return lS(o); }, toString: () => "array(" + e.toString() + ")" }), hS = (e, t, n) => { return ( (o = ((e, t, n) => ((e, t) => (e.stype === Z_.Error ? {stype: Z_.Error, serror: t(e.serror)} : e))(t.extract([e], n), e => ({ input: n, errors: e })))(e, t, n)), Q_(o, El.error, El.value) ); var o; }, bS = (e, t) => rS(e, he(t, gS)), vS = N(uS), yS = (e, t) => cS(n => { const o = typeof n; return e(n) ? J_(n) : eS(`Expected type: ${t} but got: ${o}`); }), CS = yS(x, "number"), wS = yS(m, "string"), xS = yS(b, "boolean"), ES = yS(w, "function"), kS = (e, t, n, o) => ({tag: "field", key: e, newKey: t, presence: n, prop: o}), _S = (e, t) => ({tag: "custom", newKey: e, instantiator: t}), SS = (e, t) => kS(e, e, {tag: "required", process: {}}, t), NS = e => SS(e, wS), RS = e => SS(e, ES), AS = (e, t) => kS(e, e, {tag: "option", process: {}}, t), TS = e => AS(e, wS), OS = (e, t, n) => kS(e, e, iS(t), n), BS = (e, t) => OS(e, t, CS), PS = (e, t, n) => OS( e, t, (e => { return ( (t = t => H(e, t) ? El.value(t) : El.error(`Unsupported value: "${t}", choose one of "${e.join(", ")}".`)), cS(e => t(e).fold(eS, J_)) ); var t; })(n) ), DS = (e, t) => OS(e, t, xS), LS = (e, t) => OS(e, t, ES), MS = NS("type"), IS = RS("fetch"), FS = RS("onAction"), US = LS("onSetup", () => k), zS = TS("text"), jS = TS("icon"), HS = TS("tooltip"), $S = TS("label"), VS = DS("active", !1), qS = DS("enabled", !0), WS = DS("primary", !1), KS = e => ((e, t) => OS("type", t, wS))(0, e), YS = gS([ MS, NS("trigger"), BS("minChars", 1), (1, ((e, t) => kS(e, e, iS(1), vS()))("columns")), BS("maxResults", 10), ("matches", AS("matches", ES)), IS, FS, ((GS = wS), OS("highlightOn", [], pS(GS))) ]); var GS; const XS = [qS, HS, jS, zS, US], ZS = [VS].concat(XS), QS = [ LS("predicate", L), PS("scope", "node", ["node", "editor"]), PS("position", "selection", ["node", "selection", "line"]) ], JS = XS.concat([KS("contextformbutton"), WS, FS, _S("original", R)]), eN = ZS.concat([KS("contextformbutton"), WS, FS, _S("original", R)]), tN = XS.concat([KS("contextformbutton")]), nN = ZS.concat([KS("contextformtogglebutton")]), oN = bS("type", {contextformbutton: JS, contextformtogglebutton: eN}); gS( [ KS("contextform"), LS("initValue", N("")), $S, ((e, t) => kS(e, e, {tag: "required", process: {}}, pS(t)))("commands", oN), AS("launch", bS("type", {contextformbutton: tN, contextformtogglebutton: nN})) ].concat(QS) ); const rN = e => { const t = e.ui.registry.getAll().popups, n = he(t, e => { return ((t = e), hS("Autocompleter", YS, t)).fold(e => { throw new Error( "Errors: \n" + (e => { const t = e.length > 10 ? e.slice(0, 10).concat([{path: [], getErrorInfo: N("... (only showing first ten failures)")}]) : e; return V(t, e => "Failed path: (" + e.path.join(" > ") + ")\n" + e.getErrorInfo()); })((t = e).errors).join("\n") + "\n\nInput object: " + nS(t.input) ); var t; }, R); var t; }), o = Se(we(n, e => e.trigger)), r = xe(n); return {dataset: n, triggers: o, lookupByTrigger: e => Y(r, t => t.trigger === e)}; }, sN = e => { const t = Dr(), n = Br(!1), o = t.isSet, r = () => { o() && ((e => { e.dispatch("AutocompleterEnd"); })(e), n.set(!1), t.clear()); }, s = Le(() => rN(e)), a = a => { (n => t .get() .map(t => K_(e.dom, e.selection.getRng(), t.trigger, !0).bind(t => X_(e, s, t, n))) .getOrThunk(() => ((e, t) => { const n = t(), o = e.selection.getRng(); return ((e, t, n) => ue(n.triggers, n => K_(e, t, n)))(e.dom, o, n).bind(n => X_(e, t, n)); })(e, s) ))(a).fold(r, s => { (e => { o() || t.set({trigger: e.trigger, matchLength: e.text.length}); })(s.context), s.lookupData.then(o => { t.get().map(a => { const i = s.context; a.trigger === i.trigger && (i.text.length - a.matchLength >= 10 ? r() : (t.set({...a, matchLength: i.text.length}), n.get() ? (vf(e, {range: i.range}), ((e, t) => { e.dispatch("AutocompleterUpdate", t); })(e, {lookupData: o})) : (n.set(!0), vf(e, {range: i.range}), ((e, t) => { e.dispatch("AutocompleterStart", t); })(e, {lookupData: o})))); }); }); }); }, i = () => t.get().bind(({trigger: t}) => { const o = e.selection.getRng(); return K_(e.dom, o, t, n.get()) .filter(({range: e}) => ((e, t) => { const n = e.compareBoundaryPoints(window.Range.START_TO_START, t), o = e.compareBoundaryPoints(window.Range.END_TO_END, t); return n >= 0 && o <= 0; })(o, e) ) .map(({range: e}) => e); }); e.addCommand("mceAutocompleterReload", (e, t) => { const n = f(t) ? t.fetchOptions : {}; a(n); }), e.addCommand("mceAutocompleterClose", r), e.addCommand("mceAutocompleterRefreshActiveRange", () => { i().each(t => { vf(e, {range: t}); }); }), e.editorCommands.addQueryStateHandler("mceAutoCompleterInRange", () => i().isSome()), ((e, t) => { const n = xa(t.load, 50); e.on("input", t => { ("insertCompositionText" !== t.inputType || e.composing) && n.throttle(); }), e.on( "keydown", e => { const o = e.which; 8 === o ? n.throttle() : 27 === o ? (n.cancel(), t.cancelIfNecessary()) : (38 !== o && 40 !== o) || n.cancel(); }, !0 ), e.on("remove", n.cancel); })(e, {cancelIfNecessary: r, load: a}); }, aN = Et().browser.isSafari(), iN = e => Qa(Cn(e)), lN = (e, t) => { var n; return 0 === e.startOffset && e.endOffset === (null === (n = t.textContent) || void 0 === n ? void 0 : n.length); }, dN = (e, t) => I.from(e.getParent(t.container(), "details")), cN = (e, t) => dN(e, t).isSome(), uN = (e, t) => { const n = t.getNode(); v(n) || e.selection.setCursorLocation(n, t.offset()); }, mN = (e, t, n) => { const o = e.dom.getParent(t.container(), "details"); if (o && !o.open) { const t = e.dom.select("summary", o)[0]; t && (n ? $u(t) : Vu(t)).each(t => uN(e, t)); } else uN(e, t); }, fN = (e, t, n) => { const {dom: o, selection: r} = e, s = e.getBody(); if ("character" === n) { const n = Ji.fromRangeStart(r.getRng()), a = o.getParent(n.container(), o.isBlock), i = dN(o, n), l = a && o.isEmpty(a), d = h(null == a ? void 0 : a.previousSibling), c = h(null == a ? void 0 : a.nextSibling); return ( !!(l && (t ? c : d) && Fu(!t, s, n).exists(e => cN(o, e) && !Mt(i, dN(o, e)))) || Fu(t, s, n).fold(L, n => { const r = dN(o, n); if (cN(o, n) && !Mt(i, r)) { if ((t || mN(e, n, !1), a && l)) { if (t && d) return !0; if (!t && c) return !0; mN(e, n, t), e.dom.remove(a); } return !0; } return !1; }) ); } return !1; }, gN = (e, t, n, o) => { const r = e.selection.getRng(), s = Ji.fromRangeStart(r), a = e.getBody(); return "selection" === o ? ((e, t) => { const n = t.startSummary.exists(t => t.contains(e.startContainer)), o = t.startSummary.exists(t => t.contains(e.endContainer)), r = t.startDetails.forall(e => t.endDetails.forall(t => e !== t)); return ((n || o) && !(n && o)) || r; })(r, t) : n ? ((e, t) => t.startSummary.exists(t => ((e, t) => Vu(t).exists(n => (pr(n.getNode()) && Hu(t, n).exists(t => t.isEqual(e))) || n.isEqual(e)))( e, t ) ))(s, t) || ((e, t, n) => n.startDetails.exists(n => ju(e, t).forall(e => !n.contains(e.container()))))(a, s, t) : ((e, t) => t.startSummary.exists(t => ((e, t) => $u(t).exists(t => t.isEqual(e)))(e, t)))(s, t) || ((e, t) => t.startDetails.exists(n => Hu(n, e).forall(n => t.startSummary.exists(t => !t.contains(e.container()) && t.contains(n.container()))) ))(s, t); }, pN = (e, t, n) => ((e, t, n) => ((e, t) => { const n = I.from(e.getParent(t.startContainer, "details")), o = I.from(e.getParent(t.endContainer, "details")); if (n.isSome() || o.isSome()) { const t = n.bind(t => I.from(e.select("summary", t)[0])); return I.some({startSummary: t, startDetails: n, endDetails: o}); } return I.none(); })(e.dom, e.selection.getRng()).fold( () => fN(e, t, n), o => gN(e, o, t, n) || fN(e, t, n) ))(e, t, n) || (aN && ((e, t, n) => { const o = e.selection, r = o.getNode(), s = o.getRng(), a = Ji.fromRangeStart(s); return ( !!kr(r) && (("selection" === n && lN(s, r)) || Uh(t, a, r) ? iN(r) : e.undoManager.transact(() => { const s = o.getSel(); let {anchorNode: a, anchorOffset: i, focusNode: l, focusOffset: d} = null != s ? s : {}; const c = () => { C(a) && C(i) && C(l) && C(d) && (null == s || s.setBaseAndExtent(a, i, l, d)); }, u = (e, t) => { q(e.childNodes, e => { wm(e) && t.appendChild(e); }); }, m = e.dom.create("span", {"data-mce-bogus": "1"}); u(r, m), r.appendChild(m), c(), ("word" !== n && "line" !== n) || null == s || s.modify("extend", t ? "right" : "left", n), !o.isCollapsed() && lN(o.getRng(), m) ? iN(r) : (e.execCommand(t ? "ForwardDelete" : "Delete"), (a = null == s ? void 0 : s.anchorNode), (i = null == s ? void 0 : s.anchorOffset), (l = null == s ? void 0 : s.focusNode), (d = null == s ? void 0 : s.focusOffset), u(m, r), c()), e.dom.remove(m); }), !0) ); })(e, t, n)) ? I.some(k) : I.none(), hN = e => (t, n, o = {}) => { const r = t.getBody(), s = { bubbles: !0, composed: !0, data: null, isComposing: !1, detail: 0, view: null, target: r, currentTarget: r, eventPhase: Event.AT_TARGET, originalTarget: r, explicitOriginalTarget: r, isTrusted: !1, srcElement: r, cancelable: !1, preventDefault: k, inputType: n }, a = Xs(new InputEvent(e)); return t.dispatch(e, {...a, ...s, ...o}); }, bN = hN("input"), vN = hN("beforeinput"), yN = Et(), CN = yN.os, wN = CN.isMacOS() || CN.isiOS(), xN = yN.browser.isFirefox(), EN = (e, t) => { const n = e.dom, o = e.schema.getMoveCaretBeforeOnEnterElements(); if (!t) return; if (/^(LI|DT|DD)$/.test(t.nodeName)) { const e = (e => { for (; e; ) { if (er(e) || (dr(e) && e.data && /[\r\n\s]/.test(e.data))) return e; e = e.nextSibling; } return null; })(t.firstChild); e && /^(UL|OL|DL)$/.test(e.nodeName) && t.insertBefore(n.doc.createTextNode(Wo), t.firstChild); } const r = n.createRng(); if ((t.normalize(), t.hasChildNodes())) { const e = new Vo(t, t); let n, s = t; for (; (n = e.current()); ) { if (dr(n)) { r.setStart(n, 0), r.setEnd(n, 0); break; } if (o[n.nodeName.toLowerCase()]) { r.setStartBefore(n), r.setEndBefore(n); break; } (s = n), (n = e.next()); } n || (r.setStart(s, 0), r.setEnd(s, 0)); } else pr(t) ? t.nextSibling && n.isBlock(t.nextSibling) ? (r.setStartBefore(t), r.setEndBefore(t)) : (r.setStartAfter(t), r.setEndAfter(t)) : (r.setStart(t, 0), r.setEnd(t, 0)); e.selection.setRng(r), vg(e, r); }, kN = (e, t) => { const n = e.getRoot(); let o, r = t; for (; r !== n && r && "false" !== e.getContentEditable(r); ) { if ("true" === e.getContentEditable(r)) { o = r; break; } r = r.parentNode; } return r !== n ? o : n; }, _N = e => I.from(e.dom.getParent(e.selection.getStart(!0), e.dom.isBlock)), SN = e => { e.innerHTML = '
    '; }, NN = (e, t) => { Wl(e).toLowerCase() === t.tagName.toLowerCase() && ((e, t, n) => { const o = e.dom; I.from(n.style) .map(o.parseStyle) .each(e => { const n = {...go(Cn(t)), ...e}; o.setStyles(t, n); }); const r = I.from(n.class).map(e => e.split(/\s+/)), s = I.from(t.className).map(e => Y(e.split(/\s+/), e => "" !== e)); It(r, s, (e, n) => { const r = Y(n, t => !H(e, t)), s = [...e, ...r]; o.setAttrib(t, "class", s.join(" ")); }); const a = ["style", "class"], i = Ce(n, (e, t) => !H(a, t)); o.setAttribs(t, i); })(e, t, Kl(e)); }, RN = (e, t, n, o, r = !0, s, a) => { const i = e.dom, l = e.schema, d = Wl(e), c = n ? n.nodeName.toUpperCase() : ""; let u = t; const m = l.getTextInlineElements(); let f; f = s || "TABLE" === c || "HR" === c ? i.create(s || d, a || {}) : n.cloneNode(!1); let g = f; if (r) { do { if (m[u.nodeName]) { if (Wu(u) || sm(u)) continue; const e = u.cloneNode(!1); i.setAttrib(e, "id", ""), f.hasChildNodes() ? (e.appendChild(f.firstChild), f.appendChild(e)) : ((g = e), f.appendChild(e)); } } while ((u = u.parentNode) && u !== o); } else i.setAttrib(f, "style", null), i.setAttrib(f, "class", null); return NN(e, f), SN(g), f; }, AN = (e, t) => { const n = null == e ? void 0 : e.parentNode; return C(n) && n.nodeName === t; }, TN = e => C(e) && /^(OL|UL|LI)$/.test(e.nodeName), ON = e => C(e) && /^(LI|DT|DD)$/.test(e.nodeName), BN = e => { const t = e.parentNode; return ON(t) ? t : e; }, PN = (e, t, n) => { let o = e[n ? "firstChild" : "lastChild"]; for (; o && !er(o); ) o = o[n ? "nextSibling" : "previousSibling"]; return o === t; }, DN = e => X( we(go(Cn(e)), (e, t) => `${t}: ${e};`), (e, t) => e + t, "" ), LN = (e, t) => t && "A" === t.nodeName && e.isEmpty(t), MN = (e, t) => e.nodeName === t || (e.previousSibling && e.previousSibling.nodeName === t), IN = (e, t) => C(t) && e.isBlock(t) && !/^(TD|TH|CAPTION|FORM)$/.test(t.nodeName) && !/^(fixed|absolute)/i.test(t.style.position) && e.isEditable(t.parentNode) && "false" !== e.getContentEditable(t), FN = (e, t, n) => dr(t) ? e ? 1 === n && t.data.charAt(n - 1) === Ja ? 0 : n : n === t.data.length - 1 && t.data.charAt(n) === Ja ? t.data.length : n : n, UN = { insert: (e, t) => { let n, o, r, s, a = !1; const i = e.dom, l = e.schema.getNonEmptyElements(), d = e.selection.getRng(), c = Wl(e), u = Cn(d.startContainer), f = Fn(u, d.startOffset), g = f.exists(e => Wt(e) && !ro(e)), p = d.collapsed && g, b = (t, o) => RN(e, n, _, k, Zl(e), t, o), v = e => { const t = FN(e, n, o); if (dr(n) && (e ? t > 0 : t < n.data.length)) return !1; if ((n.parentNode === _ || n === _) && a && !e) return !0; if (e && er(n) && n === _.firstChild) return !0; if (MN(n, "TABLE") || MN(n, "HR")) return (a && !e) || (!a && e); const r = new Vo(n, _); let s; for (dr(n) && (e && 0 === t ? r.prev() : e || t !== n.data.length || r.next()); (s = r.current()); ) { if (er(s)) { if (!s.getAttribute("data-mce-bogus")) { const e = s.nodeName.toLowerCase(); if (l[e] && "br" !== e) return !1; } } else if (dr(s) && !Go(s.data)) return !1; e ? r.prev() : r.next(); } return !0; }, w = () => { let t; return ( (t = /^(H[1-6]|PRE|FIGURE)$/.test(r) && "HGROUP" !== S ? b(c) : b()), ((e, t) => { const n = Ql(e); return !y(t) && (m(n) ? H(Dt.explode(n), t.nodeName.toLowerCase()) : n); })(e, s) && IN(i, s) && i.isEmpty(_, void 0, {includeZwsp: !0}) ? (t = i.split(s, _)) : i.insertAfter(t, _), EN(e, t), t ); }; Gf(i, d).each(e => { d.setStart(e.startContainer, e.startOffset), d.setEnd(e.endContainer, e.endOffset); }), (n = d.startContainer), (o = d.startOffset); const x = !(!t || !t.shiftKey), E = !(!t || !t.ctrlKey); er(n) && n.hasChildNodes() && !p && ((a = o > n.childNodes.length - 1), (n = n.childNodes[Math.min(o, n.childNodes.length - 1)] || n), (o = a && dr(n) ? n.data.length : 0)); const k = kN(i, n); if ( !k || ((e, t) => { const n = e.dom.getParent(t, "ol,ul,dl"); return null !== n && "false" === e.dom.getContentEditableParent(n); })(e, n) ) return; x || (n = ((e, t, n, o, r) => { var s, a; const i = e.dom, l = null !== (s = kN(i, o)) && void 0 !== s ? s : i.getRoot(); let d = i.getParent(o, i.isBlock); if (!d || !IN(i, d)) { if (((d = d || l), !d.hasChildNodes())) { const o = i.create(t); return NN(e, o), d.appendChild(o), n.setStart(o, 0), n.setEnd(o, 0), o; } let s, c = o; for (; c && c.parentNode !== d; ) c = c.parentNode; for (; c && !i.isBlock(c); ) (s = c), (c = c.previousSibling); const u = null === (a = null == s ? void 0 : s.parentElement) || void 0 === a ? void 0 : a.nodeName; if (s && u && e.schema.isValidChild(u, t.toLowerCase())) { const a = s.parentNode, l = i.create(t); for (NN(e, l), a.insertBefore(l, s), c = s; c && !i.isBlock(c); ) { const e = c.nextSibling; l.appendChild(c), (c = e); } n.setStart(o, r), n.setEnd(o, r); } } return o; })(e, c, d, n, o)); let _ = i.getParent(n, i.isBlock) || i.getRoot(); (s = C(null == _ ? void 0 : _.parentNode) ? i.getParent(_.parentNode, i.isBlock) : null), (r = _ ? _.nodeName.toUpperCase() : ""); const S = s ? s.nodeName.toUpperCase() : ""; if ( ("LI" !== S || E || ((_ = s), (s = s.parentNode), (r = S)), er(s) && ((e, t, n) => !t && n.nodeName.toLowerCase() === Wl(e) && e.dom.isEmpty(n) && ((t, n, o) => { let r = n; for (; r && r !== t && h(r.nextSibling); ) { const t = r.parentElement; if (!t || ((s = t), !ke(e.schema.getTextBlockElements(), s.nodeName.toLowerCase()))) return Er(t); r = t; } var s; return !1; })(e.getBody(), n))(e, x, _)) ) return ((e, t, n) => { var o, r, s; const a = t(Wl(e)), i = ((e, t) => e.dom.getParent(t, Er))(e, n); i && (e.dom.insertAfter(a, i), EN(e, a), (null !== (s = null === (r = null === (o = n.parentElement) || void 0 === o ? void 0 : o.childNodes) || void 0 === r ? void 0 : r.length) && void 0 !== s ? s : 0) > 1 && e.dom.remove(n)); })(e, b, _); if (/^(LI|DT|DD)$/.test(r) && er(s) && i.isEmpty(_)) return void ((e, t, n, o, r) => { const s = e.dom, a = e.selection.getRng(), i = n.parentNode; if (n === e.getBody() || !i) return; var l; TN((l = n)) && TN(l.parentNode) && (r = "LI"); const d = ON(o) ? DN(o) : void 0; let c = ON(o) && d ? t(r, {style: DN(o)}) : t(r); if (PN(n, o, !0) && PN(n, o, !1)) if (AN(n, "LI")) { const e = BN(n); s.insertAfter(c, e), (e => { var t; return (null === (t = e.parentNode) || void 0 === t ? void 0 : t.firstChild) === e; })(n) ? s.remove(e) : s.remove(n); } else s.replace(c, n); else if (PN(n, o, !0)) AN(n, "LI") ? (s.insertAfter(c, BN(n)), c.appendChild(s.doc.createTextNode(" ")), c.appendChild(n)) : i.insertBefore(c, n), s.remove(o); else if (PN(n, o, !1)) s.insertAfter(c, BN(n)), s.remove(o); else { n = BN(n); const e = a.cloneRange(); e.setStartAfter(o), e.setEndAfter(n); const t = e.extractContents(); if ("LI" === r && ((e, t) => e.firstChild && "LI" === e.firstChild.nodeName)(t)) { const e = Y(V(c.children, Cn), O(Zt("br"))); (c = t.firstChild), s.insertAfter(t, n), q(e, e => vo(Cn(c), e)), d && c.setAttribute("style", d); } else s.insertAfter(t, n), s.insertAfter(c, n); s.remove(o); } EN(e, c); })(e, b, s, _, c); if (!(p || (_ !== e.getBody() && IN(i, _)))) return; const N = _.parentNode; let R; if (p) (R = b(c)), f.fold( () => { yo(u, Cn(R)); }, e => { ho(e, Cn(R)); } ), e.selection.setCursorLocation(R, 0); else if (ri(_)) (R = mi(_)), i.isEmpty(_) && SN(_), NN(e, R), EN(e, R); else if (v(!1)) R = w(); else if (v(!0) && N) { R = N.insertBefore(b(), _); const t = Cn(d.startContainer).dom.hasChildNodes() && d.collapsed; EN(e, MN(_, "HR") || t ? R : _); } else { const t = (e => { const t = e.cloneRange(); return ( t.setStart(e.startContainer, FN(!0, e.startContainer, e.startOffset)), t.setEnd(e.endContainer, FN(!1, e.endContainer, e.endOffset)), t ); })(d).cloneRange(); t.setEndAfter(_); const n = t.extractContents(); (e => { q(Uo(Cn(e), Yt), e => { const t = e.dom; t.nodeValue = ti(t.data); }); })(n), (e => { let t = e; do { dr(t) && (t.data = t.data.replace(/^[\r\n]+/, "")), (t = t.firstChild); } while (t); })(n), (R = n.firstChild), i.insertAfter(n, _), ((e, t, n) => { var o; const r = []; if (!n) return; let s = n; for (; (s = s.firstChild); ) { if (e.isBlock(s)) return; er(s) && !t[s.nodeName.toLowerCase()] && r.push(s); } let a = r.length; for (; a--; ) (s = r[a]), (!s.hasChildNodes() || (s.firstChild === s.lastChild && "" === (null === (o = s.firstChild) || void 0 === o ? void 0 : o.nodeValue)) || LN(e, s)) && e.remove(s); })(i, l, R), ((e, t) => { t.normalize(); const n = t.lastChild; (!n || (er(n) && /^(left|right)$/gi.test(e.getStyle(n, "float", !0)))) && e.add(t, "br"); })(i, _), i.isEmpty(_) && SN(_), R.normalize(), i.isEmpty(R) ? (i.remove(R), w()) : (NN(e, R), EN(e, R)); } i.setAttrib(R, "id", ""), e.dispatch("NewBlock", {newBlock: R}); }, fakeEventName: "insertParagraph" }, zN = (e, t, n) => { const o = e.dom.createRng(); n ? (o.setStartBefore(t), o.setEndBefore(t)) : (o.setStartAfter(t), o.setEndAfter(t)), e.selection.setRng(o), vg(e, o); }, jN = (e, t) => { const n = vn("br"); ho(Cn(t), n), e.undoManager.add(); }, HN = (e, t) => { $N(e.getBody(), t) || bo(Cn(t), vn("br")); const n = vn("br"); bo(Cn(t), n), zN(e, n.dom, !1), e.undoManager.add(); }, $N = (e, t) => { return ( (n = Ji.after(t)), !!pr(n.getNode()) || ju(e, Ji.after(t)) .map(e => pr(e.getNode())) .getOr(!1) ); var n; }, VN = e => e && "A" === e.nodeName && "href" in e, qN = e => e.fold(L, VN, VN, L), WN = (e, t) => { t.fold(k, T(jN, e), T(HN, e), k); }, KN = { insert: (e, t) => { const n = (e => { const t = T(Rh, e), n = Ji.fromRangeStart(e.selection.getRng()); return pE(t, e.getBody(), n).filter(qN); })(e); n.isSome() ? n.each(T(WN, e)) : ((e, t) => { const n = e.selection, o = e.dom, r = n.getRng(); let s, a = !1; Gf(o, r).each(e => { r.setStart(e.startContainer, e.startOffset), r.setEnd(e.endContainer, e.endOffset); }); let i = r.startOffset, l = r.startContainer; if (er(l) && l.hasChildNodes()) { const e = i > l.childNodes.length - 1; (l = l.childNodes[Math.min(i, l.childNodes.length - 1)] || l), (i = e && dr(l) ? l.data.length : 0); } let d = o.getParent(l, o.isBlock); const c = d && d.parentNode ? o.getParent(d.parentNode, o.isBlock) : null, u = c ? c.nodeName.toUpperCase() : "", m = !(!t || !t.ctrlKey); "LI" !== u || m || (d = c), dr(l) && i >= l.data.length && (((e, t, n) => { const o = new Vo(t, n); let r; const s = e.getNonEmptyElements(); for (; (r = o.next()); ) if (s[r.nodeName.toLowerCase()] || (dr(r) && r.length > 0)) return !0; return !1; })(e.schema, l, d || o.getRoot()) || ((s = o.create("br")), r.insertNode(s), r.setStartAfter(s), r.setEndAfter(s), (a = !0))), (s = o.create("br")), tl(o, r, s), zN(e, s, a), e.undoManager.add(); })(e, t); }, fakeEventName: "insertLineBreak" }, YN = (e, t) => _N(e) .filter(e => t.length > 0 && En(Cn(e), t)) .isSome(), GN = kl([{br: []}, {block: []}, {none: []}]), XN = (e, t) => (e => YN(e, Xl(e)))(e), ZN = e => (t, n) => (e => _N(e) .filter(e => Ka(Cn(e))) .isSome())(t) === e, QN = (e, t) => (n, o) => { const r = (e => _N(e).fold(N(""), e => e.nodeName.toUpperCase()))(n) === e.toUpperCase(); return r === t; }, JN = e => { const t = kN(e.dom, e.selection.getStart()); return y(t); }, eR = e => QN("pre", e), tR = e => (t, n) => ql(t) === e, nR = (e, t) => (e => YN(e, Gl(e)))(e), oR = (e, t) => t, rR = e => { const t = Wl(e), n = kN(e.dom, e.selection.getStart()); return C(n) && e.schema.isValidChild(n.nodeName, t); }, sR = e => { const t = e.selection.getRng(), n = Cn(t.startContainer), o = Fn(n, t.startOffset).map(e => Wt(e) && !ro(e)); return t.collapsed && o.getOr(!0); }, aR = (e, t) => (n, o) => X(e, (e, t) => e && t(n, o), !0) ? I.some(t) : I.none(), iR = (e, t, n) => { t.selection.isCollapsed() || (e => { e.execCommand("delete"); })(t), (C(n) && vN(t, e.fakeEventName).isDefaultPrevented()) || (e.insert(t, n), C(n) && bN(t, e.fakeEventName)); }, lR = (e, t) => { const n = () => iR(KN, e, t), o = () => iR(UN, e, t), r = ((e, t) => sE( [ aR([XN], GN.none()), aR([eR(!0), JN], GN.none()), aR([QN("summary", !0)], GN.br()), aR([eR(!0), tR(!1), oR], GN.br()), aR([eR(!0), tR(!1)], GN.block()), aR([eR(!0), tR(!0), oR], GN.block()), aR([eR(!0), tR(!0)], GN.br()), aR([ZN(!0), oR], GN.br()), aR([ZN(!0)], GN.block()), aR([nR], GN.br()), aR([oR], GN.br()), aR([rR], GN.block()), aR([sR], GN.block()) ], [e, !(!t || !t.shiftKey)] ).getOr(GN.none()))(e, t); switch (Yl(e)) { case "linebreak": r.fold(n, n, k); break; case "block": r.fold(o, o, k); break; case "invert": r.fold(o, n, k); break; default: r.fold(n, o, k); } }, dR = Et(), cR = dR.os.isiOS() && dR.browser.isSafari(), uR = (e, t) => { var n; t.isDefaultPrevented() || (t.preventDefault(), (n = e.undoManager).typing && ((n.typing = !1), n.add()), e.undoManager.transact(() => { lR(e, t); })); }, mR = Et(), fR = e => e.stopImmediatePropagation(), gR = e => e.keyCode === Cf.PAGE_UP || e.keyCode === Cf.PAGE_DOWN, pR = (e, t, n) => { n && !e.get() ? t.on("NodeChange", fR, !0) : !n && e.get() && t.off("NodeChange", fR), e.set(n); }, hR = (e, t) => { const n = t.container(), o = t.offset(); return dr(n) ? (n.insertData(o, e), I.some(Ji(n, o + e.length))) : yu(t).map(n => { const o = yn(e); return t.isAtEnd() ? bo(n, o) : ho(n, o), Ji(o.dom, e.length); }); }, bR = T(hR, Wo), vR = T(hR, " "), yR = e => t => { e.selection.setRng(t.toRange()), e.nodeChanged(); }, CR = e => { const t = Ji.fromRangeStart(e.selection.getRng()), n = Cn(e.getBody()); if (e.selection.isCollapsed()) { const o = T(Rh, e), r = Ji.fromRangeStart(e.selection.getRng()); return pE(o, e.getBody(), r) .bind( ( e => t => t.fold( t => Hu(e.dom, Ji.before(t)), e => $u(e), e => Vu(e), t => ju(e.dom, Ji.after(t)) ) )(n) ) .map( o => () => ( (e, t, n) => o => ih(e, o, n) ? bR(t) : vR(t) )( n, t, e.schema )(o).each(yR(e)) ); } return I.none(); }, wR = e => { return Ft( Tt.browser.isFirefox() && e.selection.isEditable() && ((t = e.dom), (n = e.selection.getRng().startContainer), t.isEditable(t.getParent(n, "summary"))), () => { const t = Cn(e.getBody()); e.selection.isCollapsed() || e.getDoc().execCommand("Delete"), ((e, t, n) => (ih(e, t, n) ? bR(t) : vR(t)))(t, Ji.fromRangeStart(e.selection.getRng()), e.schema).each( yR(e) ); } ); var t, n; }, xR = e => _c(e) ? [ {keyCode: Cf.TAB, action: l_(I_, e, !0)}, {keyCode: Cf.TAB, shiftKey: !0, action: l_(I_, e, !1)} ] : [], ER = e => { if ((e.addShortcut("Meta+P", "", "mcePrint"), sN(e), rw(e))) return Br(null); { const t = uk(e); return ( (e => { e.on("beforeinput", t => { (e.selection.isEditable() && !$(t.getTargetRanges(), t => !Vg(e.dom, t))) || t.preventDefault(); }); })(e), (e => { e.on("keyup compositionstart", T(Xk, e)); })(e), ((e, t) => { e.on("keydown", n => { n.isDefaultPrevented() || ((e, t, n) => { const o = Tt.os.isMacOS() || Tt.os.isiOS(); d_( [ {keyCode: Cf.RIGHT, action: l_(Jk, e, !0)}, {keyCode: Cf.LEFT, action: l_(Jk, e, !1)}, {keyCode: Cf.UP, action: l_(e_, e, !1)}, {keyCode: Cf.DOWN, action: l_(e_, e, !0)}, ...(o ? [ {keyCode: Cf.UP, action: l_(n_, e, !1), metaKey: !0, shiftKey: !0}, {keyCode: Cf.DOWN, action: l_(n_, e, !0), metaKey: !0, shiftKey: !0} ] : []), {keyCode: Cf.RIGHT, action: l_(B_, e, !0)}, {keyCode: Cf.LEFT, action: l_(B_, e, !1)}, {keyCode: Cf.UP, action: l_(P_, e, !1)}, {keyCode: Cf.DOWN, action: l_(P_, e, !0)}, {keyCode: Cf.UP, action: l_(P_, e, !1)}, {keyCode: Cf.UP, action: l_(s_, e, !1)}, {keyCode: Cf.DOWN, action: l_(s_, e, !0)}, {keyCode: Cf.RIGHT, action: l_(u_, e, !0)}, {keyCode: Cf.LEFT, action: l_(u_, e, !1)}, {keyCode: Cf.UP, action: l_(m_, e, !1)}, {keyCode: Cf.DOWN, action: l_(m_, e, !0)}, {keyCode: Cf.RIGHT, action: l_(dk, e, t, !0)}, {keyCode: Cf.LEFT, action: l_(dk, e, t, !1)}, {keyCode: Cf.RIGHT, ctrlKey: !o, altKey: o, action: l_(mk, e, t)}, {keyCode: Cf.LEFT, ctrlKey: !o, altKey: o, action: l_(fk, e, t)}, {keyCode: Cf.UP, action: l_(r_, e, !1)}, {keyCode: Cf.DOWN, action: l_(r_, e, !0)} ], n ).each(e => { n.preventDefault(); }); })(e, t, n); }); })(e, t), ((e, t) => { let n = !1; e.on("keydown", o => { (n = o.keyCode === Cf.BACKSPACE), o.isDefaultPrevented() || ((e, t, n) => { const o = n.keyCode === Cf.BACKSPACE ? "deleteContentBackward" : "deleteContentForward", r = e.selection.isCollapsed(), s = r ? "character" : "selection", a = e => (r ? (e ? "word" : "line") : "selection"); c_( [ {keyCode: Cf.BACKSPACE, action: l_(Ik, e)}, {keyCode: Cf.BACKSPACE, action: l_(Kx, e, !1)}, {keyCode: Cf.DELETE, action: l_(Kx, e, !0)}, {keyCode: Cf.BACKSPACE, action: l_(Ux, e, !1)}, {keyCode: Cf.DELETE, action: l_(Ux, e, !0)}, {keyCode: Cf.BACKSPACE, action: l_(bk, e, t, !1)}, {keyCode: Cf.DELETE, action: l_(bk, e, t, !0)}, {keyCode: Cf.BACKSPACE, action: l_(fb, e, !1)}, {keyCode: Cf.DELETE, action: l_(fb, e, !0)}, {keyCode: Cf.BACKSPACE, action: l_(pN, e, !1, s)}, {keyCode: Cf.DELETE, action: l_(pN, e, !0, s)}, ...(wN ? [ {keyCode: Cf.BACKSPACE, altKey: !0, action: l_(pN, e, !1, a(!0))}, {keyCode: Cf.DELETE, altKey: !0, action: l_(pN, e, !0, a(!0))}, {keyCode: Cf.BACKSPACE, metaKey: !0, action: l_(pN, e, !1, a(!1))} ] : [ {keyCode: Cf.BACKSPACE, ctrlKey: !0, action: l_(pN, e, !1, a(!0))}, {keyCode: Cf.DELETE, ctrlKey: !0, action: l_(pN, e, !0, a(!0))} ]), {keyCode: Cf.BACKSPACE, action: l_(Yx, e, !1)}, {keyCode: Cf.DELETE, action: l_(Yx, e, !0)}, {keyCode: Cf.BACKSPACE, action: l_(Ak, e, !1)}, {keyCode: Cf.DELETE, action: l_(Ak, e, !0)}, {keyCode: Cf.BACKSPACE, action: l_(Bx, e, !1)}, {keyCode: Cf.DELETE, action: l_(Bx, e, !0)}, {keyCode: Cf.BACKSPACE, action: l_(Ax, e, !1)}, {keyCode: Cf.DELETE, action: l_(Ax, e, !0)}, {keyCode: Cf.BACKSPACE, action: l_(Sk, e, !1)}, {keyCode: Cf.DELETE, action: l_(Sk, e, !0)} ], n ) .filter(t => e.selection.isEditable()) .each(t => { n.preventDefault(), vN(e, o).isDefaultPrevented() || (t(), bN(e, o)); }); })(e, t, o); }), e.on("keyup", t => { t.isDefaultPrevented() || ((e, t, n) => { d_( [ {keyCode: Cf.BACKSPACE, action: l_(Wx, e)}, {keyCode: Cf.DELETE, action: l_(Wx, e)}, ...(wN ? [ {keyCode: Cf.BACKSPACE, altKey: !0, action: l_(Nk, e)}, {keyCode: Cf.DELETE, altKey: !0, action: l_(Nk, e)}, ...(n ? [{keyCode: xN ? 224 : 91, action: l_(Nk, e)}] : []) ] : [ {keyCode: Cf.BACKSPACE, ctrlKey: !0, action: l_(Nk, e)}, {keyCode: Cf.DELETE, ctrlKey: !0, action: l_(Nk, e)} ]) ], t ); })(e, t, n), (n = !1); }); })(e, t), (e => { let t = I.none(); e.on("keydown", n => { n.keyCode === Cf.ENTER && (cR && (e => { if (!e.collapsed) return !1; const t = e.startContainer; if (dr(t)) { const n = /^[\uAC00-\uD7AF\u1100-\u11FF\u3130-\u318F\uA960-\uA97F\uD7B0-\uD7FF]$/, o = t.data.charAt(e.startOffset - 1); return n.test(o); } return !1; })(e.selection.getRng()) ? (e => { (t = I.some(e.selection.getBookmark())), e.undoManager.add(); })(e) : uR(e, n)); }), e.on("keyup", n => { n.keyCode === Cf.ENTER && t.each(() => ((e, n) => { e.undoManager.undo(), t.fold(k, t => e.selection.moveToBookmark(t)), uR(e, n), (t = I.none()); })(e, n) ); }); })(e), (e => { e.on("keydown", t => { t.isDefaultPrevented() || ((e, t) => { c_( [ {keyCode: Cf.SPACEBAR, action: l_(CR, e)}, {keyCode: Cf.SPACEBAR, action: l_(wR, e)} ], t ).each(n => { t.preventDefault(), vN(e, "insertText", {data: " "}).isDefaultPrevented() || (n(), bN(e, "insertText", {data: " "})); }); })(e, t); }); })(e), (e => { e.on("input", t => { t.isComposing || (e => { const t = Cn(e.getBody()); e.selection.isCollapsed() && ph(t, Ji.fromRangeStart(e.selection.getRng()), e.schema).each(t => { e.selection.setRng(t.toRange()); }); })(e); }); })(e), (e => { e.on("keydown", t => { t.isDefaultPrevented() || ((e, t) => { d_([...xR(e)], t).each(e => { t.preventDefault(); }); })(e, t); }); })(e), ((e, t) => { e.on("keydown", n => { n.isDefaultPrevented() || ((e, t, n) => { const o = Tt.os.isMacOS() || Tt.os.isiOS(); d_( [ {keyCode: Cf.END, action: l_(t_, e, !0)}, {keyCode: Cf.HOME, action: l_(t_, e, !1)}, ...(o ? [] : [ {keyCode: Cf.HOME, action: l_(n_, e, !1), ctrlKey: !0, shiftKey: !0}, {keyCode: Cf.END, action: l_(n_, e, !0), ctrlKey: !0, shiftKey: !0} ]), {keyCode: Cf.END, action: l_(f_, e, !0)}, {keyCode: Cf.HOME, action: l_(f_, e, !1)}, {keyCode: Cf.END, action: l_(gk, e, !0, t)}, {keyCode: Cf.HOME, action: l_(gk, e, !1, t)} ], n ).each(e => { n.preventDefault(); }); })(e, t, n); }); })(e, t), ((e, t) => { if (mR.os.isMacOS()) return; const n = Br(!1); e.on("keydown", t => { gR(t) && pR(n, e, !0); }), e.on("keyup", o => { o.isDefaultPrevented() || ((e, t, n) => { d_( [ {keyCode: Cf.PAGE_UP, action: l_(gk, e, !1, t)}, {keyCode: Cf.PAGE_DOWN, action: l_(gk, e, !0, t)} ], n ); })(e, t, o), gR(o) && n.get() && (pR(n, e, !1), e.nodeChanged()); }); })(e, t), t ); } }; class kR { constructor(e) { let t; (this.lastPath = []), (this.editor = e); const n = this; "onselectionchange" in e.getDoc() || e.on("NodeChange click mouseup keyup focus", n => { const o = e.selection.getRng(), r = { startContainer: o.startContainer, startOffset: o.startOffset, endContainer: o.endContainer, endOffset: o.endOffset }; ("nodechange" !== n.type && Hf(r, t)) || e.dispatch("SelectionChange"), (t = r); }), e.on("contextmenu", () => { Rg(e), e.dispatch("SelectionChange"); }), e.on("SelectionChange", () => { const t = e.selection.getStart(!0); t && vm(e) && !n.isSameElementPath(t) && e.dom.isChildOf(t, e.getBody()) && e.nodeChanged({selectionChange: !0}); }), e.on("mouseup", t => { !t.isDefaultPrevented() && vm(e) && ("IMG" === e.selection.getNode().nodeName ? Og.setEditorTimeout(e, () => { e.nodeChanged(); }) : e.nodeChanged()); }); } nodeChanged(e = {}) { const t = this.editor.selection; let n; if (this.editor.initialized && t && !zd(this.editor) && !this.editor.mode.isReadOnly()) { const o = this.editor.getBody(); (n = t.getStart(!0) || o), (n.ownerDocument === this.editor.getDoc() && this.editor.dom.isChildOf(n, o)) || (n = o); const r = []; this.editor.dom.getParent(n, e => e === o || (r.push(e), !1)), this.editor.dispatch("NodeChange", {...e, element: n, parents: r}); } } isSameElementPath(e) { let t; const n = this.editor, o = oe(n.dom.getParents(e, M, n.getBody())); if (o.length === this.lastPath.length) { for (t = o.length; t >= 0 && o[t] === this.lastPath[t]; t--); if (-1 === t) return (this.lastPath = o), !0; } return (this.lastPath = o), !1; } } const _R = La("image"), SR = La("event"), NR = e => t => { t[SR] = e; }, RR = NR(0), AR = NR(2), TR = NR(1), OR = (0, e => { const t = e; return I.from(t[SR]).exists(e => 0 === e); }); const BR = La("mode"), PR = e => t => { t[BR] = e; }, DR = (e, t) => PR(t)(e), LR = PR(0), MR = PR(2), IR = PR(1), FR = e => t => { const n = t; return I.from(n[BR]).exists(t => t === e); }, UR = FR(0), zR = FR(1), jR = ["none", "copy", "link", "move"], HR = ["none", "copy", "copyLink", "copyMove", "link", "linkMove", "move", "all", "uninitialized"], $R = () => { const e = new window.DataTransfer(); let t = "move", n = "all"; const o = { get dropEffect() { return t; }, set dropEffect(e) { H(jR, e) && (t = e); }, get effectAllowed() { return n; }, set effectAllowed(e) { OR(o) && H(HR, e) && (n = e); }, get items() { return ((e, t) => ({ ...t, get length() { return t.length; }, add: (n, o) => { if (UR(e)) { if (!m(n)) return t.add(n); if (!v(o)) return t.add(n, o); } return null; }, remove: n => { UR(e) && t.remove(n); }, clear: () => { UR(e) && t.clear(); } }))(o, e.items); }, get files() { return zR(o) ? Object.freeze({length: 0, item: e => null}) : e.files; }, get types() { return e.types; }, setDragImage: (t, n, r) => { var s; UR(o) && ((s = {image: t, x: n, y: r}), (o[_R] = s), e.setDragImage(t, n, r)); }, getData: t => (zR(o) ? "" : e.getData(t)), setData: (t, n) => { UR(o) && e.setData(t, n); }, clearData: t => { UR(o) && e.clearData(t); } }; return LR(o), o; }, VR = (e, t) => e.setData("text/html", t), qR = "x-tinymce/html", WR = N(qR), KR = "\x3c!-- " + qR + " --\x3e", YR = e => KR + e, GR = e => -1 !== e.indexOf(KR), XR = "%MCEPASTEBIN%", ZR = e => e.dom.get("mcepastebin"), QR = e => C(e) && "mcepastebin" === e.id, JR = e => e === XR, eA = (e, t) => ( Dt.each(t, t => { e = u(t, RegExp) ? e.replace(t, "") : e.replace(t[0], t[1]); }), e ), tA = e => eA(e, [ /^[\s\S]*]*>\s*|\s*<\/body[^>]*>[\s\S]*$/gi, /|/g, [/( ?)\u00a0<\/span>( ?)/g, (e, t, n) => (t || n ? Wo : " ")], /
    /g, /
    $/i ]), nA = (e, t) => ({content: e, cancelled: t}), oA = (e, t) => (e.insertContent(t, {merge: cc(e), paste: !0}), !0), rA = e => /^https?:\/\/[\w\-\/+=.,!;:&%@^~(){}?#]+$/i.test(e), sA = (e, t, n) => !(e.selection.isCollapsed() || !rA(t)) && ((e, t, n) => ( e.undoManager.extra( () => { n(e, t); }, () => { e.execCommand("mceInsertLink", !1, t); } ), !0 ))(e, t, n), aA = (e, t, n) => !!((e, t) => rA(t) && $(kc(e), e => Ve(t.toLowerCase(), `.${e.toLowerCase()}`)))(e, t) && ((e, t, n) => ( e.undoManager.extra( () => { n(e, t); }, () => { e.insertContent(''); } ), !0 ))(e, t, n), iA = (e => { let t = 0; return () => "mceclip" + t++; })(), lA = e => { const t = $R(); return VR(t, e), MR(t), t; }, dA = (e, t, n, o, r) => { const s = ((e, t, n) => ((e, t, n) => { const o = ((e, t, n) => e.dispatch("PastePreProcess", {content: t, internal: n}))(e, t, n), r = ((e, t) => { const n = kC( { sanitize: xc(e), sandbox_iframes: Rc(e), sandbox_iframes_exclusions: Ac(e), convert_unsafe_embeds: Tc(e) }, e.schema ); n.addNodeFilter("meta", e => { Dt.each(e, e => { e.remove(); }); }); const o = n.parse(t, {forced_root_block: !1, isRootContent: !0}); return yp({validate: !0}, e.schema).serialize(o); })(e, o.content); return e.hasEventListeners("PastePostProcess") && !o.isDefaultPrevented() ? ((e, t, n) => { const o = e.dom.create("div", {style: "display:none"}, t), r = ((e, t, n) => e.dispatch("PastePostProcess", {node: t, internal: n}))(e, o, n); return nA(r.node.innerHTML, r.isDefaultPrevented()); })(e, r, n) : nA(r, o.isDefaultPrevented()); })(e, t, n))(e, t, n); if (!s.cancelled) { const t = s.content, n = () => ((e, t, n) => { n || !uc(e) ? oA(e, t) : ((e, t) => { Dt.each([sA, aA, oA], n => !n(e, t, oA)); })(e, t); })(e, t, o); r ? vN(e, "insertFromPaste", {dataTransfer: lA(t)}).isDefaultPrevented() || (n(), bN(e, "insertFromPaste")) : n(); } }, cA = (e, t, n, o) => { const r = n || GR(t); dA(e, (e => e.replace(KR, ""))(t), r, !1, o); }, uA = (e, t, n) => { const o = e.dom.encode(t).replace(/\r\n/g, "\n"), r = ((e, t, n) => { const o = e.split(/\n\n/), r = ((e, t) => { let n = "<" + e; const o = we(t, (e, t) => t + '="' + ws.encodeAllRaw(e) + '"'); return o.length && (n += " " + o.join(" ")), n + ">"; })(t, n), s = "", a = V(o, e => e.split(/\n/).join("
    ")); return 1 === a.length ? a[0] : V(a, e => r + e + s).join(""); })(Zo(o, fc(e)), Wl(e), Kl(e)); dA(e, r, !1, !0, n); }, mA = e => { const t = {}; if (e && e.types) for (let n = 0; n < e.types.length; n++) { const o = e.types[n]; try { t[o] = e.getData(o); } catch (e) { t[o] = ""; } } return t; }, fA = (e, t) => t in e && e[t].length > 0, gA = e => fA(e, "text/html") || fA(e, "text/plain"), pA = (e, t, n) => { const o = "paste" === t.type ? t.clipboardData : t.dataTransfer; var r; if (rc(e) && o) { const s = ((e, t) => { const n = t.items ? te(ce(t.items), e => ("file" === e.kind ? [e.getAsFile()] : [])) : [], o = t.files ? ce(t.files) : []; return Y( n.length > 0 ? n : o, (e => { const t = kc(e); return e => $e(e.type, "image/") && $( t, t => (e => { const t = e.toLowerCase(), n = { jpg: "jpeg", jpe: "jpeg", jfi: "jpeg", jif: "jpeg", jfif: "jpeg", pjpeg: "jpeg", pjp: "jpeg", svg: "svg+xml" }; return Dt.hasOwn(n, t) ? "image/" + n[t] : "image/" + t; })(t) === e.type ); })(e) ); })(e, o); if (s.length > 0) return ( t.preventDefault(), ((r = s), Promise.all(V(r, e => ey(e).then(t => ({file: e, uri: t}))))).then(t => { n && e.selection.setRng(n), q(t, t => { ((e, t) => { Qv(t.uri).each(({data: n, type: o, base64Encoded: r}) => { const s = r ? n : btoa(n), a = t.file, i = e.editorUpload.blobCache, l = i.getByData(s, o), d = null != l ? l : ((e, t, n, o) => { const r = iA(), s = ed(e) && C(n.name), a = s ? ((e, t) => { const n = t.match(/([\s\S]+?)(?:\.[a-z0-9.]+)$/i); return C(n) ? e.dom.encode(n[1]) : void 0; })(e, n.name) : r, i = s ? n.name : void 0, l = t.create(r, n, o, a, i); return t.add(l), l; })(e, i, a, s); cA(e, ``, !1, !0); }); })(e, t); }); }), !0 ); } return !1; }, hA = (e, t, n, o, r) => { let s = tA(n); const a = fA(t, WR()) || GR(n), i = !a && (e => !/<(?:\/?(?!(?:div|p|br|span)>)\w+|(?:(?!(?:span style="white-space:\s?pre;?">)|br\s?\/>))\w+\s[^>]+)>/i.test( e ))(s), l = rA(s); (JR(s) || !s.length || (i && !l)) && (o = !0), (o || l) && (s = fA(t, "text/plain") && i ? t["text/plain"] : (e => { const t = Fs(), n = kC({}, t); let o = ""; const r = t.getVoidElements(), s = Dt.makeMap("script noscript style textarea video audio iframe object", " "), a = t.getBlockElements(), i = e => { const n = e.name, l = e; if ("br" !== n) { if ("wbr" !== n) if ((r[n] && (o += " "), s[n])) o += " "; else { if ((3 === e.type && (o += e.value), !(e.name in t.getVoidElements()))) { let t = e.firstChild; if (t) do { i(t); } while ((t = t.next)); } a[n] && l.next && ((o += "\n"), "p" === n && (o += "\n")); } } else o += "\n"; }; return (e = eA(e, [//g])), i(n.parse(e)), o; })(s)), JR(s) || (o ? uA(e, s, r) : cA(e, s, a, r)); }, bA = (e, t, n) => { ((e, t, n) => { let o; e.on("keydown", e => { (e => (Cf.metaKeyPressed(e) && 86 === e.keyCode) || (e.shiftKey && 45 === e.keyCode))(e) && !e.isDefaultPrevented() && (o = e.shiftKey && 86 === e.keyCode); }), e.on("paste", r => { if ( r.isDefaultPrevented() || (e => { var t, n; return ( Tt.os.isAndroid() && 0 === (null === (n = null === (t = e.clipboardData) || void 0 === t ? void 0 : t.items) || void 0 === n ? void 0 : n.length) ); })(r) ) return; const s = "text" === n.get() || o; o = !1; const a = mA(r.clipboardData); (!gA(a) && pA(e, r, t.getLastRng() || e.selection.getRng())) || (fA(a, "text/html") ? (r.preventDefault(), hA(e, a, a["text/html"], s, !0)) : fA(a, "text/plain") && fA(a, "text/uri-list") ? (r.preventDefault(), hA(e, a, a["text/plain"], s, !0)) : (t.create(), Og.setEditorTimeout( e, () => { const n = t.getHtml(); t.remove(), hA(e, a, n, s, !1); }, 0 ))); }); })(e, t, n), (e => { const t = e => $e(e, "webkit-fake-url"), n = e => $e(e, "data:"); e.parser.addNodeFilter("img", (o, r, s) => { if ( !rc(e) && (e => { var t; return !0 === (null === (t = e.data) || void 0 === t ? void 0 : t.paste); })(s) ) for (const r of o) { const o = r.attr("src"); m(o) && !r.attr("data-mce-object") && o !== Tt.transparentSrc && (t(o) || (!gc(e) && n(o))) && r.remove(); } }); })(e); }, vA = (e, t, n, o) => { ((e, t, n) => { if (!e) return !1; try { return e.clearData(), e.setData("text/html", t), e.setData("text/plain", n), e.setData(WR(), t), !0; } catch (e) { return !1; } })(e.clipboardData, t.html, t.text) ? (e.preventDefault(), o()) : n(t.html, o); }, yA = e => (t, n) => { const {dom: o, selection: r} = e, s = o.create("div", {contenteditable: "false", "data-mce-bogus": "all"}), a = o.create("div", {contenteditable: "true"}, t); o.setStyles(s, {position: "fixed", top: "0", left: "-3000px", width: "1000px", overflow: "hidden"}), s.appendChild(a), o.add(e.getBody(), s); const i = r.getRng(); a.focus(); const l = o.createRng(); l.selectNodeContents(a), r.setRng(l), Og.setEditorTimeout( e, () => { r.setRng(i), o.remove(s), n(); }, 0 ); }, CA = e => ({html: YR(e.selection.getContent({contextual: !0})), text: e.selection.getContent({format: "text"})}), wA = e => !e.selection.isCollapsed() || (e => !!e.dom.getParent(e.selection.getStart(), "td[data-mce-selected],th[data-mce-selected]", e.getBody()))(e), xA = (e, t) => { var n, o; return Qf.getCaretRangeFromPoint( null !== (n = t.clientX) && void 0 !== n ? n : 0, null !== (o = t.clientY) && void 0 !== o ? o : 0, e.getDoc() ); }, EA = (e, t) => { e.focus(), t && e.selection.setRng(t); }, kA = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi, _A = e => Dt.trim(e).replace(kA, Ks).toLowerCase(), SA = (e, t, n) => { const o = lc(e); if (n || "all" === o || !dc(e)) return t; const r = o ? o.split(/[, ]/) : []; if (r && "none" !== o) { const n = e.dom, o = e.selection.getNode(); t = t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, (e, t, s, a) => { const i = n.parseStyle(n.decode(s)), l = {}; for (let e = 0; e < r.length; e++) { const t = i[r[e]]; let s = t, a = n.getStyle(o, r[e], !0); /color/.test(r[e]) && ((s = _A(s)), (a = _A(a))), a !== s && (l[r[e]] = t); } const d = n.serializeStyle(l, "span"); return d ? t + ' style="' + d + '"' + a : t + a; }); } else t = t.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi, "$1$3"); return ( (t = t.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi, (e, t, n, o) => t + ' style="' + n + '"' + o)), t ); }, NA = e => { const t = Br(!1), n = Br(mc(e) ? "text" : "html"), o = (e => { const t = Br(null); return { create: () => ((e, t) => { const {dom: n, selection: o} = e, r = e.getBody(); t.set(o.getRng()); const s = n.add( e.getBody(), "div", { id: "mcepastebin", class: "mce-pastebin", contentEditable: !0, "data-mce-bogus": "all", style: "position: fixed; top: 50%; width: 10px; height: 10px; overflow: hidden; opacity: 0" }, XR ); Tt.browser.isFirefox() && n.setStyle(s, "left", "rtl" === n.getStyle(r, "direction", !0) ? 65535 : -65535), n.bind(s, "beforedeactivate focusin focusout", e => { e.stopPropagation(); }), s.focus(), o.select(s, !0); })(e, t), remove: () => ((e, t) => { const n = e.dom; if (ZR(e)) { let o; const r = t.get(); for (; (o = ZR(e)); ) n.remove(o), n.unbind(o); r && e.selection.setRng(r); } t.set(null); })(e, t), getEl: () => ZR(e), getHtml: () => (e => { const t = e.dom, n = (e, n) => { e.appendChild(n), t.remove(n, !0); }, [o, ...r] = Y(e.getBody().childNodes, QR); q(r, e => { n(o, e); }); const s = t.select("div[id=mcepastebin]", o); for (let e = s.length - 1; e >= 0; e--) { const r = t.create("div"); o.insertBefore(r, s[e]), n(r, s[e]); } return o ? o.innerHTML : ""; })(e), getLastRng: t.get }; })(e); (e => { (Tt.browser.isChromium() || Tt.browser.isSafari()) && ((e, t) => { e.on("PastePreProcess", n => { n.content = t(e, n.content, n.internal); }); })(e, SA); })(e), ((e, t) => { e.addCommand("mceTogglePlainTextPaste", () => { ((e, t) => { "text" === t.get() ? (t.set("html"), yf(e, !1)) : (t.set("text"), yf(e, !0)), e.focus(); })(e, t); }), e.addCommand("mceInsertClipboardContent", (t, n) => { n.html && cA(e, n.html, n.internal, !1), n.text && uA(e, n.text, !1); }); })(e, n), (e => { const t = t => n => { t(e, n); }, n = sc(e); w(n) && e.on("PastePreProcess", t(n)); const o = ac(e); w(o) && e.on("PastePostProcess", t(o)); })(e), e.on("PreInit", () => { (e => { e.on( "cut", (e => t => { !t.isDefaultPrevented() && wA(e) && e.selection.isEditable() && vA(t, CA(e), yA(e), () => { if (Tt.browser.isChromium() || Tt.browser.isFirefox()) { const t = e.selection.getRng(); Og.setEditorTimeout( e, () => { e.selection.setRng(t), e.execCommand("Delete"); }, 0 ); } else e.execCommand("Delete"); }); })(e) ), e.on( "copy", (e => t => { !t.isDefaultPrevented() && wA(e) && vA(t, CA(e), yA(e), k); })(e) ); })(e), ((e, t) => { oc(e) && e.on("dragend dragover draggesture dragdrop drop drag", e => { e.preventDefault(), e.stopPropagation(); }), rc(e) || e.on("drop", e => { const t = e.dataTransfer; t && (e => $(e.files, e => /^image\//.test(e.type)))(t) && e.preventDefault(); }), e.on("drop", n => { if (n.isDefaultPrevented()) return; const o = xA(e, n); if (y(o)) return; const r = mA(n.dataTransfer), s = fA(r, WR()); if ( (!gA(r) || (e => { const t = e["text/plain"]; return !!t && 0 === t.indexOf("file://"); })(r)) && pA(e, n, o) ) return; const a = r[WR()], i = a || r["text/html"] || r["text/plain"], l = ((e, t, n, o) => { const r = e.getParent(n, e => Zr(t, e)); if (!h(e.getParent(n, "summary"))) return !0; if (r && ke(o, "text/html")) { const e = new DOMParser().parseFromString(o["text/html"], "text/html").body; return !h(e.querySelector(r.nodeName.toLowerCase())); } return !1; })(e.dom, e.schema, o.startContainer, r), d = t.get(); (d && !l) || (i && (n.preventDefault(), Og.setEditorTimeout(e, () => { e.undoManager.transact(() => { (a || (d && l)) && e.execCommand("Delete"), EA(e, o); const t = tA(i); r["text/html"] ? cA(e, t, s, !0) : uA(e, t, !0); }); }))); }), e.on("dragstart", e => { t.set(!0); }), e.on("dragover dragend", n => { rc(e) && !t.get() && (n.preventDefault(), EA(e, xA(e, n))), "dragend" === n.type && t.set(!1); }), (e => { e.on("input", t => { const n = e => h(e.querySelector("summary")); if ("deleteByDrag" === t.inputType) { const t = Y(e.dom.select("details"), n); q(t, t => { pr(t.firstChild) && t.firstChild.remove(); const n = e.dom.create("summary"); n.appendChild(Za().dom), t.prepend(n); }); } }); })(e); })(e, t), bA(e, o, n); }); }, RA = pr, AA = dr, TA = e => vr(e.dom), OA = e => t => _n(Cn(e), t), BA = (e, t) => Jn(Cn(e), TA, OA(t)), PA = (e, t, n) => { const o = new Vo(e, t), r = n ? o.next.bind(o) : o.prev.bind(o); let s = e; for (let t = n ? e : r(); t && !RA(t); t = r()) Pi(t) && (s = t); return s; }, DA = e => { const t = ((e, t, n) => { const o = Ji.fromRangeStart(e).getNode(), r = ((e, t, n) => Jn(Cn(e), e => (e => br(e.dom))(e) || n.isBlock($t(e)), OA(t)).getOr(Cn(t)).dom)(o, t, n), s = PA(o, r, !1), a = PA(o, r, !0), i = document.createRange(); return ( BA(s, r).fold( () => { AA(s) ? i.setStart(s, 0) : i.setStartBefore(s); }, e => i.setStartBefore(e.dom) ), BA(a, r).fold( () => { AA(a) ? i.setEnd(a, a.data.length) : i.setEndAfter(a); }, e => i.setEndAfter(e.dom) ), i ); })(e.selection.getRng(), e.getBody(), e.schema); e.selection.setRng(Ab(t)); }; var LA; !(function (e) { (e.Before = "before"), (e.After = "after"); })(LA || (LA = {})); const MA = (e, t) => Math.abs(e.left - t), IA = (e, t) => Math.abs(e.right - t), FA = (e, t) => (e => X( e, (e, t) => e.fold( () => I.some(t), e => { const n = Math.min(t.left, e.left), o = Math.min(t.top, e.top), r = Math.max(t.right, e.right), s = Math.max(t.bottom, e.bottom); return I.some({top: o, right: r, bottom: s, left: n, width: r - n, height: s - o}); } ), I.none() ))( Y(e, e => { return (n = t) >= (o = e).top && n <= o.bottom; var n, o; }) ).fold( () => [[], e], t => { const {pass: n, fail: o} = K(e, e => ((e, t) => { const n = ((e, t) => Math.max(0, Math.min(e.bottom, t.bottom) - Math.max(e.top, t.top)))(e, t) / Math.min(e.height, t.height); return ((e, t) => e.top < t.bottom && e.bottom > t.top)(e, t) && n > 0.5; })(e, t) ); return [n, o]; } ), UA = (e, t, n) => (t > e.left && t < e.right ? 0 : Math.min(Math.abs(e.left - t), Math.abs(e.right - t))), zA = (e, t, n, o) => { const r = e => (Pi(e.node) ? I.some(e) : er(e.node) ? zA(ce(e.node.childNodes), t, n, !1) : I.none()), s = (e, s) => { const a = ae(e, (e, o) => s(e, t, n) - s(o, t, n)); return ue(a, r).map(e => o && !dr(e.node) && a.length > 1 ? ((e, o, s) => r(o).filter(o => Math.abs(s(e, t, n) - s(o, t, n)) < 2 && dr(o.node)))(e, a[1], s).getOr( e ) : e ); }, [a, i] = FA(qE(e), n), {pass: l, fail: d} = K(i, e => e.top < n); return s(a, UA) .orThunk(() => s(d, Ci)) .orThunk(() => s(l, Ci)); }, jA = (e, t, n) => ((e, t, n) => { const o = Cn(e), r = Rn(o), s = wn(r, t, n) .filter(e => Sn(o, e)) .getOr(o); return ((e, t, n, o) => { const r = (t, s) => { const a = Y( t.dom.childNodes, O(e => er(e) && e.classList.contains("mce-drag-container")) ); return s .fold( () => zA(a, n, o, !0), e => { const t = Y(a, t => t !== e.dom); return zA(t, n, o, !0); } ) .orThunk(() => (_n(t, e) ? I.none() : On(t)).bind(e => r(e, I.some(t)))); }; return r(t, I.none()); })(o, s, t, n); })(e, t, n) .filter(e => Yc(e.node)) .map(e => ((e, t) => ({node: e.node, position: MA(e, t) < IA(e, t) ? LA.Before : LA.After}))(e, t)), HA = e => { var t, n; const o = e.getBoundingClientRect(), r = e.ownerDocument, s = r.documentElement, a = r.defaultView; return { top: o.top + (null !== (t = null == a ? void 0 : a.scrollY) && void 0 !== t ? t : 0) - s.clientTop, left: o.left + (null !== (n = null == a ? void 0 : a.scrollX) && void 0 !== n ? n : 0) - s.clientLeft }; }, $A = e => ({target: e, srcElement: e}), VA = (e, t, n, o) => { const r = ((e, t) => { const n = (e => { const t = $R(), n = (e => { const t = e; return I.from(t[BR]); })(e); return ( MR(e), RR(t), (t.dropEffect = e.dropEffect), (t.effectAllowed = e.effectAllowed), (e => { const t = e; return I.from(t[_R]); })(e).each(e => t.setDragImage(e.image, e.x, e.y)), q(e.types, n => { "Files" !== n && t.setData(n, e.getData(n)); }), q(e.files, e => t.items.add(e)), (e => { const t = e; return I.from(t[SR]); })(e).each(e => { ((e, t) => { NR(t)(e); })(t, e); }), n.each(n => { DR(e, n), DR(t, n); }), t ); })(e); return "dragstart" === t ? (RR(n), LR(n)) : "drop" === t ? (AR(n), MR(n)) : (TR(n), IR(n)), n; })(n, e); return v(o) ? ((e, t, n) => { const o = B("Function not supported on simulated event."); return { bubbles: !0, cancelBubble: !1, cancelable: !0, composed: !1, currentTarget: null, defaultPrevented: !1, eventPhase: 0, isTrusted: !0, returnValue: !1, timeStamp: 0, type: e, composedPath: o, initEvent: o, preventDefault: k, stopImmediatePropagation: k, stopPropagation: k, AT_TARGET: window.Event.AT_TARGET, BUBBLING_PHASE: window.Event.BUBBLING_PHASE, CAPTURING_PHASE: window.Event.CAPTURING_PHASE, NONE: window.Event.NONE, altKey: !1, button: 0, buttons: 0, clientX: 0, clientY: 0, ctrlKey: !1, metaKey: !1, movementX: 0, movementY: 0, offsetX: 0, offsetY: 0, pageX: 0, pageY: 0, relatedTarget: null, screenX: 0, screenY: 0, shiftKey: !1, x: 0, y: 0, detail: 0, view: null, which: 0, initUIEvent: o, initMouseEvent: o, getModifierState: o, dataTransfer: n, ...$A(t) }; })(e, t, r) : ((e, t, n, o) => ({...t, dataTransfer: o, type: e, ...$A(n)}))(e, o, t, r); }, qA = vr, WA = ( (...e) => t => { for (let n = 0; n < e.length; n++) if (e[n](t)) return !0; return !1; } )(qA, br), KA = (e, t, n, o) => { const r = e.dom, s = t.cloneNode(!0); r.setStyles(s, {width: n, height: o}), r.setAttrib(s, "data-mce-selected", null); const a = r.create("div", { class: "mce-drag-container", "data-mce-bogus": "all", unselectable: "on", contenteditable: "false" }); return ( r.setStyles(a, { position: "absolute", opacity: 0.5, overflow: "hidden", border: 0, padding: 0, margin: 0, width: n, height: o }), r.setStyles(s, {margin: 0, boxSizing: "border-box"}), a.appendChild(s), a ); }, YA = (e, t) => n => () => { const o = "left" === e ? n.scrollX : n.scrollY; n.scroll({[e]: o + t, behavior: "smooth"}); }, GA = YA("left", -32), XA = YA("left", 32), ZA = YA("top", -32), QA = YA("top", 32), JA = e => { e && e.parentNode && e.parentNode.removeChild(e); }, eT = (e, t, n, o, r) => { "dragstart" === t && VR(o, e.dom.getOuterHTML(n)); const s = VA(t, n, o, r); return e.dispatch(t, s); }, tT = (e, t) => { const n = wa( (e, n) => ((e, t, n) => { e._selectionOverrides.hideFakeCaret(), jA(e.getBody(), t, n).fold( () => e.selection.placeCaretAt(t, n), o => { const r = e._selectionOverrides.showCaret(1, o.node, o.position === LA.Before, !1); r ? e.selection.setRng(r) : e.selection.placeCaretAt(t, n); } ); })(t, e, n), 0 ); t.on("remove", n.cancel); const o = e; return r => e.on(e => { const s = Math.max(Math.abs(r.screenX - e.screenX), Math.abs(r.screenY - e.screenY)); if (!e.dragging && s > 10) { const n = eT(t, "dragstart", e.element, e.dataTransfer, r); if ((C(n.dataTransfer) && (e.dataTransfer = n.dataTransfer), n.isDefaultPrevented())) return; (e.dragging = !0), t.focus(); } if (e.dragging) { const s = r.currentTarget === t.getDoc().documentElement, l = ((e, t) => ({pageX: t.pageX - e.relX, pageY: t.pageY + 5}))( e, ((e, t) => { return ( (n = (e => (e.inline ? HA(e.getBody()) : {left: 0, top: 0}))(e)), (o = (e => { const t = e.getBody(); return e.inline ? {left: t.scrollLeft, top: t.scrollTop} : {left: 0, top: 0}; })(e)), (r = ((e, t) => { if (t.target.ownerDocument !== e.getDoc()) { const n = HA(e.getContentAreaContainer()), o = (e => { const t = e.getBody(), n = e.getDoc().documentElement, o = {left: t.scrollLeft, top: t.scrollTop}, r = {left: t.scrollLeft || n.scrollLeft, top: t.scrollTop || n.scrollTop}; return e.inline ? o : r; })(e); return {left: t.pageX - n.left + o.left, top: t.pageY - n.top + o.top}; } return {left: t.pageX, top: t.pageY}; })(e, t)), {pageX: r.left - n.left + o.left, pageY: r.top - n.top + o.top} ); var n, o, r; })(t, r) ); (a = e.ghost), (i = t.getBody()), a.parentNode !== i && i.appendChild(a), ((e, t, n, o, r, s, a, i, l, d, c, u) => { let m = 0, f = 0; (e.style.left = t.pageX + "px"), (e.style.top = t.pageY + "px"), t.pageX + n > r && (m = t.pageX + n - r), t.pageY + o > s && (f = t.pageY + o - s), (e.style.width = n - m + "px"), (e.style.height = o - f + "px"); const g = l.clientHeight, p = l.clientWidth, h = a + l.getBoundingClientRect().top, b = i + l.getBoundingClientRect().left; c.on(e => { e.intervalId.clear(), e.dragging && u && (a + 8 >= g ? e.intervalId.set(QA(d)) : a - 8 <= 0 ? e.intervalId.set(ZA(d)) : i + 8 >= p ? e.intervalId.set(XA(d)) : i - 8 <= 0 ? e.intervalId.set(GA(d)) : h + 16 >= window.innerHeight ? e.intervalId.set(QA(window)) : h - 16 <= 0 ? e.intervalId.set(ZA(window)) : b + 16 >= window.innerWidth ? e.intervalId.set(XA(window)) : b - 16 <= 0 && e.intervalId.set(GA(window))); }); })( e.ghost, l, e.width, e.height, e.maxX, e.maxY, r.clientY, r.clientX, t.getContentAreaContainer(), t.getWin(), o, s ), n.throttle(r.clientX, r.clientY); } var a, i; }); }, nT = (e, t, n) => { e.on(e => { e.intervalId.clear(), e.dragging && n.fold( () => eT(t, "dragend", e.element, e.dataTransfer), n => eT(t, "dragend", e.element, e.dataTransfer, n) ); }), oT(e); }, oT = e => { e.on(e => { e.intervalId.clear(), JA(e.ghost); }), e.clear(); }, rT = e => { const t = Dr(), n = fa.DOM, o = document, r = ((e, t) => n => { if ((e => 0 === e.button)(n)) { const o = Q(t.dom.getParents(n.target), WA).getOr(null); if (C(o) && ((e, t, n) => qA(n) && n !== t && e.isEditable(n.parentElement))(t.dom, t.getBody(), o)) { const r = t.dom.getPos(o), s = t.getBody(), a = t.getDoc().documentElement; e.set({ element: o, dataTransfer: $R(), dragging: !1, screenX: n.screenX, screenY: n.screenY, maxX: (t.inline ? s.scrollWidth : a.offsetWidth) - 2, maxY: (t.inline ? s.scrollHeight : a.offsetHeight) - 2, relX: n.pageX - r.x, relY: n.pageY - r.y, width: o.offsetWidth, height: o.offsetHeight, ghost: KA(t, o, o.offsetWidth, o.offsetHeight), intervalId: Pr(100) }); } } })(t, e), s = tT(t, e), a = ((e, t) => n => { e.on(e => { var o; if ((e.intervalId.clear(), e.dragging)) { if ( ((e, t, n) => !y(t) && t !== n && !e.dom.isChildOf(t, n) && e.dom.isEditable(t))( t, (e => { const t = e.getSel(); if (C(t)) { const e = t.getRangeAt(0).startContainer; return dr(e) ? e.parentNode : e; } return null; })(t.selection), e.element ) ) { const r = null !== (o = t.getDoc().elementFromPoint(n.clientX, n.clientY)) && void 0 !== o ? o : t.getBody(); eT(t, "drop", r, e.dataTransfer, n).isDefaultPrevented() || t.undoManager.transact(() => { ((e, t) => { const n = e.getParent(t.parentNode, e.isBlock); JA(t), n && n !== e.getRoot() && e.isEmpty(n) && Qa(Cn(n)); })(t.dom, e.element), (e => { const t = e.getData("text/html"); return "" === t ? I.none() : I.some(t); })(e.dataTransfer).each(e => t.insertContent(e)), t._selectionOverrides.hideFakeCaret(); }); } eT(t, "dragend", t.getBody(), e.dataTransfer, n); } }), oT(e); })(t, e), i = ( (e, t) => n => nT(e, t, I.some(n)) )(t, e); e.on("mousedown", r), e.on("mousemove", s), e.on("mouseup", a), n.bind(o, "mousemove", s), n.bind(o, "mouseup", i), e.on("remove", () => { n.unbind(o, "mousemove", s), n.unbind(o, "mouseup", i); }), e.on("keydown", n => { n.keyCode === Cf.ESC && nT(t, e, I.none()); }); }, sT = vr, aT = (e, t) => gb(e.getBody(), t), iT = e => { const t = e.selection, n = e.dom, o = e.getBody(), r = qc(e, o, n.isBlock, () => jg(e)), s = "sel-" + n.uniqueId(), a = "data-mce-selected"; let i; const l = e => e !== o && (sT(e) || wr(e)) && n.isChildOf(e, o) && n.isEditable(e.parentNode), d = (n, o, s, a = !0) => e.dispatch("ShowCaret", {target: o, direction: n, before: s}).isDefaultPrevented() ? null : (a && t.scrollIntoView(o, -1 === n), r.show(s, o)), c = e => ai(e) || ci(e) || ui(e), u = e => c(e.startContainer) || c(e.endContainer), m = t => { const o = e.schema.getVoidElements(), r = n.createRng(), s = t.startContainer, a = t.startOffset, i = t.endContainer, l = t.endOffset; return ( ke(o, s.nodeName.toLowerCase()) ? (0 === a ? r.setStartBefore(s) : r.setStartAfter(s)) : r.setStart(s, a), ke(o, i.nodeName.toLowerCase()) ? (0 === l ? r.setEndBefore(i) : r.setEndAfter(i)) : r.setEnd(i, l), r ); }, f = (r, c) => { if (!r) return null; if (r.collapsed) { if (!u(r)) { const e = c ? 1 : -1, t = vu(e, o, r), s = t.getNode(!c); if (C(s)) { if (Yc(s)) return d(e, s, !!c && !t.isAtEnd(), !1); if (si(s) && vr(s.nextSibling)) { const e = n.createRng(); return e.setStart(s, 0), e.setEnd(s, 0), e; } } const a = t.getNode(c); if (C(a)) { if (Yc(a)) return d(e, a, !c && !t.isAtEnd(), !1); if (si(a) && vr(a.previousSibling)) { const e = n.createRng(); return e.setStart(a, 1), e.setEnd(a, 1), e; } } } return null; } let m = r.startContainer, f = r.startOffset; const g = r.endOffset; if ( (dr(m) && 0 === f && sT(m.parentNode) && ((m = m.parentNode), (f = n.nodeIndex(m)), (m = m.parentNode)), !er(m)) ) return null; if (g === f + 1 && m === r.endContainer) { const o = m.childNodes[f]; if (l(o)) return (o => { const r = o.cloneNode(!0), l = e.dispatch("ObjectSelected", {target: o, targetClone: r}); if (l.isDefaultPrevented()) return null; const d = ((o, r) => { const a = Cn(e.getBody()), i = e.getDoc(), l = no(a, "#" + s).getOrThunk(() => { const e = bn('
    ', i); return Jt(e, "id", s), yo(a, e), e; }), d = n.createRng(); xo(l), wo(l, [yn(Wo, i), Cn(r), yn(Wo, i)]), d.setStart(l.dom.firstChild, 1), d.setEnd(l.dom.lastChild, 0), co(l, {top: n.getPos(o, e.getBody()).y + "px"}), yg(l); const c = t.getSel(); return c && (c.removeAllRanges(), c.addRange(d)), d; })(o, l.targetClone), c = Cn(o); return ( q(zo(Cn(e.getBody()), `*[${a}]`), e => { _n(c, e) || rn(e, a); }), n.getAttrib(o, a) || o.setAttribute(a, "1"), (i = o), p(), d ); })(o); } return null; }, g = () => { i && i.removeAttribute(a), no(Cn(e.getBody()), "#" + s).each(Eo), (i = null); }, p = () => { r.hide(); }; return ( rw(e) || (e.on("click", t => { n.isEditable(t.target) || (t.preventDefault(), e.focus()); }), e.on("blur NewBlock", g), e.on("ResizeWindow FullscreenStateChanged", r.reposition), e.on( "tap", t => { const n = t.target, o = aT(e, n); sT(o) ? (t.preventDefault(), Dx(e, o).each(f)) : l(n) && Dx(e, n).each(f); }, !0 ), e.on("mousedown", r => { const s = r.target; if (s !== o && "HTML" !== s.nodeName && !n.isChildOf(s, o)) return; if ( !((e, t, n) => { const o = Cn(e.getBody()), r = e.inline ? o : Cn(Rn(o).dom.documentElement), s = ((e, t, n, o) => { const r = (e => e.dom.getBoundingClientRect())(t); return { x: n - (e ? r.left + t.dom.clientLeft + Iw(t) : 0), y: o - (e ? r.top + t.dom.clientTop + Mw(t) : 0) }; })(e.inline, r, t, n); return ((e, t, n) => { const o = Dw(e), r = Lw(e); return t >= 0 && n >= 0 && t <= o && n <= r; })(r, s.x, s.y); })(e, r.clientX, r.clientY) ) return; g(), p(); const a = aT(e, s); sT(a) ? (r.preventDefault(), Dx(e, a).each(f)) : jA(o, r.clientX, r.clientY).each(n => { var o; r.preventDefault(), (o = d(1, n.node, n.position === LA.Before, !1)) && t.setRng(o), tr(a) ? a.focus() : e.getBody().focus(); }); }), e.on("keypress", e => { Cf.modifierPressed(e) || (sT(t.getNode()) && e.preventDefault()); }), e.on("GetSelectionRange", e => { let t = e.range; if (i) { if (!i.parentNode) return void (i = null); (t = t.cloneRange()), t.selectNode(i), (e.range = t); } }), e.on("SetSelectionRange", e => { e.range = m(e.range); const t = f(e.range, e.forward); t && (e.range = t); }), e.on("AfterSetSelectionRange", e => { const t = e.range, o = t.startContainer.parentElement; var r; u(t) || (er((r = o)) && "mcepastebin" === r.id) || p(), (e => C(e) && n.hasClass(e, "mce-offscreen-selection"))(o) || g(); }), (e => { rT(e), Wd(e) && (e => { const t = t => { if (!t.isDefaultPrevented()) { const n = t.dataTransfer; n && (H(n.types, "Files") || n.files.length > 0) && (t.preventDefault(), "drop" === t.type && $w(e, "Dropped file type is not supported")); } }, n = n => { Lg(e, n.target) && t(n); }, o = () => { const o = fa.DOM, r = e.dom, s = document, a = e.inline ? e.getBody() : e.getDoc(), i = ["drop", "dragover"]; q(i, e => { o.bind(s, e, n), r.bind(a, e, t); }), e.on("remove", () => { q(i, e => { o.unbind(s, e, n), r.unbind(a, e, t); }); }); }; e.on("init", () => { Og.setEditorTimeout(e, o, 0); }); })(e); })(e), (e => { const t = wa(() => { if (!e.removed && e.getBody().contains(document.activeElement)) { const t = e.selection.getRng(); if (t.collapsed) { const n = Lx(e, t, !1); e.selection.setRng(n); } } }, 0); e.on("focus", () => { t.throttle(); }), e.on("blur", () => { t.cancel(); }); })(e), (e => { e.on("init", () => { e.on("focusin", t => { const n = t.target; if (wr(n)) { const t = gb(e.getBody(), n), o = vr(t) ? t : n; e.selection.getNode() !== o && Dx(e, o).each(t => e.selection.setRng(t)); } }); }); })(e)), { showCaret: d, showBlockCaretContainer: e => { e.hasAttribute("data-mce-caret") && (mi(e), t.scrollIntoView(e)); }, hideFakeCaret: p, destroy: () => { r.destroy(), (i = null); } } ); }, lT = (e, t) => { let n = t; for (let t = e.previousSibling; dr(t); t = t.previousSibling) n += t.data.length; return n; }, dT = (e, t, n, o, r) => { if (dr(n) && (o < 0 || o > n.data.length)) return []; const s = r && dr(n) ? [lT(n, o)] : [o]; let a = n; for (; a !== t && a.parentNode; ) s.push(e.nodeIndex(a, r)), (a = a.parentNode); return a === t ? s.reverse() : []; }, cT = (e, t, n, o, r, s, a = !1) => ({start: dT(e, t, n, o, a), end: dT(e, t, r, s, a)}), uT = (e, t) => { const n = t.slice(), o = n.pop(); return x(o) ? X(n, (e, t) => e.bind(e => I.from(e.childNodes[t])), I.some(e)).bind(e => dr(e) && (o < 0 || o > e.data.length) ? I.none() : I.some({node: e, offset: o}) ) : I.none(); }, mT = (e, t) => uT(e, t.start).bind(({node: n, offset: o}) => uT(e, t.end).map(({node: e, offset: t}) => { const r = document.createRange(); return r.setStart(n, o), r.setEnd(e, t), r; }) ), fT = (e, t, n) => { if (t && e.isEmpty(t) && !n(t)) { const o = t.parentNode; e.remove(t, dr(t.firstChild) && Go(t.firstChild.data)), fT(e, o, n); } }, gT = (e, t, n, o = !0) => { const r = t.startContainer.parentNode, s = t.endContainer.parentNode; t.deleteContents(), o && !n(t.startContainer) && (dr(t.startContainer) && 0 === t.startContainer.data.length && e.remove(t.startContainer), dr(t.endContainer) && 0 === t.endContainer.data.length && e.remove(t.endContainer), fT(e, r, n), r !== s && fT(e, s, n)); }, pT = (e, t) => I.from(e.dom.getParent(t.startContainer, e.dom.isBlock)), hT = (e, t, n) => { const o = e.dynamicPatternsLookup({text: n, block: t}); return {...e, blockPatterns: Rl(o).concat(e.blockPatterns), inlinePatterns: Al(o).concat(e.inlinePatterns)}; }, bT = (e, t, n, o) => { const r = e.createRng(); return r.setStart(t, 0), r.setEnd(n, o), r.toString(); }, vT = (e, t) => e.create("span", {"data-mce-type": "bookmark", id: t}), yT = (e, t) => { const n = e.createRng(); return n.setStartAfter(t.start), n.setEndBefore(t.end), n; }, CT = (e, t, n) => { const o = mT(e.getRoot(), n).getOrDie("Unable to resolve path range"), r = o.startContainer, s = o.endContainer, a = 0 === o.endOffset ? s : s.splitText(o.endOffset), i = 0 === o.startOffset ? r : r.splitText(o.startOffset), l = i.parentNode; return { prefix: t, end: a.parentNode.insertBefore(vT(e, t + "-end"), a), start: l.insertBefore(vT(e, t + "-start"), i) }; }, wT = (e, t, n) => { fT(e, e.get(t.prefix + "-end"), n), fT(e, e.get(t.prefix + "-start"), n); }, xT = e => 0 === e.start.length, ET = (e, t, n, o) => { const r = t.start; var s; return V_( e, o.container, o.offset, ((s = r), (e, t) => { const n = e.data.substring(0, t), o = n.lastIndexOf(s.charAt(s.length - 1)), r = n.lastIndexOf(s); return -1 !== r ? r + s.length : -1 !== o ? o + 1 : -1; }), n ).bind(o => { var s, a; const i = null !== (a = null === (s = n.textContent) || void 0 === s ? void 0 : s.indexOf(r)) && void 0 !== a ? a : -1; if (-1 !== i && o.offset >= i + r.length) { const t = e.createRng(); return t.setStart(o.container, o.offset - r.length), t.setEnd(o.container, o.offset), I.some(t); } { const s = o.offset - r.length; return H_(o.container, s, n) .map(t => { const n = e.createRng(); return n.setStart(t.container, t.offset), n.setEnd(o.container, o.offset), n; }) .filter(e => e.toString() === r) .orThunk(() => ET(e, t, n, F_(o.container, 0))); } }); }, kT = (e, t, n, o) => { const r = e.dom, s = r.getRoot(), a = n.pattern, i = n.position.container, l = n.position.offset; return H_(i, l - n.pattern.end.length, t).bind(d => { const c = cT(r, s, d.container, d.offset, i, l, o); if (xT(a)) return I.some({matches: [{pattern: a, startRng: c, endRng: c}], position: d}); { const i = _T(e, n.remainingPatterns, d.container, d.offset, t, o), l = i.getOr({matches: [], position: d}), u = l.position, m = ((e, t, n, o, r, s = !1) => { if (0 === t.start.length && !s) { const t = e.createRng(); return t.setStart(n, o), t.setEnd(n, o), I.some(t); } return j_(n, o, r).bind(n => ET(e, t, r, n).bind(e => { var t; if (s) { if (e.endContainer === n.container && e.endOffset === n.offset) return I.none(); if ( 0 === n.offset && (null === (t = e.endContainer.textContent) || void 0 === t ? void 0 : t.length) === e.endOffset ) return I.none(); } return I.some(e); }) ); })(r, a, u.container, u.offset, t, i.isNone()); return m.map(e => { const t = ((e, t, n, o = !1) => cT(e, t, n.startContainer, n.startOffset, n.endContainer, n.endOffset, o))( r, s, e, o ); return { matches: l.matches.concat([{pattern: a, startRng: t, endRng: c}]), position: F_(e.startContainer, e.startOffset) }; }); } }); }, _T = (e, t, n, o, r, s) => { const a = e.dom; return j_(n, o, a.getRoot()).bind(i => { const l = bT(a, r, n, o); for (let a = 0; a < t.length; a++) { const d = t[a]; if (!Ve(l, d.end)) continue; const c = t.slice(); c.splice(a, 1); const u = kT(e, r, {pattern: d, remainingPatterns: c, position: i}, s); if (u.isNone() && o > 0) return _T(e, t, n, o - 1, r, s); if (u.isSome()) return u; } return I.none(); }); }, ST = (e, t, n) => { e.selection.setRng(n), "inline-format" === t.type ? q(t.format, t => { e.formatter.apply(t); }) : e.execCommand(t.cmd, !1, t.value); }, NT = (e, t, n, o, r, s) => { var a; return ((e, t) => { const n = ne(e, e => $(t, t => e.pattern.start === t.pattern.start && e.pattern.end === t.pattern.end)); return e.length === t.length ? (n ? e : t) : e.length > t.length ? e : t; })( _T(e, r.inlinePatterns, n, o, t, s).fold( () => [], e => e.matches ), _T(e, ((a = r.inlinePatterns), ae(a, (e, t) => t.end.length - e.end.length)), n, o, t, s).fold( () => [], e => e.matches ) ); }, RT = (e, t) => { if (0 === t.length) return; const n = e.dom, o = e.selection.getBookmark(), r = ((e, t) => { const n = La("mce_textpattern"), o = G( t, (t, o) => { const r = CT(e, n + `_end${t.length}`, o.endRng); return t.concat([{...o, endMarker: r}]); }, [] ); return G( o, (t, r) => { const s = o.length - t.length - 1, a = xT(r.pattern) ? r.endMarker : CT(e, n + `_start${s}`, r.startRng); return t.concat([{...r, startMarker: a}]); }, [] ); })(n, t); q(r, t => { const o = n.getParent(t.startMarker.start, n.isBlock), r = e => e === o; xT(t.pattern) ? ((e, t, n, o) => { const r = yT(e.dom, n); gT(e.dom, r, o), ST(e, t, r); })(e, t.pattern, t.endMarker, r) : ((e, t, n, o, r) => { const s = e.dom, a = yT(s, o), i = yT(s, n); gT(s, i, r), gT(s, a, r); const l = {prefix: n.prefix, start: n.end, end: o.start}, d = yT(s, l); ST(e, t, d); })(e, t.pattern, t.startMarker, t.endMarker, r), wT(n, t.endMarker, r), wT(n, t.startMarker, r); }), e.selection.moveToBookmark(o); }, AT = (e, t, n) => ((e, t, n) => { if (dr(e) && 0 >= e.length) return I.some(F_(e, 0)); { const t = za(U_); return I.from(t.forwards(e, 0, z_(e), n)).map(e => F_(e.container, 0)); } })(t, 0, t).map(o => { const r = o.container; return ( $_(r, n.start.length, t).each(n => { const o = e.createRng(); o.setStart(r, 0), o.setEnd(n.container, n.offset), gT(e, o, e => e === t); }), r ); }), TT = e => (t, n) => { const o = t.dom, r = n.pattern, s = mT(o.getRoot(), n.range).getOrDie("Unable to resolve path range"); return ( pT(t, s).each(n => { "block-format" === r.type ? ((e, t) => { const n = t.get(e); return p(n) && le(n).exists(e => ke(e, "block")); })(r.format, t.formatter) && t.undoManager.transact(() => { e(t.dom, n, r), t.formatter.apply(r.format); }) : "block-command" === r.type && t.undoManager.transact(() => { e(t.dom, n, r), t.execCommand(r.cmd, !1, r.value); }); }), !0 ); }, OT = e => (t, n) => { const o = (e => ae(e, (e, t) => t.start.length - e.start.length))(t), r = n.replace(Wo, " "); return Q(o, t => e(t, n, r)); }, BT = (e, t) => (n, o, r, s, a) => { var i; void 0 === a && (a = null !== (i = o.textContent) && void 0 !== i ? i : ""); const l = n.dom, d = Wl(n); return l.is(o, d) ? e(r.blockPatterns, a) .map(e => t && Dt.trim(a).length === e.start.length ? [] : [{pattern: e, range: cT(l, l.getRoot(), o, 0, o, 0, s)}] ) .getOr([]) : []; }, PT = TT((e, t, n) => { AT(e, t, n).each(e => { const t = Cn(e), n = Ha(t); /^\s[^\s]/.test(n) && ((e, t) => { ja.set(e, t); })(t, n.slice(1)); }); }), DT = OT((e, t, n) => 0 === t.indexOf(e.start) || 0 === n.indexOf(e.start)), LT = BT(DT, !0), MT = TT(AT), IT = OT((e, t, n) => t === e.start || n === e.start), FT = BT(IT, !1), UT = (e, t, n) => { for (let o = 0; o < e.length; o++) if (n(e[o], t)) return !0; return !1; }, zT = e => { const t = [",", ".", ";", ":", "!", "?"], n = [32], o = () => { return (t = pc(e)), (n = hc(e)), {inlinePatterns: Al(t), blockPatterns: Rl(t), dynamicPatternsLookup: n}; var t, n; }, r = () => (e => e.options.isSet("text_patterns_lookup"))(e); e.on( "keydown", t => { if (13 === t.keyCode && !Cf.modifierPressed(t) && e.selection.isCollapsed()) { const n = Tl(o(), "enter"); (n.inlinePatterns.length > 0 || n.blockPatterns.length > 0 || r()) && ((e, t) => ((e, t) => { const n = e.selection.getRng(); return pT(e, n) .map(o => { var r; const s = Math.max(0, n.startOffset), a = hT(t, o, null !== (r = o.textContent) && void 0 !== r ? r : ""); return {inlineMatches: NT(e, o, n.startContainer, s, a, !0), blockMatches: LT(e, o, a, !0)}; }) .filter(({inlineMatches: e, blockMatches: t}) => t.length > 0 || e.length > 0); })(e, t).fold( L, ({inlineMatches: t, blockMatches: n}) => ( e.undoManager.add(), e.undoManager.extra( () => { e.execCommand("mceInsertNewLine"); }, () => { (e => { e.insertContent(Ja, {preserve_zwsp: !0}); })(e), RT(e, t), ((e, t) => { if (0 === t.length) return; const n = e.selection.getBookmark(); q(t, t => PT(e, t)), e.selection.moveToBookmark(n); })(e, n); const o = e.selection.getRng(), r = j_(o.startContainer, o.startOffset, e.dom.getRoot()); e.execCommand("mceInsertNewLine"), r.each(t => { const n = t.container; n.data.charAt(t.offset - 1) === qo && (n.deleteData(t.offset - 1, 1), fT(e.dom, n.parentNode, t => t === e.dom.getRoot())); }); } ), !0 ) ))(e, n) && t.preventDefault(); } }, !0 ), e.on( "keydown", t => { if (32 === t.keyCode && e.selection.isCollapsed()) { const n = Tl(o(), "space"); (n.blockPatterns.length > 0 || r()) && ((e, t) => ((e, t) => { const n = e.selection.getRng(); return pT(e, n) .map(o => { const r = Math.max(0, n.startOffset), s = bT(e.dom, o, n.startContainer, r), a = hT(t, o, s); return FT(e, o, a, !1, s); }) .filter(e => e.length > 0); })(e, t).fold( L, t => ( e.undoManager.transact(() => { ((e, t) => { q(t, t => MT(e, t)); })(e, t); }), !0 ) ))(e, n) && t.preventDefault(); } }, !0 ); const s = () => { if (e.selection.isCollapsed()) { const t = Tl(o(), "space"); (t.inlinePatterns.length > 0 || r()) && ((e, t) => { const n = e.selection.getRng(); pT(e, n).map(o => { const r = Math.max(0, n.startOffset - 1), s = bT(e.dom, o, n.startContainer, r), a = hT(t, o, s), i = NT(e, o, n.startContainer, r, a, !1); i.length > 0 && e.undoManager.transact(() => { RT(e, i); }); }); })(e, t); } }; e.on("keyup", e => { UT(n, e, (e, t) => e === t.keyCode && !Cf.modifierPressed(t)) && s(); }), e.on("keypress", n => { UT(t, n, (e, t) => e.charCodeAt(0) === t.charCode) && Og.setEditorTimeout(e, s); }); }, jT = e => { const t = Dt.each, n = Cf.BACKSPACE, o = Cf.DELETE, r = e.dom, s = e.selection, a = e.parser, i = Tt.browser, l = i.isFirefox(), d = i.isChromium() || i.isSafari(), c = Tt.deviceType.isiPhone() || Tt.deviceType.isiPad(), u = Tt.os.isMacOS() || Tt.os.isiOS(), m = (t, n) => { try { e.getDoc().execCommand(t, !1, String(n)); } catch (e) {} }, f = e => e.isDefaultPrevented(), g = () => { e.shortcuts.add("meta+a", null, "SelectAll"); }, p = () => { e.inline || r.bind(e.getDoc(), "mousedown mouseup", t => { let n; if (t.target === e.getDoc().documentElement) if (((n = s.getRng()), e.getBody().focus(), "mousedown" === t.type)) { if (ai(n.startContainer)) return; s.placeCaretAt(t.clientX, t.clientY); } else s.setRng(n); }); }, h = () => { Range.prototype.getClientRects || e.on("mousedown", t => { if (!f(t) && "HTML" === t.target.nodeName) { const t = e.getBody(); t.blur(), Og.setEditorTimeout(e, () => { t.focus(); }); } }); }, b = () => { const t = Gd(e); e.on("click", n => { const o = n.target; /^(IMG|HR)$/.test(o.nodeName) && r.isEditable(o) && (n.preventDefault(), e.selection.select(o), e.nodeChanged()), "A" === o.nodeName && r.hasClass(o, t) && 0 === o.childNodes.length && r.isEditable(o.parentNode) && (n.preventDefault(), s.select(o)); }); }, v = () => { e.on("keydown", e => { if (!f(e) && e.keyCode === n && s.isCollapsed() && 0 === s.getRng().startOffset) { const t = s.getNode().previousSibling; if (t && t.nodeName && "table" === t.nodeName.toLowerCase()) return e.preventDefault(), !1; } return !0; }); }, y = () => { jd(e) || e.on("BeforeExecCommand mousedown", () => { m("StyleWithCSS", !1), m("enableInlineTableEditing", !1), yd(e) || m("enableObjectResizing", !1); }); }, C = () => { e.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"); }, w = () => { e.inline || e.on("keydown", () => { document.activeElement === document.body && e.getWin().focus(); }); }, x = () => { e.inline || (e.contentStyles.push("body {min-height: 150px}"), e.on("click", t => { let n; "HTML" === t.target.nodeName && ((n = e.selection.getRng()), e.getBody().focus(), e.selection.setRng(n), e.selection.normalize(), e.nodeChanged()); })); }, E = () => { u && e.on("keydown", t => { !Cf.metaKeyPressed(t) || t.shiftKey || (37 !== t.keyCode && 39 !== t.keyCode) || (t.preventDefault(), e.selection.getSel().modify("move", 37 === t.keyCode ? "backward" : "forward", "lineboundary")); }); }, _ = () => { e.on("click", e => { let t = e.target; do { if ("A" === t.tagName) return void e.preventDefault(); } while ((t = t.parentNode)); }), e.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}"); }, S = () => { e.on("init", () => { e.dom.bind(e.getBody(), "submit", e => { e.preventDefault(); }); }); }, N = k; return ( rw(e) ? (d && (p(), b(), S(), g(), c && (w(), x(), _())), l && (h(), y(), C(), E())) : (e.on("keydown", t => { if (f(t) || t.keyCode !== Cf.BACKSPACE) return; let n = s.getRng(); const o = n.startContainer, a = n.startOffset, i = r.getRoot(); let l = o; if (n.collapsed && 0 === a) { for (; l.parentNode && l.parentNode.firstChild === l && l.parentNode !== i; ) l = l.parentNode; "BLOCKQUOTE" === l.nodeName && (e.formatter.toggle("blockquote", void 0, l), (n = r.createRng()), n.setStart(o, 0), n.setEnd(o, 0), s.setRng(n)); } }), (() => { const t = e => { const t = r.create("body"), n = e.cloneContents(); return t.appendChild(n), s.serializer.serialize(t, {format: "html"}); }; e.on("keydown", s => { const a = s.keyCode; if (!f(s) && (a === o || a === n) && e.selection.isEditable()) { const n = e.selection.isCollapsed(), o = e.getBody(); if (n && !Ar(e.schema, o)) return; if ( !n && !(n => { const o = t(n), s = r.createRng(); return s.selectNode(e.getBody()), o === t(s); })(e.selection.getRng()) ) return; s.preventDefault(), e.setContent(""), o.firstChild && r.isBlock(o.firstChild) ? e.selection.setCursorLocation(o.firstChild, 0) : e.selection.setCursorLocation(o, 0), e.nodeChanged(); } }); })(), Tt.windowsPhone || e.on( "keyup focusin mouseup", t => { Cf.modifierPressed(t) || (e => { const t = e.getBody(), n = e.selection.getRng(); return ( n.startContainer === n.endContainer && n.startContainer === t && 0 === n.startOffset && n.endOffset === t.childNodes.length ); })(e) || s.normalize(); }, !0 ), d && (p(), b(), e.on("init", () => { m("DefaultParagraphSeparator", Wl(e)); }), S(), v(), a.addNodeFilter("br", e => { let t = e.length; for (; t--; ) "Apple-interchange-newline" === e[t].attr("class") && e[t].remove(); }), c ? (w(), x(), _()) : g()), l && (e.on("keydown", t => { if (!f(t) && t.keyCode === n) { if (!e.getBody().getElementsByTagName("hr").length) return; if (s.isCollapsed() && 0 === s.getRng().startOffset) { const e = s.getNode(), n = e.previousSibling; if ("HR" === e.nodeName) return r.remove(e), void t.preventDefault(); n && n.nodeName && "hr" === n.nodeName.toLowerCase() && (r.remove(n), t.preventDefault()); } } }), h(), (() => { const n = () => { const n = r.getAttribs(s.getStart().cloneNode(!1)); return () => { const o = s.getStart(); o !== e.getBody() && (r.setAttrib(o, "style", null), t(n, e => { o.setAttributeNode(e.cloneNode(!0)); })); }; }, o = () => !s.isCollapsed() && r.getParent(s.getStart(), r.isBlock) !== r.getParent(s.getEnd(), r.isBlock); e.on("keypress", t => { let r; return !( !(f(t) || (8 !== t.keyCode && 46 !== t.keyCode)) && o() && ((r = n()), e.getDoc().execCommand("delete", !1), r(), t.preventDefault(), 1) ); }), r.bind(e.getDoc(), "cut", t => { if (!f(t) && o()) { const t = n(); Og.setEditorTimeout(e, () => { t(); }); } }); })(), y(), e.on("SetContent ExecCommand", e => { ("setcontent" !== e.type && "mceInsertLink" !== e.command) || t(r.select("a:not([data-mce-block])"), e => { var t; let n = e.parentNode; const o = r.getRoot(); if ((null == n ? void 0 : n.lastChild) === e) { for (; n && !r.isBlock(n); ) { if ((null === (t = n.parentNode) || void 0 === t ? void 0 : t.lastChild) !== n || n === o) return; n = n.parentNode; } r.add(n, "br", {"data-mce-bogus": 1}); } }); }), C(), E(), v())), { refreshContentEditable: N, isHidden: () => { if (!l || e.removed) return !1; const t = e.selection.getSel(); return !t || !t.rangeCount || 0 === t.rangeCount; } } ); }, HT = fa.DOM, $T = e => (e.inline ? e.getElement().nodeName.toLowerCase() : void 0), VT = e => Ce(e, e => !1 === v(e)), qT = e => { const t = e.options.get, n = e.editorUpload.blobCache; return VT({ allow_conditional_comments: t("allow_conditional_comments"), allow_html_data_urls: t("allow_html_data_urls"), allow_svg_data_urls: t("allow_svg_data_urls"), allow_html_in_named_anchor: t("allow_html_in_named_anchor"), allow_script_urls: t("allow_script_urls"), allow_unsafe_link_target: t("allow_unsafe_link_target"), convert_unsafe_embeds: t("convert_unsafe_embeds"), convert_fonts_to_spans: t("convert_fonts_to_spans"), fix_list_elements: t("fix_list_elements"), font_size_legacy_values: t("font_size_legacy_values"), forced_root_block: t("forced_root_block"), forced_root_block_attrs: t("forced_root_block_attrs"), preserve_cdata: t("preserve_cdata"), inline_styles: t("inline_styles"), root_name: $T(e), sandbox_iframes: t("sandbox_iframes"), sandbox_iframes_exclusions: Ac(e), sanitize: t("xss_sanitization"), validate: !0, blob_cache: n, document: e.getDoc() }); }, WT = e => { const t = e.options.get; return VT({ custom_elements: t("custom_elements"), extended_valid_elements: t("extended_valid_elements"), invalid_elements: t("invalid_elements"), invalid_styles: t("invalid_styles"), schema: t("schema"), valid_children: t("valid_children"), valid_classes: t("valid_classes"), valid_elements: t("valid_elements"), valid_styles: t("valid_styles"), verify_html: t("verify_html"), padd_empty_block_inline_children: t("format_empty_lines") }); }, KT = e => (e.inline ? e.ui.styleSheetLoader : e.dom.styleSheetLoader), YT = e => { const t = KT(e), n = hd(e), o = e.contentCSS, r = () => { t.unloadAll(o), e.inline || e.ui.styleSheetLoader.unloadAll(n); }, s = () => { e.removed ? r() : e.on("remove", r); }; if (e.contentStyles.length > 0) { let t = ""; Dt.each(e.contentStyles, e => { t += e + "\r\n"; }), e.dom.addStyle(t); } const a = Promise.all( ((e, t, n) => { const {pass: o, fail: r} = K(t, e => tinymce.Resource.has(Kw(e))), s = o.map(t => { const n = tinymce.Resource.get(Kw(t)); return m(n) ? Promise.resolve(KT(e).loadRawCss(t, n)) : Promise.resolve(); }), a = [...s, KT(e).loadAll(r)]; return e.inline ? a : a.concat([e.ui.styleSheetLoader.loadAll(n)]); })(e, o, n) ) .then(s) .catch(s), i = pd(e); return ( i && ((e, t) => { const n = Cn(e.getBody()), o = Wn(qn(n)), r = vn("style"); Jt(r, "type", "text/css"), yo(r, yn(t)), yo(o, r), e.on("remove", () => { Eo(r); }); })(e, i), a ); }, GT = e => { !0 !== e.removed && ((e => { rw(e) || e.load({initial: !0, format: "html"}), (e.startContent = e.getContent({format: "raw"})); })(e), (e => { e.bindPendingEventDelegates(), (e.initialized = !0), (e => { e.dispatch("Init"); })(e), e.focus(!0), (e => { const t = e.dom.getRoot(); e.inline || (vm(e) && e.selection.getStart(!0) !== t) || $u(t).each(t => { const n = t.getNode(), o = ar(n) ? $u(n).getOr(t) : t; e.selection.setRng(o.toRange()); }); })(e), e.nodeChanged({initial: !0}); const t = Qd(e); w(t) && t.call(e, e), (e => { const t = ec(e); t && Og.setEditorTimeout( e, () => { let n; (n = !0 === t ? e : e.editorManager.get(t)), n && !n.destroyed && (n.focus(), n.selection.scrollIntoView()); }, 100 ); })(e); })(e)); }, XT = e => { const t = e.getElement(); let n = e.getDoc(); e.inline && (HT.addClass(t, "mce-content-body"), (e.contentDocument = n = document), (e.contentWindow = window), (e.bodyElement = t), (e.contentAreaContainer = t)); const o = e.getBody(); (o.disabled = !0), (e.readonly = jd(e)), (e._editableRoot = Hd(e)), !e.readonly && e.hasEditableRoot() && (e.inline && "static" === HT.getStyle(o, "position", !0) && (o.style.position = "relative"), (o.contentEditable = "true")), (o.disabled = !1), (e.editorUpload = tx(e)), (e.schema = Fs(WT(e))), (e.dom = fa(n, { keep_values: !0, url_converter: e.convertURL, url_converter_scope: e, update_styles: !0, root_element: e.inline ? e.getBody() : null, collect: e.inline, schema: e.schema, contentCssCors: ld(e), referrerPolicy: dd(e), onSetAttrib: t => { e.dispatch("SetAttrib", t); } })), (e.parser = (e => { const t = kC(qT(e), e.schema); return ( t.addAttributeFilter("src,href,style,tabindex", (t, n) => { const o = e.dom, r = "data-mce-" + n; let s = t.length; for (; s--; ) { const a = t[s]; let i = a.attr(n); if (i && !a.attr(r)) { if (0 === i.indexOf("data:") || 0 === i.indexOf("blob:")) continue; "style" === n ? ((i = o.serializeStyle(o.parseStyle(i), a.name)), i.length || (i = null), a.attr(r, i), a.attr(n, i)) : "tabindex" === n ? (a.attr(r, i), a.attr(n, null)) : a.attr(r, e.convertURL(i, n, a.name)); } } }), t.addNodeFilter("script", e => { let t = e.length; for (; t--; ) { const n = e[t], o = n.attr("type") || "no/type"; 0 !== o.indexOf("mce-") && n.attr("type", "mce-" + o); } }), Cc(e) && t.addNodeFilter("#cdata", t => { var n; let o = t.length; for (; o--; ) { const r = t[o]; (r.type = 8), (r.name = "#comment"), (r.value = "[CDATA[" + e.dom.encode(null !== (n = r.value) && void 0 !== n ? n : "") + "]]"); } }), t.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div", t => { let n = t.length; const o = e.schema.getNonEmptyElements(); for (; n--; ) { const e = t[n]; e.isEmpty(o) && 0 === e.getAll("br").length && e.append(new ep("br", 1)); } }), t ); })(e)), (e.serializer = pw( (e => { const t = e.options.get; return { ...qT(e), ...WT(e), ...VT({ remove_trailing_brs: t("remove_trailing_brs"), pad_empty_with_br: t("pad_empty_with_br"), url_converter: t("url_converter"), url_converter_scope: t("url_converter_scope"), element_format: t("element_format"), entities: t("entities"), entity_encoding: t("entity_encoding"), indent: t("indent"), indent_after: t("indent_after"), indent_before: t("indent_before") }) }; })(e), e )), (e.selection = mw(e.dom, e.getWin(), e.serializer, e)), (e.annotator = cf(e)), (e.formatter = mx(e)), (e.undoManager = gx(e)), (e._nodeChangeDispatcher = new kR(e)), (e._selectionOverrides = iT(e)), (e => { const t = Dr(), n = Br(!1), o = xa(t => { e.dispatch("longpress", {...t, type: "longpress"}), n.set(!0); }, 400); e.on( "touchstart", e => { zk(e).each(r => { o.cancel(); const s = {x: r.clientX, y: r.clientY, target: e.target}; o.throttle(e), n.set(!1), t.set(s); }); }, !0 ), e.on( "touchmove", r => { o.cancel(), zk(r).each(o => { t.on(r => { ((e, t) => { const n = Math.abs(e.clientX - t.x), o = Math.abs(e.clientY - t.y); return n > 5 || o > 5; })(o, r) && (t.clear(), n.set(!1), e.dispatch("longpresscancel")); }); }); }, !0 ), e.on( "touchend touchcancel", r => { o.cancel(), "touchcancel" !== r.type && t .get() .filter(e => e.target.isEqualNode(r.target)) .each(() => { n.get() ? r.preventDefault() : e.dispatch("tap", {...r, type: "tap"}); }); }, !0 ); })(e), (e => { (e => { e.on("click", t => { e.dom.getParent(t.target, "details") && t.preventDefault(); }); })(e), (e => { e.parser.addNodeFilter("details", t => { const n = Sc(e); q(t, e => { "expanded" === n ? e.attr("open", "open") : "collapsed" === n && e.attr("open", null); }); }), e.serializer.addNodeFilter("details", t => { const n = Nc(e); q(t, e => { "expanded" === n ? e.attr("open", "open") : "collapsed" === n && e.attr("open", null); }); }); })(e); })(e), (e => { const t = "contenteditable", n = " " + Dt.trim(vc(e)) + " ", o = " " + Dt.trim(bc(e)) + " ", r = Kk(n), s = Kk(o), a = yc(e); a.length > 0 && e.on("BeforeSetContent", t => { ((e, t, n) => { let o = t.length, r = n.content; if ("raw" !== n.format) { for (; o--; ) r = r.replace(t[o], Yk(e, r, bc(e))); n.content = r; } })(e, a, t); }), e.parser.addAttributeFilter("class", e => { let n = e.length; for (; n--; ) { const o = e[n]; r(o) ? o.attr(t, "true") : s(o) && o.attr(t, "false"); } }), e.serializer.addAttributeFilter(t, e => { let n = e.length; for (; n--; ) { const o = e[n]; (r(o) || s(o)) && (a.length > 0 && o.attr("data-mce-content") ? ((o.name = "#text"), (o.type = 3), (o.raw = !0), (o.value = o.attr("data-mce-content"))) : o.attr(t, null)); } }); })(e), rw(e) || ((e => { e.on("mousedown", t => { t.detail >= 3 && (t.preventDefault(), DA(e)); }); })(e), (e => { zT(e); })(e)); const r = ER(e); Uk(e, r), (e => { e.on("NodeChange", T(qk, e)); })(e), (e => { var t; const n = e.dom, o = Wl(e), r = null !== (t = wd(e)) && void 0 !== t ? t : "", s = (t, a) => { if ( (e => { if (bx(e)) { const t = e.keyCode; return !vx(e) && (Cf.metaKeyPressed(e) || e.altKey || (t >= 112 && t <= 123) || H(px, t)); } return !1; })(t) ) return; const i = e.getBody(), l = !(e => bx(e) && !(vx(e) || ("keyup" === e.type && 229 === e.keyCode)))(t) && ((e, t, n) => { if (e.isEmpty(t, void 0, {skipBogus: !1, includeZwsp: !0})) { const o = t.firstElementChild; return ( !o || (!e.getStyle(t.firstElementChild, "padding-left") && !e.getStyle(t.firstElementChild, "padding-right") && n === o.nodeName.toLowerCase()) ); } return !1; })(n, i, o); (("" !== n.getAttrib(i, hx)) !== l || a) && (n.setAttrib(i, hx, l ? r : null), ((e, t) => { e.dispatch("PlaceholderToggle", {state: t}); })(e, l), e.on(l ? "keydown" : "keyup", s), e.off(l ? "keyup" : "keydown", s)); }; Ge(r) && e.on("init", t => { s(t, !0), e.on("change SetContent ExecCommand", s), e.on("paste", t => Og.setEditorTimeout(e, () => s(t))); }); })(e), NA(e); const s = (e => { const t = e; return (e => Ee(e.plugins, "rtc").bind(e => I.from(e.setup)))(e).fold( () => ((t.rtcInstance = ow(e)), I.none()), e => ( (t.rtcInstance = (() => { const e = N(null), t = N(""); return { init: {bindEvents: k}, undoManager: { beforeChange: k, add: e, undo: e, redo: e, clear: k, reset: k, hasUndo: L, hasRedo: L, transact: e, ignore: k, extra: k }, formatter: { match: L, matchAll: N([]), matchNode: N(void 0), canApply: L, closest: t, apply: k, remove: k, toggle: k, formatChanged: N({unbind: k}) }, editor: {getContent: t, setContent: N({content: "", html: ""}), insertContent: N(""), addVisual: k}, selection: {getContent: t}, autocompleter: {addDecoration: k, removeDecoration: k}, raw: {getModel: N(I.none())} }; })()), I.some(() => e().then( e => ( (t.rtcInstance = (e => { const t = e => (f(e) ? e : {}), {init: n, undoManager: o, formatter: r, editor: s, selection: a, autocompleter: i, raw: l} = e; return { init: {bindEvents: n.bindEvents}, undoManager: { beforeChange: o.beforeChange, add: o.add, undo: o.undo, redo: o.redo, clear: o.clear, reset: o.reset, hasUndo: o.hasUndo, hasRedo: o.hasRedo, transact: (e, t, n) => o.transact(n), ignore: (e, t) => o.ignore(t), extra: (e, t, n, r) => o.extra(n, r) }, formatter: { match: (e, n, o, s) => r.match(e, t(n), s), matchAll: r.matchAll, matchNode: r.matchNode, canApply: e => r.canApply(e), closest: e => r.closest(e), apply: (e, n, o) => r.apply(e, t(n)), remove: (e, n, o, s) => r.remove(e, t(n)), toggle: (e, n, o) => r.toggle(e, t(n)), formatChanged: (e, t, n, o, s) => r.formatChanged(t, n, o, s) }, editor: { getContent: e => s.getContent(e), setContent: (e, t) => ({content: s.setContent(e, t), html: ""}), insertContent: (e, t) => (s.insertContent(e), ""), addVisual: s.addVisual }, selection: {getContent: (e, t) => a.getContent(t)}, autocompleter: {addDecoration: i.addDecoration, removeDecoration: i.removeDecoration}, raw: {getModel: () => I.some(l.getRawModel())} }; })(e)), e.rtc.isRemote ) ) ) ) ); })(e); (e => { const t = e.getDoc(), n = e.getBody(); (e => { e.dispatch("PreInit"); })(e), tc(e) || ((t.body.spellcheck = !1), HT.setAttrib(n, "spellcheck", "false")), (e.quirks = jT(e)), (e => { e.dispatch("PostRender"); })(e); const o = bd(e); void 0 !== o && (n.dir = o); const r = nc(e); r && e.on("BeforeSetContent", e => { Dt.each(r, t => { e.content = e.content.replace(t, e => "\x3c!--mce:protected " + escape(e) + "--\x3e"); }); }), e.on("SetContent", () => { e.addVisual(e.getBody()); }), e.on("compositionstart compositionend", t => { e.composing = "compositionstart" === t.type; }); })(e), (e => { const t = Oc(e); m(Bc(e)) || (!v(t) && "INVALID" !== (e => (e => "gpl" === e.toLowerCase())(e) || (e => e.length >= 64 && e.length <= 255)(e) ? "VALID" : "INVALID")(t)) || console.warn( "TinyMCE is running in evaluation mode. Provide a valid license key or add license_key: 'gpl' to the init config to agree to the open source license terms. Read more at https://www.tiny.cloud/license-key/" ); })(e), s.fold( () => { const t = (e => { let t = !1; const n = setTimeout(() => { t || e.setProgressState(!0); }, 500); return () => { clearTimeout(n), (t = !0), e.setProgressState(!1); }; })(e); YT(e).then(() => { GT(e), t(); }); }, t => { e.setProgressState(!0), YT(e).then(() => { t().then( t => { e.setProgressState(!1), GT(e), iw(e); }, t => { e.notificationManager.open({type: "error", text: String(t)}), GT(e), iw(e); } ); }); } ); }, ZT = M, QT = fa.DOM, JT = fa.DOM, eO = (e, t) => ({editorContainer: e, iframeContainer: t, api: {}}), tO = e => { const t = e.getElement(); return e.inline ? eO(null) : (e => { const t = JT.create("div"); return JT.insertAfter(t, e), eO(t, t); })(t); }, nO = async e => { e.dispatch("ScriptsLoaded"), (e => { const t = Dt.trim(nd(e)), n = e.ui.registry.getAll().icons, o = {...Tw.get("default").icons, ...Tw.get(t).icons}; pe(o, (t, o) => { ke(n, o) || e.ui.registry.addIcon(o, t); }); })(e), (e => { const t = kd(e); if (m(t)) { const n = zw.get(t); (e.theme = n(e, zw.urls[t]) || {}), w(e.theme.init) && e.theme.init(e, zw.urls[t] || e.documentBaseUrl.replace(/\/$/, "")); } else e.theme = {}; })(e), (e => { const t = Sd(e), n = Ow.get(t); e.model = n(e, Ow.urls[t]); })(e), (e => { const t = []; q(Vd(e), n => { ((e, t, n) => { const o = Uw.get(n), r = Uw.urls[n] || e.documentBaseUrl.replace(/\/$/, ""); if (((n = Dt.trim(n)), o && -1 === Dt.inArray(t, n))) { if (e.plugins[n]) return; try { const s = o(e, r) || {}; (e.plugins[n] = s), w(s.init) && (s.init(e, r), t.push(n)); } catch (t) { ((e, t, n) => { const o = ya.translate(["Failed to initialize plugin: {0}", t]); ff(e, "PluginLoadError", {message: o}), Ww(o, n), $w(e, o); })(e, n, t); } } })(e, t, (e => e.replace(/^\-/, ""))(n)); }); })(e); const t = await (e => { const t = e.getElement(); return ( (e.orgDisplay = t.style.display), m(kd(e)) ? (e => { const t = e.theme.renderUI; return t ? t() : tO(e); })(e) : w(kd(e)) ? (e => { const t = e.getElement(), n = kd(e)(e, t); return ( n.editorContainer.nodeType && (n.editorContainer.id = n.editorContainer.id || e.id + "_parent"), n.iframeContainer && n.iframeContainer.nodeType && (n.iframeContainer.id = n.iframeContainer.id || e.id + "_iframecontainer"), (n.height = n.iframeHeight ? n.iframeHeight : t.offsetHeight), n ); })(e) : tO(e) ); })(e); ((e, t) => { const n = { show: I.from(t.show).getOr(k), hide: I.from(t.hide).getOr(k), isEnabled: I.from(t.isEnabled).getOr(M), setEnabled: n => { e.mode.isReadOnly() || I.from(t.setEnabled).each(e => e(n)); } }; e.ui = {...e.ui, ...n}; })(e, I.from(t.api).getOr({})), (e.editorContainer = t.editorContainer), (e => { e.contentCSS = e.contentCSS.concat((e => Yw(e, gd(e)))(e), (e => Yw(e, hd(e)))(e)); })(e), e.inline ? XT(e) : ((e, t) => { ((e, t) => { const n = Tt.browser.isFirefox() ? Xd(e) : "Rich Text Area", o = e.translate(n), r = nn(Cn(e.getElement()), "tabindex").bind(Ze), s = ((e, t, n, o) => { const r = vn("iframe"); return ( o.each(e => Jt(r, "tabindex", e)), en(r, n), en(r, {id: e + "_ifr", frameBorder: "0", allowTransparency: "true", title: t}), mn(r, "tox-edit-area__iframe"), r ); })(e.id, o, Ul(e), r).dom; (s.onload = () => { (s.onload = null), e.dispatch("load"); }), (e.contentAreaContainer = t.iframeContainer), (e.iframeElement = s), (e.iframeHTML = (e => { let t = zl(e) + ""; jl(e) !== e.documentBaseUrl && (t += ''), (t += ''); const n = Hl(e), o = $l(e), r = e.translate(Xd(e)); return ( Vl(e) && (t += ''), (t += `
    `), t ); })(e)), QT.add(t.iframeContainer, s); })(e, t), t.editorContainer && ((t.editorContainer.style.display = e.orgDisplay), (e.hidden = QT.isHidden(t.editorContainer))), (e.getElement().style.display = "none"), QT.setAttrib(e.id, "aria-hidden", "true"), (e.getElement().style.visibility = e.orgVisibility), (e => { const t = e.iframeElement, n = () => { (e.contentDocument = t.contentDocument), XT(e); }; if (Ec(e) || Tt.browser.isFirefox()) { const t = e.getDoc(); t.open(), t.write(e.iframeHTML), t.close(), n(); } else { const r = ((o = Cn(t)), Ro(o, "load", ZT, () => { r.unbind(), n(); })); t.srcdoc = e.iframeHTML; } var o; })(e); })(e, {editorContainer: t.editorContainer, iframeContainer: t.iframeContainer}); }, oO = fa.DOM, rO = e => "-" === e.charAt(0), sO = (e, t, n) => I.from(t) .filter(e => Ge(e) && !Tw.has(e)) .map(t => ({url: `${e.editorManager.baseURL}/icons/${t}/icons${n}.min.js`, name: I.some(t)})), aO = (e, t) => { const n = pa.ScriptLoader, o = () => { !e.removed && (e => { const t = kd(e); return !m(t) || C(zw.get(t)); })(e) && (e => { const t = Sd(e); return C(Ow.get(t)); })(e) && nO(e); }; ((e, t) => { const n = kd(e); if (m(n) && !rO(n) && !ke(zw.urls, n)) { const o = _d(e), r = o ? e.documentBaseURI.toAbsolute(o) : `themes/${n}/theme${t}.min.js`; zw.load(n, r).catch(() => { ((e, t, n) => { Vw(e, "ThemeLoadError", qw("theme", t, n)); })(e, r, n); }); } })(e, t), ((e, t) => { const n = Sd(e); if ("plugin" !== n && !ke(Ow.urls, n)) { const o = Nd(e), r = m(o) ? e.documentBaseURI.toAbsolute(o) : `models/${n}/model${t}.min.js`; Ow.load(n, r).catch(() => { ((e, t, n) => { Vw(e, "ModelLoadError", qw("model", t, n)); })(e, r, n); }); } })(e, t), ((e, t) => { const n = cd(t), o = ud(t); if (!ya.hasCode(n) && "en" !== n) { const r = Ge(o) ? o : `${t.editorManager.baseURL}/langs/${n}.min.js`; e.add(r).catch(() => { ((e, t, n) => { Vw(e, "LanguageLoadError", qw("language", t, n)); })(t, r, n); }); } })(n, e), ((e, t, n) => { const o = sO(t, "default", n), r = (e => I.from(od(e)) .filter(Ge) .map(e => ({url: e, name: I.none()})))(t).orThunk(() => sO(t, nd(t), "")); q( (e => { const t = [], n = e => { t.push(e); }; for (let t = 0; t < e.length; t++) e[t].each(n); return t; })([o, r]), n => { e.add(n.url).catch(() => { ((e, t, n) => { Vw(e, "IconsLoadError", qw("icons", t, n)); })(t, n.url, n.name.getOrUndefined()); }); } ); })(n, e, t), ((e, t) => { const n = (t, n) => { Uw.load(t, n).catch(() => { ((e, t, n) => { Vw(e, "PluginLoadError", qw("plugin", t, n)); })(e, n, t); }); }; pe(qd(e), (t, o) => { n(o, t), e.options.set("plugins", Vd(e).concat(o)); }), q(Vd(e), e => { !(e = Dt.trim(e)) || Uw.urls[e] || rO(e) || n(e, `plugins/${e}/plugin${t}.min.js`); }); })(e, t), n.loadQueue().then(o, o); }, iO = Et().deviceType, lO = iO.isPhone(), dO = iO.isTablet(), cO = e => { if (y(e)) return []; { const t = p(e) ? e : e.split(/[ ,]/), n = V(t, We); return Y(n, Ge); } }, uO = (e, t) => { const n = ((t, n) => { const o = {}, r = {}; return ye(t, (t, n) => H(e, n), ve(o), ve(r)), {t: o, f: r}; })(t); return (o = n.t), (r = n.f), {sections: N(o), options: N(r)}; var o, r; }, mO = (e, t) => ke(e.sections(), t), fO = (e, t) => ({ table_grid: !1, object_resizing: !1, resize: !1, toolbar_mode: Ee(e, "toolbar_mode").getOr("scrolling"), toolbar_sticky: !1, ...(t ? {menubar: !1} : {}) }), gO = (e, t) => { var n; const o = null !== (n = t.external_plugins) && void 0 !== n ? n : {}; return e && e.external_plugins ? Dt.extend({}, e.external_plugins, o) : o; }, pO = (e, t, n, o, r) => { var s; const a = e ? {mobile: fO(null !== (s = r.mobile) && void 0 !== s ? s : {}, t)} : {}, i = uO(["mobile"], aS(a, r)), l = Dt.extend( n, o, i.options(), ((e, t) => e && mO(t, "mobile"))(e, i) ? ((e, t, n = {}) => { const o = e.sections(), r = Ee(o, t).getOr({}); return Dt.extend({}, n, r); })(i, "mobile") : {}, {external_plugins: gO(o, i.options())} ); return ((e, t, n, o) => { const r = cO(n.forced_plugins), s = cO(o.plugins), a = ((e, t) => (mO(e, t) ? e.sections()[t] : {}))(t, "mobile"), i = ((e, t, n, o) => (e && mO(t, "mobile") ? o : n))(e, t, s, a.plugins ? cO(a.plugins) : s), l = ((e, t) => [...cO(e), ...cO(t)])(r, i); return Dt.extend(o, {forced_plugins: r, plugins: l}); })(e, i, o, l); }, hO = e => { (e => { const t = t => () => { q("left,center,right,justify".split(","), n => { t !== n && e.formatter.remove("align" + n); }), "none" !== t && ((t, n) => { e.formatter.toggle(t, void 0), e.nodeChanged(); })("align" + t); }; e.editorCommands.addCommands({ JustifyLeft: t("left"), JustifyCenter: t("center"), JustifyRight: t("right"), JustifyFull: t("justify"), JustifyNone: t("none") }); })(e), (e => { const t = t => () => { const n = e.selection, o = n.isCollapsed() ? [e.dom.getParent(n.getNode(), e.dom.isBlock)] : n.getSelectedBlocks(); return $(o, n => C(e.formatter.matchNode(n, t))); }; e.editorCommands.addCommands( { JustifyLeft: t("alignleft"), JustifyCenter: t("aligncenter"), JustifyRight: t("alignright"), JustifyFull: t("alignjustify") }, "state" ); })(e); }, bO = (e, t) => { const n = e.selection, o = e.dom; return /^ | $/.test(t) ? ((e, t, n, o) => { const r = Cn(e.getRoot()); return ( (n = lh(r, Ji.fromRangeStart(t), o) ? n.replace(/^ /, " ") : n.replace(/^ /, " ")), dh(r, Ji.fromRangeEnd(t), o) ? n.replace(/( | )()?$/, " ") : n.replace(/ ()?$/, " ") ); })(o, n.getRng(), t, e.schema) : t; }, vO = (e, t) => { if (e.selection.isEditable()) { const {content: n, details: o} = (e => { if ("string" != typeof e) { const t = Dt.extend({paste: e.paste, data: {paste: e.paste}}, e); return {content: e.content, details: t}; } return {content: e, details: {}}; })(t); AC(e, {...o, content: bO(e, n), format: "html", set: !1, selection: !0}).each(t => { const n = ((e, t, n) => sw(e).editor.insertContent(t, n))(e, t.content, o); TC(e, n, t), e.addVisual(); }); } }, yO = {"font-size": "size", "font-family": "face"}, CO = Zt("font"), wO = e => (t, n) => I.from(n) .map(Cn) .filter(Kt) .bind(n => ((e, t, n) => jb( Cn(n), t => (t => fo(t, e).orThunk(() => (CO(t) ? Ee(yO, e).bind(e => nn(t, e)) : I.none())))(t), e => _n(Cn(t), e) ))(e, t, n.dom).or(((e, t) => I.from(fa.DOM.getStyle(t, e, !0)))(e, n.dom)) ) .getOr(""), xO = wO("font-size"), EO = _(e => e.replace(/[\'\"\\]/g, "").replace(/,\s+/g, ","), wO("font-family")), kO = e => $u(e.getBody()).bind(e => { const t = e.container(); return I.from(dr(t) ? t.parentNode : t); }), _O = (e, t) => ((e, t) => (e => I.from(e.selection.getRng()).bind(t => { const n = e.getBody(); return t.startContainer === n && 0 === t.startOffset ? I.none() : I.from(e.selection.getStart(!0)); }))(e) .orThunk(T(kO, e)) .map(Cn) .filter(Kt) .bind(t))(e, S(I.some, t)), SO = (e, t) => { if (/^[0-9.]+$/.test(t)) { const n = parseInt(t, 10); if (n >= 1 && n <= 7) { const o = (e => Dt.explode(e.options.get("font_size_style_values")))(e), r = (e => Dt.explode(e.options.get("font_size_classes")))(e); return r.length > 0 ? r[n - 1] || t : o[n - 1] || t; } return t; } return t; }, NO = e => { const t = e.split(/\s*,\s*/); return V(t, e => (-1 === e.indexOf(" ") || $e(e, '"') || $e(e, "'") ? e : `'${e}'`)).join(","); }, RO = (e, t) => { const n = e.dom, o = e.selection.getRng(), r = t ? e.selection.getStart() : e.selection.getEnd(), s = t ? o.startContainer : o.endContainer, a = kN(n, s); if (!a || !a.isContentEditable) return; const i = t ? ho : bo, l = Wl(e); ((e, t, n, o) => { const r = e.dom, s = e => r.isBlock(e) && e.parentElement === n, a = s(t) ? t : r.getParent(o, s, n); return I.from(a).map(Cn); })(e, r, a, s).each(t => { const n = RN(e, s, t.dom, a, !1, l); i(t, Cn(n)), e.selection.setCursorLocation(n, 0), e.dispatch("NewBlock", {newBlock: n}), bN(e, "insertParagraph"); }); }, AO = e => { hO(e), (e => { e.editorCommands.addCommands({ "Cut,Copy,Paste": t => { const n = e.getDoc(); let o; try { n.execCommand(t); } catch (e) { o = !0; } if (("paste" !== t || n.queryCommandEnabled(t) || (o = !0), o || !n.queryCommandSupported(t))) { let t = e.translate( "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead." ); (Tt.os.isMacOS() || Tt.os.isiOS()) && (t = t.replace(/Ctrl\+/g, "\u2318+")), e.notificationManager.open({text: t, type: "error"}); } } }); })(e), (e => { e.editorCommands.addCommands({ mceAddUndoLevel: () => { e.undoManager.add(); }, mceEndUndoLevel: () => { e.undoManager.add(); }, Undo: () => { e.undoManager.undo(); }, Redo: () => { e.undoManager.redo(); } }); })(e), (e => { e.editorCommands.addCommands({ mceSelectNodeDepth: (t, n, o) => { let r = 0; e.dom.getParent( e.selection.getNode(), t => !er(t) || r++ !== o || (e.selection.select(t), !1), e.getBody() ); }, mceSelectNode: (t, n, o) => { e.selection.select(o); }, selectAll: () => { const t = e.dom.getParent(e.selection.getStart(), br); if (t) { const n = e.dom.createRng(); n.selectNodeContents(t), e.selection.setRng(n); } } }); })(e), (e => { e.editorCommands.addCommands({ mceCleanup: () => { const t = e.selection.getBookmark(); e.setContent(e.getContent()), e.selection.moveToBookmark(t); }, insertImage: (t, n, o) => { vO(e, e.dom.createHTML("img", {src: o})); }, insertHorizontalRule: () => { e.execCommand("mceInsertContent", !1, "
    "); }, insertText: (t, n, o) => { vO(e, e.dom.encode(o)); }, insertHTML: (t, n, o) => { vO(e, o); }, mceInsertContent: (t, n, o) => { vO(e, o); }, mceSetContent: (t, n, o) => { e.setContent(o); }, mceReplaceContent: (t, n, o) => { e.execCommand( "mceInsertContent", !1, o.replace(/\{\$selection\}/g, e.selection.getContent({format: "text"})) ); }, mceNewDocument: () => { e.setContent(ic(e)); } }); })(e), (e => { const t = (t, n, o) => { const r = m(o) ? {href: o} : o, s = e.dom.getParent(e.selection.getNode(), "a"); f(r) && m(r.href) && ((r.href = r.href.replace(/ /g, "%20")), (s && r.href) || e.formatter.remove("link"), r.href && e.formatter.apply("link", r, s)); }; e.editorCommands.addCommands({ unlink: () => { if (e.selection.isEditable()) { if (e.selection.isCollapsed()) { const t = e.dom.getParent(e.selection.getStart(), "a"); return void (t && e.dom.remove(t, !0)); } e.formatter.remove("link"); } }, mceInsertLink: t, createLink: t }); })(e), (e => { e.editorCommands.addCommands({ Indent: () => { (e => { Lk(e, "indent"); })(e); }, Outdent: () => { Mk(e); } }), e.editorCommands.addCommands({Outdent: () => Bk(e)}, "state"); })(e), (e => { e.editorCommands.addCommands({ InsertNewBlockBefore: () => { (e => { RO(e, !0); })(e); }, InsertNewBlockAfter: () => { (e => { RO(e, !1); })(e); } }); })(e), (e => { e.editorCommands.addCommands({ insertParagraph: () => { iR(UN, e); }, mceInsertNewLine: (t, n, o) => { lR(e, o); }, InsertLineBreak: (t, n, o) => { iR(KN, e); } }); })(e), (e => { (e => { const t = (t, n) => { e.formatter.toggle(t, n), e.nodeChanged(); }; e.editorCommands.addCommands({ "Bold,Italic,Underline,Strikethrough,Superscript,Subscript": e => { t(e); }, "ForeColor,HiliteColor": (e, n, o) => { t(e, {value: o}); }, BackColor: (e, n, o) => { t("hilitecolor", {value: o}); }, FontName: (t, n, o) => { ((e, t) => { const n = SO(e, t); e.formatter.toggle("fontname", {value: NO(n)}), e.nodeChanged(); })(e, o); }, FontSize: (t, n, o) => { ((e, t) => { e.formatter.toggle("fontsize", {value: SO(e, t)}), e.nodeChanged(); })(e, o); }, LineHeight: (t, n, o) => { ((e, t) => { e.formatter.toggle("lineheight", {value: String(t)}), e.nodeChanged(); })(e, o); }, Lang: (e, n, o) => { var r; t(e, {value: o.code, customValue: null !== (r = o.customCode) && void 0 !== r ? r : null}); }, RemoveFormat: t => { e.formatter.remove(t); }, mceBlockQuote: () => { t("blockquote"); }, FormatBlock: (e, n, o) => { t(m(o) ? o : "p"); }, mceToggleFormat: (e, n, o) => { t(o); } }); })(e), (e => { const t = t => e.formatter.match(t); e.editorCommands.addCommands( { "Bold,Italic,Underline,Strikethrough,Superscript,Subscript": e => t(e), mceBlockQuote: () => t("blockquote") }, "state" ), e.editorCommands.addQueryValueHandler("FontName", () => (e => _O(e, t => EO(e.getBody(), t.dom)).getOr(""))(e) ), e.editorCommands.addQueryValueHandler("FontSize", () => (e => _O(e, t => xO(e.getBody(), t.dom)).getOr(""))(e) ), e.editorCommands.addQueryValueHandler("LineHeight", () => (e => _O(e, t => { const n = Cn(e.getBody()), o = jb(t, e => fo(e, "line-height"), T(_n, n)); return o.getOrThunk(() => { const e = parseFloat(uo(t, "line-height")), n = parseFloat(uo(t, "font-size")); return String(e / n); }); }).getOr(""))(e) ); })(e); })(e), (e => { e.editorCommands.addCommands({ mceRemoveNode: (t, n, o) => { const r = null != o ? o : e.selection.getNode(); if (r !== e.getBody()) { const t = e.selection.getBookmark(); e.dom.remove(r, !0), e.selection.moveToBookmark(t); } }, mcePrint: () => { e.getWin().print(); }, mceFocus: (t, n, o) => { ((e, t) => { e.removed || (t ? $g(e) : (e => { const t = e.selection, n = e.getBody(); let o = t.getRng(); e.quirks.refreshContentEditable(), C(e.bookmark) && !jg(e) && Ag(e).each(t => { e.selection.setRng(t), (o = t); }); const r = ((e, t) => e.dom.getParent(t, t => "true" === e.dom.getContentEditable(t)))( e, t.getNode() ); if (r && e.dom.isChildOf(r, n)) return zg(r), Ug(e, o), void $g(e); e.inline || (Tt.browser.isOpera() || zg(n), e.getWin().focus()), (Tt.browser.isFirefox() || e.inline) && (zg(n), Ug(e, o)), $g(e); })(e)); })(e, !0 === o); }, mceToggleVisualAid: () => { (e.hasVisual = !e.hasVisual), e.addVisual(); } }); })(e); }, TO = ["toggleview"], OO = e => H(TO, e.toLowerCase()); class BO { constructor(e) { (this.commands = {state: {}, exec: {}, value: {}}), (this.editor = e); } execCommand(e, t = !1, n, o) { const r = this.editor, s = e.toLowerCase(), a = null == o ? void 0 : o.skip_focus; if (r.removed) return !1; if ( ("mcefocus" !== s && (/^(mceAddUndoLevel|mceEndUndoLevel)$/i.test(s) || a ? (e => { Ag(e).each(t => e.selection.setRng(t)); })(r) : r.focus()), r.dispatch("BeforeExecCommand", {command: e, ui: t, value: n}).isDefaultPrevented()) ) return !1; const i = this.commands.exec[s]; return !!w(i) && (i(s, t, n), r.dispatch("ExecCommand", {command: e, ui: t, value: n}), !0); } queryCommandState(e) { if ((!OO(e) && this.editor.quirks.isHidden()) || this.editor.removed) return !1; const t = e.toLowerCase(), n = this.commands.state[t]; return !!w(n) && n(t); } queryCommandValue(e) { if ((!OO(e) && this.editor.quirks.isHidden()) || this.editor.removed) return ""; const t = e.toLowerCase(), n = this.commands.value[t]; return w(n) ? n(t) : ""; } addCommands(e, t = "exec") { const n = this.commands; pe(e, (e, o) => { q(o.toLowerCase().split(","), o => { n[t][o] = e; }); }); } addCommand(e, t, n) { const o = e.toLowerCase(); this.commands.exec[o] = (e, o, r) => t.call(null != n ? n : this.editor, o, r); } queryCommandSupported(e) { const t = e.toLowerCase(); return !!this.commands.exec[t]; } addQueryStateHandler(e, t, n) { this.commands.state[e.toLowerCase()] = () => t.call(null != n ? n : this.editor); } addQueryValueHandler(e, t, n) { this.commands.value[e.toLowerCase()] = () => t.call(null != n ? n : this.editor); } } const PO = "data-mce-contenteditable", DO = (e, t, n) => { try { e.getDoc().execCommand(t, !1, String(n)); } catch (e) {} }, LO = (e, t) => { e.dom.contentEditable = t ? "true" : "false"; }, MO = e => e.readonly, IO = e => { e.parser.addAttributeFilter("contenteditable", t => { MO(e) && q(t, e => { e.attr(PO, e.attr("contenteditable")), e.attr("contenteditable", "false"); }); }), e.serializer.addAttributeFilter(PO, t => { MO(e) && q(t, e => { e.attr("contenteditable", e.attr(PO)); }); }), e.serializer.addTempAttr(PO); }, FO = ["copy"], UO = Dt.makeMap( "focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input beforeinput contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchmove touchend touchcancel", " " ); class zO { static isNative(e) { return !!UO[e.toLowerCase()]; } constructor(e) { (this.bindings = {}), (this.settings = e || {}), (this.scope = this.settings.scope || this), (this.toggleEvent = this.settings.toggleEvent || L); } fire(e, t) { return this.dispatch(e, t); } dispatch(e, t) { const n = e.toLowerCase(), o = Zs(n, null != t ? t : {}, this.scope); this.settings.beforeFire && this.settings.beforeFire(o); const r = this.bindings[n]; if (r) for (let e = 0, t = r.length; e < t; e++) { const t = r[e]; if (!t.removed) { if ((t.once && this.off(n, t.func), o.isImmediatePropagationStopped())) return o; if (!1 === t.func.call(this.scope, o)) return o.preventDefault(), o; } } return o; } on(e, t, n, o) { if ((!1 === t && (t = L), t)) { const r = {func: t, removed: !1}; o && Dt.extend(r, o); const s = e.toLowerCase().split(" "); let a = s.length; for (; a--; ) { const e = s[a]; let t = this.bindings[e]; t || ((t = []), this.toggleEvent(e, !0)), (t = n ? [r, ...t] : [...t, r]), (this.bindings[e] = t); } } return this; } off(e, t) { if (e) { const n = e.toLowerCase().split(" "); let o = n.length; for (; o--; ) { const r = n[o]; let s = this.bindings[r]; if (!r) return ( pe(this.bindings, (e, t) => { this.toggleEvent(t, !1), delete this.bindings[t]; }), this ); if (s) { if (t) { const e = K(s, e => e.func === t); (s = e.fail), (this.bindings[r] = s), q(e.pass, e => { e.removed = !0; }); } else s.length = 0; s.length || (this.toggleEvent(e, !1), delete this.bindings[r]); } } } else pe(this.bindings, (e, t) => { this.toggleEvent(t, !1); }), (this.bindings = {}); return this; } once(e, t, n) { return this.on(e, t, n, {once: !0}); } has(e) { e = e.toLowerCase(); const t = this.bindings[e]; return !(!t || 0 === t.length); } } const jO = e => ( e._eventDispatcher || (e._eventDispatcher = new zO({ scope: e, toggleEvent: (t, n) => { zO.isNative(t) && e.toggleNativeEvent && e.toggleNativeEvent(t, n); } })), e._eventDispatcher ), HO = { fire(e, t, n) { return this.dispatch(e, t, n); }, dispatch(e, t, n) { const o = this; if (o.removed && "remove" !== e && "detach" !== e) return Zs(e.toLowerCase(), null != t ? t : {}, o); const r = jO(o).dispatch(e, t); if (!1 !== n && o.parent) { let t = o.parent(); for (; t && !r.isPropagationStopped(); ) t.dispatch(e, r, !1), (t = t.parent ? t.parent() : void 0); } return r; }, on(e, t, n) { return jO(this).on(e, t, n); }, off(e, t) { return jO(this).off(e, t); }, once(e, t) { return jO(this).once(e, t); }, hasEventListeners(e) { return jO(this).has(e); } }, $O = fa.DOM; let VO; const qO = (e, t) => { if ("selectionchange" === t) return e.getDoc(); if (!e.inline && /^(?:mouse|touch|click|contextmenu|drop|dragover|dragend)/.test(t)) return e.getDoc().documentElement; const n = xd(e); return n ? (e.eventRoot || (e.eventRoot = $O.select(n)[0]), e.eventRoot) : e.getBody(); }, WO = (e, t, n) => { (e => !e.hidden && !MO(e))(e) ? e.dispatch(t, n) : MO(e) && ((e, t) => { if ((e => "click" === e.type)(t) && !Cf.metaKeyPressed(t)) { const n = Cn(t.target); ((e, t) => oo(t, "a", t => _n(t, Cn(e.getBody()))).bind(e => nn(e, "href")))(e, n).each(n => { if ((t.preventDefault(), /^#/.test(n))) { const t = e.dom.select(`${n},[name="${je(n, "#")}"]`); t.length && e.selection.scrollIntoView(t[0], !0); } else window.open( n, "_blank", "rel=noopener noreferrer,menubar=yes,toolbar=yes,location=yes,status=yes,resizable=yes,scrollbars=yes" ); }); } else (e => H(FO, e.type))(t) && e.dispatch(t.type, t); })(e, n); }, KO = (e, t) => { if ((e.delegates || (e.delegates = {}), e.delegates[t] || e.removed)) return; const n = qO(e, t); if (xd(e)) { if ( (VO || ((VO = {}), e.editorManager.on("removeEditor", () => { e.editorManager.activeEditor || (VO && (pe(VO, (t, n) => { e.dom.unbind(qO(e, n)); }), (VO = null))); })), VO[t]) ) return; const o = n => { const o = n.target, r = e.editorManager.get(); let s = r.length; for (; s--; ) { const e = r[s].getBody(); (e === o || $O.isChildOf(o, e)) && WO(r[s], t, n); } }; (VO[t] = o), $O.bind(n, t, o); } else { const o = n => { WO(e, t, n); }; $O.bind(n, t, o), (e.delegates[t] = o); } }, YO = { ...HO, bindPendingEventDelegates() { const e = this; Dt.each(e._pendingNativeEvents, t => { KO(e, t); }); }, toggleNativeEvent(e, t) { const n = this; "focus" !== e && "blur" !== e && (n.removed || (t ? n.initialized ? KO(n, e) : n._pendingNativeEvents ? n._pendingNativeEvents.push(e) : (n._pendingNativeEvents = [e]) : n.initialized && n.delegates && (n.dom.unbind(qO(n, e), e, n.delegates[e]), delete n.delegates[e]))); }, unbindAllNativeEvents() { const e = this, t = e.getBody(), n = e.dom; e.delegates && (pe(e.delegates, (t, n) => { e.dom.unbind(qO(e, n), n, t); }), delete e.delegates), !e.inline && t && n && ((t.onload = null), n.unbind(e.getWin()), n.unbind(e.getDoc())), n && (n.unbind(t), n.unbind(e.getContainer())); } }, GO = e => m(e) ? {value: e.split(/[ ,]/), valid: !0} : E(e, m) ? {value: e, valid: !0} : {valid: !1, message: "The value must be a string[] or a comma/space separated string."}, XO = (e, t) => e + (Xe(t.message) ? "" : `. ${t.message}`), ZO = e => e.valid, QO = (e, t, n = "") => { const o = t(e); return b(o) ? (o ? {value: e, valid: !0} : {valid: !1, message: n}) : o; }, JO = ["design", "readonly"], eB = (e, t, n, o) => { const r = n[t.get()], s = n[o]; try { s.activate(); } catch (e) { return void console.error(`problem while activating editor mode ${o}:`, e); } r.deactivate(), r.editorReadOnly !== s.editorReadOnly && ((e, t) => { const n = Cn(e.getBody()); ((e, t, n) => { pn(e, t) && !n ? gn(e, t) : n && mn(e, t); })(n, "mce-content-readonly", t), t ? (e.selection.controlSelection.hideResizeRect(), e._selectionOverrides.hideFakeCaret(), (e => { I.from(e.selection.getNode()).each(e => { e.removeAttribute("data-mce-selected"); }); })(e), (e.readonly = !0), LO(n, !1), q(zo(n, '*[contenteditable="true"]'), e => { Jt(e, PO, "true"), LO(e, !1); })) : ((e.readonly = !1), e.hasEditableRoot() && LO(n, !0), q(zo(n, `*[${PO}="true"]`), e => { rn(e, PO), LO(e, !0); }), DO(e, "StyleWithCSS", !1), DO(e, "enableInlineTableEditing", !1), DO(e, "enableObjectResizing", !1), Hg(e) && e.focus(), (e => { e.selection.setRng(e.selection.getRng()); })(e), e.nodeChanged()); })(e, s.editorReadOnly), t.set(o), ((e, t) => { e.dispatch("SwitchMode", {mode: t}); })(e, o); }, tB = Dt.each, nB = Dt.explode, oB = { f1: 112, f2: 113, f3: 114, f4: 115, f5: 116, f6: 117, f7: 118, f8: 119, f9: 120, f10: 121, f11: 122, f12: 123 }, rB = Dt.makeMap("alt,ctrl,shift,meta,access"), sB = e => { const t = {}, n = Tt.os.isMacOS() || Tt.os.isiOS(); tB(nB(e.toLowerCase(), "+"), e => { (e => e in rB)(e) ? (t[e] = !0) : /^[0-9]{2,}$/.test(e) ? (t.keyCode = parseInt(e, 10)) : ((t.charCode = e.charCodeAt(0)), (t.keyCode = oB[e] || e.toUpperCase().charCodeAt(0))); }); const o = [t.keyCode]; let r; for (r in rB) t[r] ? o.push(r) : (t[r] = !1); return ( (t.id = o.join(",")), t.access && ((t.alt = !0), n ? (t.ctrl = !0) : (t.shift = !0)), t.meta && (n ? (t.meta = !0) : ((t.ctrl = !0), (t.meta = !1))), t ); }; class aB { constructor(e) { (this.shortcuts = {}), (this.pendingPatterns = []), (this.editor = e); const t = this; e.on("keyup keypress keydown", e => { (!t.hasModifier(e) && !t.isFunctionKey(e)) || e.isDefaultPrevented() || (tB(t.shortcuts, n => { t.matchShortcut(e, n) && ((t.pendingPatterns = n.subpatterns.slice(0)), "keydown" === e.type && t.executeShortcutAction(n)); }), t.matchShortcut(e, t.pendingPatterns[0]) && (1 === t.pendingPatterns.length && "keydown" === e.type && t.executeShortcutAction(t.pendingPatterns[0]), t.pendingPatterns.shift())); }); } add(e, t, n, o) { const r = this, s = r.normalizeCommandFunc(n); return ( tB(nB(Dt.trim(e)), e => { const n = r.createShortcut(e, t, s, o); r.shortcuts[n.id] = n; }), !0 ); } remove(e) { const t = this.createShortcut(e); return !!this.shortcuts[t.id] && (delete this.shortcuts[t.id], !0); } normalizeCommandFunc(e) { const t = this, n = e; return "string" == typeof n ? () => { t.editor.execCommand(n, !1, null); } : Dt.isArray(n) ? () => { t.editor.execCommand(n[0], n[1], n[2]); } : n; } createShortcut(e, t, n, o) { const r = Dt.map(nB(e, ">"), sB); return ( (r[r.length - 1] = Dt.extend(r[r.length - 1], {func: n, scope: o || this.editor})), Dt.extend(r[0], {desc: this.editor.translate(t), subpatterns: r.slice(1)}) ); } hasModifier(e) { return e.altKey || e.ctrlKey || e.metaKey; } isFunctionKey(e) { return "keydown" === e.type && e.keyCode >= 112 && e.keyCode <= 123; } matchShortcut(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) ); } executeShortcutAction(e) { return e.func ? e.func.call(e.scope) : null; } } const iB = () => { const e = (() => { const e = {}, t = {}, n = {}, o = {}, r = {}, s = {}, a = {}, i = {}, l = (e, t) => (n, o) => { e[n.toLowerCase()] = {...o, type: t}; }; return { addButton: l(e, "button"), addGroupToolbarButton: l(e, "grouptoolbarbutton"), addToggleButton: l(e, "togglebutton"), addMenuButton: l(e, "menubutton"), addSplitButton: l(e, "splitbutton"), addMenuItem: l(t, "menuitem"), addNestedMenuItem: l(t, "nestedmenuitem"), addToggleMenuItem: l(t, "togglemenuitem"), addAutocompleter: l(n, "autocompleter"), addContextMenu: l(r, "contextmenu"), addContextToolbar: l(s, "contexttoolbar"), addContextForm: l(s, "contextform"), addSidebar: l(a, "sidebar"), addView: l(i, "views"), addIcon: (e, t) => (o[e.toLowerCase()] = t), getAll: () => ({ buttons: e, menuItems: t, icons: o, popups: n, contextMenus: r, contextToolbars: s, sidebars: a, views: i }) }; })(); return { addAutocompleter: e.addAutocompleter, addButton: e.addButton, addContextForm: e.addContextForm, addContextMenu: e.addContextMenu, addContextToolbar: e.addContextToolbar, addIcon: e.addIcon, addMenuButton: e.addMenuButton, addMenuItem: e.addMenuItem, addNestedMenuItem: e.addNestedMenuItem, addSidebar: e.addSidebar, addSplitButton: e.addSplitButton, addToggleButton: e.addToggleButton, addGroupToolbarButton: e.addGroupToolbarButton, addToggleMenuItem: e.addToggleMenuItem, addView: e.addView, getAll: e.getAll }; }, lB = fa.DOM, dB = Dt.extend, cB = Dt.each; class uB { constructor(e, t, n) { (this.plugins = {}), (this.contentCSS = []), (this.contentStyles = []), (this.loadedCSS = {}), (this.isNotDirty = !1), (this.composing = !1), (this.destroyed = !1), (this.hasHiddenInput = !1), (this.iframeElement = null), (this.initialized = !1), (this.readonly = !1), (this.removed = !1), (this.startContent = ""), (this._pendingNativeEvents = []), (this._skinLoaded = !1), (this._editableRoot = !0), (this.editorManager = n), (this.documentBaseUrl = n.documentBaseURL), dB(this, YO); const o = this; (this.id = e), (this.hidden = !1); const r = ((e, t) => pO(lO || dO, lO, t, e, t))(n.defaultOptions, t); (this.options = ((e, t) => { const n = {}, o = {}, r = (e, t, n) => { const r = QO(t, n); return ZO(r) ? ((o[e] = r.value), !0) : (console.warn(XO(`Invalid value passed for the ${e} option`, r)), !1); }, s = e => ke(n, e); return { register: (e, s) => { const a = (e => m(e.processor))(s) ? (e => { const t = (() => { switch (e) { case "array": return p; case "boolean": return b; case "function": return w; case "number": return x; case "object": return f; case "string": return m; case "string[]": return GO; case "object[]": return e => E(e, f); case "regexp": return e => u(e, RegExp); default: return M; } })(); return n => QO(n, t, `The value must be a ${e}.`); })(s.processor) : s.processor, i = ((e, t, n) => { if (!v(t)) { const o = QO(t, n); if (ZO(o)) return o.value; console.error(XO(`Invalid default value passed for the "${e}" option`, o)); } })(e, s.default, a); (n[e] = {...s, default: i, processor: a}), Ee(o, e) .orThunk(() => Ee(t, e)) .each(t => r(e, t, a)); }, isRegistered: s, get: e => Ee(o, e) .orThunk(() => Ee(n, e).map(e => e.default)) .getOrUndefined(), set: (e, t) => { if (s(e)) { const o = n[e]; return o.immutable ? (console.error(`"${e}" is an immutable option and cannot be updated`), !1) : r(e, t, o.processor); } return ( console.warn( `"${e}" is not a registered option. Ensure the option has been registered before setting a value.` ), !1 ); }, unset: e => { const t = s(e); return t && delete o[e], t; }, isSet: e => ke(o, e) }; })(0, r)), (e => { const t = e.options.register; t("id", {processor: "string", default: e.id}), t("selector", {processor: "string"}), t("target", {processor: "object"}), t("suffix", {processor: "string"}), t("cache_suffix", {processor: "string"}), t("base_url", {processor: "string"}), t("referrer_policy", {processor: "string", default: ""}), t("language_load", {processor: "boolean", default: !0}), t("inline", {processor: "boolean", default: !1}), t("iframe_attrs", {processor: "object", default: {}}), t("doctype", {processor: "string", default: ""}), t("document_base_url", {processor: "string", default: e.documentBaseUrl}), t("body_id", {processor: Fl(e, "tinymce"), default: "tinymce"}), t("body_class", {processor: Fl(e), default: ""}), t("content_security_policy", {processor: "string", default: ""}), t("br_in_pre", {processor: "boolean", default: !0}), t("forced_root_block", { processor: e => { const t = m(e) && Ge(e); return t ? {value: e, valid: t} : {valid: !1, message: "Must be a non-empty string."}; }, default: "p" }), t("forced_root_block_attrs", {processor: "object", default: {}}), t("newline_behavior", { processor: e => { const t = H(["block", "linebreak", "invert", "default"], e); return t ? {value: e, valid: t} : {valid: !1, message: "Must be one of: block, linebreak, invert or default."}; }, default: "default" }), t("br_newline_selector", {processor: "string", default: ".mce-toc h2,figcaption,caption"}), t("no_newline_selector", {processor: "string", default: ""}), t("keep_styles", {processor: "boolean", default: !0}), t("end_container_on_empty_block", { processor: e => b(e) || m(e) ? {valid: !0, value: e} : {valid: !1, message: "Must be boolean or a string"}, default: "blockquote" }), t("font_size_style_values", { processor: "string", default: "xx-small,x-small,small,medium,large,x-large,xx-large" }), t("font_size_legacy_values", { processor: "string", default: "xx-small,small,medium,large,x-large,xx-large,300%" }), t("font_size_classes", {processor: "string", default: ""}), t("automatic_uploads", {processor: "boolean", default: !0}), t("images_reuse_filename", {processor: "boolean", default: !1}), t("images_replace_blob_uris", {processor: "boolean", default: !0}), t("icons", {processor: "string", default: ""}), t("icons_url", {processor: "string", default: ""}), t("images_upload_url", {processor: "string", default: ""}), t("images_upload_base_path", {processor: "string", default: ""}), t("images_upload_credentials", {processor: "boolean", default: !1}), t("images_upload_handler", {processor: "function"}), t("language", {processor: "string", default: "en"}), t("language_url", {processor: "string", default: ""}), t("entity_encoding", {processor: "string", default: "named"}), t("indent", {processor: "boolean", default: !0}), t("indent_before", { processor: "string", default: "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,details,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist" }), t("indent_after", { processor: "string", default: "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,details,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist" }), t("indent_use_margin", {processor: "boolean", default: !1}), t("indentation", {processor: "string", default: "40px"}), t("content_css", { processor: e => { const t = !1 === e || m(e) || E(e, m); return t ? m(e) ? {value: V(e.split(","), We), valid: t} : p(e) ? {value: e, valid: t} : !1 === e ? {value: [], valid: t} : {value: e, valid: t} : {valid: !1, message: "Must be false, a string or an array of strings."}; }, default: Dd(e) ? [] : ["default"] }), t("content_style", {processor: "string"}), t("content_css_cors", {processor: "boolean", default: !1}), t("font_css", { processor: e => { const t = m(e) || E(e, m); return t ? {value: p(e) ? e : V(e.split(","), We), valid: t} : {valid: !1, message: "Must be a string or an array of strings."}; }, default: [] }), t("inline_boundaries", {processor: "boolean", default: !0}), t("inline_boundaries_selector", {processor: "string", default: "a[href],code,span.mce-annotation"}), t("object_resizing", { processor: e => { const t = b(e) || m(e); return t ? !1 === e || Bl.isiPhone() || Bl.isiPad() ? {value: "", valid: t} : {value: !0 === e ? "table,img,figure.image,div,video,iframe" : e, valid: t} : {valid: !1, message: "Must be boolean or a string"}; }, default: !Pl }), t("resize_img_proportional", {processor: "boolean", default: !0}), t("event_root", {processor: "string"}), t("service_message", {processor: "string"}), t("theme", {processor: e => !1 === e || m(e) || w(e), default: "silver"}), t("theme_url", {processor: "string"}), t("formats", {processor: "object"}), t("format_empty_lines", {processor: "boolean", default: !1}), t("format_noneditable_selector", {processor: "string", default: ""}), t("preview_styles", { processor: e => { const t = !1 === e || m(e); return t ? {value: !1 === e ? "" : e, valid: t} : {valid: !1, message: "Must be false or a string"}; }, default: "font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow" }), t("custom_ui_selector", {processor: "string", default: ""}), t("hidden_input", {processor: "boolean", default: !0}), t("submit_patch", {processor: "boolean", default: !0}), t("encoding", {processor: "string"}), t("add_form_submit_trigger", {processor: "boolean", default: !0}), t("add_unload_trigger", {processor: "boolean", default: !0}), t("custom_undo_redo_levels", {processor: "number", default: 0}), t("disable_nodechange", {processor: "boolean", default: !1}), t("readonly", {processor: "boolean", default: !1}), t("editable_root", {processor: "boolean", default: !0}), t("plugins", {processor: "string[]", default: []}), t("external_plugins", {processor: "object"}), t("forced_plugins", {processor: "string[]"}), t("model", {processor: "string", default: e.hasPlugin("rtc") ? "plugin" : "dom"}), t("model_url", {processor: "string"}), t("block_unsupported_drop", {processor: "boolean", default: !0}), t("visual", {processor: "boolean", default: !0}), t("visual_table_class", {processor: "string", default: "mce-item-table"}), t("visual_anchor_class", {processor: "string", default: "mce-item-anchor"}), t("iframe_aria_text", {processor: "string", default: "Rich Text Area. Press ALT-0 for help."}), t("setup", {processor: "function"}), t("init_instance_callback", {processor: "function"}), t("url_converter", {processor: "function", default: e.convertURL}), t("url_converter_scope", {processor: "object", default: e}), t("urlconverter_callback", {processor: "function"}), t("allow_conditional_comments", {processor: "boolean", default: !1}), t("allow_html_data_urls", {processor: "boolean", default: !1}), t("allow_svg_data_urls", {processor: "boolean"}), t("allow_html_in_named_anchor", {processor: "boolean", default: !1}), t("allow_script_urls", {processor: "boolean", default: !1}), t("allow_unsafe_link_target", {processor: "boolean", default: !1}), t("convert_fonts_to_spans", {processor: "boolean", default: !0, deprecated: !0}), t("fix_list_elements", {processor: "boolean", default: !1}), t("preserve_cdata", {processor: "boolean", default: !1}), t("remove_trailing_brs", {processor: "boolean", default: !0}), t("pad_empty_with_br", {processor: "boolean", default: !1}), t("inline_styles", {processor: "boolean", default: !0, deprecated: !0}), t("element_format", {processor: "string", default: "html"}), t("entities", {processor: "string"}), t("schema", {processor: "string", default: "html5"}), t("convert_urls", {processor: "boolean", default: !0}), t("relative_urls", {processor: "boolean", default: !0}), t("remove_script_host", {processor: "boolean", default: !0}), t("custom_elements", {processor: Il}), t("extended_valid_elements", {processor: "string"}), t("invalid_elements", {processor: "string"}), t("invalid_styles", {processor: Il}), t("valid_children", {processor: "string"}), t("valid_classes", {processor: Il}), t("valid_elements", {processor: "string"}), t("valid_styles", {processor: Il}), t("verify_html", {processor: "boolean", default: !0}), t("auto_focus", {processor: e => m(e) || !0 === e}), t("browser_spellcheck", {processor: "boolean", default: !1}), t("protect", {processor: "array"}), t("images_file_types", {processor: "string", default: "jpeg,jpg,jpe,jfi,jif,jfif,png,gif,bmp,webp"}), t("deprecation_warnings", {processor: "boolean", default: !0}), t("a11y_advanced_options", {processor: "boolean", default: !1}), t("api_key", {processor: "string"}), t("license_key", {processor: "string"}), t("paste_block_drop", {processor: "boolean", default: !1}), t("paste_data_images", {processor: "boolean", default: !0}), t("paste_preprocess", {processor: "function"}), t("paste_postprocess", {processor: "function"}), t("paste_webkit_styles", {processor: "string", default: "none"}), t("paste_remove_styles_if_webkit", {processor: "boolean", default: !0}), t("paste_merge_formats", {processor: "boolean", default: !0}), t("smart_paste", {processor: "boolean", default: !0}), t("paste_as_text", {processor: "boolean", default: !1}), t("paste_tab_spaces", {processor: "number", default: 4}), t("text_patterns", { processor: e => E(e, f) || !1 === e ? {value: Ol(!1 === e ? [] : e), valid: !0} : {valid: !1, message: "Must be an array of objects or false."}, default: [ {start: "*", end: "*", format: "italic"}, {start: "**", end: "**", format: "bold"}, {start: "#", format: "h1", trigger: "space"}, {start: "##", format: "h2", trigger: "space"}, {start: "###", format: "h3", trigger: "space"}, {start: "####", format: "h4", trigger: "space"}, {start: "#####", format: "h5", trigger: "space"}, {start: "######", format: "h6", trigger: "space"}, {start: "1.", cmd: "InsertOrderedList", trigger: "space"}, {start: "*", cmd: "InsertUnorderedList", trigger: "space"}, {start: "-", cmd: "InsertUnorderedList", trigger: "space"}, {start: ">", cmd: "mceBlockQuote", trigger: "space"}, {start: "---", cmd: "InsertHorizontalRule", trigger: "space"} ] }), t("text_patterns_lookup", { processor: e => { return w(e) ? { value: ((t = e), e => { const n = t(e); return Ol(n); }), valid: !0 } : {valid: !1, message: "Must be a single function"}; var t; }, default: e => [] }), t("noneditable_class", {processor: "string", default: "mceNonEditable"}), t("editable_class", {processor: "string", default: "mceEditable"}), t("noneditable_regexp", { processor: e => E(e, Ll) ? {value: e, valid: !0} : Ll(e) ? {value: [e], valid: !0} : {valid: !1, message: "Must be a RegExp or an array of RegExp."}, default: [] }), t("table_tab_navigation", {processor: "boolean", default: !0}), t("highlight_on_focus", {processor: "boolean", default: !0}), t("xss_sanitization", {processor: "boolean", default: !0}), t("details_initial_state", { processor: e => { const t = H(["inherited", "collapsed", "expanded"], e); return t ? {value: e, valid: t} : {valid: !1, message: "Must be one of: inherited, collapsed, or expanded."}; }, default: "inherited" }), t("details_serialized_state", { processor: e => { const t = H(["inherited", "collapsed", "expanded"], e); return t ? {value: e, valid: t} : {valid: !1, message: "Must be one of: inherited, collapsed, or expanded."}; }, default: "inherited" }), t("init_content_sync", {processor: "boolean", default: !1}), t("newdocument_content", {processor: "string", default: ""}), t("sandbox_iframes", {processor: "boolean", default: !0}), t("sandbox_iframes_exclusions", { processor: "string[]", default: [ "youtube.com", "youtu.be", "vimeo.com", "player.vimeo.com", "dailymotion.com", "embed.music.apple.com", "open.spotify.com", "giphy.com", "dai.ly", "codepen.io" ] }), t("convert_unsafe_embeds", {processor: "boolean", default: !0}), e.on("ScriptsLoaded", () => { t("directionality", {processor: "string", default: ya.isRtl() ? "rtl" : void 0}), t("placeholder", {processor: "string", default: Dl.getAttrib(e.getElement(), "placeholder")}); }); })(o); const s = this.options.get; s("deprecation_warnings") && ((e, t) => { ((e, t) => { const n = xw(e), o = _w(t), r = o.length > 0, s = n.length > 0, a = "mobile" === t.theme; if (r || s || a) { const e = "\n- ", t = a ? `\n\nThemes:${e}mobile` : "", i = r ? `\n\nPlugins:${e}${o.join(e)}` : "", l = s ? `\n\nOptions:${e}${n.join(e)}` : ""; console.warn( "The following deprecated features are currently enabled and have been removed in TinyMCE 7.0. These features will no longer work and should be removed from the TinyMCE configuration. See https://www.tiny.cloud/docs/tinymce/7/migration-from-6x/ for more information." + t + i + l ); } })(e, t), ((e, t) => { const n = Ew(e), o = Sw(t), r = o.length > 0, s = n.length > 0; if (r || s) { const e = "\n- ", t = r ? `\n\nPlugins:${e}${o.map(Nw).join(e)}` : "", a = s ? `\n\nOptions:${e}${n.join(e)}` : ""; console.warn( "The following deprecated features are currently enabled but will be removed soon." + t + a ); } })(e, t); })(t, r); const a = s("suffix"); a && (n.suffix = a), (this.suffix = n.suffix); const i = s("base_url"); i && n._setBaseUrl(i), (this.baseUri = n.baseURI); const l = dd(o); l && (pa.ScriptLoader._setReferrerPolicy(l), fa.DOM.styleSheetLoader._setReferrerPolicy(l)); const d = $d(o); C(d) && fa.DOM.styleSheetLoader._setContentCssCors(d), (Ca.languageLoad = s("language_load")), (Ca.baseURL = n.baseURL), this.setDirty(!1), (this.documentBaseURI = new cC(jl(o), {base_uri: this.baseUri})), (this.baseURI = this.baseUri), (this.inline = Dd(o)), (this.hasVisual = Kd(o)), (this.shortcuts = new aB(this)), (this.editorCommands = new BO(this)), AO(this); const c = s("cache_suffix"); c && (Tt.cacheSuffix = c.replace(/^[\?\&]+/, "")), (this.ui = {registry: iB(), styleSheetLoader: void 0, show: k, hide: k, setEnabled: k, isEnabled: M}), (this.mode = (e => { const t = Br("design"), n = Br({ design: {activate: k, deactivate: k, editorReadOnly: !1}, readonly: {activate: k, deactivate: k, editorReadOnly: !0} }); return ( (e => { e.serializer ? IO(e) : e.on("PreInit", () => { IO(e); }); })(e), (e => { e.on("ShowCaret", t => { MO(e) && t.preventDefault(); }), e.on("ObjectSelected", t => { MO(e) && t.preventDefault(); }); })(e), { isReadOnly: () => MO(e), set: o => ((e, t, n, o) => { if (o !== n.get()) { if (!ke(t, o)) throw new Error(`Editor mode '${o}' is invalid`); e.initialized ? eB(e, n, t, o) : e.on("init", () => eB(e, n, t, o)); } })(e, n.get(), t, o), get: () => t.get(), register: (e, t) => { n.set( ((e, t, n) => { if (H(JO, t)) throw new Error(`Cannot override default mode ${t}`); return { ...e, [t]: { ...n, deactivate: () => { try { n.deactivate(); } catch (e) { console.error(`problem while deactivating editor mode ${t}:`, e); } } } }; })(n.get(), e, t) ); } } ); })(o)), n.dispatch("SetupEditor", {editor: this}); const g = Zd(o); w(g) && g.call(o, o); } render() { (e => { const t = e.id; ya.setCode(cd(e)); const n = () => { oO.unbind(window, "ready", n), e.render(); }; if (!oa.Event.domLoaded) return void oO.bind(window, "ready", n); if (!e.getElement()) return; const o = Cn(e.getElement()), r = sn(o); e.on("remove", () => { W(o.dom.attributes, e => rn(o, e.name)), en(o, r); }), (e.ui.styleSheetLoader = ((e, t) => rs.forElement(e, {contentCssCors: $d(t), referrerPolicy: dd(t)}))(o, e)), Dd(e) ? (e.inline = !0) : ((e.orgVisibility = e.getElement().style.visibility), (e.getElement().style.visibility = "hidden")); const s = e.getElement().form || oO.getParent(t, "form"); s && ((e.formElement = s), Ld(e) && !lr(e.getElement()) && (oO.insertAfter(oO.create("input", {type: "hidden", name: t}), t), (e.hasHiddenInput = !0)), (e.formEventDelegate = t => { e.dispatch(t.type, t); }), oO.bind(s, "submit reset", e.formEventDelegate), e.on("reset", () => { e.resetContent(); }), !Md(e) || s.submit.nodeType || s.submit.length || s._mceOldSubmit || ((s._mceOldSubmit = s.submit), (s.submit = () => (e.editorManager.triggerSave(), e.setDirty(!1), s._mceOldSubmit(s))))), (e.windowManager = jw(e)), (e.notificationManager = Fw(e)), (e => "xml" === e.options.get("encoding"))(e) && e.on("GetContent", e => { e.save && (e.content = oO.encode(e.content)); }), Id(e) && e.on("submit", () => { e.initialized && e.save(); }), Fd(e) && ((e._beforeUnload = () => { !e.initialized || e.destroyed || e.isHidden() || e.save({format: "raw", no_events: !0, set_dirty: !1}); }), e.editorManager.on("BeforeUnload", e._beforeUnload)), e.editorManager.add(e), aO(e, e.suffix); })(this); } focus(e) { this.execCommand("mceFocus", !1, e); } hasFocus() { return jg(this); } translate(e) { return ya.translate(e); } getParam(e, t, n) { const o = this.options; return ( o.isRegistered(e) || (C(n) ? o.register(e, {processor: n, default: t}) : o.register(e, {processor: M, default: t})), o.isSet(e) || v(t) ? o.get(e) : t ); } hasPlugin(e, t) { return !(!H(Vd(this), e) || (t && void 0 === Uw.get(e))); } nodeChanged(e) { this._nodeChangeDispatcher.nodeChanged(e); } addCommand(e, t, n) { this.editorCommands.addCommand(e, t, n); } addQueryStateHandler(e, t, n) { this.editorCommands.addQueryStateHandler(e, t, n); } addQueryValueHandler(e, t, n) { this.editorCommands.addQueryValueHandler(e, t, n); } addShortcut(e, t, n, o) { this.shortcuts.add(e, t, n, o); } execCommand(e, t, n, o) { return this.editorCommands.execCommand(e, t, n, o); } queryCommandState(e) { return this.editorCommands.queryCommandState(e); } queryCommandValue(e) { return this.editorCommands.queryCommandValue(e); } queryCommandSupported(e) { return this.editorCommands.queryCommandSupported(e); } show() { const e = this; e.hidden && ((e.hidden = !1), e.inline ? (e.getBody().contentEditable = "true") : (lB.show(e.getContainer()), lB.hide(e.id)), e.load(), e.dispatch("show")); } hide() { const e = this; e.hidden || (e.save(), e.inline ? ((e.getBody().contentEditable = "false"), e === e.editorManager.focusedEditor && (e.editorManager.focusedEditor = null)) : (lB.hide(e.getContainer()), lB.setStyle(e.id, "display", e.orgDisplay)), (e.hidden = !0), e.dispatch("hide")); } isHidden() { return this.hidden; } setProgressState(e, t) { this.dispatch("ProgressState", {state: e, time: t}); } load(e = {}) { const t = this, n = t.getElement(); if (t.removed) return ""; if (n) { const o = {...e, load: !0}, r = lr(n) ? n.value : n.innerHTML, s = t.setContent(r, o); return o.no_events || t.dispatch("LoadContent", {...o, element: n}), s; } return ""; } save(e = {}) { const t = this; let n = t.getElement(); if (!n || !t.initialized || t.removed) return ""; const o = {...e, save: !0, element: n}; let r = t.getContent(o); const s = {...o, content: r}; if ( (s.no_events || t.dispatch("SaveContent", s), "raw" === s.format && t.dispatch("RawSaveContent", s), (r = s.content), lr(n)) ) n.value = r; else { (!e.is_removing && t.inline) || (n.innerHTML = r); const o = lB.getParent(t.id, "form"); o && cB(o.elements, e => e.name !== t.id || ((e.value = r), !1)); } return (s.element = o.element = n = null), !1 !== s.set_dirty && t.setDirty(!1), r; } setContent(e, t) { return hw(this, e, t); } getContent(e) { return ((e, t = {}) => { const n = ((e, t) => ({...e, format: t, get: !0, getInner: !0}))(t, t.format ? t.format : "html"); return NC(e, n).fold(R, t => { const n = ((e, t) => sw(e).editor.getContent(t))(e, t); return RC(e, n, t); }); })(this, e); } insertContent(e, t) { t && (e = dB({content: e}, t)), this.execCommand("mceInsertContent", !1, e); } resetContent(e) { void 0 === e ? hw(this, this.startContent, {format: "raw"}) : hw(this, e), this.undoManager.reset(), this.setDirty(!1), this.nodeChanged(); } isDirty() { return !this.isNotDirty; } setDirty(e) { const t = !this.isNotDirty; (this.isNotDirty = !e), e && e !== t && this.dispatch("dirty"); } getContainer() { const e = this; return e.container || (e.container = e.editorContainer || lB.get(e.id + "_parent")), e.container; } getContentAreaContainer() { return this.contentAreaContainer; } getElement() { return this.targetElm || (this.targetElm = lB.get(this.id)), this.targetElm; } getWin() { const e = this; if (!e.contentWindow) { const t = e.iframeElement; t && (e.contentWindow = t.contentWindow); } return e.contentWindow; } getDoc() { const e = this; if (!e.contentDocument) { const t = e.getWin(); t && (e.contentDocument = t.document); } return e.contentDocument; } getBody() { var e, t; const n = this.getDoc(); return null !== (t = null !== (e = this.bodyElement) && void 0 !== e ? e : null == n ? void 0 : n.body) && void 0 !== t ? t : null; } convertURL(e, t, n) { const o = this, r = o.options.get, s = Jd(o); if (w(s)) return s.call(o, e, n, !0, t); if ( !r("convert_urls") || "link" === n || (f(n) && "LINK" === n.nodeName) || 0 === e.indexOf("file:") || 0 === e.length ) return e; const a = new cC(e); return "http" !== a.protocol && "https" !== a.protocol && "" !== a.protocol ? e : r("relative_urls") ? o.documentBaseURI.toRelative(e) : (e = o.documentBaseURI.toAbsolute(e, r("remove_script_host"))); } addVisual(e) { ((e, t) => { ((e, t) => { aw(e).editor.addVisual(t); })(e, t); })(this, e); } setEditableRoot(e) { ((e, t) => { e._editableRoot !== t && ((e._editableRoot = t), e.readonly || ((e.getBody().contentEditable = String(e.hasEditableRoot())), e.nodeChanged()), ((e, t) => { e.dispatch("EditableRootStateChange", {state: t}); })(e, t)); })(this, e); } hasEditableRoot() { return this._editableRoot; } remove() { (e => { if (!e.removed) { const {_selectionOverrides: t, editorUpload: n} = e, o = e.getBody(), r = e.getElement(); o && e.save({is_removing: !0}), (e.removed = !0), e.unbindAllNativeEvents(), e.hasHiddenInput && C(null == r ? void 0 : r.nextSibling) && Rw.remove(r.nextSibling), (e => { e.dispatch("remove"); })(e), e.editorManager.remove(e), !e.inline && o && (e => { Rw.setStyle(e.id, "display", e.orgDisplay); })(e), (e => { e.dispatch("detach"); })(e), Rw.remove(e.getContainer()), Aw(t), Aw(n), e.destroy(); } })(this); } destroy(e) { ((e, t) => { const {selection: n, dom: o} = e; e.destroyed || (t || e.removed ? (t || (e.editorManager.off("beforeunload", e._beforeUnload), e.theme && e.theme.destroy && e.theme.destroy(), Aw(n), Aw(o)), (e => { const t = e.formElement; t && (t._mceOldSubmit && ((t.submit = t._mceOldSubmit), delete t._mceOldSubmit), Rw.unbind(t, "submit reset", e.formEventDelegate)); })(e), (e => { const t = e; (t.contentAreaContainer = t.formElement = t.container = t.editorContainer = null), (t.bodyElement = t.contentDocument = t.contentWindow = null), (t.iframeElement = t.targetElm = null); const n = e.selection; if (n) { const e = n.dom; t.selection = n.win = n.dom = e.doc = null; } })(e), (e.destroyed = !0)) : e.remove()); })(this, e); } uploadImages() { return this.editorUpload.uploadImages(); } _scanForImages() { return this.editorUpload.scanForImages(); } } const mB = fa.DOM, fB = Dt.each; let gB, pB = !1, hB = []; const bB = e => { const t = e.type; fB(wB.get(), n => { switch (t) { case "scroll": n.dispatch("ScrollWindow", e); break; case "resize": n.dispatch("ResizeWindow", e); } }); }, vB = e => { if (e !== pB) { const t = fa.DOM; e ? (t.bind(window, "resize", bB), t.bind(window, "scroll", bB)) : (t.unbind(window, "resize", bB), t.unbind(window, "scroll", bB)), (pB = e); } }, yB = e => { const t = hB; return ( (hB = Y(hB, t => e !== t)), wB.activeEditor === e && (wB.activeEditor = hB.length > 0 ? hB[0] : null), wB.focusedEditor === e && (wB.focusedEditor = null), t.length !== hB.length ); }, CB = "CSS1Compat" !== document.compatMode, wB = { ...HO, baseURI: null, baseURL: null, defaultOptions: {}, documentBaseURL: null, suffix: null, majorVersion: "7", minorVersion: "1.0", releaseDate: "2024-05-08", i18n: ya, activeEditor: null, focusedEditor: null, setup() { const e = this; let t = "", n = "", o = cC.getDocumentBaseUrl(document.location); /^[^:]+:\/\/\/?[^\/]+\//.test(o) && ((o = o.replace(/[\?#].*$/, "").replace(/[\/\\][^\/]+$/, "")), /[\/\\]$/.test(o) || (o += "/")); const r = window.tinymce || window.tinyMCEPreInit; if (r) (t = r.base || r.baseURL), (n = r.suffix); else { const e = document.getElementsByTagName("script"); for (let o = 0; o < e.length; o++) { const r = e[o].src || ""; if ("" === r) continue; const s = r.substring(r.lastIndexOf("/")); if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(r)) { -1 !== s.indexOf(".min") && (n = ".min"), (t = r.substring(0, r.lastIndexOf("/"))); break; } } if (!t && document.currentScript) { const e = document.currentScript.src; -1 !== e.indexOf(".min") && (n = ".min"), (t = e.substring(0, e.lastIndexOf("/"))); } } var s; (e.baseURL = new cC(o).toAbsolute(t)), (e.documentBaseURL = o), (e.baseURI = new cC(e.baseURL)), (e.suffix = n), (s = e).on("AddEditor", T(Ig, s)), s.on("RemoveEditor", T(Fg, s)); }, overrideDefaults(e) { const t = e.base_url; t && this._setBaseUrl(t); const n = e.suffix; n && (this.suffix = n), (this.defaultOptions = e); const o = e.plugin_base_urls; void 0 !== o && pe(o, (e, t) => { Ca.PluginManager.urls[t] = e; }); }, init(e) { const t = this; let n; const o = Dt.makeMap( "area base basefont br col frame hr img input isindex link meta param embed source wbr track colgroup option table tbody tfoot thead tr th td script noscript style textarea video audio iframe object menu", " " ); let r = e => { n = e; }; const s = () => { let n = 0; const a = []; let i; mB.unbind(window, "ready", s), (n => { const o = e.onpageload; o && o.apply(t, []); })(), (i = me( (e => Tt.browser.isIE() || Tt.browser.isEdge() ? (Ww( "TinyMCE does not support the browser you are using. For a list of supported browsers please see: https://www.tiny.cloud/docs/tinymce/7/support/#supportedwebbrowsers" ), []) : CB ? (Ww( "Failed to initialize the editor as the document is not in standards mode. TinyMCE requires standards mode." ), []) : m(e.selector) ? mB.select(e.selector) : C(e.target) ? [e.target] : [])(e) )), Dt.each(i, e => { var n; (n = t.get(e.id)) && n.initialized && !(n.getContainer() || n.getBody()).parentNode && (yB(n), n.unbindAllNativeEvents(), n.destroy(!0), (n.removed = !0)); }), (i = Dt.grep(i, e => !t.get(e.id))), 0 === i.length ? r([]) : fB(i, s => { ((e, t) => e.inline && t.tagName.toLowerCase() in o)(e, s) ? Ww("Could not initialize inline editor on invalid inline target element", s) : ((e, o, s) => { const l = new uB(e, o, t); a.push(l), l.on("init", () => { ++n === i.length && r(a); }), (l.targetElm = l.targetElm || s), l.render(); })( (e => { let t = e.id; return ( t || ((t = Ee(e, "name") .filter(e => !mB.get(e)) .getOrThunk(mB.uniqueId)), e.setAttribute("id", t)), t ); })(s), e, s ); }); }; return ( mB.bind(window, "ready", s), new Promise(e => { n ? e(n) : (r = t => { e(t); }); }) ); }, get(e) { return 0 === arguments.length ? hB.slice(0) : m(e) ? Q(hB, t => t.id === e).getOr(null) : x(e) && hB[e] ? hB[e] : null; }, add(e) { const t = this, n = t.get(e.id); return ( n === e || (null === n && hB.push(e), vB(!0), (t.activeEditor = e), t.dispatch("AddEditor", {editor: e}), gB || ((gB = e => { const n = t.dispatch("BeforeUnload"); if (n.returnValue) return e.preventDefault(), (e.returnValue = n.returnValue), n.returnValue; }), window.addEventListener("beforeunload", gB))), e ); }, createEditor(e, t) { return this.add(new uB(e, t, this)); }, remove(e) { const t = this; let n; if (e) { if (!m(e)) return ( (n = e), h(t.get(n.id)) ? null : (yB(n) && t.dispatch("RemoveEditor", {editor: n}), 0 === hB.length && window.removeEventListener("beforeunload", gB), n.remove(), vB(hB.length > 0), n) ); fB(mB.select(e), e => { (n = t.get(e.id)), n && t.remove(n); }); } else for (let e = hB.length - 1; e >= 0; e--) t.remove(hB[e]); }, execCommand(e, t, n) { var o; const r = this, s = f(n) ? (null !== (o = n.id) && void 0 !== o ? o : n.index) : n; switch (e) { case "mceAddEditor": if (!r.get(s)) { const e = n.options; new uB(s, e, r).render(); } return !0; case "mceRemoveEditor": { const e = r.get(s); return e && e.remove(), !0; } case "mceToggleEditor": { const e = r.get(s); return e ? (e.isHidden() ? e.show() : e.hide(), !0) : (r.execCommand("mceAddEditor", !1, n), !0); } } return !!r.activeEditor && r.activeEditor.execCommand(e, t, n); }, triggerSave: () => { fB(hB, e => { e.save(); }); }, addI18n: (e, t) => { ya.add(e, t); }, translate: e => ya.translate(e), setActive(e) { const t = this.activeEditor; this.activeEditor !== e && (t && t.dispatch("deactivate", {relatedTarget: e}), e.dispatch("activate", {relatedTarget: t})), (this.activeEditor = e); }, _setBaseUrl(e) { (this.baseURL = new cC(this.documentBaseURL).toAbsolute(e.replace(/\/+$/, ""))), (this.baseURI = new cC(this.baseURL)); } }; wB.setup(); const xB = (() => { const e = Dr(); return { FakeClipboardItem: e => ({items: e, types: fe(e), getType: t => Ee(e, t).getOrUndefined()}), write: t => { e.set(t); }, read: () => e.get().getOrUndefined(), clear: e.clear }; })(), EB = Math.min, kB = Math.max, _B = Math.round, SB = (e, t, n) => { let o = t.x, r = t.y; const s = e.w, a = e.h, i = t.w, l = t.h, d = (n || "").split(""); return ( "b" === d[0] && (r += l), "r" === d[1] && (o += i), "c" === d[0] && (r += _B(l / 2)), "c" === d[1] && (o += _B(i / 2)), "b" === d[3] && (r -= a), "r" === d[4] && (o -= s), "c" === d[3] && (r -= _B(a / 2)), "c" === d[4] && (o -= _B(s / 2)), NB(o, r, s, a) ); }, NB = (e, t, n, o) => ({x: e, y: t, w: n, h: o}), RB = { inflate: (e, t, n) => NB(e.x - t, e.y - n, e.w + 2 * t, e.h + 2 * n), relativePosition: SB, findBestRelativePosition: (e, t, n, o) => { for (let r = 0; r < o.length; r++) { const s = SB(e, t, o[r]); if (s.x >= n.x && s.x + s.w <= n.w + n.x && s.y >= n.y && s.y + s.h <= n.h + n.y) return o[r]; } return null; }, intersect: (e, t) => { const n = kB(e.x, t.x), o = kB(e.y, t.y), r = EB(e.x + e.w, t.x + t.w), s = EB(e.y + e.h, t.y + t.h); return r - n < 0 || s - o < 0 ? null : NB(n, o, r - n, s - o); }, clamp: (e, t, n) => { let o = e.x, r = e.y, s = e.x + e.w, a = e.y + e.h; const i = t.x + t.w, l = t.y + t.h, d = kB(0, t.x - o), c = kB(0, t.y - r), u = kB(0, s - i), m = kB(0, a - l); return ( (o += d), (r += c), n && ((s += d), (a += c), (o -= u), (r -= m)), (s -= u), (a -= m), NB(o, r, s - o, a - r) ); }, create: NB, fromClientRect: e => NB(e.left, e.top, e.width, e.height) }, AB = (() => { const e = {}, t = {}, n = {}; return { load: (n, o) => { const r = `Script at URL "${o}" failed to load`, s = `Script at URL "${o}" did not call \`tinymce.Resource.add('${n}', data)\` within 1 second`; if (void 0 !== e[n]) return e[n]; { const a = new Promise((e, a) => { const i = ((e, t, n = 1e3) => { let o = !1, r = null; const s = e => (...t) => { o || ((o = !0), null !== r && (clearTimeout(r), (r = null)), e.apply(null, t)); }, a = s(e), i = s(t); return { start: (...e) => { o || null !== r || (r = setTimeout(() => i.apply(null, e), n)); }, resolve: a, reject: i }; })(e, a); (t[n] = i.resolve), pa.ScriptLoader.loadScript(o).then( () => i.start(s), () => i.reject(r) ); }); return (e[n] = a), a; } }, add: (o, r) => { void 0 !== t[o] && (t[o](r), delete t[o]), (e[o] = Promise.resolve(r)), (n[o] = r); }, has: e => e in n, get: e => n[e], unload: t => { delete e[t], delete n[t]; } }; })(); let TB; try { const e = "__storage_test__"; (TB = window.localStorage), TB.setItem(e, e), TB.removeItem(e); } catch (e) { TB = (() => { let e = {}, t = []; const n = { getItem: t => e[t] || null, setItem: (n, o) => { t.push(n), (e[n] = String(o)); }, key: e => t[e], removeItem: n => { (t = t.filter(e => e === n)), delete e[n]; }, clear: () => { (t = []), (e = {}); }, length: 0 }; return Object.defineProperty(n, "length", {get: () => t.length, configurable: !1, enumerable: !1}), n; })(); } const OB = { geom: {Rect: RB}, util: { Delay: Og, Tools: Dt, VK: Cf, URI: cC, EventDispatcher: zO, Observable: HO, I18n: ya, LocalStorage: TB, ImageUploader: e => { const t = Xw(), n = ex(e, t); return {upload: (t, o = !0) => n.upload(t, o ? Jw(e) : void 0)}; } }, dom: { EventUtils: oa, TreeWalker: Vo, TextSeeker: za, DOMUtils: fa, ScriptLoader: pa, RangeUtils: Qf, Serializer: pw, StyleSheetLoader: os, ControlSelection: _f, BookmarkManager: uf, Selection: mw, Event: oa.Event }, html: {Styles: Ys, Entities: ws, Node: ep, Schema: Fs, DomParser: kC, Writer: vp, Serializer: yp}, Env: Tt, AddOnManager: Ca, Annotator: cf, Formatter: mx, UndoManager: gx, EditorCommands: BO, WindowManager: jw, NotificationManager: Fw, EditorObservable: YO, Shortcuts: aB, Editor: uB, FocusManager: Tg, EditorManager: wB, DOM: fa.DOM, ScriptLoader: pa.ScriptLoader, PluginManager: Uw, ThemeManager: zw, ModelManager: Ow, IconManager: Tw, Resource: AB, FakeClipboard: xB, trim: Dt.trim, isArray: Dt.isArray, is: Dt.is, toArray: Dt.toArray, makeMap: Dt.makeMap, each: Dt.each, map: Dt.map, grep: Dt.grep, inArray: Dt.inArray, extend: Dt.extend, walk: Dt.walk, resolve: Dt.resolve, explode: Dt.explode, _addCacheSuffix: Dt._addCacheSuffix }, BB = Dt.extend(wB, OB); (e => { (window.tinymce = e), (window.tinyMCE = e); })(BB), (e => { if ("object" == typeof module) try { module.exports = e; } catch (e) {} })(BB); })();